1
package org.herac.tuxguitar.gui.system.config.items;
3
import java.util.ArrayList;
4
import java.util.Collections;
5
import java.util.Comparator;
8
import org.eclipse.swt.SWT;
9
import org.eclipse.swt.graphics.Point;
10
import org.eclipse.swt.layout.GridData;
11
import org.eclipse.swt.layout.GridLayout;
12
import org.eclipse.swt.widgets.Composite;
13
import org.eclipse.swt.widgets.Table;
14
import org.eclipse.swt.widgets.TableColumn;
15
import org.eclipse.swt.widgets.TableItem;
16
import org.eclipse.swt.widgets.ToolBar;
17
import org.herac.tuxguitar.gui.TuxGuitar;
18
import org.herac.tuxguitar.gui.helper.SyncThread;
19
import org.herac.tuxguitar.gui.system.config.TGConfigEditor;
20
import org.herac.tuxguitar.gui.system.config.TGConfigKeys;
22
public class LanguageOption extends Option{
23
protected boolean initialized;
24
protected Table table;
25
protected TableColumn column;
27
public LanguageOption(TGConfigEditor configEditor,ToolBar toolBar,final Composite parent){
28
super(configEditor,toolBar,parent,TuxGuitar.getProperty("settings.config.language"), SWT.FILL, SWT.FILL);
29
this.initialized = false;
32
public void createOption(){
33
getToolItem().setText(TuxGuitar.getProperty("settings.config.language"));
34
getToolItem().setImage(TuxGuitar.instance().getIconManager().getOptionLanguage());
35
getToolItem().addSelectionListener(this);
37
showLabel(getComposite(),SWT.FILL,SWT.TOP, true, false,SWT.TOP | SWT.LEFT | SWT.WRAP,SWT.BOLD,0,TuxGuitar.getProperty("settings.config.language.choose"));
39
Composite composite = new Composite(getComposite(),SWT.NONE);
40
composite.setLayout(new GridLayout());
41
composite.setLayoutData(getTabbedData(SWT.FILL, SWT.FILL));
43
this.table = new Table(composite, SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
44
this.table.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
45
this.table.setHeaderVisible(true);
46
this.table.setLinesVisible(false);
48
this.column = new TableColumn(this.table, SWT.LEFT);
49
this.column.setText(TuxGuitar.getProperty("settings.config.language.choose"));
55
protected void loadTableItem(String text, String data, boolean selected){
56
TableItem item = new TableItem(this.table, SWT.NONE);
60
this.table.setSelection(item);
64
protected List getLanguageItems(String[] languages){
65
List list = new ArrayList();
66
for(int i = 0;i < languages.length; i ++){
67
list.add( new LanguageItem(languages[i],TuxGuitar.getProperty("locale." + languages[i] ) ) );
69
Collections.sort(list, new Comparator() {
70
public int compare(Object o1, Object o2) {
71
if( o1 instanceof LanguageItem && o2 instanceof LanguageItem){
72
LanguageItem l1 = (LanguageItem)o1;
73
LanguageItem l2 = (LanguageItem)o2;
74
return l1.getValue().compareTo( l2.getValue() );
82
protected void loadConfig(){
83
new Thread(new Runnable() {
85
final String language = getConfig().getStringConfigValue(TGConfigKeys.LANGUAGE);
86
final List languages = getLanguageItems( TuxGuitar.instance().getLanguageManager().getLanguages() );
87
new SyncThread(new Runnable() {
91
loadTableItem(TuxGuitar.getProperty("locale.default"), new String(), true);
93
for(int i = 0;i < languages.size(); i ++){
94
LanguageItem item = (LanguageItem)languages.get( i );
95
loadTableItem(item.getValue(),item.getKey(),(language != null && item.getKey().equals( language )));
98
LanguageOption.this.initialized = true;
99
LanguageOption.this.column.pack();
100
LanguageOption.this.pack();
108
public void updateConfig(){
109
if(this.initialized){
110
String language = null;
111
if(this.table != null && !this.table.isDisposed()){
112
int index = this.table.getSelectionIndex();
113
if(index >= 0 && index < this.table.getItemCount() ){
114
language = (String)this.table.getItem(index).getData();
117
getConfig().setProperty(TGConfigKeys.LANGUAGE, language );
121
public void updateDefaults(){
122
if(this.initialized){
123
getConfig().setProperty(TGConfigKeys.LANGUAGE,getDefaults().getProperty(TGConfigKeys.LANGUAGE));
127
public void applyConfig(boolean force){
128
if(force || this.initialized){
129
boolean changed = force;
132
String languageLoaded = TuxGuitar.instance().getLanguageManager().getLanguage();
133
String languageConfigured = getConfig().getStringConfigValue(TGConfigKeys.LANGUAGE);
134
if(languageLoaded == null && languageConfigured == null){
137
else if(languageLoaded != null && languageConfigured != null){
138
changed = ( !languageLoaded.equals( languageConfigured ) );
146
addSyncThread(new Runnable() {
148
TuxGuitar.instance().loadLanguage();
155
public Point computeSize(){
156
return this.computeSize(SWT.DEFAULT,SWT.NONE);
159
private class LanguageItem {
161
private String value;
163
public LanguageItem(String key, String value){
168
public String getKey(){
172
public String getValue(){
b'\\ No newline at end of file'