2
* Created on 17-dic-2005
4
* TODO To change the template for this generated file go to
5
* Window - Preferences - Java - Code Style - Code Templates
7
package org.herac.tuxguitar.gui.actions.settings;
9
import java.util.Iterator;
11
import org.eclipse.swt.SWT;
12
import org.eclipse.swt.events.DisposeEvent;
13
import org.eclipse.swt.events.DisposeListener;
14
import org.eclipse.swt.events.SelectionAdapter;
15
import org.eclipse.swt.events.SelectionEvent;
16
import org.eclipse.swt.events.TypedEvent;
17
import org.eclipse.swt.graphics.Font;
18
import org.eclipse.swt.graphics.FontData;
19
import org.eclipse.swt.layout.GridData;
20
import org.eclipse.swt.layout.GridLayout;
21
import org.eclipse.swt.widgets.Button;
22
import org.eclipse.swt.widgets.Composite;
23
import org.eclipse.swt.widgets.Event;
24
import org.eclipse.swt.widgets.Label;
25
import org.eclipse.swt.widgets.Listener;
26
import org.eclipse.swt.widgets.Shell;
27
import org.eclipse.swt.widgets.Table;
28
import org.eclipse.swt.widgets.TableColumn;
29
import org.eclipse.swt.widgets.TableItem;
30
import org.herac.tuxguitar.gui.TuxGuitar;
31
import org.herac.tuxguitar.gui.actions.Action;
32
import org.herac.tuxguitar.gui.system.plugins.TGPlugin;
33
import org.herac.tuxguitar.gui.system.plugins.TGPluginSetup;
34
import org.herac.tuxguitar.gui.util.DialogUtils;
39
* TODO To change the template for this generated type comment go to
40
* Window - Preferences - Java - Code Style - Code Templates
42
public class EditPluginsAction extends Action{
43
public static final String NAME = "action.settings.plugins";
45
private static final int TABLE_WIDTH = 400;
46
private static final int TABLE_HEIGHT = 300;
48
public EditPluginsAction() {
49
super(NAME, AUTO_LOCK | AUTO_UNLOCK | AUTO_UPDATE);
52
protected int execute(TypedEvent e){
57
public void showDialog() {
58
final Shell dialog = DialogUtils.newDialog(TuxGuitar.instance().getShell(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
60
dialog.setLayout(new GridLayout());
61
dialog.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
62
dialog.setText(TuxGuitar.getProperty("plugins"));
64
final Table table = new Table(dialog, SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION | SWT.CHECK | SWT.H_SCROLL | SWT.V_SCROLL);
65
table.setLayoutData(new GridData(TABLE_WIDTH,TABLE_HEIGHT));
66
table.setHeaderVisible(true);
68
final TableColumn columnEnabled = new TableColumn(table, SWT.LEFT);
69
final TableColumn columnPlugin = new TableColumn(table, SWT.LEFT);
70
columnEnabled.setText(TuxGuitar.getProperty("plugin.column.enabled"));
71
columnPlugin.setText(TuxGuitar.getProperty("plugin.column.name"));
72
columnEnabled.setWidth( (TABLE_WIDTH / 4) );
73
columnPlugin.setWidth( (TABLE_WIDTH - (TABLE_WIDTH / 4)) );
75
Iterator it = TuxGuitar.instance().getPluginManager().getPlugins().iterator();
77
TGPlugin plugin = (TGPlugin)it.next();
78
TableItem item = new TableItem(table, SWT.NONE);
80
item.setText(1,((plugin.getName() != null)?plugin.getName():"Undefined Plugin"));
81
item.setChecked(TuxGuitar.instance().getPluginManager().isEnabled(plugin));
84
//------------------BUTTONS--------------------------
85
Composite buttons = new Composite(dialog, SWT.NONE);
86
buttons.setLayout(new GridLayout(3,false));
87
buttons.setLayoutData(new GridData(SWT.RIGHT,SWT.FILL,true,true));
89
final Button buttonSetup = new Button(buttons, SWT.PUSH);
90
buttonSetup.setText(TuxGuitar.getProperty("configure"));
91
buttonSetup.setLayoutData(getButtonData());
92
buttonSetup.setEnabled(false);
93
buttonSetup.addSelectionListener(new SelectionAdapter() {
94
public void widgetSelected(SelectionEvent arg0) {
95
TableItem item = table.getItem(table.getSelectionIndex());
96
if(item != null && item.getData() instanceof TGPluginSetup){
97
((TGPluginSetup)item.getData()).setupDialog(dialog);
102
final Button buttonInfo = new Button(buttons, SWT.PUSH);
103
buttonInfo.setText(TuxGuitar.getProperty("info"));
104
buttonInfo.setLayoutData(getButtonData());
105
buttonInfo.setEnabled(false);
106
buttonInfo.addSelectionListener(new SelectionAdapter() {
107
public void widgetSelected(SelectionEvent arg0) {
108
TableItem item = table.getItem(table.getSelectionIndex());
109
if(item != null && item.getData() instanceof TGPlugin){
110
showInfo(dialog,(TGPlugin)item.getData());
115
Button buttonClose = new Button(buttons, SWT.PUSH);
116
buttonClose.setText(TuxGuitar.getProperty("close"));
117
buttonClose.setLayoutData(getButtonData());
118
buttonClose.addSelectionListener(new SelectionAdapter() {
119
public void widgetSelected(SelectionEvent arg0) {
124
table.addListener (SWT.Selection, new Listener() {
125
public void handleEvent (Event event) {
126
buttonInfo.setEnabled(false);
127
buttonSetup.setEnabled(false);
128
if(event.item instanceof TableItem && event.item.getData() instanceof TGPlugin){
129
final TableItem item = (TableItem)event.item;
130
if(event.detail == SWT.CHECK){
131
TuxGuitar.instance().loadCursor(dialog,SWT.CURSOR_WAIT);
132
TuxGuitar.instance().getPluginManager().setEnabled((TGPlugin)item.getData(),item.getChecked());
133
TuxGuitar.instance().loadCursor(dialog,SWT.CURSOR_ARROW);
134
table.setSelection(item);
136
buttonInfo.setEnabled(true);
137
buttonSetup.setEnabled((item.getData() instanceof TGPluginSetup));
142
dialog.setDefaultButton( buttonInfo );
144
DialogUtils.openDialog(dialog,DialogUtils.OPEN_STYLE_CENTER | DialogUtils.OPEN_STYLE_PACK);
147
public void showInfo(Shell parent,TGPlugin plugin) {
148
final Shell dialog = DialogUtils.newDialog(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
149
dialog.setLayout(new GridLayout());
150
dialog.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
151
dialog.setText(TuxGuitar.getProperty("plugins"));
153
Composite info = new Composite(dialog,SWT.NONE);
154
info.setLayout(new GridLayout(2,false));
156
showInfoString(info,TuxGuitar.getProperty("name") + ":",plugin.getName());
157
showInfoString(info,TuxGuitar.getProperty("version") + ":",plugin.getVersion());
158
showInfoString(info,TuxGuitar.getProperty("author") + ":",plugin.getAuthor());
159
showInfoString(info,TuxGuitar.getProperty("description") + ":",plugin.getDescription());
161
//------------------BUTTONS--------------------------
162
Composite buttons = new Composite(dialog, SWT.NONE);
163
buttons.setLayout(new GridLayout());
164
buttons.setLayoutData(new GridData(SWT.RIGHT,SWT.FILL,true,true));
166
Button buttonExit = new Button(buttons, SWT.PUSH);
167
buttonExit.setText(TuxGuitar.getProperty("exit"));
168
buttonExit.setLayoutData(getButtonData());
169
buttonExit.addSelectionListener(new SelectionAdapter() {
170
public void widgetSelected(SelectionEvent arg0) {
175
dialog.setDefaultButton( buttonExit );
177
DialogUtils.openDialog(dialog, DialogUtils.OPEN_STYLE_CENTER | DialogUtils.OPEN_STYLE_PACK);
180
private void showInfoString(Composite parent,String key,String value){
181
Label labelKey = new Label(parent,SWT.LEFT);
182
Label labelValue = new Label(parent,SWT.LEFT | SWT.WRAP);
183
labelKey.setLayoutData(new GridData(SWT.LEFT,SWT.TOP,false,true));
184
labelValue.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,true));
186
labelKey.setText(key);
187
labelValue.setText( (value != null && value.length() > 0)?value:TuxGuitar.getProperty("plugin.unknown-value"));
190
private void setBold(Label label){
191
FontData[] fontDatas = label.getFont().getFontData();
192
if(fontDatas.length > 0){
193
final Font font = new Font(label.getDisplay(),fontDatas[0].getName(),(fontDatas[0].getHeight()),SWT.BOLD);
195
label.addDisposeListener(new DisposeListener() {
196
public void widgetDisposed(DisposeEvent e) {
203
private GridData getButtonData(){
204
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
205
data.minimumWidth = 80;
206
data.minimumHeight = 25;