package org.herac.tuxguitar.player.impl.jsa.utils; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; 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.Group; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.herac.tuxguitar.gui.TuxGuitar; import org.herac.tuxguitar.gui.system.config.TGConfigManager; import org.herac.tuxguitar.gui.system.plugins.TGPluginConfigManager; import org.herac.tuxguitar.gui.util.DialogUtils; import org.herac.tuxguitar.gui.util.FileChooser; import org.herac.tuxguitar.gui.util.MessageDialog; public class MidiConfigUtils { public static final String SOUNDBANK_KEY = "soundbank.custom.path"; public static TGConfigManager getConfig() { TGConfigManager config = new TGPluginConfigManager("tuxguitar-jsa"); config.init(); return config; } public static String getSoundbankPath() { return getSoundbankPath(getConfig()); } public static String getSoundbankPath(final TGConfigManager config) { return config.getStringConfigValue(SOUNDBANK_KEY); } public static void setupDialog(Shell parent) { setupDialog(parent, getConfig()); } public static void setupDialog(Shell parent, final TGConfigManager config) { final String soundbank = getSoundbankPath(config); final Shell dialog = DialogUtils.newDialog(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL); dialog.setLayout(new GridLayout()); dialog.setText(TuxGuitar.getProperty("jsa.settings.title")); // ------------------SOUNDBANK----------------------- Group group = new Group(dialog, SWT.SHADOW_ETCHED_IN); group.setLayout(new GridLayout()); group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); group.setText(TuxGuitar.getProperty("jsa.settings.soundbank.tip")); final Button sbDefault = new Button(group, SWT.RADIO); sbDefault.setText(TuxGuitar.getProperty("jsa.settings.soundbank.default")); sbDefault.setSelection((soundbank == null)); final Button sbCustom = new Button(group, SWT.RADIO); sbCustom.setText(TuxGuitar.getProperty("jsa.settings.soundbank.custom")); sbCustom.setSelection((soundbank != null)); Composite chooser = new Composite(group, SWT.NONE); chooser.setLayout(new GridLayout(2, false)); final Text sbCustomPath = new Text(chooser, SWT.BORDER); sbCustomPath.setLayoutData(new GridData(350, SWT.DEFAULT)); sbCustomPath.setText((soundbank == null ? new String() : soundbank)); final Button sbCustomChooser = new Button(chooser, SWT.PUSH); sbCustomChooser.setImage(TuxGuitar.instance().getIconManager() .getFileOpen()); sbCustomChooser.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { String fileName = FileChooser.instance().open(dialog, FileChooser.ALL_FORMATS); if (fileName != null) { sbCustomPath.setText(fileName); } } }); // ------------------BUTTONS-------------------------- Composite buttons = new Composite(dialog, SWT.NONE); buttons.setLayout(new GridLayout(2, false)); buttons.setLayoutData(new GridData(SWT.END, SWT.FILL, true, true)); GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); data.minimumWidth = 80; data.minimumHeight = 25; final Button buttonOK = new Button(buttons, SWT.PUSH); buttonOK.setText(TuxGuitar.getProperty("ok")); buttonOK.setLayoutData(data); buttonOK.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent arg0) { String selection = (sbCustom.getSelection() ? sbCustomPath.getText() : null); boolean changed = false; changed = (selection == null && soundbank != null); changed = changed || (selection != null && soundbank == null); changed = changed || (selection != null && !selection.equals(soundbank)); if (changed) { if (selection != null) { config.setProperty(SOUNDBANK_KEY, selection); } else { config.removeProperty(SOUNDBANK_KEY); } config.save(); MessageDialog.infoMessage(TuxGuitar.getProperty("warning"), TuxGuitar .getProperty("jsa.settings.soundbank-restart-message")); } dialog.dispose(); } }); Button buttonCancel = new Button(buttons, SWT.PUSH); buttonCancel.setText(TuxGuitar.getProperty("cancel")); buttonCancel.setLayoutData(data); buttonCancel.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent arg0) { dialog.dispose(); } }); dialog.setDefaultButton(buttonOK); DialogUtils.openDialog(dialog, DialogUtils.OPEN_STYLE_CENTER | DialogUtils.OPEN_STYLE_PACK | DialogUtils.OPEN_STYLE_WAIT); } }