package org.herac.tuxguitar.gui.system.config.items;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.herac.tuxguitar.gui.TuxGuitar;
import org.herac.tuxguitar.gui.helper.SyncThread;
import org.herac.tuxguitar.gui.system.config.TGConfigEditor;
import org.herac.tuxguitar.gui.system.config.TGConfigKeys;
import org.herac.tuxguitar.gui.util.WindowTitleUtil;
public class MainOption extends Option {
protected Button autoSizeTable;
protected boolean initialized;
protected Button showSplash;
protected Text windowTitle;
public MainOption(TGConfigEditor configEditor, ToolBar toolBar,
final Composite parent) {
super(configEditor, toolBar, parent, TuxGuitar
.getProperty("settings.config.main"));
this.initialized = false;
}
public void applyConfig(boolean force) {
if (force || this.initialized) {
TuxGuitar.instance().showTitle();
TuxGuitar.instance().getTable().loadConfig();
}
}
public void createOption() {
getToolItem().setText(TuxGuitar.getProperty("settings.config.main"));
getToolItem().setImage(
TuxGuitar.instance().getIconManager().getOptionMain());
getToolItem().addSelectionListener(this);
showLabel(getComposite(), SWT.TOP | SWT.LEFT | SWT.WRAP, SWT.BOLD, 0,
TuxGuitar.getProperty("settings.config.main.window-title"));
Composite windowTitleComposite = new Composite(getComposite(), SWT.NONE);
windowTitleComposite.setLayout(new GridLayout());
windowTitleComposite.setLayoutData(getTabbedData());
this.windowTitle = new Text(windowTitleComposite, SWT.BORDER);
this.windowTitle
.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
this.windowTitle.setTextLimit(80);
Composite infoHeader = new Composite(windowTitleComposite, SWT.NONE);
infoHeader.setLayout(new GridLayout(2, false));
infoHeader.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
showImageLabel(infoHeader, SWT.NONE, infoHeader.getDisplay()
.getSystemImage(SWT.ICON_INFORMATION));
showLabel(infoHeader, SWT.TOP | SWT.LEFT | SWT.WRAP, SWT.NORMAL, 0,
TuxGuitar.getProperty("settings.config.main.window-title.help"));
Composite infoBody = new Composite(windowTitleComposite, SWT.NONE);
infoBody.setLayout(new GridLayout(2, false));
infoBody.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
showLabel(infoBody, SWT.NONE, SWT.BOLD, -1, WindowTitleUtil
.getVar(WindowTitleUtil.VAR_APP_NAME));
showLabel(infoBody, SWT.TOP | SWT.WRAP, SWT.NORMAL, 0, TuxGuitar
.getProperty("settings.config.main.window-title.var.description."
+ WindowTitleUtil.VAR_APP_NAME));
showLabel(infoBody, SWT.NONE, SWT.BOLD, -1, WindowTitleUtil
.getVar(WindowTitleUtil.VAR_APP_VERSION));
showLabel(infoBody, SWT.TOP | SWT.WRAP, SWT.NORMAL, 0, TuxGuitar
.getProperty("settings.config.main.window-title.var.description."
+ WindowTitleUtil.VAR_APP_VERSION));
showLabel(infoBody, SWT.NONE, SWT.BOLD, -1, WindowTitleUtil
.getVar(WindowTitleUtil.VAR_FILE_NAME));
showLabel(infoBody, SWT.TOP | SWT.WRAP, SWT.NORMAL, 0, TuxGuitar
.getProperty("settings.config.main.window-title.var.description."
+ WindowTitleUtil.VAR_FILE_NAME));
showLabel(infoBody, SWT.NONE, SWT.BOLD, -1, WindowTitleUtil
.getVar(WindowTitleUtil.VAR_FILE_PATH));
showLabel(infoBody, SWT.TOP | SWT.WRAP, SWT.NORMAL, 0, TuxGuitar
.getProperty("settings.config.main.window-title.var.description."
+ WindowTitleUtil.VAR_FILE_PATH));
showLabel(infoBody, SWT.NONE, SWT.BOLD, -1, WindowTitleUtil
.getVar(WindowTitleUtil.VAR_SONG_NAME));
showLabel(infoBody, SWT.TOP | SWT.WRAP, SWT.NORMAL, 0, TuxGuitar
.getProperty("settings.config.main.window-title.var.description."
+ WindowTitleUtil.VAR_SONG_NAME));
showLabel(infoBody, SWT.NONE, SWT.BOLD, -1, WindowTitleUtil
.getVar(WindowTitleUtil.VAR_SONG_ALBUM));
showLabel(infoBody, SWT.TOP | SWT.WRAP, SWT.NORMAL, 0, TuxGuitar
.getProperty("settings.config.main.window-title.var.description."
+ WindowTitleUtil.VAR_SONG_ALBUM));
showLabel(infoBody, SWT.NONE, SWT.BOLD, -1, WindowTitleUtil
.getVar(WindowTitleUtil.VAR_SONG_ARTIST));
showLabel(infoBody, SWT.TOP | SWT.WRAP, SWT.NORMAL, 0, TuxGuitar
.getProperty("settings.config.main.window-title.var.description."
+ WindowTitleUtil.VAR_SONG_ARTIST));
showLabel(infoBody, SWT.NONE, SWT.BOLD, -1, WindowTitleUtil
.getVar(WindowTitleUtil.VAR_SONG_AUTHOR));
showLabel(infoBody, SWT.TOP | SWT.WRAP, SWT.NORMAL, 0, TuxGuitar
.getProperty("settings.config.main.window-title.var.description."
+ WindowTitleUtil.VAR_SONG_AUTHOR));
showLabel(getComposite(), SWT.BOTTOM | SWT.LEFT | SWT.WRAP, SWT.BOLD, 0,
TuxGuitar.getProperty("settings.config.main.options"));
Composite options = new Composite(getComposite(), SWT.NONE);
options.setLayout(new GridLayout());
options.setLayoutData(getTabbedData());
this.autoSizeTable = new Button(options, SWT.CHECK);
this.autoSizeTable.setText(TuxGuitar
.getProperty("settings.config.main.table.auto-size.enabled"));
this.showSplash = new Button(options, SWT.CHECK);
this.showSplash.setText(TuxGuitar
.getProperty("settings.config.main.splash-enabled"));
this.loadConfig();
}
protected void loadConfig() {
new Thread(new Runnable() {
public void run() {
final String windowTitle = getConfig().getStringConfigValue(
TGConfigKeys.WINDOW_TITLE);
final boolean showSplash = getConfig().getBooleanConfigValue(
TGConfigKeys.SHOW_SPLASH);
final boolean autoSizeTable = getConfig().getBooleanConfigValue(
TGConfigKeys.TABLE_AUTO_SIZE);
new SyncThread(new Runnable() {
public void run() {
if (!isDisposed()) {
MainOption.this.windowTitle.setText(windowTitle);
MainOption.this.showSplash.setSelection(showSplash);
MainOption.this.autoSizeTable.setSelection(autoSizeTable);
MainOption.this.initialized = true;
MainOption.this.pack();
}
}
}).start();
}
}).start();
}
public void updateConfig() {
if (this.initialized) {
getConfig().setProperty(TGConfigKeys.WINDOW_TITLE,
this.windowTitle.getText());
getConfig().setProperty(TGConfigKeys.SHOW_SPLASH,
this.showSplash.getSelection());
getConfig().setProperty(TGConfigKeys.TABLE_AUTO_SIZE,
this.autoSizeTable.getSelection());
}
}
public void updateDefaults() {
if (this.initialized) {
getConfig().setProperty(TGConfigKeys.WINDOW_TITLE,
getDefaults().getProperty(TGConfigKeys.WINDOW_TITLE));
getConfig().setProperty(TGConfigKeys.SHOW_SPLASH,
getDefaults().getProperty(TGConfigKeys.SHOW_SPLASH));
getConfig().setProperty(TGConfigKeys.TABLE_AUTO_SIZE,
getDefaults().getProperty(TGConfigKeys.TABLE_AUTO_SIZE));
}
}
}