eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/ApplicationWorkbenchAdvisor.java -text
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/ApplicationWorkbenchWindowAdvisor.java -text
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/Perspective.java -text
+eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/DeleteTaxonAction.java -text
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/OpenNameEditorAction.java -text
-eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/SaveNameAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/OpenNewChildNameEditorAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/SaveTaxonAction.java -text
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/NameEditorInput.java -text
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/NameTreeContentProvider.java -text
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/ObservableListTreeContentProvider.java -text
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/RelatedNameViewer.java -text
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/TaxonomicTreeViewer.java -text
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/UndoView.java -text
+eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/AnnotationMarkerAccess.java -text
+eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/ErrorAnnotation.java -text
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/MyCompletionProcessor.java -text
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/MyRuleScanner.java -text
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/MySourceViewerConfig.java -text
import org.osgi.framework.BundleContext;\r
\r
import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.taxeditor.prototype2.model.TaxonList;\r
\r
\r
*/\r
public Activator() {\r
\r
- taxonList.setTaxonList(cdmApp.getNameService().getAllNames());\r
+ taxonList.setTaxonList(cdmApp.getTaxonService().getRootTaxa(null));\r
}\r
\r
/*\r
public TaxonList getRecentNamesList() {\r
return recentNamesList;\r
}\r
+ \r
+ public CdmApplicationController getCdmApp() {\r
+ return cdmApp;\r
+ }\r
}\r
public void createInitialLayout(IPageLayout layout) {
String editorArea = layout.getEditorArea();
layout.addStandaloneView(NameListView.ID, false, IPageLayout.LEFT, 0.30f, editorArea);
- layout.addView(UndoView.ID, IPageLayout.BOTTOM, 0.8f, editorArea);
+// layout.addView(UndoView.ID, IPageLayout.BOTTOM, 0.8f, editorArea);
layout.getViewLayout(NameListView.ID).setCloseable(false);
addFastViews(layout);
}
--- /dev/null
+package eu.etaxonomy.taxeditor.prototype2.controller;\r
+\r
+import org.eclipse.jface.action.Action;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.prototype2.Activator;\r
+\r
+/**\r
+ * Delete this taxon from the CDM\r
+ * \r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class DeleteTaxonAction extends Action {\r
+ Taxon taxon;\r
+ \r
+ public DeleteTaxonAction(Taxon taxon) {\r
+ this.taxon = taxon;\r
+ }\r
+ \r
+ public void run() {\r
+// Activator.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
+ }\r
+}\r
import org.eclipse.ui.IEditorInput;\r
import org.eclipse.ui.PartInitException;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.prototype2.view.MultiPageTaxonView;\r
import eu.etaxonomy.taxeditor.prototype2.model.NameEditorInput;\r
import eu.etaxonomy.taxeditor.prototype2.Activator;\r
\r
+/**\r
+ * Opens a name editor for an existing or new taxon\r
+ * \r
+ * @author p.ciardelli\r
+ *\r
+ */\r
public class OpenNameEditorAction extends Action {\r
\r
- private TaxonName taxonname;\r
+ private Taxon taxon;\r
public static final String ID = "eu.etaxonomy.taxeditor.prototype2.controller.opennameeditoraction"; //$NON-NLS-1$\r
\r
- public OpenNameEditorAction(TaxonName taxonname) {\r
- this.taxonname = taxonname;\r
+ public OpenNameEditorAction(Taxon taxon) {\r
+ this.taxon = taxon;\r
}\r
\r
public OpenNameEditorAction() {\r
- this.taxonname = new TaxonName();\r
- this.taxonname.setName("new");\r
- setId(ID);\r
+\r
+ // the text for the menu item\r
setText("New taxon");\r
+ \r
+ setId(ID);\r
+ \r
+ this.taxon = new Taxon();\r
+ taxon.setName(new BotanicalName(Rank.GENUS()));\r
+ \r
}\r
\r
public void run() {\r
- \r
- // make sure there are no duplicates in recent names list\r
- if (!Activator.getDefault().getRecentNamesList().contains(taxonname))\r
- Activator.getDefault().getRecentNamesList().add(taxonname); \r
- \r
- IEditorInput input = new NameEditorInput(taxonname);\r
+\r
+ // if this is a non-empty taxon being opened for the first time,\r
+ // add to recent names list\r
+ if (taxon.getName().getNameCache() != null && !Activator.getDefault().getRecentNamesList().contains(taxon))\r
+ Activator.getDefault().getRecentNamesList().add(taxon);\r
+\r
+ IEditorInput input = new NameEditorInput(taxon);\r
try {\r
Activator.getDefault().getWorkbench().getActiveWorkbenchWindow().\r
- getActivePage().openEditor(input, MultiPageTaxonView.ID); \r
+ getActivePage().openEditor(input, MultiPageTaxonView.ID);\r
+ \r
} catch (PartInitException e) {\r
// TODO Auto-generated catch block\r
e.printStackTrace();\r
--- /dev/null
+package eu.etaxonomy.taxeditor.prototype2.controller;\r
+\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.ui.IEditorInput;\r
+import org.eclipse.ui.PartInitException;\r
+\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.prototype2.view.MultiPageTaxonView;\r
+import eu.etaxonomy.taxeditor.prototype2.model.NameEditorInput;\r
+import eu.etaxonomy.taxeditor.prototype2.Activator;\r
+\r
+/**\r
+ * Opens a name editor for a new taxon with a parent taxon\r
+ * \r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class OpenNewChildNameEditorAction extends Action {\r
+\r
+ private Taxon taxon;\r
+ public static final String ID = "eu.etaxonomy.taxeditor.prototype2.controller.opennameeditoraction"; //$NON-NLS-1$\r
+ \r
+ public OpenNewChildNameEditorAction(Taxon parentTaxon) {\r
+ \r
+ taxon = new Taxon();\r
+ taxon.setName(new BotanicalName(Rank.GENUS()));\r
+ \r
+ parentTaxon.addTaxonomicChild(taxon, null, null);\r
+ }\r
+\r
+ public OpenNewChildNameEditorAction() {\r
+ setId(ID);\r
+ }\r
+ \r
+ public void run() {\r
+\r
+ new OpenNameEditorAction(taxon).run();\r
+ }\r
+}
\ No newline at end of file
+++ /dev/null
-package eu.etaxonomy.taxeditor.prototype2.controller;\r
-\r
-import org.eclipse.jface.action.Action;\r
-\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.taxeditor.prototype2.Activator;\r
-\r
-public class SaveNameAction extends Action {\r
- TaxonName taxonname;\r
- \r
- public SaveNameAction(TaxonName taxonname) {\r
- this.taxonname = taxonname;\r
- }\r
- \r
- public void run() {\r
-// Activator.getDefault().getApplicationController().getNameService().\r
-// saveTaxonName(taxonname);\r
- }\r
-}\r
--- /dev/null
+package eu.etaxonomy.taxeditor.prototype2.controller;\r
+\r
+import org.eclipse.jface.action.Action;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.prototype2.Activator;\r
+\r
+/**\r
+ * Commit any changes to this taxon to the CDM\r
+ * \r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class SaveTaxonAction extends Action {\r
+ Taxon taxon;\r
+ \r
+ public SaveTaxonAction(Taxon taxon) {\r
+ this.taxon = taxon;\r
+ }\r
+ \r
+ public void run() {\r
+ Activator.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
+ }\r
+}\r
import org.eclipse.ui.IEditorInput;\r
import org.eclipse.ui.IPersistableElement;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
\r
/**\r
* @author p.ciardelli\r
*/\r
public class NameEditorInput implements IEditorInput {\r
\r
- private TaxonName taxonname;\r
+ private Taxon taxon;\r
\r
- public NameEditorInput (TaxonName taxonname) {\r
- this.taxonname = taxonname;\r
+ public NameEditorInput (Taxon taxon) {\r
+ this.taxon = taxon;\r
}\r
\r
public boolean exists() {\r
}\r
\r
public String getName() {\r
- return taxonname.getName();\r
+ if (taxon.getName().getNameCache() == null)\r
+ return "New taxon";\r
+ else\r
+ return taxon.getName().getNameCache();\r
}\r
\r
public IPersistableElement getPersistable() {\r
}\r
\r
public String getToolTipText() {\r
- return taxonname.getName();\r
+ return getName();\r
}\r
\r
public Object getAdapter(Class adapter) {\r
\r
- if (adapter == TaxonName.class) {\r
- return this.taxonname;\r
+ if (adapter == Taxon.class) {\r
+ return this.taxon;\r
}\r
\r
return null;\r
}\r
\r
/**\r
- * Overrides equals to ensure that a taxonname can only be edited by\r
+ * Overrides equals to ensure that a taxon can only be edited by\r
* one editor at a time.\r
* \r
* @return boolean\r
*/\r
- public boolean equals(Object obj) {\r
- if (this.taxonname.equals(((NameEditorInput) obj).taxonname))\r
+ public boolean equals(Object obj) { \r
+ if (this.taxon.equals(((NameEditorInput) obj).taxon))\r
return true;\r
return false;\r
}\r
import org.eclipse.core.databinding.observable.list.IListChangeListener;\r
import org.eclipse.core.databinding.observable.list.IObservableList;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+\r
+/**\r
+ * List exists mainly to catch "add taxon" events, which require\r
+ * the taxonomic tree to be updated.\r
+ * \r
+ * @author p.ciardelli\r
+ *\r
+ */\r
public class TaxonList implements IObservableList {\r
\r
- private List<TaxonName> taxonList = new ArrayList<TaxonName>();\r
+ private List<Taxon> taxonList = new ArrayList<Taxon>();\r
\r
- public void add(TaxonName tn) {\r
- this.taxonList.add(0, tn);\r
+ public void add(Taxon taxon) {\r
+ this.taxonList.add(0, taxon);\r
firePropertyChange("taxonList", null, null); //$NON-NLS-1$\r
}\r
\r
- public void remove(TaxonName tn) {\r
- this.taxonList.remove(tn);\r
+ public void remove(Taxon taxon) {\r
+ this.taxonList.remove(taxon);\r
firePropertyChange("taxonList", null, null); //$NON-NLS-1$\r
}\r
\r
- public TaxonName[] toArray() {\r
- return (TaxonName[]) this.taxonList.toArray(new TaxonName[this.taxonList.size()]);\r
+ public Taxon[] toArray() {\r
+ return (Taxon[]) this.taxonList.toArray(new Taxon[this.taxonList.size()]);\r
}\r
\r
- public List<TaxonName> getTaxonList() {\r
+ public List<Taxon> getTaxonList() {\r
return taxonList;\r
}\r
\r
- public boolean contains(TaxonName tn) {\r
- if (taxonList.contains(tn))\r
+ public boolean contains(Taxon taxon) {\r
+ if (taxonList.contains(taxon))\r
return true;\r
return false;\r
}\r
- public void setTaxonList(List<TaxonName> taxonList) {\r
+ public void setTaxonList(List<Taxon> taxonList) {\r
this.taxonList = taxonList;\r
}\r
\r
+ public void setTaxonList(Taxon rootTaxa) {\r
+ this.taxonList.add(rootTaxa);\r
+ }\r
+ \r
protected final PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);\r
public void addPropertyChangeListener(PropertyChangeListener listener) {\r
propertyChangeSupport.addPropertyChangeListener(listener);\r
\r
protected void firePropertyChange(String propertyName, Object oldValue,\r
Object newValue) {\r
- propertyChangeSupport.firePropertyChange(propertyName, oldValue,\r
- newValue);\r
+ try {\r
+ propertyChangeSupport.firePropertyChange(propertyName, oldValue,\r
+ newValue);\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
+ }\r
}\r
\r
public boolean add(Object o) {\r
\r
import com.swtdesigner.SWTResourceManager;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-\r
public class AcceptedNameViewer extends NameViewer {\r
\r
AcceptedNameViewer(TaxonName taxonName, DataBindingContext bindingContext,\r
package eu.etaxonomy.taxeditor.prototype2.view;\r
\r
import java.beans.PropertyChangeEvent;\r
-import java.beans.PropertyChangeListener;\r
\r
import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.jface.action.Action;\r
import org.eclipse.jface.text.Document;\r
-import org.eclipse.jface.text.TextViewer;\r
import org.eclipse.jface.text.source.SourceViewer;\r
import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.custom.PopupList;\r
import org.eclipse.swt.custom.StyledText;\r
-import org.eclipse.swt.events.ControlAdapter;\r
-import org.eclipse.swt.events.ControlEvent;\r
import org.eclipse.swt.events.FocusEvent;\r
import org.eclipse.swt.events.FocusListener;\r
-import org.eclipse.swt.events.KeyEvent;\r
-import org.eclipse.swt.events.KeyListener;\r
-import org.eclipse.swt.events.MouseAdapter;\r
import org.eclipse.swt.events.MouseEvent;\r
import org.eclipse.swt.events.SelectionAdapter;\r
import org.eclipse.swt.events.SelectionEvent;\r
import org.eclipse.swt.events.SelectionListener;\r
import org.eclipse.swt.graphics.Point;\r
import org.eclipse.swt.graphics.Rectangle;\r
-import org.eclipse.swt.layout.FillLayout;\r
import org.eclipse.swt.layout.GridData;\r
import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Button;\r
import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.CoolBar;\r
-import org.eclipse.swt.widgets.CoolItem;\r
import org.eclipse.swt.widgets.Display;\r
import org.eclipse.swt.widgets.Event;\r
import org.eclipse.swt.widgets.Label;\r
import org.eclipse.swt.widgets.Listener;\r
import org.eclipse.swt.widgets.Menu;\r
import org.eclipse.swt.widgets.MenuItem;\r
-import org.eclipse.swt.widgets.Shell;\r
import org.eclipse.swt.widgets.Table;\r
import org.eclipse.swt.widgets.TableColumn;\r
import org.eclipse.swt.widgets.TableItem;\r
import org.eclipse.ui.IEditorSite;\r
import org.eclipse.ui.PartInitException;\r
import org.eclipse.ui.part.EditorPart;\r
+\r
import com.swtdesigner.ResourceManager;\r
import com.swtdesigner.SWTResourceManager;\r
\r
-//import org.eclipse.ui.texteditor.AbstractTextEditor;\r
-\r
-//import eu.etaxonomy.cdm.event.ICdmEventListener;\r
-//import eu.etaxonomy.cdm.event.ICdmEventListenerRegistration;\r
-//import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.MySourceViewerConfig;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.SaveNameAction;\r
import eu.etaxonomy.taxeditor.prototype2.Activator;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.OpenNameEditorAction;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.SaveTaxonAction;\r
+import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.MySourceViewerConfig;\r
\r
//public class CarduusEditorView extends EditorPart implements ICdmEventListener {\r
public class CarduusEditorView extends EditorPart {\r
// taxonname.setGenus(txtGenus.getText());\r
// taxonname.setSpecificEpithet(txtSpEpi.getText());\r
\r
- new SaveNameAction(taxonname).run();\r
+ new SaveTaxonAction(taxonname).run();\r
}\r
\r
public void widgetDefaultSelected(SelectionEvent e) {\r
- new SaveNameAction(taxonname).run();\r
+ new SaveTaxonAction(taxonname).run();\r
}\r
\r
public void widgetSelected(SelectionEvent e) {\r
- new SaveNameAction(taxonname).run();\r
+ new SaveTaxonAction(taxonname).run();\r
}\r
});\r
\r
import org.eclipse.swt.SWT;\r
import org.eclipse.swt.events.FocusEvent;\r
import org.eclipse.swt.events.FocusListener;\r
-import org.eclipse.swt.events.MouseAdapter;\r
-import org.eclipse.swt.events.MouseEvent;\r
import org.eclipse.swt.events.SelectionAdapter;\r
import org.eclipse.swt.events.SelectionEvent;\r
import org.eclipse.swt.graphics.Point;\r
import org.eclipse.swt.widgets.Group;\r
import org.eclipse.swt.widgets.Label;\r
import org.eclipse.swt.widgets.Shell;\r
-import org.eclipse.swt.widgets.Table;\r
-import org.eclipse.swt.widgets.TableItem;\r
import org.eclipse.swt.widgets.Text;\r
\r
import com.swtdesigner.ResourceManager;\r
import com.swtdesigner.SWTResourceManager;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.OpenNameEditorAction;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.prototype2.Activator;\r
\r
public class MoveDialogView extends Dialog {\r
\r
private Text searchText;\r
private TreeViewer treeViewer;\r
- private TaxonName selectedTaxonName;\r
private Label selectedTaxonNameLabel;\r
+ private Taxon taxon;\r
\r
private List<Button> buttons = new ArrayList<Button>();\r
\r
+ public int open(Taxon taxon) {\r
+ this.taxon = taxon;\r
+ return super.open();\r
+ }\r
/**\r
* Create the dialog\r
* @param parentShell\r
final GridData gd_youHaveChosenLabel = new GridData(SWT.CENTER, SWT.FILL, true, false, 2, 1);\r
gd_youHaveChosenLabel.heightHint = 30;\r
youHaveChosenLabel.setLayoutData(gd_youHaveChosenLabel);\r
- youHaveChosenLabel.setText("You have chosen to turn \"Pilosella fuscoatra (Nägeli & Peter) Soják\" into a synonym. Please choose a new accepted name from one of the following options.");\r
+ youHaveChosenLabel.setText("You have chosen to turn \"" + taxon.getName().getNameCache() +\r
+ "\" into a synonym. Please choose a new accepted name from one of the following options.");\r
\r
final Group group_1 = new Group(container, SWT.NONE);\r
group_1.setLayout(new GridLayout());\r
\r
final Composite composite = new Composite(container, SWT.NONE);\r
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
- composite.setLayout(new FillLayout(SWT.VERTICAL));\r
+ composite.setLayout(new FillLayout(SWT.VERTICAL | SWT.HORIZONTAL));\r
\r
final Group group = new Group(composite, SWT.NONE);\r
group.setLayout(new GridLayout());\r
protected void configureShell(Shell newShell) {\r
super.configureShell(newShell);\r
newShell.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/edit_16x16.ico"));\r
- newShell.setText("Move \"Pilosella fuscoatra (Nägeli & Peter) Soják\"");\r
+ newShell.setText("Move \"" + taxon.getName().getNameCache() +\r
+ "\"");\r
}\r
\r
class SelectButtonFocusListener implements FocusListener {\r
class SelectTaxonDoubleClickListener implements IDoubleClickListener {\r
\r
public void doubleClick(DoubleClickEvent event) { \r
- TaxonName taxonname = null;\r
+// TaxonName taxonname = null;\r
+ Taxon taxon = null;\r
try {\r
- taxonname = (TaxonName) ((StructuredSelection)event.getSelection()).getFirstElement();\r
+ taxon = (Taxon) ((StructuredSelection)event.getSelection()).getFirstElement();\r
}catch (Exception e){\r
e.printStackTrace();\r
- taxonname = null;\r
+ taxon = null;\r
}\r
- selectedTaxonNameLabel.setText(taxonname.getName());\r
+ selectedTaxonNameLabel.setText(taxon.getName().getNameCache());\r
}\r
}\r
-}\r
+}
\ No newline at end of file
import org.eclipse.ui.PartInitException;\r
import org.eclipse.ui.part.MultiPageEditorPart;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+\r
\r
/**\r
* \r
public class MultiPageTaxonView extends MultiPageEditorPart {\r
\r
public static final String ID = "eu.etaxonomy.taxeditor.prototype2.view.multipagetaxonview";\r
- private TaxonName taxonname;\r
+ private Taxon taxon;\r
private DataBindingContext bindingContext;\r
\r
@Override\r
protected void createPages() {\r
+ \r
try {\r
addPage(0, new NameEditorView(), getEditorInput());\r
setPageText(0, "Name");\r
// addPage(3, new EmptyEditorView(), new NameEditorInput(new TaxonName()));\r
// setPageText(3, "Geographic");\r
\r
- } catch (PartInitException e) {\r
+ } catch (PartInitException e) { \r
// TODO Auto-generated catch block\r
e.printStackTrace();\r
}\r
throw new PartInitException(\r
"Invalid Input: Must be IFileEditorInput");\r
\r
- if (input.getAdapter(TaxonName.class) != null) {\r
- taxonname = (TaxonName) input.getAdapter(TaxonName.class);\r
+ if (input.getAdapter(Taxon.class) != null) {\r
+ taxon = (Taxon) input.getAdapter(Taxon.class);\r
} else {\r
- taxonname = null;\r
+ taxon = null;\r
}\r
-\r
- setPartName(taxonname.getName()); \r
+ \r
+ if (taxon.getName().getNameCache() == null)\r
+ setPartName("New taxon");\r
+ else\r
+ setPartName(taxon.getName().getNameCache());\r
+ \r
setSite(site);\r
setInput(input);\r
}\r
import org.eclipse.core.databinding.DataBindingContext;\r
import org.eclipse.core.databinding.beans.BeansObservables;\r
import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.jface.text.Document;\r
+import org.eclipse.jface.text.IDocument;\r
import org.eclipse.jface.text.IDocumentPartitioner;\r
+import org.eclipse.jface.text.Position;\r
+import org.eclipse.jface.text.Region;\r
import org.eclipse.jface.text.source.AnnotationModel;\r
+import org.eclipse.jface.text.source.AnnotationPainter;\r
+import org.eclipse.jface.text.source.CompositeRuler;\r
+import org.eclipse.jface.text.source.IAnnotationAccess;\r
+import org.eclipse.jface.text.source.ISourceViewer;\r
import org.eclipse.jface.text.source.SourceViewer;\r
import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.custom.StyledText;\r
+import org.eclipse.swt.events.FocusEvent;\r
+import org.eclipse.swt.events.FocusListener;\r
import org.eclipse.swt.events.MouseEvent;\r
import org.eclipse.swt.events.MouseListener;\r
import org.eclipse.swt.events.SelectionAdapter;\r
import org.eclipse.swt.events.SelectionEvent;\r
import org.eclipse.swt.events.SelectionListener;\r
+import org.eclipse.swt.graphics.Color;\r
import org.eclipse.swt.graphics.Point;\r
import org.eclipse.swt.graphics.Rectangle;\r
+import org.eclipse.swt.layout.FillLayout;\r
import org.eclipse.swt.layout.GridData;\r
import org.eclipse.swt.layout.GridLayout;\r
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.swt.widgets.Display;\r
import org.eclipse.swt.widgets.Event;\r
import org.eclipse.swt.widgets.Label;\r
+import org.eclipse.swt.widgets.Link;\r
import org.eclipse.swt.widgets.Listener;\r
import org.eclipse.swt.widgets.Menu;\r
import org.eclipse.swt.widgets.MenuItem;\r
import com.swtdesigner.ResourceManager;\r
import com.swtdesigner.SWTResourceManager;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.prototype2.Activator;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.SaveNameAction;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.DeleteTaxonAction;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.OpenNameEditorAction;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.OpenNewChildNameEditorAction;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.SaveTaxonAction;\r
import eu.etaxonomy.taxeditor.prototype2.model.PropertySheetNode;\r
+import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.AnnotationMarkerAccess;\r
+import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.ErrorAnnotation;\r
import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.NameDocument;\r
import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.NamePartitionScanner;\r
import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.NamePartitioner;\r
\r
public class NameEditorView extends EditorPart {\r
\r
- private TaxonName taxonname;\r
- \r
+ /**\r
+ * The taxon the editor is editing \r
+ */\r
+ private Taxon taxon;\r
+ /**\r
+ * The higher taxon of the taxon the editor is editing \r
+ */\r
+ private Taxon higherTaxon = null;\r
+ /**\r
+ * Arrays for the creation of synonyms - text and images \r
+ */\r
+ String [] relTypes = {"a synonym (type unknown)",\r
+ "a homotypic synonym",\r
+ "a heterotypic synoynm",\r
+ "a basionym",\r
+ "a replaced synonym",\r
+ "a homonym",\r
+ "an orthographic variant",\r
+ "a misapplied name",\r
+ "a concept relation"};\r
+ String [] relImgs = {"unknown_no_bg.gif",\r
+ "homosyn_no_bg.gif",\r
+ "heterosyn_no_bg.gif",\r
+ "basionym_no_bg.gif",\r
+ "repsyn_no_bg.gif",\r
+ "homonym_no_bg.gif",\r
+ "orthovariant_no_bg.gif",\r
+ "misapplied_no_bg.gif",\r
+ "concept_no_bg.gif"};\r
+ /*\r
+ * Annotation model\r
+ */\r
+ private AnnotationModel fAnnotationModel = new AnnotationModel();\r
public boolean dirtyBoy = false;\r
String clickText;\r
\r
\r
parent.setLayout(new GridLayout());\r
parent.setRedraw(true);\r
- \r
-\r
- final Label taxonomicallyIncludedInLabel = new Label(parent, SWT.NONE);\r
- taxonomicallyIncludedInLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));\r
- taxonomicallyIncludedInLabel.setText("Higher taxon: ");\r
+ \r
+ /*\r
+ * display hyperlinked higher taxon, if there is one\r
+ */\r
+ Composite higherTaxonComposite = new Composite(parent, SWT.NONE);\r
+ higherTaxonComposite.setLayout(new FillLayout());\r
+ (new Label(higherTaxonComposite, SWT.NONE)).setText("Higher taxon: ");\r
+ if (higherTaxon == null)\r
+ (new Label(higherTaxonComposite, SWT.NONE)).setText("none");\r
+ else {\r
+ Link higherTaxonLink = new Link(higherTaxonComposite, SWT.NONE);\r
+ higherTaxonLink.setText("<a href=\"#\">" + higherTaxon.getName().getNameCache() + "</a>");\r
+ higherTaxonLink.addMouseListener(new MouseListener() {\r
+ public void mouseDoubleClick(MouseEvent e) {\r
+ new OpenNameEditorAction(higherTaxon).run(); \r
+ }\r
+ public void mouseDown(MouseEvent e) {\r
+ new OpenNameEditorAction(higherTaxon).run();\r
+ }\r
+ public void mouseUp(MouseEvent e) {\r
+ } \r
+ });\r
+ }\r
\r
final CoolBar coolBar = new CoolBar(parent, SWT.NONE);\r
new CoolItem(coolBar, SWT.PUSH).setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/save_edit.gif"));\r
\r
final ToolItem itemSave = new ToolItem(toolBar, SWT.PUSH);\r
// final CoolItem itemSave = new CoolItem(coolBar, SWT.PUSH); \r
- itemSave.setToolTipText("Save taxon \"" + taxonname.getName() + "\"");\r
+// itemSave.setToolTipText("Save taxon \"" + taxon.getName().getNameCache() + "\"");\r
+ itemSave.setToolTipText("Save taxon");\r
itemSave.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/save_edit.gif"));\r
itemSave.addSelectionListener(new SelectionListener() {\r
- public void mouseDown(final MouseEvent e) {\r
- \r
-// taxonname.setGenus(txtGenus.getText());\r
-// taxonname.setSpecificEpithet(txtSpEpi.getText());\r
- \r
- new SaveNameAction(taxonname).run();\r
- }\r
-\r
public void widgetDefaultSelected(SelectionEvent e) {\r
- new SaveNameAction(taxonname).run();\r
+ new SaveTaxonAction(taxon).run();\r
}\r
-\r
public void widgetSelected(SelectionEvent e) {\r
- new SaveNameAction(taxonname).run();\r
+ new SaveTaxonAction(taxon).run();\r
}\r
});\r
\r
final ToolItem itemMove = new ToolItem(toolBar, SWT.DROP_DOWN);\r
- itemMove.setToolTipText("Move taxon \"" + taxonname.getName() + "\"");\r
+// itemMove.setToolTipText("Move taxon \"" + taxon.getName().getNameCache() + "\"");\r
+ itemMove.setToolTipText("Move taxon");\r
\r
final Menu menuMove = new Menu(toolBar);\r
addDropDown(itemMove, menuMove);\r
\r
final MenuItem moveTaxonpilosellaMenuItem = new MenuItem(menuMove, SWT.NONE);\r
- moveTaxonpilosellaMenuItem.setText("Move taxon \"" + taxonname.getName() + "\" to another higher taxon");\r
+// moveTaxonpilosellaMenuItem.setText("Move taxon \"" + taxon.getName().getNameCache() + "\" to another higher taxon");\r
+ moveTaxonpilosellaMenuItem.setText("Move taxon to another higher taxon");\r
moveTaxonpilosellaMenuItem.addSelectionListener(new SelectionAdapter() {\r
public void widgetSelected(final SelectionEvent e) {\r
new MoveDialogView(getSite().getShell()); \r
MoveDialogView dialog = new MoveDialogView(getSite().getShell());\r
- dialog.open(); \r
+ dialog.open(taxon); \r
}\r
});\r
\r
final MenuItem turnTaxonpilosellaMenuItem = new MenuItem(menuMove, SWT.NONE);\r
turnTaxonpilosellaMenuItem.setSelection(true);\r
- turnTaxonpilosellaMenuItem.setText("Turn taxon \"" + taxonname.getName() + "\" into a synonym");\r
+// turnTaxonpilosellaMenuItem.setText("Turn taxon \"" + taxon.getName().getNameCache() + "\" into a synonym");\r
+ turnTaxonpilosellaMenuItem.setText("Turn taxon's accepted name into a synonym"); \r
turnTaxonpilosellaMenuItem.addSelectionListener(new SelectionAdapter() {\r
public void widgetSelected(final SelectionEvent e) {\r
new MoveDialogView(getSite().getShell()); \r
MoveDialogView dialog = new MoveDialogView(getSite().getShell());\r
- dialog.open(); \r
+ dialog.open(taxon); \r
}\r
});\r
\r
itemMove.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/correction_change.gif"));\r
\r
final ToolItem itemDelete = new ToolItem(toolBar, SWT.NONE);\r
- itemDelete.setToolTipText("Delete taxon \"" + taxonname.getName() + "\"");\r
+// itemDelete.setToolTipText("Delete taxon \"" + taxon.getName().getNameCache() + "\"");\r
+ itemDelete.setToolTipText("Delete taxon");\r
itemDelete.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/delete_edit.gif"));\r
+ itemDelete.addSelectionListener(new SelectionListener() {\r
+\r
+ public void widgetDefaultSelected(SelectionEvent e) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+ public void widgetSelected(SelectionEvent e) {\r
+ new DeleteTaxonAction(taxon).run();\r
+ }\r
+ });\r
\r
final ToolItem separator1 = new ToolItem(toolBar, SWT.SEPARATOR);\r
\r
final ToolItem itemAddRelationship = new ToolItem(toolBar, SWT.DROP_DOWN);\r
- itemAddRelationship.setToolTipText("Add nom. or tax. relation to \"" + taxonname.getName() + "\"");\r
+// itemAddRelationship.setToolTipText("Add nom. or tax. relation to \"" + \r
+// taxon.getName().getNameCache() + "\"");\r
+ itemAddRelationship.setToolTipText("Add nom. or tax. relation to taxon"); \r
itemAddRelationship.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/rel_no_bg.gif"));\r
- \r
+\r
+ /*\r
+ * Create menu to add relations to the taxon\r
+ */\r
final Menu menuAddRel = new Menu(toolBar);\r
- menuAddRel.setData("x", null);\r
+// menuAddRel.setData("x", null);\r
addDropDown(itemAddRelationship, menuAddRel);\r
\r
+// for (int i= 0; i < relTypes.length; i++) {\r
+// final MenuItem menuItem = new MenuItem(menuAddRel, SWT.NONE);\r
+// menuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/" + relImgs[i]));\r
+// menuItem.setText("Add " + relTypes[i]);\r
+// }\r
+ \r
final MenuItem testMenuItem = new MenuItem(menuAddRel, SWT.NONE);\r
testMenuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/unknown_no_bg.gif"));\r
- testMenuItem.setText("Add synonymy (type unknown)");\r
+ testMenuItem.setText("Add synonym (type unknown)");\r
\r
final MenuItem addHomotypicSynonymMenuItem = new MenuItem(menuAddRel, SWT.NONE);\r
addHomotypicSynonymMenuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/homosyn_no_bg.gif"));\r
itemAddTaxon.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/add_edit.gif"));\r
itemAddTaxon.setToolTipText("Add new taxon");\r
\r
+ /*\r
+ * drop-down to add new "included in" taxon\r
+ */ \r
final Menu menuAdd = new Menu(toolBar);\r
- menuAdd.setData("x", null);\r
addDropDown(itemAddTaxon, menuAdd);\r
\r
- final MenuItem addTaxonToMenuItem = new MenuItem(menuAdd, SWT.NONE);\r
- addTaxonToMenuItem.setText("Add new taxon to \"" + taxonname.getName() + "\"");\r
-\r
- final MenuItem addNewTaxonMenuItem = new MenuItem(menuAdd, SWT.NONE);\r
- addNewTaxonMenuItem.setText("Add new taxon to \"Pilosella fuscoatra coll.\"");\r
+ if (higherTaxon != null) {\r
+ final MenuItem addToHigherTaxonItem = new MenuItem(menuAdd, SWT.NONE);\r
+ addToHigherTaxonItem.setText("Add new taxon to \"" + higherTaxon.getName().getNameCache() + "\"");\r
+ addToHigherTaxonItem.addSelectionListener(new SelectionListener() {\r
+ public void widgetDefaultSelected(SelectionEvent e) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+ public void widgetSelected(SelectionEvent e) {\r
+ new OpenNewChildNameEditorAction(higherTaxon).run();\r
+ } \r
+ });\r
+ }\r
+ final MenuItem addTaxonItem = new MenuItem(menuAdd, SWT.NONE);\r
+// addTaxonItem.setText("Add new taxon to \"" + taxon.getName().getNameCache() + "\"");\r
+ addTaxonItem.setText("Add new taxon to this taxon");\r
+ addTaxonItem.addSelectionListener(new SelectionListener() {\r
+ public void widgetDefaultSelected(SelectionEvent e) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+ public void widgetSelected(SelectionEvent e) {\r
+ new OpenNewChildNameEditorAction(taxon).run();\r
+ } \r
+ });\r
\r
final Composite contentComposite = new Composite(parent, SWT.NONE);\r
contentComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
nameComposite.setRedraw(true);\r
\r
// clickText = "Click here to start entering accepted name or enter its individual fields in the property sheet to the right";\r
-// NameViewer acceptedNameViewer = new AcceptedNameViewer(taxonname, bindingContext, nameComposite);\r
+// NameViewer acceptedNameViewer = new AcceptedNameViewer(taxon, bindingContext, nameComposite);\r
// acceptedNameViewer.setBindingContext(bindingContext);\r
- createAcceptedName();\r
// acceptedNameViewer.configure(new NameViewerConfig());\r
+\r
+ createAcceptedName();\r
\r
- // Construct PropertySheetViewer, with bindings to model layer\r
+ /*\r
+ * construct PropertySheetViewer, with bindings to model layer\r
+ */\r
propertySheetViewer = new PropertySheetViewer(contentComposite);\r
propertySheetViewer.setBindingContext(bindingContext);\r
\r
propertySheetViewer.getPropertyValueColumn().setEditingSupport(\r
new PropertySheetValueEditingSupport(propertySheetViewer));\r
\r
- setPropertySheetNodes(taxonname);\r
+ setPropertySheetNodes(taxon.getName());\r
\r
// Text testeroo = new Text(composite, SWT.BORDER);\r
// testeroo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
// \r
// bindingContext.bindValue( SWTObservables.observeText(testeroo, SWT.Modify),\r
-// BeansObservables.observeValue(taxonname,"genus"),\r
+// BeansObservables.observeValue(taxon,"genus"),\r
// null, null); \r
}\r
\r
- private void setPropertySheetNodes(TaxonName taxonname2) {\r
+ private void setPropertySheetNodes(TaxonNameBase taxonname) {\r
propertySheetViewer.setInput(getPropertySheetNodes(taxonname)); \r
}\r
\r
private SourceViewer createAcceptedName() {\r
\r
- PropertyDescriptor descriptor;\r
- try {\r
- descriptor = new PropertyDescriptor("genus", taxonname.getClass());\r
- try {\r
- System.out.println("Property desc. test in createAcceptedName: " \r
- + descriptor.getReadMethod().invoke(taxonname, null));\r
- } catch (IllegalArgumentException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (IllegalAccessException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (InvocationTargetException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- }\r
- } catch (IntrospectionException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } \r
+// PropertyDescriptor descriptor;\r
+// try {\r
+// descriptor = new PropertyDescriptor("genus", taxonname.getClass());\r
+// try {\r
+// System.out.println("Property desc. test in createAcceptedName: " \r
+// + descriptor.getReadMethod().invoke(taxonname, null));\r
+// } catch (IllegalArgumentException e) {\r
+// // TODO Auto-generated catch block\r
+// e.printStackTrace();\r
+// } catch (IllegalAccessException e) {\r
+// // TODO Auto-generated catch block\r
+// e.printStackTrace();\r
+// } catch (InvocationTargetException e) {\r
+// // TODO Auto-generated catch block\r
+// e.printStackTrace();\r
+// }\r
+// } catch (IntrospectionException e) {\r
+// // TODO Auto-generated catch block\r
+// e.printStackTrace();\r
+// } \r
\r
- SourceViewer sourceViewer = createSourceViewer(taxonname);\r
+ final SourceViewer sourceViewer = createSourceViewer(taxon.getName());\r
\r
sourceViewer.getTextWidget().setLayoutData(\r
new GridData(SWT.FILL, SWT.CENTER, true, false, 2 , 1));\r
sourceViewer.getTextWidget().setFont(\r
SWTResourceManager.getFont("Georgia", 12, SWT.NONE)); \r
\r
+ /*\r
+ * if this is a new name, show text prompt to start entering data\r
+ */\r
+ if (taxon.getName().getNameCache() == null) {\r
+ clickText = "Click here to start entering accepted name or enter individual fields in the property sheet to the right";\r
+ \r
+ sourceViewer.getTextWidget().setText(clickText);\r
+ sourceViewer.getTextWidget().setFont(SWTResourceManager.getFont("Georgia", 12, SWT.ITALIC));\r
+ sourceViewer.getTextWidget().setForeground(SWTResourceManager.getColor(192, 192, 192));\r
+ sourceViewer.getTextWidget().addFocusListener(new FocusListener() {\r
+ public void focusGained(FocusEvent e) {\r
+ if (!dirtyBoy) {\r
+ sourceViewer.getTextWidget().setText("");\r
+ sourceViewer.getTextWidget().setFont(SWTResourceManager.getFont("Georgia", 12, SWT.NONE));\r
+ sourceViewer.getTextWidget().setForeground(SWTResourceManager.getColor(0, 0, 0));\r
+ dirtyBoy = true;\r
+ firePropertyChange(PROP_DIRTY);\r
+ }\r
+ }\r
+ public void focusLost(FocusEvent e) { \r
+ if (sourceViewer.getTextWidget().getText() == "") {\r
+ sourceViewer.getTextWidget().setForeground(SWTResourceManager.getColor(192, 192, 192));\r
+ sourceViewer.getTextWidget().setText(clickText);\r
+ sourceViewer.getTextWidget().setFont(SWTResourceManager.getFont("Georgia", 12, SWT.ITALIC));\r
+ dirtyBoy = false;\r
+ } else {\r
+ dirtyBoy = true;\r
+ }\r
+ }\r
+ });\r
+ \r
+ \r
+ // add an annotation\r
+// ErrorAnnotation errorAnnotation = new ErrorAnnotation(1, "Learn how to spell \"text!\"");\r
+// \r
+// // lets underline the word "texst"\r
+// sourceViewer.getAnnotationModel().addAnnotation(errorAnnotation, new Position(1, 5));\r
+ \r
+ }\r
+ \r
return sourceViewer;\r
}\r
\r
}\r
});\r
\r
+ createRelationMenu((Label) ctlChooseRelType);\r
+ \r
return sourceViewer;\r
}\r
\r
* @return SourceViewer\r
*/\r
private SourceViewer createSourceViewer(Object contentObject) {\r
- SourceViewer sourceViewer = new SourceViewer(nameComposite, null, SWT.WRAP | SWT.MULTI | SWT.RESIZE);\r
+ final SourceViewer sourceViewer = new SourceViewer(nameComposite, null, SWT.WRAP | SWT.MULTI | SWT.RESIZE);\r
\r
- final NameDocument document;\r
- if (contentObject instanceof TaxonName) {\r
- document = new NameDocument((TaxonName) contentObject);\r
+ IDocument document;\r
+ if (contentObject instanceof TaxonNameBase) {\r
+ document = new Document( ((TaxonNameBase) contentObject).getNameCache());\r
} else if (contentObject instanceof String) {\r
- document = new NameDocument((String) contentObject);\r
+ document = new Document((String) contentObject);\r
} else {\r
- document = new NameDocument();\r
+ document = new Document();\r
}\r
+// final NameDocument document;\r
+// if (contentObject instanceof TaxonNameBase) {\r
+// document = new NameDocument((TaxonNameBase) contentObject);\r
+// document.set( ((TaxonNameBase) contentObject).getNameCache());\r
+// } else if (contentObject instanceof String) {\r
+// document = new NameDocument((String) contentObject);\r
+// } else {\r
+// document = new NameDocument();\r
+// }\r
\r
-// document.set("huh`?");\r
\r
- IDocumentPartitioner partitioner = new NamePartitioner(new NamePartitionScanner(),\r
- NamePartitionScanner.PARTITION_TYPES, this, sourceViewer.getTextWidget());\r
+// IDocumentPartitioner partitioner = new NamePartitioner(new NamePartitionScanner(),\r
+// NamePartitionScanner.PARTITION_TYPES, this, sourceViewer.getTextWidget());\r
// IDocumentPartitioner partitioner = new SimpleNamePartitioner(this, sourceViewer.getTextWidget()); \r
- partitioner.connect(document); // <--------------- problem\r
- document.setDocumentPartitioner(partitioner);\r
+// partitioner.connect(document); // <--------------- problem\r
+// document.setDocumentPartitioner(partitioner);\r
sourceViewer.setDocument(document, new AnnotationModel());\r
\r
// document.addDocumentListener(new NameDocumentListener(\r
// this, sourceViewer.getTextWidget(), this.nameComposite));\r
\r
- sourceViewer.configure(new NameViewerConfig());\r
+// sourceViewer.configure(new NameViewerConfig());\r
\r
// maybe use these after all: partitioning only takes place on the first line after all ...\r
sourceViewer.getTextWidget().addKeyListener(\r
new NameViewerKeyListener(this, this.nameComposite));\r
sourceViewer.getTextWidget().addModifyListener(\r
new NameViewerModifyListener(this, this.nameComposite));\r
-// sourceViewer.getTextWidget().addFocusListener(new FocusListener() {\r
-// public void focusGained(FocusEvent e) {\r
-// \r
+ sourceViewer.getTextWidget().addFocusListener(new FocusListener() {\r
+ public void focusGained(FocusEvent e) {\r
+ \r
// ((StyledText) e.widget).setBackground((Display.getCurrent().getSystemColor(SWT.COLOR_GRAY)));\r
// setPropertySheetNodes( document.getTaxonName() );\r
-// }\r
-// public void focusLost(FocusEvent e) {\r
-// ((StyledText) e.widget).setBackground((Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)));\r
-// }\r
-// \r
-// });\r
+ }\r
+ public void focusLost(FocusEvent e) {\r
+// ((StyledText) e.widget).setBackgrond((Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)));\r
+ String text = ((StyledText) e.widget).getText(); \r
+ if (text.contains("(?)")) {\r
+ sourceViewer.getAnnotationModel().addAnnotation(\r
+ new ErrorAnnotation(1, "Could not parse name."), \r
+ new Position(0, text.length() - 1));\r
+ }\r
+ }\r
+ \r
+ });\r
+ \r
+ // annotations section\r
+ IAnnotationAccess fAnnotationAccess = new AnnotationMarkerAccess();\r
+ \r
+ // to paint the annotations\r
+ AnnotationPainter ap = new AnnotationPainter(sourceViewer, fAnnotationAccess);\r
+ ap.addAnnotationType(ErrorAnnotation.ERROR_TYPE);\r
+ ap.setAnnotationTypeColor(ErrorAnnotation.ERROR_TYPE, new Color(Display.getDefault(), ErrorAnnotation.ERROR_RGB));\r
+\r
+ // this will draw the squigglies under the text\r
+ sourceViewer.addPainter(ap);\r
+ \r
return sourceViewer;\r
}\r
\r
+ /**\r
+ * Creates the drop-down menu next to every synonym for changing relationship type\r
+ * \r
+ * @param label\r
+ * @param name\r
+ */\r
+// private void createRelationMenu(Control control, BotanicalName name) {\r
+ private void createRelationMenu(final Label label) {\r
+ \r
+ final Menu menu = new Menu(label);\r
+ label.setMenu(menu);\r
+ label.addMouseListener(new MouseListener() {\r
+ public void mouseDown(MouseEvent e) {\r
+ menu.setVisible(true);\r
+ }\r
+ public void mouseDoubleClick(MouseEvent e) {\r
+ }\r
+ public void mouseUp(MouseEvent e) { \r
+ }\r
+ });\r
+ \r
+ createRelationMenuItem(menu, "delete_edit.gif", "Delete synonym from this taxon");\r
+ createRelationMenuItem(menu, "correction_change.gif", "Move synonym to another taxon");\r
+ \r
+ new MenuItem(menu, SWT.SEPARATOR);\r
+ \r
+ for (int i= 0; i < relTypes.length; i++) {\r
+ final String relImg = relImgs[i];\r
+ String relText = "Turn this synonym into " + relTypes[i];\r
+ createRelationMenuItem(menu, relImg, relText).addSelectionListener(new SelectionListener() {\r
+ public void widgetDefaultSelected(SelectionEvent e) { \r
+ }\r
+ public void widgetSelected(SelectionEvent e) {\r
+ label.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/" + relImg)); \r
+ }\r
+ });\r
+ }\r
+ }\r
+ \r
+ private MenuItem createRelationMenuItem(Menu menu, String img, String text) {\r
+ final MenuItem menuItem = new MenuItem(menu, SWT.NONE);\r
+ menuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/" + img));\r
+ menuItem.setText(text);\r
+ return menuItem;\r
+ }\r
+ \r
+ private void createRelationMenuAction() {\r
+ \r
+ }\r
+ \r
private SourceViewer createSourceViewer() {\r
return createSourceViewer(null);\r
}\r
\r
@Override\r
public void init(IEditorSite site, IEditorInput input) throws PartInitException {\r
-\r
+ \r
if (!(input instanceof IEditorInput))\r
throw new PartInitException(\r
"Invalid Input: Must be IFileEditorInput");\r
\r
- if (input.getAdapter(TaxonName.class) != null) {\r
- taxonname = (TaxonName) input.getAdapter(TaxonName.class);\r
+ if (input.getAdapter(Taxon.class) != null) {\r
+ taxon = (Taxon) input.getAdapter(Taxon.class);\r
} else {\r
\r
- taxonname = null;\r
+ taxon = null;\r
}\r
\r
+ // get parent taxon\r
+ if (taxon.getTaxonomicParent() != null)\r
+ higherTaxon = taxon.getTaxonomicParent();\r
+ \r
setSite(site);\r
setInput(input);\r
setBindingContext(new DataBindingContext());\r
+ \r
}\r
\r
- private List<PropertySheetNode> getPropertySheetNodes(TaxonName taxonName) {\r
+ /**\r
+ * @param taxonName\r
+ * @return\r
+ */\r
+ private List<PropertySheetNode> getPropertySheetNodes(TaxonNameBase taxonName) {\r
\r
+ BotanicalName botName = (BotanicalName) taxonName;\r
+ \r
List<PropertySheetNode> propertySheetNodes = new ArrayList<PropertySheetNode>();\r
- PropertySheetNode node = new PropertySheetNode("Full Name", BeansObservables.observeValue(taxonName, "name"), \r
+ PropertySheetNode node = new PropertySheetNode("Full Name", BeansObservables.observeValue(botName, "nameCache"), \r
null, PropertySheetNode.EDITABLE);\r
propertySheetNodes.add(node);\r
\r
// note: only top-level nodes are "add"-ed - otherwise, they are\r
// instantiated with their parent node\r
- new PropertySheetNode("Genus", BeansObservables.observeValue(taxonName, "genus"), \r
+ new PropertySheetNode("Genus", BeansObservables.observeValue(botName, "uninomial"), \r
node, PropertySheetNode.EDITABLE);\r
- new PropertySheetNode("Species Epithet", BeansObservables.observeValue(taxonName, "specificEpithet"), \r
+ new PropertySheetNode("Species Epithet", BeansObservables.observeValue(botName, "specificEpithet"), \r
node, PropertySheetNode.EDITABLE);\r
\r
return propertySheetNodes;\r
public void setBindingContext(DataBindingContext bindingContext) {\r
this.bindingContext = bindingContext;\r
}\r
-}\r
+}
\ No newline at end of file
package eu.etaxonomy.taxeditor.prototype2.view;\r
\r
import org.eclipse.core.databinding.DataBindingContext;\r
-import org.eclipse.core.databinding.beans.BeansObservables;\r
-import org.eclipse.core.databinding.observable.Realm;\r
-import org.eclipse.core.databinding.observable.list.IObservableList;\r
-import org.eclipse.core.databinding.observable.map.IObservableMap;\r
import org.eclipse.jface.action.IMenuManager;\r
import org.eclipse.jface.action.IToolBarManager;\r
-import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;\r
-import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;\r
import org.eclipse.jface.viewers.DoubleClickEvent;\r
import org.eclipse.jface.viewers.IDoubleClickListener;\r
import org.eclipse.jface.viewers.StructuredSelection;\r
import com.swtdesigner.ResourceManager;\r
import com.swtdesigner.SWTResourceManager;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.OpenNameEditorAction;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.prototype2.Activator;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.OpenNameEditorAction;\r
\r
//public class NameListView extends ViewPart implements ICdmEventListener {\r
public class NameListView extends ViewPart {\r
treeViewer.addDoubleClickListener(new IDoubleClickListener(){\r
\r
public void doubleClick(DoubleClickEvent event) { \r
- TaxonName taxonname = null;\r
+ Taxon taxon = null;\r
try {\r
- taxonname = (TaxonName) ((StructuredSelection)event.getSelection()).getFirstElement();\r
+ taxon = (Taxon) ((StructuredSelection)event.getSelection()).getFirstElement();\r
}catch (Exception e){\r
e.printStackTrace();\r
- taxonname = null;\r
+ taxon = null;\r
}\r
- new OpenNameEditorAction(taxonname).run();\r
+ new OpenNameEditorAction(taxon).run();\r
}\r
}); \r
}\r
recentNamesViewer.addDoubleClickListener(new IDoubleClickListener(){\r
\r
public void doubleClick(DoubleClickEvent event) { \r
- TaxonName taxonname = null;\r
+ Taxon taxon = null;\r
try {\r
- taxonname = (TaxonName) ((StructuredSelection)event.getSelection()).getFirstElement();\r
+ taxon = (Taxon) ((StructuredSelection)event.getSelection()).getFirstElement();\r
}catch (Exception e){\r
e.printStackTrace();\r
- taxonname = null;\r
+ taxon = null;\r
}\r
- new OpenNameEditorAction(taxonname).run();\r
+ new OpenNameEditorAction(taxon).run();\r
}\r
}); \r
\r
import org.eclipse.swt.events.FocusListener;\r
import org.eclipse.swt.events.KeyAdapter;\r
import org.eclipse.swt.events.KeyEvent;\r
+import org.eclipse.swt.graphics.Color;\r
import org.eclipse.swt.graphics.GC;\r
import org.eclipse.swt.graphics.Image;\r
import org.eclipse.swt.graphics.RGB;\r
\r
import com.swtdesigner.SWTResourceManager;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.AnnotationMarkerAccess;\r
+import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.ErrorAnnotation;\r
import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.NamePartitionScanner_;\r
\r
/**\r
});\r
\r
// annotations section\r
-// IAnnotationAccess fAnnotationAccess = new AnnotationMarkerAccess();\r
-// \r
-// // to paint the annotations\r
-// AnnotationPainter ap = new AnnotationPainter(this, fAnnotationAccess);\r
-// ap.addAnnotationType(ERROR_TYPE);\r
-// ap.setAnnotationTypeColor(ERROR_TYPE, new Color(Display.getDefault(), ERROR_RGB));\r
-//\r
-// // this will draw the squigglies under the text\r
-// this.addPainter(ap);\r
-// \r
-// // add an annotation\r
-// ErrorAnnotation errorAnnotation = new ErrorAnnotation(1, "Learn how to spell \"text!\"");\r
-//\r
-// // lets underline the word "texst"\r
-// fAnnotationModel.addAnnotation(errorAnnotation, new Position(1, 5));\r
+ IAnnotationAccess fAnnotationAccess = new AnnotationMarkerAccess();\r
+ \r
+ // to paint the annotations\r
+ AnnotationPainter ap = new AnnotationPainter(this, fAnnotationAccess);\r
+ ap.addAnnotationType(ERROR_TYPE);\r
+ ap.setAnnotationTypeColor(ERROR_TYPE, new Color(Display.getDefault(), ERROR_RGB));\r
+\r
+ // this will draw the squigglies under the text\r
+ this.addPainter(ap);\r
+ \r
+ // add an annotation\r
+ ErrorAnnotation errorAnnotation = new ErrorAnnotation(1, "Learn how to spell \"text!\"");\r
+\r
+ // lets underline the word "texst"\r
+ fAnnotationModel.addAnnotation(errorAnnotation, new Position(1, 5));\r
\r
};\r
\r
// }\r
}\r
\r
- class AnnotationMarkerAccess implements IAnnotationAccess, IAnnotationAccessExtension {\r
- public Object getType(Annotation annotation) {\r
- return annotation.getType();\r
- }\r
-\r
- public boolean isMultiLine(Annotation annotation) {\r
- return true;\r
- }\r
-\r
- public boolean isTemporary(Annotation annotation) {\r
- return !annotation.isPersistent();\r
- }\r
-\r
- public String getTypeLabel(Annotation annotation) {\r
- if (annotation instanceof ErrorAnnotation)\r
- return "Errors";\r
-\r
- return null;\r
- }\r
-\r
- public int getLayer(Annotation annotation) {\r
- if (annotation instanceof ErrorAnnotation)\r
- return ((ErrorAnnotation)annotation).getLayer();\r
-\r
- return 0;\r
- }\r
-\r
- public void paint(Annotation annotation, GC gc, Canvas canvas, Rectangle bounds) {\r
- ImageUtilities.drawImage(((ErrorAnnotation)annotation).getImage(), \r
- gc, canvas, bounds, SWT.CENTER, SWT.TOP);\r
- }\r
-\r
- public boolean isPaintable(Annotation annotation) {\r
- if (annotation instanceof ErrorAnnotation)\r
- return ((ErrorAnnotation)annotation).getImage() != null;\r
-\r
- return false;\r
- }\r
-\r
- public boolean isSubtype(Object annotationType, Object potentialSupertype) {\r
- if (annotationType.equals(potentialSupertype))\r
- return true;\r
-\r
- return false;\r
-\r
- }\r
-\r
- public Object[] getSupertypes(Object annotationType) {\r
- return new Object[0];\r
- }\r
- }\r
+// class AnnotationMarkerAccess implements IAnnotationAccess, IAnnotationAccessExtension {\r
+// public Object getType(Annotation annotation) {\r
+// return annotation.getType();\r
+// }\r
+//\r
+// public boolean isMultiLine(Annotation annotation) {\r
+// return true;\r
+// }\r
+//\r
+// public boolean isTemporary(Annotation annotation) {\r
+// return !annotation.isPersistent();\r
+// }\r
+//\r
+// public String getTypeLabel(Annotation annotation) {\r
+// if (annotation instanceof ErrorAnnotation)\r
+// return "Errors";\r
+//\r
+// return null;\r
+// }\r
+//\r
+// public int getLayer(Annotation annotation) {\r
+// if (annotation instanceof ErrorAnnotation)\r
+// return ((ErrorAnnotation)annotation).getLayer();\r
+//\r
+// return 0;\r
+// }\r
+//\r
+// public void paint(Annotation annotation, GC gc, Canvas canvas, Rectangle bounds) {\r
+// ImageUtilities.drawImage(((ErrorAnnotation)annotation).getImage(), \r
+// gc, canvas, bounds, SWT.CENTER, SWT.TOP);\r
+// }\r
+//\r
+// public boolean isPaintable(Annotation annotation) {\r
+// if (annotation instanceof ErrorAnnotation)\r
+// return ((ErrorAnnotation)annotation).getImage() != null;\r
+//\r
+// return false;\r
+// }\r
+//\r
+// public boolean isSubtype(Object annotationType, Object potentialSupertype) {\r
+// if (annotationType.equals(potentialSupertype))\r
+// return true;\r
+//\r
+// return false;\r
+//\r
+// }\r
+//\r
+// public Object[] getSupertypes(Object annotationType) {\r
+// return new Object[0];\r
+// }\r
+// }\r
\r
// one error annotation\r
- class ErrorAnnotation extends Annotation {\r
- private IMarker marker;\r
- private String text;\r
- private int line;\r
- private Position position;\r
-\r
- public ErrorAnnotation(IMarker marker) {\r
- this.marker = marker;\r
- }\r
-\r
- public ErrorAnnotation(int line, String text) {\r
- super(ERROR_TYPE, true, null);\r
- this.marker = null;\r
- this.line = line;\r
- this.text = text;\r
- }\r
-\r
- public IMarker getMarker() {\r
- return marker;\r
- }\r
-\r
- public int getLine() {\r
- return line;\r
- }\r
-\r
- public String getText() {\r
- return text;\r
- }\r
-\r
- public Image getImage() {\r
- return ERROR_IMAGE;\r
- }\r
-\r
- public int getLayer() {\r
- return 3;\r
- }\r
-\r
- public String getType() {\r
- return ERROR_TYPE;\r
- }\r
-\r
- public Position getPosition() {\r
- return position;\r
- }\r
-\r
- public void setPosition(Position position) {\r
- this.position = position;\r
- }\r
- } \r
+// class ErrorAnnotation extends Annotation {\r
+// private IMarker marker;\r
+// private String text;\r
+// private int line;\r
+// private Position position;\r
+//\r
+// public ErrorAnnotation(IMarker marker) {\r
+// this.marker = marker;\r
+// }\r
+//\r
+// public ErrorAnnotation(int line, String text) {\r
+// super(ERROR_TYPE, true, null);\r
+// this.marker = null;\r
+// this.line = line;\r
+// this.text = text;\r
+// }\r
+//\r
+// public IMarker getMarker() {\r
+// return marker;\r
+// }\r
+//\r
+// public int getLine() {\r
+// return line;\r
+// }\r
+//\r
+// public String getText() {\r
+// return text;\r
+// }\r
+//\r
+// public Image getImage() {\r
+// return ERROR_IMAGE;\r
+// }\r
+//\r
+// public int getLayer() {\r
+// return 3;\r
+// }\r
+//\r
+// public String getType() {\r
+// return ERROR_TYPE;\r
+// }\r
+//\r
+// public Position getPosition() {\r
+// return position;\r
+// }\r
+//\r
+// public void setPosition(Position position) {\r
+// this.position = position;\r
+// }\r
+// } \r
\r
}\r
package eu.etaxonomy.taxeditor.prototype2.view;\r
\r
import java.beans.PropertyChangeEvent;\r
-import java.beans.PropertyChangeListener;\r
\r
import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.jface.action.Action;\r
-import org.eclipse.jface.dialogs.MessageDialog;\r
import org.eclipse.jface.text.Document;\r
-import org.eclipse.jface.text.TextViewer;\r
import org.eclipse.jface.text.source.SourceViewer;\r
import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.custom.PopupList;\r
import org.eclipse.swt.custom.StyledText;\r
-import org.eclipse.swt.events.ControlAdapter;\r
-import org.eclipse.swt.events.ControlEvent;\r
import org.eclipse.swt.events.FocusEvent;\r
import org.eclipse.swt.events.FocusListener;\r
-import org.eclipse.swt.events.KeyEvent;\r
-import org.eclipse.swt.events.KeyListener;\r
-import org.eclipse.swt.events.MouseAdapter;\r
import org.eclipse.swt.events.MouseEvent;\r
import org.eclipse.swt.events.SelectionAdapter;\r
import org.eclipse.swt.events.SelectionEvent;\r
import org.eclipse.swt.events.SelectionListener;\r
import org.eclipse.swt.graphics.Point;\r
import org.eclipse.swt.graphics.Rectangle;\r
-import org.eclipse.swt.layout.FillLayout;\r
import org.eclipse.swt.layout.GridData;\r
import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Button;\r
import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.CoolBar;\r
-import org.eclipse.swt.widgets.CoolItem;\r
import org.eclipse.swt.widgets.Display;\r
import org.eclipse.swt.widgets.Event;\r
import org.eclipse.swt.widgets.Label;\r
import org.eclipse.swt.widgets.Listener;\r
import org.eclipse.swt.widgets.Menu;\r
import org.eclipse.swt.widgets.MenuItem;\r
-import org.eclipse.swt.widgets.Shell;\r
import org.eclipse.swt.widgets.Table;\r
import org.eclipse.swt.widgets.TableColumn;\r
import org.eclipse.swt.widgets.TableItem;\r
import org.eclipse.ui.IEditorSite;\r
import org.eclipse.ui.PartInitException;\r
import org.eclipse.ui.part.EditorPart;\r
+\r
import com.swtdesigner.ResourceManager;\r
import com.swtdesigner.SWTResourceManager;\r
\r
-//import org.eclipse.ui.texteditor.AbstractTextEditor;\r
-\r
-//import eu.etaxonomy.cdm.event.ICdmEventListener;\r
-//import eu.etaxonomy.cdm.event.ICdmEventListenerRegistration;\r
-//import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.taxeditor.prototype2.view.MoveDialogView;\r
-import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.MySourceViewerConfig;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.SaveNameAction;\r
import eu.etaxonomy.taxeditor.prototype2.Activator;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.OpenNameEditorAction;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.SaveTaxonAction;\r
+import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.MySourceViewerConfig;\r
\r
//public class PilosellaEditorView extends EditorPart implements ICdmEventListener {\r
public class PilosellaEditorView extends EditorPart {\r
// taxonname.setGenus(txtGenus.getText());\r
// taxonname.setSpecificEpithet(txtSpEpi.getText());\r
\r
- new SaveNameAction(taxonname).run();\r
+ new SaveTaxonAction(taxonname).run();\r
}\r
\r
public void widgetDefaultSelected(SelectionEvent e) {\r
- new SaveNameAction(taxonname).run();\r
+ new SaveTaxonAction(taxonname).run();\r
}\r
\r
public void widgetSelected(SelectionEvent e) {\r
- new SaveNameAction(taxonname).run();\r
+ new SaveTaxonAction(taxonname).run();\r
}\r
});\r
\r
public PropertySheetViewer(Composite parent) {\r
// Note: SWT.FULL_SELECTION hides lines connecting nodes\r
super(parent, SWT.BORDER | SWT.FULL_SELECTION);\r
- \r
+\r
this.getTree().setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, true));\r
- this.getTree().setLinesVisible(true);\r
- this.getTree().setHeaderVisible(true);\r
- this.getTree().getVerticalBar().setEnabled(true);\r
- \r
+// this.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));\r
+ \r
// create a column for property fields\r
propertyFieldColumn = new TreeViewerColumn(this, SWT.NONE);\r
- propertyFieldColumn.getColumn().setWidth(100);\r
propertyFieldColumn.getColumn().setMoveable(true);\r
propertyFieldColumn.setLabelProvider(new ColumnLabelProvider() {\r
public String getText(Object element) {\r
\r
// create a column for property values \r
propertyValueColumn = new TreeViewerColumn(this, SWT.NONE);\r
- propertyValueColumn.getColumn().setWidth(100);\r
propertyValueColumn.getColumn().setMoveable(true);\r
\r
-// this.getTree().setSize(150, 300);\r
+ // expand everything\r
+// this.expandAll();\r
+ \r
+ // pack the columns\r
+// propertyFieldColumn.getColumn().pack();\r
+// propertyValueColumn.getColumn().pack();\r
+ \r
+ this.getTree().setLinesVisible(true);\r
+ this.getTree().setHeaderVisible(true);\r
+ this.getTree().getVerticalBar().setEnabled(true);\r
+ \r
+ // pack the parent window\r
+// parent.pack();\r
+ \r
+ this.getTree().setSize(200, 300);\r
+ propertyValueColumn.getColumn().setWidth(100);\r
+ propertyFieldColumn.getColumn().setWidth(100);\r
// propertyFieldColumn.getColumn().pack();\r
// propertyValueColumn.getColumn().pack();\r
// this.getTree().redraw();\r
import org.eclipse.swt.layout.GridData;\r
import org.eclipse.swt.widgets.Composite;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.prototype2.Activator;\r
\r
public class RecentNamesTableViewer extends TableViewer {\r
\r
public RecentNamesTableViewer(Composite parent) {\r
- super(parent, SWT.H_SCROLL\r
- | SWT.V_SCROLL);\r
+ super(parent, SWT.H_SCROLL | SWT.V_SCROLL);\r
this.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
\r
ObservableListContentProvider rnViewerContentProviderList = new ObservableListContentProvider();\r
this.setContentProvider(rnViewerContentProviderList);\r
//\r
- IObservableMap[] rnViewerLabelProviderMaps = BeansObservables.observeMaps(rnViewerContentProviderList.getKnownElements(), TaxonName.class, new String[]{"name"});\r
- this.setLabelProvider(new ObservableMapLabelProvider(rnViewerLabelProviderMaps));\r
+ IObservableMap[] rnViewerLabelProviderMaps = BeansObservables.observeMaps(rnViewerContentProviderList.\r
+ getKnownElements(), Taxon.class, new String[]{"name"});\r
+ this.setLabelProvider(new ObservableMapLabelProvider(rnViewerLabelProviderMaps) {\r
+ \r
+ /*\r
+ * JFace databinding syntax makes it to difficult to retrieve\r
+ * Taxon.getName().getNameCache, so override function that returns\r
+ * label\r
+ * \r
+ * (non-Javadoc)\r
+ * @see org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider#getColumnText(java.lang.Object, int)\r
+ */\r
+ public String getColumnText(Object element, int columnIndex) {\r
+ return ((Taxon) element).getName().getNameCache();\r
+ } \r
+ });\r
//\r
- IObservableList rnObjectListObserveList = BeansObservables.observeList(Realm.getDefault(), Activator.getDefault().getRecentNamesList(), "taxonList");\r
+ IObservableList rnObjectListObserveList = BeansObservables.observeList(Realm.getDefault(), Activator.getDefault().\r
+ getRecentNamesList(), "taxonList");\r
this.setInput(rnObjectListObserveList);\r
\r
}\r
-\r
-}\r
+}
\ No newline at end of file
import com.swtdesigner.ResourceManager;\r
import com.swtdesigner.SWTResourceManager;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
import eu.etaxonomy.taxeditor.prototype2.Activator;\r
\r
public class RelatedNameViewer extends NameViewer {\r
package eu.etaxonomy.taxeditor.prototype2.view;\r
\r
import java.util.List;\r
+import java.util.Set;\r
\r
import org.eclipse.core.databinding.DataBindingContext;\r
import org.eclipse.core.databinding.beans.BeansObservables;\r
import org.eclipse.swt.layout.GridData;\r
import org.eclipse.swt.widgets.Composite;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.prototype2.Activator;\r
import eu.etaxonomy.taxeditor.prototype2.model.NameTreeContentProvider;\r
import eu.etaxonomy.taxeditor.prototype2.model.TaxonList;\r
return new Object[0];\r
}\r
public Object[] getChildren(Object parentElement) {\r
-// List children = ((TaxonName) parentElement).getChildren();\r
- List children = null;\r
+ Set<Taxon> children = ((Taxon) parentElement).getTaxonomicChildren();\r
return children == null ? new Object[0] : children.toArray();\r
}\r
public Object getParent(Object element) {\r
- return null;\r
+ return ((Taxon) element).getTaxonomicParent();\r
}\r
public boolean hasChildren(Object element) {\r
-// return getChildren(element).length > 0;\r
- return false;\r
+ return ((Taxon) element).hasTaxonomicChildren();\r
}\r
} \r
\r
public TaxonomicTreeViewer(Composite parent) {\r
- super(parent, SWT.NONE);\r
+ super(parent, SWT.VIRTUAL);\r
this.setContentProvider(new TreeContentProvider());\r
this.setLabelProvider(new LabelProvider() {\r
public String getText(Object element) {\r
- return ((TaxonName) element).getName();\r
+ return ((Taxon) element).getName().getNameCache();\r
}\r
public Image getImage(Object element) {\r
return null;\r
}); \r
this.setInput(Activator.getDefault().getTaxonList());\r
\r
- this.getTree().setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, true));\r
+ this.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true));\r
this.getTree().setLinesVisible(false);\r
this.getTree().setHeaderVisible(false); \r
// initDataBindings();\r
\r
protected DataBindingContext initDataBindings() {\r
//\r
- ObservableListContentProvider viewerContentProviderList = new NameTreeContentProvider();\r
- this.setContentProvider(viewerContentProviderList);\r
- //\r
- IObservableMap[] viewerLabelProviderMaps = BeansObservables.observeMaps(viewerContentProviderList.getKnownElements(), \r
- TaxonName.class, new String[]{"name"});\r
- this.setLabelProvider(new ObservableMapLabelProvider(viewerLabelProviderMaps));\r
- //\r
- IObservableList olObjectListObserveList = BeansObservables.observeList(Realm.getDefault(), \r
- Activator.getDefault().getTaxonList(), "taxonList");\r
- this.setInput(olObjectListObserveList); \r
+// ObservableListContentProvider viewerContentProviderList = new NameTreeContentProvider();\r
+// this.setContentProvider(viewerContentProviderList);\r
+// //\r
+// IObservableMap[] viewerLabelProviderMaps = BeansObservables.observeMaps(viewerContentProviderList.getKnownElements(), \r
+// TaxonName.class, new String[]{"name"});\r
+// this.setLabelProvider(new ObservableMapLabelProvider(viewerLabelProviderMaps));\r
+// //\r
+// IObservableList olObjectListObserveList = BeansObservables.observeList(Realm.getDefault(), \r
+// Activator.getDefault().getTaxonList(), "taxonList");\r
+// this.setInput(olObjectListObserveList); \r
DataBindingContext bindingContext = new DataBindingContext();\r
//\r
//\r
--- /dev/null
+package eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport;\r
+\r
+import org.eclipse.jface.text.source.Annotation;\r
+import org.eclipse.jface.text.source.IAnnotationAccess;\r
+import org.eclipse.jface.text.source.IAnnotationAccessExtension;\r
+import org.eclipse.jface.text.source.ImageUtilities;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.graphics.GC;\r
+import org.eclipse.swt.graphics.Rectangle;\r
+import org.eclipse.swt.widgets.Canvas;\r
+\r
+public class AnnotationMarkerAccess implements IAnnotationAccess, IAnnotationAccessExtension {\r
+ public Object getType(Annotation annotation) {\r
+ return annotation.getType();\r
+ }\r
+\r
+ public boolean isMultiLine(Annotation annotation) {\r
+ return true;\r
+ }\r
+\r
+ public boolean isTemporary(Annotation annotation) {\r
+ return !annotation.isPersistent();\r
+ }\r
+\r
+ public String getTypeLabel(Annotation annotation) {\r
+ if (annotation instanceof ErrorAnnotation)\r
+ return "Errors";\r
+\r
+ return null;\r
+ }\r
+\r
+ public int getLayer(Annotation annotation) {\r
+ if (annotation instanceof ErrorAnnotation)\r
+ return ((ErrorAnnotation)annotation).getLayer();\r
+\r
+ return 0;\r
+ }\r
+\r
+ public void paint(Annotation annotation, GC gc, Canvas canvas, Rectangle bounds) {\r
+ ImageUtilities.drawImage(((ErrorAnnotation)annotation).getImage(), \r
+ gc, canvas, bounds, SWT.CENTER, SWT.TOP);\r
+ }\r
+\r
+ public boolean isPaintable(Annotation annotation) {\r
+ if (annotation instanceof ErrorAnnotation)\r
+ return ((ErrorAnnotation)annotation).getImage() != null;\r
+\r
+ return false;\r
+ }\r
+\r
+ public boolean isSubtype(Object annotationType, Object potentialSupertype) {\r
+ if (annotationType.equals(potentialSupertype))\r
+ return true;\r
+\r
+ return false;\r
+\r
+ }\r
+\r
+ public Object[] getSupertypes(Object annotationType) {\r
+ return new Object[0];\r
+ }\r
+}\r
--- /dev/null
+package eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport;\r
+\r
+import org.eclipse.core.resources.IMarker;\r
+import org.eclipse.jface.text.Position;\r
+import org.eclipse.jface.text.source.Annotation;\r
+import org.eclipse.swt.graphics.Image;\r
+import org.eclipse.swt.graphics.RGB;\r
+\r
+public class ErrorAnnotation extends Annotation {\r
+ private IMarker marker;\r
+ private String text;\r
+ private int line;\r
+ private Position position;\r
+\r
+ // error identifiers, images and colors\r
+ public static String ERROR_TYPE = "error.type";\r
+ public static Image ERROR_IMAGE;\r
+ public static final RGB ERROR_RGB = new RGB(255, 0, 0); \r
+ \r
+ public ErrorAnnotation(IMarker marker) {\r
+ this.marker = marker;\r
+ }\r
+\r
+ public ErrorAnnotation(int line, String text) {\r
+ super(ERROR_TYPE, true, null);\r
+ this.marker = null;\r
+ this.line = line;\r
+ this.text = text;\r
+ }\r
+\r
+ public IMarker getMarker() {\r
+ return marker;\r
+ }\r
+\r
+ public int getLine() {\r
+ return line;\r
+ }\r
+\r
+ public String getText() {\r
+ return text;\r
+ }\r
+\r
+ public Image getImage() {\r
+ return ERROR_IMAGE;\r
+ }\r
+\r
+ public int getLayer() {\r
+ return 3;\r
+ }\r
+\r
+ public String getType() {\r
+ return ERROR_TYPE;\r
+ }\r
+\r
+ public Position getPosition() {\r
+ return position;\r
+ }\r
+\r
+ public void setPosition(Position position) {\r
+ this.position = position;\r
+ }\r
+}
\ No newline at end of file
\r
import org.eclipse.jface.text.Document;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+\r
\r
/**\r
* Extends Document to associate a TaxonName\r
*/\r
public class NameDocument extends Document {\r
\r
- private TaxonName taxonName = new TaxonName();\r
+ private TaxonNameBase taxonName = new BotanicalName(Rank.SPECIES());\r
\r
public NameDocument (String initialContent) {\r
super(initialContent);\r
}\r
\r
- public NameDocument (TaxonName taxonName) {\r
+ public NameDocument (TaxonNameBase taxonName) {\r
this("");\r
this.taxonName = taxonName;\r
}\r
this("");\r
}\r
\r
- public TaxonName getTaxonName() {\r
+ public TaxonNameBase getTaxonName() {\r
return taxonName;\r
}\r
\r
- public void setTaxonName(TaxonName taxonName) {\r
+ public void setTaxonName(TaxonNameBase taxonName) {\r
this.taxonName = taxonName;\r
} \r
}\r
import org.eclipse.jface.text.rules.FastPartitioner;\r
import org.eclipse.jface.text.rules.IPartitionTokenScanner;\r
\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
\r
public class NamePartitioner__ implements IDocumentPartitioner {\r
\r
// put cursor at EOL of last sourceviewer\r
sText.setCaretOffset(sText.getText().length()); \r
}\r
- \r
+ \r
// re-draw parent in case text controls need re-sizing -\r
// could also be the case if databinding has modified text\r
parent.getParent().layout();\r
\r
protected void initializeCellEditorValue(CellEditor cellEditor, ViewerCell cell) {\r
PropertySheetNode node = (PropertySheetNode) getValue(cell.getElement());\r
- cellEditor.setValue(node.getPropertyValue());\r
+ \r
+ // an empty string instead of a null makes the field editable\r
+ cellEditor.setValue(node.getPropertyValue() == null ? "" : node.getPropertyValue());\r
\r
// if node element is observing a value, bind it to its TreeItem\r
IObservableValue observeNodeValue = node.getObserveValue();\r