Mockup with Master-Details page.
[taxeditor.git] / src / eu / etaxonomy / taxeditor / NameDetailsPage.java
1 package eu.etaxonomy.taxeditor;
2
3 import org.eclipse.jface.viewers.ISelection;
4 import org.eclipse.jface.viewers.IStructuredSelection;
5 import org.eclipse.swt.SWT;
6 import org.eclipse.swt.events.ModifyEvent;
7 import org.eclipse.swt.events.ModifyListener;
8 import org.eclipse.swt.layout.GridData;
9 import org.eclipse.swt.layout.GridLayout;
10 import org.eclipse.swt.widgets.Button;
11 import org.eclipse.swt.widgets.Composite;
12 import org.eclipse.swt.widgets.Label;
13 import org.eclipse.swt.widgets.Text;
14 import org.eclipse.ui.forms.IDetailsPage;
15 import org.eclipse.ui.forms.IFormPart;
16 import org.eclipse.ui.forms.IManagedForm;
17 import org.eclipse.ui.forms.widgets.FormToolkit;
18 import org.eclipse.ui.forms.widgets.Section;
19 import org.eclipse.ui.forms.widgets.TableWrapData;
20 import org.eclipse.ui.forms.widgets.TableWrapLayout;
21
22 public class NameDetailsPage implements IDetailsPage {
23 private IManagedForm mform;
24 private Name input;
25 //private TaxonName input;
26 private Button [] choices;
27 private Button flag;
28 private Text text;
29 private Text genusName;
30 private Text speciesEpithet;
31 private Section s1;
32 private static final String RTEXT_DATA =
33 "<form><p>An example of a free-form text that should be "+ //$NON-NLS-1$
34 "wrapped below the section with widgets.</p>"+ //$NON-NLS-1$
35 "<p>It can contain simple tags like <a>links</a> and <b>bold text</b>.</p></form>"; //$NON-NLS-1$
36
37 public NameDetailsPage() {
38 }
39 /* (non-Javadoc)
40 * @see org.eclipse.ui.forms.IDetailsPage#initialize(org.eclipse.ui.forms.IManagedForm)
41 */
42 public void initialize(IManagedForm mform) {
43 this.mform = mform;
44 }
45 /* (non-Javadoc)
46 * @see org.eclipse.ui.forms.IDetailsPage#createContents(org.eclipse.swt.widgets.Composite)
47 */
48 public void createContents(Composite parent) {
49 TableWrapLayout layout = new TableWrapLayout();
50 layout.topMargin = 5;
51 layout.leftMargin = 5;
52 layout.rightMargin = 2;
53 layout.bottomMargin = 2;
54 parent.setLayout(layout);
55
56 FormToolkit toolkit = mform.getToolkit();
57 //s1 = toolkit.createSection(parent, Section.DESCRIPTION|Section.TITLE_BAR);
58 s1 = toolkit.createSection(parent, Section.TITLE_BAR);
59 s1.marginWidth = 10;
60 s1.setText("Type One Details"); //$NON-NLS-1$
61 //s1.setDescription(Messages.getString("TypeOneDetailsPage.name")); //$NON-NLS-1$
62 TableWrapData td = new TableWrapData(TableWrapData.FILL, TableWrapData.TOP);
63 td.grabHorizontal = true;
64 s1.setLayoutData(td);
65 Composite client = toolkit.createComposite(s1);
66 GridLayout glayout = new GridLayout();
67 glayout.marginWidth = glayout.marginHeight = 0;
68 glayout.numColumns = 2;
69 client.setLayout(glayout);
70 GridData gd;
71
72 /*SelectionListener choiceListener = new SelectionAdapter() {
73 public void widgetSelected(SelectionEvent e) {
74 Integer value = (Integer)e.widget.getData();
75 if (input!=null) {
76 input.setChoice(value.intValue());
77 }
78 }
79 }; */
80
81 /*
82 NOTE: this can only be commented out when CHOICES part of update() below is also commented out
83 choices = new Button[TypeOne.CHOICES.length];
84 for (int i=0; i<Name.CHOICES.length; i++) {
85 choices[i] = toolkit.createButton(client, Name.CHOICES[i], SWT.RADIO);
86 choices[i].setData(new Integer(i));
87 //choices[i].addSelectionListener(choiceListener);
88 gd = new GridData();
89 gd.horizontalSpan = 2;
90 choices[i].setLayoutData(gd);
91 }*/
92 /*createSpacer(toolkit, client, 2);
93 flag = toolkit.createButton(client, Messages.getString("TypeOneDetailsPage.check"), SWT.CHECK); //$NON-NLS-1$
94 flag.addSelectionListener(new SelectionAdapter() {
95 public void widgetSelected(SelectionEvent e) {
96 if (input!=null)
97 input.setFlag(flag.getSelection());
98 }
99 });
100 gd = new GridData();
101 gd.horizontalSpan = 2;
102 flag.setLayoutData(gd);*/
103 createSpacer(toolkit, client, 2);
104
105 /*toolkit.createLabel(client, "Scientific Name:"); //$NON-NLS-1$
106 text = toolkit.createText(client, "", SWT.SINGLE); //$NON-NLS-1$
107 text.addModifyListener(new ModifyListener() {
108 public void modifyText(ModifyEvent e) {
109 if (input!=null)
110 input.setText(text.getText());
111 }
112 });*/
113
114 toolkit.createLabel(client, "Genus Name:"); //$NON-NLS-1$
115 genusName = toolkit.createText(client, "", SWT.BORDER | SWT.SHADOW_NONE); //$NON-NLS-1$
116 genusName.addModifyListener(new ModifyListener() {
117 public void modifyText(ModifyEvent e) {
118 if (input!=null)
119 input.setGenusName(genusName.getText());
120 //input.setGenus(genusName.getText());
121 }
122 });
123
124 toolkit.createLabel(client, "Species Epithet:"); //$NON-NLS-1$
125 speciesEpithet = toolkit.createText(client, "", SWT.BORDER); //$NON-NLS-1$
126 speciesEpithet.addModifyListener(new ModifyListener() {
127 public void modifyText(ModifyEvent e) {
128 if (input!=null)
129 input.setSpeciesEpithet(speciesEpithet.getText());
130 //input.setSpecificEpithet(speciesEpithet.getText());
131 }
132 });
133
134 gd = new GridData(GridData.FILL_HORIZONTAL|GridData.VERTICAL_ALIGN_BEGINNING);
135 gd.widthHint = 10;
136 /*text.setLayoutData(gd);*/
137 genusName.setLayoutData(gd);
138 speciesEpithet.setLayoutData(gd);
139
140 createSpacer(toolkit, client, 2);
141 /*
142 FormText rtext = toolkit.createFormText(parent, true);
143 rtext.setText(RTEXT_DATA, true, false);
144 td = new TableWrapData(TableWrapData.FILL, TableWrapData.TOP);
145 td.grabHorizontal = true;
146 rtext.setLayoutData(td);
147 */
148 toolkit.paintBordersFor(s1);
149 s1.setClient(client);
150 }
151 private void createSpacer(FormToolkit toolkit, Composite parent, int span) {
152 Label spacer = toolkit.createLabel(parent, ""); //$NON-NLS-1$
153 GridData gd = new GridData();
154 gd.horizontalSpan = span;
155 spacer.setLayoutData(gd);
156 }
157 private void update() {
158 /*for (int i=0; i<TypeOne.CHOICES.length; i++) {
159 choices[i].setSelection(input!=null && input.getChoice()==i);
160 }*/
161 /*flag.setSelection(input!=null && input.getFlag());*/
162 //s1.setText(input!=null && input.getFullName() !=null?input.getFullName():"");
163 s1.setText(input!=null && input.getText() !=null?input.getText():"");
164 /*text.setText(input!=null && input.getText()!=null?input.getText():"");*/
165 genusName.setText(input!=null && input.getGenusName()!=null?input.getGenusName():"");
166 speciesEpithet.setText(input!=null && input.getSpeciesEpithet()!=null?input.getSpeciesEpithet():"");
167 }
168 /* (non-Javadoc)
169 * @see org.eclipse.ui.forms.IDetailsPage#inputChanged(org.eclipse.jface.viewers.IStructuredSelection)
170 */
171 public void selectionChanged(IFormPart part, ISelection selection) {
172 IStructuredSelection ssel = (IStructuredSelection)selection;
173 if (ssel.size()==1) {
174 input = (Name)ssel.getFirstElement();
175 //input = (TaxonName)ssel.getFirstElement();
176 }
177 else
178 input = null;
179 update();
180 }
181 /* (non-Javadoc)
182 * @see org.eclipse.ui.forms.IDetailsPage#commit()
183 */
184 public void commit(boolean onSave) {
185 }
186 /* (non-Javadoc)
187 * @see org.eclipse.ui.forms.IDetailsPage#setFocus()
188 */
189 public void setFocus() {
190 choices[0].setFocus();
191 }
192 /* (non-Javadoc)
193 * @see org.eclipse.ui.forms.IDetailsPage#dispose()
194 */
195 public void dispose() {
196 }
197 /* (non-Javadoc)
198 * @see org.eclipse.ui.forms.IDetailsPage#isDirty()
199 */
200 public boolean isDirty() {
201 return false;
202 }
203 public boolean isStale() {
204 return false;
205 }
206 /* (non-Javadoc)
207 * @see org.eclipse.ui.forms.IDetailsPage#refresh()
208 */
209 public void refresh() {
210 update();
211 }
212 public boolean setFormInput(Object input) {
213 return false;
214 }
215 }