1
package org.herac.tuxguitar.gui.system.config.items;
3
import java.util.Properties;
5
import org.eclipse.swt.SWT;
6
import org.eclipse.swt.events.DisposeEvent;
7
import org.eclipse.swt.events.DisposeListener;
8
import org.eclipse.swt.events.SelectionAdapter;
9
import org.eclipse.swt.events.SelectionEvent;
10
import org.eclipse.swt.graphics.Font;
11
import org.eclipse.swt.graphics.FontData;
12
import org.eclipse.swt.graphics.Image;
13
import org.eclipse.swt.graphics.Point;
14
import org.eclipse.swt.layout.FormAttachment;
15
import org.eclipse.swt.layout.FormData;
16
import org.eclipse.swt.layout.GridData;
17
import org.eclipse.swt.layout.GridLayout;
18
import org.eclipse.swt.widgets.Composite;
19
import org.eclipse.swt.widgets.Display;
20
import org.eclipse.swt.widgets.Group;
21
import org.eclipse.swt.widgets.Label;
22
import org.eclipse.swt.widgets.Shell;
23
import org.eclipse.swt.widgets.ToolBar;
24
import org.eclipse.swt.widgets.ToolItem;
25
import org.herac.tuxguitar.gui.TuxGuitar;
26
import org.herac.tuxguitar.gui.editors.TablatureEditor;
27
import org.herac.tuxguitar.gui.system.config.TGConfigEditor;
28
import org.herac.tuxguitar.gui.system.config.TGConfigManager;
30
public abstract class Option extends SelectionAdapter{
32
protected static final int DEFAULT_INDENT = 20;
34
private TGConfigEditor configEditor ;
35
private ToolBar toolBar;
37
private Composite composite;
38
private ToolItem toolItem;
40
public Option(TGConfigEditor configEditor,ToolBar toolBar,final Composite parent,String text, int horizontalAlignment,int verticalAlignment){
41
this.configEditor = configEditor;
42
this.toolBar = toolBar;
43
this.toolItem = new ToolItem(toolBar, SWT.RADIO);
44
this.group = new Group(parent, SWT.SHADOW_ETCHED_IN);
45
this.group.setLayout(new GridLayout());
46
this.group.setLayoutData(getGroupData());
47
this.group.setText(text);
48
this.composite = new Composite(this.group, SWT.SHADOW_ETCHED_IN);
49
this.composite.setLayout(new GridLayout());
50
this.composite.setLayoutData(new GridData(horizontalAlignment,verticalAlignment,true ,true));
53
public Option(TGConfigEditor configEditor,ToolBar toolBar, Composite parent,String text){
54
this(configEditor, toolBar, parent, text, SWT.FILL,SWT.TOP);
57
public abstract void createOption();
59
public abstract void updateConfig();
61
public abstract void updateDefaults();
63
public abstract void applyConfig(boolean force);
65
public void setVisible(boolean visible){
66
this.toolItem.setSelection(visible);
67
this.group.setVisible(visible);
68
this.group.setFocus();
72
public void dispose(){
76
protected Label showLabel(Composite parent,int labelStyle,int fontStyle,int fontScale,String text){
77
return showLabel(parent,SWT.FILL,SWT.CENTER, labelStyle, fontStyle, fontScale, text);
80
protected Label showLabel(Composite parent,int hAlign,int vAlign,int labelStyle,int fontStyle,int fontScale,String text){
81
return showLabel(parent, hAlign, vAlign, true, true, labelStyle, fontStyle, fontScale, text);
84
protected Label showLabel(Composite parent,int hAlign,int vAlign,boolean grabExcessHSpace,boolean grabExcessVSpace,int labelStyle,int fontStyle,int fontScale,String text){
85
Label label = new Label(parent,labelStyle);
87
label.setLayoutData(new GridData(hAlign,vAlign,grabExcessHSpace,grabExcessVSpace));
89
FontData[] fontDatas = label.getFont().getFontData();
90
if(fontDatas.length > 0){
91
final Font font = new Font(label.getDisplay(),fontDatas[0].getName(),(fontDatas[0].getHeight() + fontScale),fontStyle);
93
label.addDisposeListener(new DisposeListener() {
94
public void widgetDisposed(DisposeEvent arg0) {
102
protected Label showImageLabel(Composite parent,int labelStyle,Image image){
103
Label label = new Label(parent,labelStyle);
104
label.setImage(image);
108
protected FormData getGroupData(){
109
FormData data = new FormData();
110
data.top = new FormAttachment(0,0);
111
data.bottom = new FormAttachment(100,0);
112
data.left = new FormAttachment(0,0);
113
data.right = new FormAttachment(100,0);
117
public void widgetSelected(SelectionEvent e) {
118
this.configEditor.select(this);
121
public Composite getComposite(){
122
return this.composite;
125
public ToolItem getToolItem(){
126
return this.toolItem;
129
public Point computeSize(){
130
return this.computeSize(SWT.DEFAULT,SWT.DEFAULT);
133
protected Point computeSize(int wHint,int hHint){
134
return this.group.computeSize(wHint, hHint);
137
public TGConfigManager getConfig(){
138
return this.configEditor.getConfig();
141
public Properties getDefaults(){
142
return this.configEditor.getDefaults();
145
public TablatureEditor getEditor(){
146
return this.configEditor.getEditor();
149
public Display getDisplay(){
150
return this.toolBar.getDisplay();
153
public Shell getShell(){
154
return this.toolBar.getShell();
157
protected boolean isDisposed(){
158
return (this.toolBar.isDisposed() || this.toolBar.getShell().isDisposed());
161
public GridData makeGridData(int with,int height,int minWith,int minHeight){
162
return this.configEditor.makeGridData(with, height, minWith, minHeight);
165
protected GridData getTabbedData(){
166
return getTabbedData(DEFAULT_INDENT,SWT.FILL,SWT.CENTER);
169
protected GridData getTabbedData(int horizontalAlignment,int verticalAlignment, boolean grabExcessHorizontalSpace, boolean grabExcessVerticalSpace){
170
return getTabbedData(DEFAULT_INDENT,horizontalAlignment,verticalAlignment,grabExcessHorizontalSpace,grabExcessVerticalSpace);
173
protected GridData getTabbedData(int horizontalAlignment,int verticalAlignment){
174
return getTabbedData(DEFAULT_INDENT,horizontalAlignment,verticalAlignment);
177
protected GridData getTabbedData(int indent,int horizontalAlignment,int verticalAlignment){
178
return getTabbedData(indent, horizontalAlignment, verticalAlignment, true, true);
181
protected GridData getTabbedData(int indent,int horizontalAlignment,int verticalAlignment, boolean grabExcessHorizontalSpace, boolean grabExcessVerticalSpace){
182
GridData data = new GridData();
183
data.horizontalAlignment = horizontalAlignment;
184
data.grabExcessHorizontalSpace = grabExcessHorizontalSpace;
185
data.verticalAlignment = verticalAlignment;
186
data.grabExcessVerticalSpace = grabExcessVerticalSpace;
187
data.horizontalIndent = indent;
191
public GridData makeGridData(int widthHint,
195
int horizontalAlignment,
196
int verticalAlignment,
197
boolean grabExcessHorizontalSpace,
198
boolean grabExcessVerticalSpace,
201
GridData data = new GridData();
202
data.widthHint = widthHint;
203
data.heightHint = heightHint;
204
data.minimumWidth = minimumWidth;
205
data.minimumHeight = minimumHeight;
206
data.horizontalAlignment = horizontalAlignment;
207
data.verticalAlignment = verticalAlignment;
208
data.grabExcessHorizontalSpace = grabExcessHorizontalSpace;
209
data.grabExcessVerticalSpace = grabExcessVerticalSpace;
210
data.horizontalSpan = horizontalSpan;
211
data.verticalSpan = verticalSpan;
217
this.configEditor.pack();
220
public void loadCursor(int style){
221
TuxGuitar.instance().loadCursor(this.configEditor.getDialog(),style);
224
protected void addSyncThread(Runnable runnable){
225
this.configEditor.addSyncThread(runnable);
b'\\ No newline at end of file'