~ubuntu-branches/ubuntu/oneiric/tuxguitar/oneiric

« back to all changes in this revision

Viewing changes to TuxGuitar/src/org/herac/tuxguitar/gui/actions/settings/EditPluginsAction.java

  • Committer: Bazaar Package Importer
  • Author(s): Philippe Coval
  • Date: 2008-06-19 00:30:30 UTC
  • mto: (5.1.2 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20080619003030-h719szrhsngou7c6
Tags: upstream-1.0
ImportĀ upstreamĀ versionĀ 1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Created on 17-dic-2005
 
3
 *
 
4
 * TODO To change the template for this generated file go to
 
5
 * Window - Preferences - Java - Code Style - Code Templates
 
6
 */
 
7
package org.herac.tuxguitar.gui.actions.settings;
 
8
 
 
9
import java.util.Iterator;
 
10
 
 
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;
 
35
 
 
36
/**
 
37
 * @author julian
 
38
 *
 
39
 * TODO To change the template for this generated type comment go to
 
40
 * Window - Preferences - Java - Code Style - Code Templates
 
41
 */
 
42
public class EditPluginsAction extends Action{
 
43
        public static final String NAME = "action.settings.plugins";
 
44
        
 
45
        private static final int TABLE_WIDTH = 400;
 
46
        private static final int TABLE_HEIGHT = 300;
 
47
        
 
48
        public EditPluginsAction() {
 
49
                super(NAME, AUTO_LOCK | AUTO_UNLOCK | AUTO_UPDATE);
 
50
        }
 
51
        
 
52
        protected int execute(TypedEvent e){
 
53
                showDialog();
 
54
                return 0;
 
55
        }
 
56
        
 
57
        public void showDialog() {
 
58
                final Shell dialog = DialogUtils.newDialog(TuxGuitar.instance().getShell(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
 
59
                
 
60
                dialog.setLayout(new GridLayout());
 
61
                dialog.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
 
62
                dialog.setText(TuxGuitar.getProperty("plugins"));
 
63
                
 
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);
 
67
                
 
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)) );
 
74
                
 
75
                Iterator it = TuxGuitar.instance().getPluginManager().getPlugins().iterator();
 
76
                while(it.hasNext()){
 
77
                        TGPlugin plugin = (TGPlugin)it.next();
 
78
                        TableItem item = new TableItem(table, SWT.NONE);
 
79
                        item.setData(plugin);
 
80
                        item.setText(1,((plugin.getName() != null)?plugin.getName():"Undefined Plugin"));
 
81
                        item.setChecked(TuxGuitar.instance().getPluginManager().isEnabled(plugin));
 
82
                }
 
83
                
 
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));
 
88
                
 
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);
 
98
                                }
 
99
                        }
 
100
                });
 
101
                
 
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());
 
111
                                }
 
112
                        }
 
113
                });
 
114
                
 
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) {
 
120
                                dialog.dispose();
 
121
                        }
 
122
                });
 
123
                
 
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);
 
135
                                        }
 
136
                                        buttonInfo.setEnabled(true);
 
137
                                        buttonSetup.setEnabled((item.getData() instanceof TGPluginSetup));
 
138
                                }
 
139
                        }
 
140
                });
 
141
                
 
142
                dialog.setDefaultButton( buttonInfo );
 
143
                
 
144
                DialogUtils.openDialog(dialog,DialogUtils.OPEN_STYLE_CENTER | DialogUtils.OPEN_STYLE_PACK);
 
145
        }
 
146
        
 
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"));
 
152
                
 
153
                Composite info = new Composite(dialog,SWT.NONE);
 
154
                info.setLayout(new GridLayout(2,false));
 
155
                
 
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());
 
160
                
 
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));
 
165
                
 
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) {
 
171
                                dialog.dispose();
 
172
                        }
 
173
                });
 
174
                
 
175
                dialog.setDefaultButton( buttonExit );
 
176
                
 
177
                DialogUtils.openDialog(dialog, DialogUtils.OPEN_STYLE_CENTER | DialogUtils.OPEN_STYLE_PACK);
 
178
        }
 
179
        
 
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));
 
185
                setBold(labelKey);
 
186
                labelKey.setText(key);
 
187
                labelValue.setText( (value != null && value.length() > 0)?value:TuxGuitar.getProperty("plugin.unknown-value"));
 
188
        }
 
189
        
 
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);
 
194
                        label.setFont(font);
 
195
                        label.addDisposeListener(new DisposeListener() {
 
196
                                public void widgetDisposed(DisposeEvent e) {
 
197
                                        font.dispose();
 
198
                                }
 
199
                        });
 
200
                }
 
201
        }
 
202
        
 
203
        private GridData getButtonData(){
 
204
                GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
 
205
                data.minimumWidth = 80;
 
206
                data.minimumHeight = 25;
 
207
                return data;
 
208
        }
 
209
}