eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/PropertySheetViewer.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/RecentNamesTableViewer.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/SelectTaxonDialog.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/TaxonomicTreeLabelProvider.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/TaxonomicTreeViewer.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/UndoView.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/AnnotationMarkerAccess.java -text
import org.eclipse.jface.action.IMenuListener;\r
import org.eclipse.jface.action.IMenuManager;\r
import org.eclipse.jface.action.MenuManager;\r
+import org.eclipse.jface.action.Separator;\r
import org.eclipse.swt.widgets.Control;\r
import org.eclipse.swt.widgets.Menu;\r
\r
private Control control;\r
private Menu menu;\r
private MenuManager menuManager;\r
- private List<Action> actions;\r
+ private List actions;\r
\r
public ContextMenu(Control control) {\r
this.control = control;\r
createContextMenu();\r
}\r
\r
- public void createContextMenu() {\r
+ private void createContextMenu() {\r
menuManager = new MenuManager();\r
menu = menuManager.createContextMenu(control);\r
control.setMenu(menu);\r
menuManager.setRemoveAllWhenShown(true);\r
menuManager.addMenuListener(new IMenuListener() {\r
public void menuAboutToShow(IMenuManager manager) {\r
- for (Action action : getActions()) {\r
- manager.add(action);\r
+ for (Object action : getActions()) {\r
+ if (action instanceof Action) {\r
+ manager.add((Action) action);\r
+ }\r
+ if (action instanceof Separator) {\r
+ manager.add((Separator) action);\r
+ }\r
}\r
}\r
});\r
}\r
\r
- private List<Action> getActions() {\r
+ private List getActions() {\r
if (actions == null) {\r
- actions = new ArrayList<Action>();\r
+ actions = new ArrayList();\r
}\r
return actions;\r
}\r
public void removeAction(Action action) {\r
getActions().remove(action);\r
}\r
+ \r
+ public void addSeparator() {\r
+ getActions().add(new Separator());\r
+ }\r
}
\ No newline at end of file
+/**\r
+ * Copyright (C) 2007 EDIT\r
+ * European Distributed Institute of Taxonomy \r
+ * http://www.e-taxonomy.eu\r
+ * \r
+ * The contents of this file are subject to the Mozilla Public License Version 1.1\r
+ * See LICENSE.TXT at the top of this package for the full license terms.\r
+ */\r
+\r
package eu.etaxonomy.taxeditor.view;\r
\r
+import org.apache.log4j.Logger;\r
import org.eclipse.jface.action.IMenuManager;\r
import org.eclipse.jface.action.IToolBarManager;\r
import org.eclipse.jface.viewers.TableViewer;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
/**\r
+ * The left navigation pane.\r
+ * \r
* @author p.ciardelli\r
- *\r
+ * @created 27.05.2008\r
+ * @version 1.0\r
*/\r
public class NameListView extends ViewPart {\r
+ private static final Logger logger = Logger.getLogger(NameListView.class);\r
\r
private Text searchText;\r
private Composite composite;\r
recentNamesExpandItem.setControl(recentNamesComposite);\r
\r
recentNamesViewer = new RecentNamesTableViewer(recentNamesComposite);\r
-// recentNamesViewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
}\r
\r
private void createSearchComposite() {\r
+/**\r
+ * Copyright (C) 2007 EDIT\r
+ * European Distributed Institute of Taxonomy \r
+ * http://www.e-taxonomy.eu\r
+ * \r
+ * The contents of this file are subject to the Mozilla Public License Version 1.1\r
+ * See LICENSE.TXT at the top of this package for the full license terms.\r
+ */\r
+\r
package eu.etaxonomy.taxeditor.view;\r
\r
import java.util.Iterator;\r
\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.runtime.Assert;\r
+import org.eclipse.jface.text.AbstractDocument;\r
import org.eclipse.jface.text.Document;\r
+import org.eclipse.jface.text.ILineTracker;\r
import org.eclipse.jface.text.Position;\r
import org.eclipse.jface.text.source.Annotation;\r
import org.eclipse.jface.text.source.AnnotationModel;\r
* SourceViewer implementation called by NameComposite.\r
* \r
* @author p.ciardelli\r
- *\r
+ * @created 27.05.2008\r
+ * @version 1.0\r
*/\r
public class NameViewer extends SourceViewer {\r
+ private static final Logger logger = Logger\r
+ .getLogger(NameViewer.class);\r
+\r
\r
public NameViewer(Composite parent) {\r
super(parent, null, SWT.WRAP | SWT.MULTI | SWT.RESIZE);\r
\r
// Set name viewer's text to name cache\r
- this.setDocument(new Document(""), new AnnotationModel());\r
+ this.setDocument(new NameViewerDocument(""), new AnnotationModel());\r
\r
// Lay out StyledText\r
StyledText textWidget = this.getTextWidget();\r
}\r
\r
if (hasProblem && text.length() > 0) {\r
+ logger.warn(text.length());\r
this.getAnnotationModel().addAnnotation(\r
new ErrorAnnotation(0, "Could not parse."), \r
new Position(0, text.length()));\r
}\r
+ \r
+// ILineTracker tracker = ((NameViewerDocument) this.getDocument()).getTracker();\r
+// tracker.\r
}\r
\r
public void setLineBreakListener(LineBreakListener lineBreakListener) {\r
public void setCursorToEOL() {\r
this.getTextWidget().setCaretOffset(getTextWidget().getText().length());\r
}\r
+ \r
+ class NameViewerDocument extends Document {\r
+ public NameViewerDocument(String string) {\r
+ super(string);\r
+ }\r
+\r
+ public ILineTracker getTracker() {\r
+ return super.getTracker();\r
+ } \r
+ }\r
}
\ No newline at end of file
/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
+ * Copyright (C) 2007 EDIT\r
+ * European Distributed Institute of Taxonomy \r
+ * http://www.e-taxonomy.eu\r
+ * \r
+ * The contents of this file are subject to the Mozilla Public License Version 1.1\r
+ * See LICENSE.TXT at the top of this package for the full license terms.\r
+ */\r
\r
package eu.etaxonomy.taxeditor.view;\r
\r
import java.util.List;\r
\r
import org.apache.log4j.Logger;\r
+import org.eclipse.core.databinding.observable.set.IObservableSet;\r
import org.eclipse.jface.dialogs.Dialog;\r
import org.eclipse.jface.dialogs.IDialogConstants;\r
import org.eclipse.jface.viewers.DoubleClickEvent;\r
import org.eclipse.swt.events.FocusListener;\r
import org.eclipse.swt.events.SelectionAdapter;\r
import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.graphics.Font;\r
+import org.eclipse.swt.graphics.FontData;\r
import org.eclipse.swt.graphics.Point;\r
import org.eclipse.swt.layout.FillLayout;\r
import org.eclipse.swt.layout.GridData;\r
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.swt.widgets.Control;\r
import org.eclipse.swt.widgets.Display;\r
+import org.eclipse.swt.widgets.Event;\r
import org.eclipse.swt.widgets.Group;\r
import org.eclipse.swt.widgets.Label;\r
+import org.eclipse.swt.widgets.Listener;\r
import org.eclipse.swt.widgets.Shell;\r
import org.eclipse.swt.widgets.Text;\r
+import org.eclipse.swt.widgets.TreeItem;\r
\r
-import com.swtdesigner.ResourceManager;\r
import com.swtdesigner.SWTResourceManager;\r
\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
\r
/**\r
- * This is a generic dialog that allows the user to choose a\r
- * taxon via the taxonomic tree, recently selected names, or search. \r
+ * This is a generic dialog that allows the user to choose a taxon via the\r
+ * taxonomic tree, recently selected names, or search.\r
* \r
* @author p.ciardelli\r
* @created 27.05.2008\r
* @version 1.0\r
*/\r
public class SelectTaxonDialog extends Dialog {\r
- private Text taxonNameText;\r
private static final Logger logger = Logger\r
.getLogger(SelectTaxonDialog.class);\r
- \r
+\r
public static final String TAXON_TO_SYNONYM = "taxontosynonym";\r
\r
private String dialogType;\r
private String shellText;\r
private String descriptionText;\r
- \r
+ private Text taxonNameText;\r
+\r
private TaxonomicTreeViewer treeViewer;\r
private Taxon taxon;\r
private Taxon destinationTaxon;\r
private List<Button> buttons = new ArrayList<Button>();\r
\r
private Composite selectComposite;\r
- \r
+\r
public SelectTaxonDialog(Shell parentShell, String dialogType) {\r
super(parentShell);\r
this.dialogType = dialogType;\r
}\r
- \r
+\r
public Taxon open(Taxon taxon) {\r
this.taxon = taxon;\r
- \r
+\r
if (dialogType.equals(TAXON_TO_SYNONYM)) {\r
this.shellText = "Choose an accepted name for \""\r
- + taxon.getName().getTitleCache() + "\"";\r
+ + CdmUtil.getDisplayName(taxon) + "\"";\r
this.descriptionText = "You have chosen to turn \""\r
- + taxon.getName().getTitleCache()\r
+ + CdmUtil.getDisplayName(taxon)\r
+ "\" into a synonym. Please choose a new accepted name from one of the following options.";\r
}\r
- \r
+\r
int returnCode = super.open();\r
if (returnCode == OK) {\r
return destinationTaxon;\r
\r
/**\r
* Create contents of the dialog\r
+ * \r
* @param parent\r
*/\r
@Override\r
container.setLayout(gridLayout);\r
\r
final Label descriptionLabel = new Label(container, SWT.WRAP);\r
- descriptionLabel.setLayoutData(new GridData(SWT.LEFT, SWT.FILL,\r
- true, false, 2, 1));\r
+ descriptionLabel.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, true,\r
+ false, 2, 1));\r
descriptionLabel.setText(descriptionText);\r
\r
final Group taxTreeGroup = new Group(container, SWT.NONE);\r
gd_group_1.heightHint = 83;\r
taxTreeGroup.setLayoutData(gd_group_1);\r
\r
- final Button chooseTreeButton = new Button(taxTreeGroup,\r
- SWT.RADIO);\r
+ final Button chooseTreeButton = new Button(taxTreeGroup, SWT.RADIO);\r
buttons.add(chooseTreeButton);\r
- chooseTreeButton.setLayoutData(new GridData(SWT.FILL,\r
- SWT.CENTER, true, false));\r
+ chooseTreeButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,\r
+ false));\r
chooseTreeButton.setText("Choose from taxonomic tree");\r
\r
Composite taxTreeComposite = new Composite(taxTreeGroup, SWT.BORDER);\r
SWT.COLOR_WHITE));\r
\r
treeViewer = new TaxonomicTreeViewer(taxTreeComposite);\r
+\r
+ IObservableSet observableTaxonSet = TaxEditorPlugin.getDefault()\r
+ .getObservableSessionTaxa();\r
+ treeViewer.setLabelProvider(new TaxonomicTreeLabelProvider(\r
+ observableTaxonSet) {\r
+\r
+ });\r
treeViewer.getTree().addFocusListener(\r
new SelectButtonFocusListener(chooseTreeButton));\r
treeViewer.addDoubleClickListener(new SelectTaxonDoubleClickListener());\r
+ treeViewer.getTree().addListener(SWT.PaintItem, new Listener() {\r
+ \r
+ /** If MenuItem with taxon is being drawn, put it in italics.\r
+ * \r
+ * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)\r
+ **/\r
+ public void handleEvent(Event event) {\r
+ Object data = event.item.getData();\r
+ if (data instanceof Taxon && ((Taxon) data).equals(taxon)) {\r
+ ((TreeItem) event.item).setFont(TaxEditorPlugin.getDefault().getFont\r
+ (ITaxEditorConstants.MENU_ITEM_ITALICS));\r
+ }\r
+ }\r
+ });\r
+\r
+ // Open up tree to reveal taxon\r
+ treeViewer.revealTaxon(taxon);\r
\r
final Composite rightPaneComposite = new Composite(container, SWT.NONE);\r
- rightPaneComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
- rightPaneComposite.setLayout(new FillLayout(SWT.VERTICAL | SWT.HORIZONTAL));\r
+ rightPaneComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,\r
+ true));\r
+ rightPaneComposite.setLayout(new FillLayout(SWT.VERTICAL\r
+ | SWT.HORIZONTAL));\r
\r
final Group recentNamesGroup = new Group(rightPaneComposite, SWT.NONE);\r
recentNamesGroup.setLayout(new GridLayout());\r
searchButton.setLayoutData(new GridData());\r
searchButton.setText("Search");\r
\r
- \r
selectComposite = new Composite(container, SWT.NONE);\r
selectComposite.setLayout(new RowLayout());\r
- selectComposite.setLayoutData(new GridData(SWT.RIGHT, SWT.BOTTOM,\r
- true, false, 2, 1)); \r
+ selectComposite.setLayoutData(new GridData(SWT.RIGHT, SWT.BOTTOM, true,\r
+ false, 2, 1));\r
\r
taxonNameText = new Text(selectComposite, SWT.BORDER);\r
taxonNameText.setFont(SWTResourceManager.getFont("", 12, SWT.BOLD));\r
}\r
\r
public void setSelectedTaxon(Taxon taxon) {\r
- \r
+\r
this.destinationTaxon = taxon;\r
TaxonNameBase taxonName = taxon.getName();\r
if (taxonName == null) {\r
return;\r
}\r
- \r
+\r
taxonNameText.setText(taxonName.getTitleCache());\r
- \r
+\r
setOkEnabled(true);\r
- } \r
- \r
+ }\r
+\r
/**\r
* Create contents of the button bar\r
+ * \r
* @param parent\r
*/\r
@Override\r
public void setOkEnabled(boolean enabled) {\r
getButton(IDialogConstants.OK_ID).setEnabled(enabled);\r
}\r
- \r
+\r
private void initButtons() {\r
for (Button button : buttons) {\r
button.addSelectionListener(new SelectionAdapter() {\r
});\r
}\r
}\r
- \r
+\r
/**\r
* Since buttons are not in the same layout group, the others are not\r
* automatically deselected when one is selected. This method takes care of\r
button.setSelection(false);\r
}\r
}\r
- \r
+\r
/**\r
* Return the initial size of the dialog\r
*/\r
protected Point getInitialSize() {\r
return new Point(700, 500);\r
}\r
+\r
protected void configureShell(Shell newShell) {\r
super.configureShell(newShell);\r
- newShell.setImage(ResourceManager.getPluginImage(TaxEditorPlugin\r
- .getDefault(), "icons/edit_16x16.ico"));\r
+ newShell.setImage(TaxEditorPlugin.getDefault().getImage(\r
+ ITaxEditorConstants.EDIT_ICON));\r
newShell.setText(shellText);\r
- } \r
- \r
+ }\r
+\r
class SelectButtonFocusListener implements FocusListener {\r
\r
- Button button; // the button that should be selected\r
+ /**\r
+ * The button whose group has gained focus.\r
+ */\r
+ Button button;\r
\r
SelectButtonFocusListener(Button button) {\r
this.button = button;\r
e.printStackTrace();\r
taxon = null;\r
}\r
- \r
+ if (taxon.equals(SelectTaxonDialog.this.taxon)) {\r
+ return;\r
+ }\r
+\r
setSelectedTaxon(taxon);\r
}\r
- } \r
+ }\r
}\r
--- /dev/null
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.view;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.databinding.beans.BeansObservables;\r
+import org.eclipse.core.databinding.observable.set.IObservableSet;\r
+import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;\r
+import org.eclipse.swt.graphics.Image;\r
+\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 29.05.2008\r
+ * @version 1.0\r
+ */\r
+public class TaxonomicTreeLabelProvider extends ObservableMapLabelProvider {\r
+ private static final Logger logger = Logger\r
+ .getLogger(TaxonomicTreeLabelProvider.class);\r
+ \r
+ public TaxonomicTreeLabelProvider(IObservableSet observableTaxonSet) {\r
+ super(BeansObservables.observeMaps(\r
+ observableTaxonSet, \r
+ Taxon.class, new String[]{"name"}));\r
+ }\r
+ \r
+ /** \r
+ * \r
+ * @see org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider#getColumnImage(java.lang.Object, int)\r
+ **/\r
+ public Image getColumnImage(Object element, int columnIndex) {\r
+ if (element instanceof Taxon) {\r
+ TaxonNameBase name = ((Taxon) element).getName();\r
+ if (name != null && name.getHasProblem()) {\r
+ return TaxEditorPlugin.getDefault().getImage(ITaxEditorConstants.WARNING_ICON);\r
+ }\r
+ }\r
+ return null;\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
+ if (element instanceof Taxon) {\r
+ return CdmUtil.getDisplayName((Taxon) element); \r
+ }\r
+ return "";\r
+ } \r
+\r
+}\r
import org.apache.log4j.Logger;\r
import org.eclipse.core.databinding.beans.BeansObservables;\r
import org.eclipse.core.databinding.observable.map.IObservableMap;\r
+import org.eclipse.core.databinding.observable.set.IObservableSet;\r
import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;\r
import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;\r
import org.eclipse.jface.viewers.CellEditor;\r
import org.eclipse.jface.viewers.DoubleClickEvent;\r
import org.eclipse.jface.viewers.ICellEditorListener;\r
import org.eclipse.jface.viewers.ICellModifier;\r
+import org.eclipse.jface.viewers.IContentProvider;\r
import org.eclipse.jface.viewers.IDoubleClickListener;\r
import org.eclipse.jface.viewers.StructuredSelection;\r
import org.eclipse.jface.viewers.TextCellEditor;\r
\r
import com.swtdesigner.ResourceManager;\r
\r
-import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
-import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.actions.ActionAddQuickName;\r
import eu.etaxonomy.taxeditor.actions.ActionDeleteTaxon;\r
import eu.etaxonomy.taxeditor.actions.ActionMoveTaxon;\r
import eu.etaxonomy.taxeditor.actions.ActionOpenNameEditor;\r
import eu.etaxonomy.taxeditor.actions.ActionOpenNewChildNameEditor;\r
-import eu.etaxonomy.taxeditor.actions.ActionRemoveTaxonFromTree;\r
import eu.etaxonomy.taxeditor.actions.ActionSaveTaxon;\r
import eu.etaxonomy.taxeditor.actions.TaxonTransfer;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
+import eu.etaxonomy.taxeditor.model.NameTreeContentProvider;\r
+import eu.etaxonomy.taxeditor.model.TaxonomicTreeContentProvider;\r
/**\r
* Taxon tree viewer which responds to events within individual taxa.\r
* \r
// SW.VIRTUAL causes nodes to be loaded on-demand, improving performance\r
super(parent, SWT.VIRTUAL);\r
\r
- // Tree settings\r
- final Tree tree = this.getTree();\r
+ tree = this.getTree();\r
tree.setLinesVisible(false);\r
tree.setHeaderVisible(false);\r
\r
+ \r
createContent(); \r
// createDoubleClickListener();\r
// createRightClickListener();\r
final Tree tree = this.getTree();\r
final TextCellEditor taxTreeNodeEditor = new TextCellEditor(tree);\r
taxTreeNodeEditor.addListener(new ICellEditorListener() {\r
- public void applyEditorValue() {}\r
+ public void applyEditorValue() {\r
+ Object value = taxTreeNodeEditor.getValue();\r
+ if (value instanceof String) {\r
+ String trimmedValue = ((String) value).trim(); \r
+ Taxon taxon = (Taxon) tree.getSelection()[0].getData();\r
+ \r
+ if (trimmedValue.length() == 0) {\r
+ TaxEditorPlugin.getDefault().removeSessionTaxon(taxon);\r
+ // Hack: for some reason, viewer isn't refreshing after the\r
+ // session taxa listener fires remove item\r
+ TaxonomicTreeViewer.this.refresh();\r
+ } else {\r
+ taxon.setName(CdmUtil.parseFullReference(trimmedValue, null, null));\r
+ new ActionSaveTaxon(taxon).run();\r
+ }\r
+ }\r
+ }\r
public void cancelEditor() {\r
- // user has pressed ESC - transfer focus to parent item,\r
- // remove taxon from tree\r
+ // User has pressed ESC - remove taxon from tree\r
Taxon taxon = (Taxon) tree.getSelection()[0].getData();\r
- tree.setSelection(tree.getSelection()[0].getParentItem());\r
- new ActionRemoveTaxonFromTree(taxon).run();\r
+ TaxEditorPlugin.getDefault().removeSessionTaxon(taxon);\r
+ // Hack: for some reason, viewer isn't refreshing after the\r
+ // session taxa listener fires remove item\r
+ TaxonomicTreeViewer.this.refresh();\r
}\r
public void editorValueChanged(boolean oldValidState,\r
- boolean newValidState) {}\r
+ boolean newValidState) {\r
+ logger.warn("ICellEditorListener.editorValueChanged()");\r
+ }\r
});\r
\r
this.setCellEditors(new CellEditor[] {taxTreeNodeEditor});\r
public boolean canModify(Object element, String property) {\r
// If name element has not been initialized,\r
// this is a taxon added with QuickAdd\r
- if (((Taxon) element).getName().getTitleCache() == null) {\r
- return true;\r
+ if (element instanceof Taxon) {\r
+ Taxon taxon = (Taxon) element;\r
+ if (taxon.getName() == null) {\r
+ return true;\r
+ }\r
}\r
return false;\r
}\r
// If this node is editable, TitleCache is by definition empty\r
return "";\r
}\r
- public void modify(Object element, String property, Object value) {\r
- \r
- // Get Taxon object from TreeItem\r
- Taxon taxon = (Taxon)((Item) element).getData();\r
- \r
- String name = ((String) value).trim(); \r
- if (name.equals("")) {\r
- // Remove temporary Taxon from tree\r
- tree.setSelection(tree.getSelection()[0].getParentItem());\r
- new ActionRemoveTaxonFromTree(taxon).run(); \r
- \r
- } else {\r
- // Set Taxon's TitleCache, save it to CDM\r
-// taxon.getName().setTitleCache((String) value);\r
- NonViralNameParserImpl parser = NonViralNameParserImpl.NewInstance();\r
- NonViralName nonViralName = (NonViralName) taxon.getName();\r
- if (nonViralName != null) {\r
- parser.parseFullName(nonViralName, (String) value, null, true);\r
- }\r
- new ActionSaveTaxon(taxon).run();\r
- }\r
- }\r
+ public void modify(Object element, String property, Object value) {}\r
});\r
\r
}\r
*/\r
private void createContent() {\r
// Use custom content provider extended to add tree node retrieval\r
-// ObservableListContentProvider viewerContentProviderList = new NameTreeContentProvider();\r
- ObservableListContentProvider viewerContentProviderList = TaxEditorPlugin.getDefault().getNameTreeContentProvider();\r
+ IContentProvider viewerContentProviderList = new TaxonomicTreeContentProvider();\r
this.setContentProvider(viewerContentProviderList);\r
\r
- // Label provider that listens for changes to name cache\r
- IObservableMap[] viewerLabelProviderMaps = BeansObservables.observeMaps(viewerContentProviderList.getKnownElements(), \r
- Taxon.class, new String[]{"name"});\r
- this.setLabelProvider(new ObservableMapLabelProvider(viewerLabelProviderMaps) {\r
- /* \r
- * TODO only show warning if there is something taxonomically amiss \r
- * \r
- * @see org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider#getColumnImage(java.lang.Object, int)\r
- */\r
- public Image getColumnImage(Object element, int columnIndex) {\r
- if (((Taxon) element).getName().getHasProblem())\r
- return ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/warn_tsk.gif");\r
- return null;\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().getTitleCache();\r
- } \r
- });\r
+ // Label provider that listens for changes to name cache \r
+ IObservableSet observableTaxonSet = TaxEditorPlugin.getDefault().getObservableSessionTaxa();\r
+ this.setLabelProvider(new TaxonomicTreeLabelProvider(observableTaxonSet));\r
\r
// TaxonTreeList added to every time a node is opened with its\r
// children, or when a new taxon is added\r
- this.setInput(TaxEditorPlugin.getDefault().getObservableTaxonTreeList());\r
+ this.setInput(TaxEditorPlugin.getDefault().getSessionRootTaxa());\r
\r
// Sort according to "getColumnText" above, i.e. by NameCache\r
this.setComparator(new ViewerComparator());\r
- }\r
-\r
+ } \r
+ \r
/**\r
* If taxon node in the tree is hidden, open and select it\r
* \r
}\r
}\r
}\r
- }; \r
+ };\r
+\r
+ private Tree tree; \r
}
\ No newline at end of file
package eu.etaxonomy.taxeditor.view.nameviewersupport;\r
\r
-import java.util.Set;\r
-\r
-import org.eclipse.swt.SWT;\r
import org.eclipse.swt.graphics.Font;\r
import org.eclipse.swt.graphics.Image;\r
import org.eclipse.swt.widgets.Composite;\r
\r
-import com.swtdesigner.SWTResourceManager;\r
-\r
-import eu.etaxonomy.cdm.model.name.NameRelationship;\r
-import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
public class NameComposite extends EditableGroupedComposite {\r
\r
+ // TODO is there any reason not to get these directly from Plugin\r
public static final int ACCEPTED_INDENT = 0;\r
public static final int SYNONYM_INDENT = 15;\r
public static final int MISAPPLIEDNAME_INDENT = 15;\r
\r
- public static final Font ACCEPTED_FONT = SWTResourceManager.getFont("Georgia", 12, SWT.NONE);\r
- public static final Font SYNONYM_FONT = SWTResourceManager.getFont("Georgia", 10, SWT.NONE);\r
- public static final Font MISAPPLIEDNAME_FONT = SWTResourceManager.getFont("Georgia", 10, SWT.NONE);;\r
+ public static final Font ACCEPTED_FONT = TaxEditorPlugin.getDefault().getFont(ITaxEditorConstants.ACCEPTED_TAXON_FONT);\r
+ public static final Font SYNONYM_FONT = TaxEditorPlugin.getDefault().getFont(ITaxEditorConstants.SYNONYM_FONT);\r
+ public static final Font MISAPPLIEDNAME_FONT = TaxEditorPlugin.getDefault().getFont(ITaxEditorConstants.MISAPPLIEDNAME_FONT);\r
\r
- public static final Image ACCEPTED_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(ITaxEditorConstants.ACCEPTED_TAXON_ICON);\r
- public static final Image HOMOTYPIC_SYNONYM_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(ITaxEditorConstants.HOMOTYPIC_SYN_ICON);\r
- public static final Image HOMOTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(ITaxEditorConstants.HOMOTYPIC_SYN_ORIGINAL_ICON);\r
- public static final Image HETEROTYPIC_SYNONYM_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(ITaxEditorConstants.HETEROTYPIC_SYN_ICON);\r
- public static final Image HETEROTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(ITaxEditorConstants.HETEROTYPIC_SYN_ORIGINAL_ICON);\r
- public static final Image MISAPPLIEDNAME_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(ITaxEditorConstants.MISAPPLIED_NAME_ICON);\r
- public static final Image AUTONYM_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(ITaxEditorConstants.AUTONYM_ICON);\r
- public static final Image BASIONYM_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(ITaxEditorConstants.BASIONYM_ICON);\r
- public static final Image MOVE = TaxEditorPlugin.getDefault().getImageRegistry().get(ITaxEditorConstants.MOVE_ICON);\r
+ public static final Image ACCEPTED_ICON = TaxEditorPlugin.getDefault().getImage(ITaxEditorConstants.ACCEPTED_TAXON_ICON);\r
+ public static final Image HOMOTYPIC_SYNONYM_ICON = TaxEditorPlugin.getDefault().getImage(ITaxEditorConstants.HOMOTYPIC_SYN_ICON);\r
+ public static final Image HOMOTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON = TaxEditorPlugin.getDefault().getImage(ITaxEditorConstants.HOMOTYPIC_SYN_ORIGINAL_ICON);\r
+ public static final Image HETEROTYPIC_SYNONYM_ICON = TaxEditorPlugin.getDefault().getImage(ITaxEditorConstants.HETEROTYPIC_SYN_ICON);\r
+ public static final Image HETEROTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON = TaxEditorPlugin.getDefault().getImage(ITaxEditorConstants.HETEROTYPIC_SYN_ORIGINAL_ICON);\r
+ public static final Image MISAPPLIEDNAME_ICON = TaxEditorPlugin.getDefault().getImage(ITaxEditorConstants.MISAPPLIED_NAME_ICON);\r
+ public static final Image AUTONYM_ICON = TaxEditorPlugin.getDefault().getImage(ITaxEditorConstants.AUTONYM_ICON);\r
+ public static final Image BASIONYM_ICON = TaxEditorPlugin.getDefault().getImage(ITaxEditorConstants.BASIONYM_ICON);\r
+ public static final Image MOVE = TaxEditorPlugin.getDefault().getImage(ITaxEditorConstants.MOVE_ICON);\r
\r
public NameComposite(Composite parent) {\r
super(parent);\r
import org.eclipse.ui.views.properties.IPropertySource;\r
\r
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
-import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
-import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl;\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
import eu.etaxonomy.taxeditor.actions.ChangeTaxonToSynonymAction;\r
import eu.etaxonomy.taxeditor.actions.cdm.AddBasionymAction;\r
}\r
}\r
});\r
-\r
+ \r
+ contextMenu.addSeparator();\r
+ \r
if (!CdmUtil.isSynonymBasionym(taxon, synonym)) {\r
Action addBasionymAction = new AddBasionymAction(synonym.getName(),\r
taxon);\r
+ addBasionymAction.setEnabled(false);\r
contextMenu.addAction(addBasionymAction);\r
addBasionymAction\r
.addPropertyChangeListener(new IPropertyChangeListener() {\r
\r
@Override\r
public void handleSplitText(String text) {\r
- NonViralNameParserImpl parser = NonViralNameParserImpl\r
- .NewInstance();\r
- NomenclaturalCode nomCode = null;\r
- NonViralName name = parser.parseFullReference(text, nomCode,\r
- null);\r
+ NonViralName name = (NonViralName) CdmUtil.parseFullReference(text, null, null);\r
\r
SynonymRelationship synonymRelation = taxon\r
.addHeterotypicSynonymName(name);\r
\r
TaxonBase taxonBase = (TaxonBase) nameComposite.getData();\r
\r
- NonViralNameParserImpl parser = NonViralNameParserImpl\r
- .NewInstance();\r
NonViralName nonViralName = (NonViralName) taxonBase.getName();\r
if (nonViralName != null) {\r
- parser.parseFullName(nonViralName, text, null, true);\r
+ CdmUtil.parseFullName(nonViralName, text, null, true);\r
nameViewer.setShowError(nonViralName.getHasProblem());\r
}\r
}\r