1
package org.herac.tuxguitar.player.impl.midiport.oss;
3
import org.eclipse.swt.SWT;
4
import org.eclipse.swt.events.SelectionAdapter;
5
import org.eclipse.swt.events.SelectionEvent;
6
import org.eclipse.swt.layout.GridData;
7
import org.eclipse.swt.layout.GridLayout;
8
import org.eclipse.swt.widgets.Button;
9
import org.eclipse.swt.widgets.Composite;
10
import org.eclipse.swt.widgets.Group;
11
import org.eclipse.swt.widgets.Label;
12
import org.eclipse.swt.widgets.Shell;
13
import org.eclipse.swt.widgets.Text;
14
import org.herac.tuxguitar.gui.TuxGuitar;
15
import org.herac.tuxguitar.gui.system.config.TGConfigManager;
16
import org.herac.tuxguitar.gui.system.plugins.TGPluginConfigManager;
17
import org.herac.tuxguitar.gui.util.DialogUtils;
19
public class MidiConfigUtils {
21
public static final String DEVICE_KEY = "oss.device";
23
public static final String DEVICE_DEFAULT = "/dev/sequencer";
25
public static TGConfigManager getConfig(){
26
TGConfigManager config = new TGPluginConfigManager("tuxguitar-oss");
31
public static String getDevice(){
32
return getDevice(getConfig());
35
public static String getDevice(final TGConfigManager config){
36
return config.getStringConfigValue(DEVICE_KEY,DEVICE_DEFAULT);
39
public static void setupDialog(Shell parent,final MidiPortProviderImpl provider) {
40
setupDialog(parent,provider,getConfig());
43
public static void setupDialog(Shell parent,final MidiPortProviderImpl provider,final TGConfigManager config) {
44
final String device = getDevice(config);
46
final Shell dialog = DialogUtils.newDialog(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
47
dialog.setLayout(new GridLayout());
48
dialog.setText("Configuration");
50
//------------------DEVICE-----------------------
51
Group group = new Group(dialog,SWT.SHADOW_ETCHED_IN);
52
group.setLayout(new GridLayout(2,false));
53
group.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
54
group.setText("Device Configuration");
56
final Label deviceLabel = new Label(group,SWT.LEFT);
57
deviceLabel.setText("Device:");
59
final Text deviceValue = new Text(group,SWT.BORDER);
60
deviceValue.setLayoutData(new GridData(250,SWT.DEFAULT));
61
deviceValue.setText( (device == null ? new String() : device) );
63
//------------------BUTTONS--------------------------
64
Composite buttons = new Composite(dialog, SWT.NONE);
65
buttons.setLayout(new GridLayout(2,false));
66
buttons.setLayoutData(new GridData(SWT.END,SWT.FILL,true,true));
68
GridData data = new GridData(SWT.FILL,SWT.FILL,true,true);
69
data.minimumWidth = 80;
70
data.minimumHeight = 25;
72
final Button buttonOK = new Button(buttons, SWT.PUSH);
73
buttonOK.setText(TuxGuitar.getProperty("ok"));
74
buttonOK.setLayoutData(data);
75
buttonOK.addSelectionListener(new SelectionAdapter() {
76
public void widgetSelected(SelectionEvent arg0) {
77
String selection = deviceValue.getText();
79
String value1 = (device == null ? new String() : device);
80
String value2 = (selection == null ? new String() : selection);
81
if(!value1.equals(value2)){
82
if(selection != null){
83
config.setProperty(DEVICE_KEY,selection);
85
config.removeProperty(DEVICE_KEY);
88
provider.updateDevice(selection);
94
Button buttonCancel = new Button(buttons, SWT.PUSH);
95
buttonCancel.setText(TuxGuitar.getProperty("cancel"));
96
buttonCancel.setLayoutData(data);
97
buttonCancel.addSelectionListener(new SelectionAdapter() {
98
public void widgetSelected(SelectionEvent arg0) {
103
dialog.setDefaultButton( buttonOK );
105
DialogUtils.openDialog(dialog,DialogUtils.OPEN_STYLE_CENTER | DialogUtils.OPEN_STYLE_PACK | DialogUtils.OPEN_STYLE_WAIT);