");
+ FormText formText = toolkit.createFormText(form.getBody(), true);
+ formText.setWhitespaceNormalized(true);
+ td = new TableWrapData(TableWrapData.FILL);
+ td.colspan = 2;
+ formText.setLayoutData(td);
+
+ formText.setColor("header", toolkit.getColors().getColor(
+ FormColors.TITLE));
+ formText.setFont("header", JFaceResources.getHeaderFont());
+ formText.setFont("code", JFaceResources.getTextFont());
+ formText.setText(buf.toString(), true, false);
+ formText.addHyperlinkListener(new HyperlinkAdapter() {
+ public void linkActivated(HyperlinkEvent e) {
+ System.out.println("Link active: " + e.getHref());
+ }
+ });
+ */
+
+ /* colspan, rowspan demo */
+ /*
+ * TableWrapLayout layout = new TableWrapLayout(); toolkit = new
+ * FormToolkit(parent.getDisplay()); form = toolkit.createForm(parent); //
+ * alternate: createScrolledForm form.getBody().setLayout(layout);
+ *
+ * layout.numColumns = 3; Label label; TableWrapData td;
+ *
+ * label = toolkit.createLabel(form.getBody(), "Some text to put in the
+ * first column", SWT.WRAP); label = toolkit.createLabel(form.getBody(),
+ * "Some text to put in the second column and make it a bit "+ "longer
+ * so that we can see what happens with column "+ "distribution. This
+ * text must be the longest so that it can "+ "get more space allocated
+ * to the columns it belongs to.", SWT.WRAP); td = new TableWrapData();
+ * td.colspan = 2; label.setLayoutData(td); label =
+ * toolkit.createLabel(form.getBody(), "This text will span two rows and
+ * should not grow the column.", SWT.WRAP); td = new TableWrapData();
+ * td.rowspan = 2; label.setLayoutData(td); label =
+ * toolkit.createLabel(form.getBody(), "This text goes into column 2 and
+ * consumes only one cell", SWT.WRAP); label.setLayoutData(new
+ * TableWrapData(TableWrapData.FILL_GRAB)); label =
+ * toolkit.createLabel(form.getBody(), "This text goes into column 3 and
+ * consumes only one cell too", SWT.WRAP); label.setLayoutData(new
+ * TableWrapData(TableWrapData.FILL)); label =
+ * toolkit.createLabel(form.getBody(), "This text goes into column 2 and
+ * consumes only one cell", SWT.WRAP); label.setLayoutData(new
+ * TableWrapData(TableWrapData.FILL_GRAB)); label =
+ * toolkit.createLabel(form.getBody(), "This text goes into column 3 and
+ * consumes only one cell too", SWT.WRAP); label.setLayoutData(new
+ * TableWrapData(TableWrapData.FILL));
+ * form.getBody().setBackground(form.getBody().getDisplay().
+ * getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
+ */
+ }
+
+ /**
+ * Passing the focus request to the form.
+ */
+ public void setFocus() {
+ form.setFocus();
+ }
+
+ /**
+ * Disposes the toolkit
+ */
+ public void dispose() {
+ toolkit.dispose();
+ super.dispose();
+ }
+}
diff --git a/src/eu/etaxonomy/taxeditor/ICommandIds.java b/src/eu/etaxonomy/taxeditor/ICommandIds.java
index 349d94c2b..c405b99c3 100644
--- a/src/eu/etaxonomy/taxeditor/ICommandIds.java
+++ b/src/eu/etaxonomy/taxeditor/ICommandIds.java
@@ -11,5 +11,6 @@ public interface ICommandIds {
public static final String CMD_OPEN = "eu.etaxonomy.taxeditor.open";
public static final String CMD_OPEN_MESSAGE = "eu.etaxonomy.taxeditor.openMessage";
+ public static final String CMD_OPEN_EDITOR = "eu.etaxonomy.taxeditor.openMessage";
}
diff --git a/src/eu/etaxonomy/taxeditor/IModelListener.java b/src/eu/etaxonomy/taxeditor/IModelListener.java
new file mode 100644
index 000000000..8295b0865
--- /dev/null
+++ b/src/eu/etaxonomy/taxeditor/IModelListener.java
@@ -0,0 +1,8 @@
+package eu.etaxonomy.taxeditor;
+
+public interface IModelListener {
+ String ADDED="__added"; //$NON-NLS-1$
+ String REMOVED="__removed"; //$NON-NLS-1$
+ String CHANGED = "__changed"; //$NON-NLS-1$
+ void modelChanged(Object[] objects, String type, String property);
+}
\ No newline at end of file
diff --git a/src/eu/etaxonomy/taxeditor/MasterDetailsPage.java b/src/eu/etaxonomy/taxeditor/MasterDetailsPage.java
new file mode 100644
index 000000000..24efd34c7
--- /dev/null
+++ b/src/eu/etaxonomy/taxeditor/MasterDetailsPage.java
@@ -0,0 +1,22 @@
+package eu.etaxonomy.taxeditor;
+
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.editor.FormEditor;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+
+public class MasterDetailsPage extends FormPage {
+ private ScrolledPropertiesBlock block;
+ public MasterDetailsPage(FormEditor editor) {
+ super(editor, "fourth", Messages.getString("MasterDetailsPage.label")); //$NON-NLS-1$ //$NON-NLS-2$
+ block = new ScrolledPropertiesBlock(this);
+ }
+ protected void createFormContent(final IManagedForm managedForm) {
+ final ScrolledForm form = managedForm.getForm();
+ //FormToolkit toolkit = managedForm.getToolkit();
+ form.setText(Messages.getString("MasterDetailsPage.title")); //$NON-NLS-1$
+ form.setBackgroundImage(Activator.getDefault().getImage(
+ Activator.IMG_FORM_BG));
+ block.createContent(managedForm);
+ }
+}
\ No newline at end of file
diff --git a/src/eu/etaxonomy/taxeditor/MessagePopupAction.java b/src/eu/etaxonomy/taxeditor/MessagePopupAction.java
index f662e06e0..54245b80d 100644
--- a/src/eu/etaxonomy/taxeditor/MessagePopupAction.java
+++ b/src/eu/etaxonomy/taxeditor/MessagePopupAction.java
@@ -16,7 +16,7 @@ public class MessagePopupAction extends Action {
setId(ICommandIds.CMD_OPEN_MESSAGE);
// Associate the action with a pre-defined command, to allow key bindings.
setActionDefinitionId(ICommandIds.CMD_OPEN_MESSAGE);
- setImageDescriptor(eu.etaxonomy.taxeditor.Activator.getImageDescriptor("/icons/sample3.gif"));
+ setImageDescriptor(Activator.getImageDescriptorOrig("/icons/sample3.gif"));
}
public void run() {
diff --git a/src/eu/etaxonomy/taxeditor/Messages.java b/src/eu/etaxonomy/taxeditor/Messages.java
new file mode 100644
index 000000000..4cf03cd2c
--- /dev/null
+++ b/src/eu/etaxonomy/taxeditor/Messages.java
@@ -0,0 +1,23 @@
+package eu.etaxonomy.taxeditor;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Messages {
+ private static final String BUNDLE_NAME = "eu.etaxonomy.taxeditor.messages"; //$NON-NLS-1$
+
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
+ .getBundle(BUNDLE_NAME);
+
+ private Messages() {
+ }
+
+ public static String getString(String key) {
+ // TODO Auto-generated method stub
+ try {
+ return RESOURCE_BUNDLE.getString(key);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/eu/etaxonomy/taxeditor/Name.java b/src/eu/etaxonomy/taxeditor/Name.java
new file mode 100644
index 000000000..2ef1f54e9
--- /dev/null
+++ b/src/eu/etaxonomy/taxeditor/Name.java
@@ -0,0 +1,64 @@
+package eu.etaxonomy.taxeditor;
+
+public class Name extends NamedObject {
+ public static final String P_CHOICE="choice"; //$NON-NLS-1$
+ public static final String P_FLAG="flag"; //$NON-NLS-1$
+ public static final String P_TEXT="text"; //$NON-NLS-1$
+ public static final String P_GENUSNAME="genusname"; //$NON-NLS-1$
+ public static final String P_SPECIESEPITHET="speciesepithet"; //$NON-NLS-1$
+ public static final String [] CHOICES = {
+ Messages.getString("TypeOne.c1"), Messages.getString("TypeOne.c2"), Messages.getString("TypeOne.c3"), Messages.getString("TypeOne.c4") }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ private int choice=0;
+ private String text;
+ private String genusName;
+ private String speciesEpithet;
+ private boolean flag;
+
+ /**
+ * @param name
+ */
+ public Name(String name, String genusName, String speciesEpithet) {
+ super(name);
+ this.genusName = genusName;
+ this.speciesEpithet = speciesEpithet;
+ this.text = name;
+
+ this.flag = true;
+ this.choice = 2;
+ }
+ public int getChoice() {
+ return choice;
+ }
+ public void setChoice(int choice) {
+ this.choice = choice;
+ model.fireModelChanged(new Object[] {this}, IModelListener.CHANGED, P_CHOICE);
+ }
+ public boolean getFlag() {
+ return flag;
+ }
+ public void setFlag(boolean flag) {
+ this.flag = flag;
+ model.fireModelChanged(new Object[] {this}, IModelListener.CHANGED, P_FLAG);
+ }
+ public String getText() {
+ return text;
+ }
+ public void setText(String text) {
+ this.text = text;
+ model.fireModelChanged(new Object[] {this}, IModelListener.CHANGED, P_TEXT);
+ }
+ public String getGenusName() {
+ return genusName;
+ }
+ public void setGenusName(String genusName) {
+ this.genusName = genusName;
+ model.fireModelChanged(new Object[] {this}, IModelListener.CHANGED, P_GENUSNAME);
+ }
+ public String getSpeciesEpithet() {
+ return speciesEpithet;
+ }
+ public void setSpeciesEpithet(String speciesEpithet) {
+ this.speciesEpithet = speciesEpithet;
+ model.fireModelChanged(new Object[] {this}, IModelListener.CHANGED, P_SPECIESEPITHET);
+ }
+}
diff --git a/src/eu/etaxonomy/taxeditor/NameDetailsPage.java b/src/eu/etaxonomy/taxeditor/NameDetailsPage.java
new file mode 100644
index 000000000..222a7e395
--- /dev/null
+++ b/src/eu/etaxonomy/taxeditor/NameDetailsPage.java
@@ -0,0 +1,215 @@
+package eu.etaxonomy.taxeditor;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.IDetailsPage;
+import org.eclipse.ui.forms.IFormPart;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+public class NameDetailsPage implements IDetailsPage {
+ private IManagedForm mform;
+ private Name input;
+ //private TaxonName input;
+ private Button [] choices;
+ private Button flag;
+ private Text text;
+ private Text genusName;
+ private Text speciesEpithet;
+ private Section s1;
+ private static final String RTEXT_DATA =
+ "