From 4fb47d79d6c8fefb12f903777b87247a8a0dc2e6 Mon Sep 17 00:00:00 2001 From: "p.ciardelli" Date: Tue, 2 Dec 2008 09:14:37 +0000 Subject: [PATCH] Platform Version 1.0 --- .gitattributes | 4 +- .../ApplicationActionBarAdvisor.java | 36 ++--- .../actions/cdm/DeleteTaxonAction.java | 8 +- .../actions/cdm/SaveTaxonAction.java | 4 +- .../taxeditor/actions/io/ExportAction.java | 30 ++++- .../taxeditor/actions/io/ImportAction.java | 3 +- .../actions/ui/AddQuickNameAction.java | 2 +- .../actions/ui/OpenTaxonEditorAction.java | 1 + .../editor/AbstractTaxonEditorView.java | 123 +++++++++++++----- .../editor/CompositeBorderDecorator.java | 38 +++++- .../editor/EditorGroupedComposite.java | 41 +++--- .../taxeditor/editor/ErrorAnnotation.java | 2 +- .../taxeditor/editor/IHasPropertySource.java | 21 +++ .../taxeditor/editor/ISelectionWrapper.java | 5 - .../editor/LineWrapSquigglesStrategy.java | 2 +- .../DescriptionElementComposite.java | 7 + .../DescriptionLabelComposite.java | 9 +- .../taxeditor/editor/name/NameComposite.java | 39 +++--- .../taxeditor/editor/name/NameViewer.java | 18 ++- .../editor/name/TaxonNameEditorView.java | 7 +- .../eu/etaxonomy/taxeditor/model/CdmUtil.java | 42 ++++-- .../taxeditor/model/PropertySheetNode.java | 93 ------------- .../navigation/TaxonomicTreeView.java | 4 +- .../navigation/TaxonomicTreeViewer.java | 14 +- .../PropertySheetContentProvider.java | 38 ------ .../propertysheet/PropertySourceAdapter.java | 1 + .../name/NameRelationsPropertySource.java | 7 +- 27 files changed, 326 insertions(+), 273 deletions(-) create mode 100644 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IHasPropertySource.java delete mode 100644 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ISelectionWrapper.java delete mode 100644 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/PropertySheetNode.java delete mode 100644 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySheetContentProvider.java diff --git a/.gitattributes b/.gitattributes index 2e3688a87..29b8493f8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -466,9 +466,9 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/GroupCo eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/GroupedComposite.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IDataDisposer.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IFavoritesDraggable.java -text +eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IHasPropertySource.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IParentDataAdapter.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IParserFeedback.java -text -eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ISelectionWrapper.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineBreakListener.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineWrapSquigglesStrategy.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineWrapSupport.java -text @@ -493,7 +493,6 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/io/InputWizard eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/io/InputWizard2.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/CdmUtil.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/NameEditorInput.java -text -eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/PropertySheetNode.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/TaxonomicTreeContentProvider.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/FavoritesTableViewer.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/FavoritesView.java -text @@ -519,7 +518,6 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/CustomSortPropertySheetEntry.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/DayValidator.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/MarkersPropertySource.java -text -eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySheetContentProvider.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySourceAdapter.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/SourceViewerConfig.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/TimePeriodPropertySource.java -text diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/ApplicationActionBarAdvisor.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/ApplicationActionBarAdvisor.java index 08f2e09b2..65110bc34 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/ApplicationActionBarAdvisor.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/ApplicationActionBarAdvisor.java @@ -81,10 +81,10 @@ public class ApplicationActionBarAdvisor extends ActionBarAdvisor { preferencesAction = ActionFactory.PREFERENCES.create(window); - makeImportActions(); +// makeImportActions(); - exportJaxbAction = new ExportAction(ExportAction.JAXB); - register(exportJaxbAction); +// exportJaxbAction = new ExportAction(ExportAction.JAXB); +// register(exportJaxbAction); } private void makeImportActions() { @@ -105,30 +105,30 @@ public class ApplicationActionBarAdvisor extends ActionBarAdvisor { MenuManager fileMenu = new MenuManager("&File", null); - // Create submenu for imports - MenuManager importMenu = new MenuManager("Import ...", null); - - // Create submenu for exports - MenuManager exportMenu = new MenuManager("Export as ...", null); +// // Create submenu for imports +// MenuManager importMenu = new MenuManager("Import ...", null); +// +// // Create submenu for exports +// MenuManager exportMenu = new MenuManager("Export as ...", null); // Populate file menu menuBar.add(fileMenu); fileMenu.add(newNameAction); fileMenu.add(saveAction); fileMenu.add(undoAction); - fileMenu.add(new Separator()); - fileMenu.add(importMenu); - fileMenu.add(exportMenu); +// fileMenu.add(new Separator()); +// fileMenu.add(importMenu); +// fileMenu.add(exportMenu); fileMenu.add(new Separator()); fileMenu.add(exitAction); - // Populate submenu for imports - for (IAction importAction : importActionList) { - importMenu.add(importAction); - } - - // Populate submenu for exports - exportMenu.add(exportJaxbAction); +// // Populate submenu for imports +// for (IAction importAction : importActionList) { +// importMenu.add(importAction); +// } +// +// // Populate submenu for exports +// exportMenu.add(exportJaxbAction); // Populate preferences MenuManager preferencesMenu = new MenuManager("&Preferences", diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/DeleteTaxonAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/DeleteTaxonAction.java index 1b4ba7959..e4555823e 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/DeleteTaxonAction.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/DeleteTaxonAction.java @@ -28,6 +28,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType; import eu.etaxonomy.taxeditor.ITaxEditorConstants; import eu.etaxonomy.taxeditor.TaxEditorPlugin; import eu.etaxonomy.taxeditor.UiUtil; +import eu.etaxonomy.taxeditor.actions.SaveAllAction; import eu.etaxonomy.taxeditor.model.CdmUtil; /** @@ -59,6 +60,9 @@ public class DeleteTaxonAction extends Action { public void run() { + // Call save all action + new SaveAllAction().run(null); + // If the taxon has children, cancel operation // TODO add option to continue, and delete children if (taxon.hasTaxonomicChildren()) { @@ -115,6 +119,8 @@ public class DeleteTaxonAction extends Action { TaxEditorPlugin.getDefault().getCdmApp().getTaxonService() .removeTaxon(taxon); } - + + // Call save all action + new SaveAllAction().run(null); } } \ No newline at end of file diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/SaveTaxonAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/SaveTaxonAction.java index f01266d5a..949ae369a 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/SaveTaxonAction.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/SaveTaxonAction.java @@ -6,6 +6,7 @@ import org.eclipse.jface.action.Action; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.taxeditor.TaxEditorPlugin; import eu.etaxonomy.taxeditor.UiUtil; +import eu.etaxonomy.taxeditor.model.CdmUtil; import eu.etaxonomy.taxeditor.navigation.TaxonomicTreeViewer; /** @@ -40,11 +41,10 @@ public class SaveTaxonAction extends Action { TaxEditorPlugin.getDefault().addSessionTaxon(taxon); // Save the taxon to the CDM - TaxEditorPlugin.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon); + CdmUtil.getTaxonService().saveTaxon(taxon); // Notify taxon listeners in case name has been updated - updates editor view tab and recent names taxon.firePropertyChange("name", null, null); - // Open node on save treeViewer.revealTaxon(taxon); diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/io/ExportAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/io/ExportAction.java index 5de2f1118..b6d128a28 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/io/ExportAction.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/io/ExportAction.java @@ -10,13 +10,19 @@ package eu.etaxonomy.taxeditor.actions.io; import java.io.File; +import java.net.MalformedURLException; import org.apache.log4j.Logger; import org.eclipse.jface.action.Action; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.FileDialog; +import eu.etaxonomy.cdm.database.ICdmDataSource; +import eu.etaxonomy.cdm.io.common.CdmDefaultExport; +import eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator; +import eu.etaxonomy.taxeditor.TaxEditorPlugin; import eu.etaxonomy.taxeditor.UiUtil; /** @@ -53,7 +59,7 @@ public class ExportAction extends Action { public void run() { - // Use same title "Import FORMAT" for all message dialogs + // Use same title "Export FORMAT" for all message dialogs String title = "Export " + getText(); // Get file from user @@ -61,5 +67,27 @@ public class ExportAction extends Action { dialog.setFileName("export.xml"); String filePath = dialog.open(); file = new File(filePath); + + // Get current data source + ICdmDataSource source = TaxEditorPlugin.getDefault().getCdmDataSource(); + + // Format file path + String destination = null; +// destination = file.toURI().toURL().toString(); + destination = file.toString(); + + JaxbExportConfigurator configurator = JaxbExportConfigurator.NewInstance(source, destination); + CdmDefaultExport jaxbExport = + new CdmDefaultExport(); + + // Start export + boolean isSuccessfulExport = jaxbExport.invoke(configurator); + + // Tell user whether import was a success or a dismal failure + if (isSuccessfulExport) { + MessageDialog.openInformation(UiUtil.getShell(), title, "Export successful"); + } else { + MessageDialog.openError(UiUtil.getShell(), title, "Export was unsuccessful."); + } } } diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/io/ImportAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/io/ImportAction.java index ff6661525..febd4b569 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/io/ImportAction.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/io/ImportAction.java @@ -39,7 +39,7 @@ public class ImportAction extends Action { private File file; private ImportWrapper importWrapper; - public ImportAction() { + private ImportAction() { super(text); setImageDescriptor(image); setId(ID); @@ -86,7 +86,6 @@ public class ImportAction extends Action { boolean isSuccessfulImport = importWrapper.invoke(source, destination, null); // Tell user whether import was a success or a dismal failure - String msg = null; if (isSuccessfulImport) { MessageDialog.openInformation(UiUtil.getShell(), title, "Import successful"); } else { diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/AddQuickNameAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/AddQuickNameAction.java index 249c6feb4..70a877d94 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/AddQuickNameAction.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/AddQuickNameAction.java @@ -68,7 +68,7 @@ public class AddQuickNameAction extends Action { // ULTRA HACKY, ULTRA MYSTERIOUS - if this is not called, name created with quick name // then deleted in the same session causes error // "org.springframework.dao.InvalidDataAccessApiUsageException: deleted object would be re-saved by cascade" - (new PropertySourceAdapter(quickNameTaxon.getName())).getPropertySource(); +// (new PropertySourceAdapter(quickNameTaxon.getName())).getPropertySource(); firePropertyChange(ITaxEditorConstants.QUICK_NAME_TAXON, null, quickNameTaxon); diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/OpenTaxonEditorAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/OpenTaxonEditorAction.java index 75eeebf3f..9fda72492 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/OpenTaxonEditorAction.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/OpenTaxonEditorAction.java @@ -70,6 +70,7 @@ public class OpenTaxonEditorAction extends Action { // preference store, i.e. BotanicalName TaxonNameBase name = CdmUtil.parseFullReference("", null, null); name.setFullTitleCache("", false); + name.setTitleCache("", false); this.taxon = Taxon.NewInstance(name, CdmUtil.getSessionDefaultSec()); } else { diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/AbstractTaxonEditorView.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/AbstractTaxonEditorView.java index 3cdb98d4e..f86cb8323 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/AbstractTaxonEditorView.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/AbstractTaxonEditorView.java @@ -15,16 +15,21 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Tree; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener2; +import org.eclipse.ui.ISelectionListener; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchPartReference; import org.eclipse.ui.PartInitException; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.ManagedForm; @@ -38,7 +43,6 @@ import org.eclipse.ui.views.properties.PropertySheetPage; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.taxeditor.UiUtil; import eu.etaxonomy.taxeditor.propertysheet.CustomSortPropertySheetEntry; -import eu.etaxonomy.taxeditor.propertysheet.PropertySourceAdapter; /** * The abstract editor for displaying a category of Taxon data, corresponding @@ -64,37 +68,30 @@ public abstract class AbstractTaxonEditorView extends EditorPart implements * When this EditorPart gets focus, the data structure of * defaultPropertyObject is displayed in the property sheet. */ - protected Object defaultPropertySheetObject = null; protected IManagedForm managedForm; protected ScrolledForm scrolledForm; protected Composite parent; protected ISelectionProvider provider; + + private IHasPropertySource selectedObject; /* (non-Javadoc) * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor) */ - @Override - public void doSave(IProgressMonitor monitor) { - // TODO Auto-generated method stub - - } + public void doSave(IProgressMonitor monitor) {} /* (non-Javadoc) * @see org.eclipse.ui.part.EditorPart#doSaveAs() */ - @Override - public void doSaveAs() { - // TODO Auto-generated method stub - - } + public void doSaveAs() {} /* (non-Javadoc) * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput) */ - @Override public void init(IEditorSite site, IEditorInput input) throws PartInitException { + if (!(input instanceof IEditorInput)) throw new PartInitException( "Invalid Input: Must be IFileEditorInput"); @@ -113,21 +110,11 @@ public abstract class AbstractTaxonEditorView extends EditorPart implements this.getSite().setSelectionProvider(provider); } - /** - * When this EditorPart gets focus, the data structure of - * defaultPropertyObject is displayed in the property sheet. - * - * @param object - */ - protected void setDefaultPropertySheetObject(Object object) { - this.defaultPropertySheetObject = object; - } - /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#setFocus() */ public void setFocus() { - setSelection(defaultPropertySheetObject); +// setSelection(selectedObject); } /** @@ -137,41 +124,47 @@ public abstract class AbstractTaxonEditorView extends EditorPart implements * * @param selectedObject */ - protected void setSelection(Object selectedObject) { + protected void setSelection(IHasPropertySource selectedObject) { + + // Unpaint last selection - last selection will only be unpainted + // when something else on this page is selected + if (this.selectedObject instanceof EditorGroupedComposite) { + ((EditorGroupedComposite) this.selectedObject).unpaintBorder(); + } + + // Set the selection to this editor's selected object + this.selectedObject = selectedObject; + + // Get the selection's property source, pass it to the selection provider IPropertySource propertySource = null; if (selectedObject != null) { - propertySource = new PropertySourceAdapter(selectedObject).getPropertySource(); + propertySource = selectedObject.getPropertySource(); } - if (propertySource == null) { provider.setSelection(new StructuredSelection()); } else { provider.setSelection(new StructuredSelection(propertySource)); - } + } + } /* (non-Javadoc) * @see org.eclipse.ui.part.EditorPart#isDirty() */ - @Override public boolean isDirty() { - // TODO Auto-generated method stub return false; } /* (non-Javadoc) * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed() */ - @Override public boolean isSaveAsAllowed() { - // TODO Auto-generated method stub return false; } /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite) */ - @Override public void createPartControl(Composite composite) { managedForm = new ManagedForm(composite) { @@ -179,7 +172,9 @@ public abstract class AbstractTaxonEditorView extends EditorPart implements firePropertyChange(PROP_DIRTY); } public boolean setInput(Object input) { - setSelection(input); + if (input instanceof IHasPropertySource) { + setSelection((IHasPropertySource)input); + } return super.setInput(input); } }; @@ -209,6 +204,8 @@ public abstract class AbstractTaxonEditorView extends EditorPart implements public Control getControl() { Control control = super.getControl(); + + // Save the property sheet tree for easy access as needed if (!control.isDisposed()) { if (control instanceof Tree) { UiUtil.setPropertySheetTree((Tree) control); @@ -217,6 +214,62 @@ public abstract class AbstractTaxonEditorView extends EditorPart implements return control; } }; + + // Try out PartListener to intercept selections + IWorkbenchPage activePage = UiUtil.getActivePage(); +// IWorkbenchPart active = activePage.getActivePart(); + IPartListener2 partListener = new IPartListener2() { + + @Override + public void partActivated(IWorkbenchPartReference partRef) { + // Fires for every part + logger.warn(partRef.getTitle()); + } + + @Override + public void partBroughtToTop(IWorkbenchPartReference partRef) { + // TODO Auto-generated method stub + + } + + @Override + public void partClosed(IWorkbenchPartReference partRef) { + // TODO Auto-generated method stub + + } + + @Override + public void partDeactivated(IWorkbenchPartReference partRef) { + // TODO Auto-generated method stub + + } + + @Override + public void partHidden(IWorkbenchPartReference partRef) { + // TODO Auto-generated method stub + + } + + @Override + public void partInputChanged(IWorkbenchPartReference partRef) { + logger.warn("part input changed"); + } + + @Override + public void partOpened(IWorkbenchPartReference partRef) { + // TODO Auto-generated method stub + + } + + @Override + public void partVisible(IWorkbenchPartReference partRef) { + // TODO Auto-generated method stub + + } + + }; + activePage.addPartListener(partListener); + UiUtil.setPropertySheetPage(page); CustomSortPropertySheetEntry entry = new CustomSortPropertySheetEntry(); diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/CompositeBorderDecorator.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/CompositeBorderDecorator.java index 2d33e8cb3..eadee0cbe 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/CompositeBorderDecorator.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/CompositeBorderDecorator.java @@ -33,6 +33,12 @@ public class CompositeBorderDecorator { private Composite borderedComposite; private FocusListener listener = new PaintBorderListener(); + + /** + * If true, the borderedComposite's border is erased when + * it loses focus. + */ + private boolean doLoseFocus = true; public CompositeBorderDecorator(Composite composite, IManagedForm form) { this.borderedComposite = composite; @@ -48,6 +54,30 @@ public class CompositeBorderDecorator { composite.addFocusListener(listener); } + /** + * If this is set to true, border will disappear when focus is lost. + * Otherwise, it will remain until explicitly erased. + * + * @param doLoseFocus + */ + public void setLoseFocus(boolean doLoseFocus) { + this.doLoseFocus = doLoseFocus; + } + + /** + * Removes the border from borderedComposite. + */ + public void unpaintBorder() { + paintBorder(null); + } + + /** + * Adds a border to borderedComposite. + */ + public void paintBorder() { + paintBorder(FormToolkit.TEXT_BORDER); + } + private void paintBorder(String border) { borderedComposite.setData(FormToolkit.KEY_DRAW_BORDER, border); toolkit.paintBordersFor(borderedComposite.getParent()); @@ -69,13 +99,13 @@ public class CompositeBorderDecorator { class PaintBorderListener implements FocusListener { public void focusGained(FocusEvent e) { - String border = FormToolkit.TEXT_BORDER; - paintBorder(border); + paintBorder(); } public void focusLost(FocusEvent e) { - String border = null; - paintBorder(border); + if (doLoseFocus) { + unpaintBorder(); + } } } } \ No newline at end of file diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/EditorGroupedComposite.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/EditorGroupedComposite.java index 58769bdc6..2812d0253 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/EditorGroupedComposite.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/EditorGroupedComposite.java @@ -46,15 +46,16 @@ import eu.etaxonomy.cdm.model.taxon.Taxon; * @created 02.06.2008 * @version 1.0 */ -abstract public class EditorGroupedComposite extends GroupedComposite { +abstract public class EditorGroupedComposite extends GroupedComposite implements IHasPropertySource { private static final Logger logger = Logger.getLogger(EditorGroupedComposite.class); protected TextViewer textViewer; protected TableWrapLayout layout; - private ISelectionWrapper selectionWrapper; private Label draggableLabel; protected IManagedForm managedForm; private Taxon taxon; + + private CompositeBorderDecorator borderDecorator; /** * @param parent @@ -160,9 +161,6 @@ abstract public class EditorGroupedComposite extends GroupedComposite { * @see org.eclipse.swt.widgets.Composite#setFocus() */ public boolean setFocus() { - if (selectionWrapper != null) { - selectionWrapper.setSelection(); - } setSelection(); return super.setFocus(); } @@ -171,7 +169,7 @@ abstract public class EditorGroupedComposite extends GroupedComposite { * */ protected void setSelection() { - managedForm.setInput(getData()); + managedForm.setInput(this); } /* (non-Javadoc) @@ -180,13 +178,6 @@ abstract public class EditorGroupedComposite extends GroupedComposite { public void setFont(Font font) { getTextViewer().getTextWidget().setFont(font); } - - /** - * @param selectionWrapper - */ - public void setSelectionWrapper (ISelectionWrapper selectionWrapper) { - this.selectionWrapper = selectionWrapper; - } /** * If textViewer has already been set, it will show a @@ -223,14 +214,19 @@ abstract public class EditorGroupedComposite extends GroupedComposite { * */ public void createBorderSupport() { - CompositeBorderDecorator borderDecorator = new CompositeBorderDecorator( + borderDecorator = new CompositeBorderDecorator( this, managedForm); if (getTextViewer() == null) { logger.warn("Could not create border support - getTextViewer() returned null."); } else { borderDecorator.setBorderedComposite(getTextViewer().getTextWidget()); + borderDecorator.setLoseFocus(false); } } + + public void drawBorder() { + borderDecorator.paintBorder(); + } /** * @param isDirty @@ -243,7 +239,14 @@ abstract public class EditorGroupedComposite extends GroupedComposite { * @see eu.etaxonomy.taxeditor.editor.name.GroupedComposite#dispose() */ public void dispose () { + + // Nullify decorator to stop its listener to listening for + // composite focus + borderDecorator = null; + super.dispose(); + + // A disposed graphic element means that the taxon has changed setDirty(true); } @@ -268,6 +271,7 @@ abstract public class EditorGroupedComposite extends GroupedComposite { return false; } + /** * Returns a ContextMenu opened by right-clicking on * draggableLabel. @@ -276,5 +280,12 @@ abstract public class EditorGroupedComposite extends GroupedComposite { */ protected ContextMenu createContextMenu() { return new ContextMenu(getDraggableLabel()); +// return new ContextMenu(this); + } + + public void unpaintBorder() { + if (borderDecorator != null) { + borderDecorator.unpaintBorder(); + } } -} \ No newline at end of file +} \ No newline at end of file diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ErrorAnnotation.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ErrorAnnotation.java index a8d3ba780..f3d727c2a 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ErrorAnnotation.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ErrorAnnotation.java @@ -38,7 +38,7 @@ public class ErrorAnnotation extends Annotation { } public String getText() { - return text; + return "Error in the string " + text; } public Image getImage() { diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IHasPropertySource.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IHasPropertySource.java new file mode 100644 index 000000000..1172880bb --- /dev/null +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IHasPropertySource.java @@ -0,0 +1,21 @@ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.editor; + +import org.eclipse.ui.views.properties.IPropertySource; + +/** + * @author p.ciardelli + * @created 21.11.2008 + * @version 1.0 + */ +public interface IHasPropertySource { + public IPropertySource getPropertySource(); +} diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ISelectionWrapper.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ISelectionWrapper.java deleted file mode 100644 index b1aa6bc71..000000000 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ISelectionWrapper.java +++ /dev/null @@ -1,5 +0,0 @@ -package eu.etaxonomy.taxeditor.editor; - -public interface ISelectionWrapper { - public void setSelection(); -} diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineWrapSquigglesStrategy.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineWrapSquigglesStrategy.java index 410788389..4280a4c85 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineWrapSquigglesStrategy.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineWrapSquigglesStrategy.java @@ -126,7 +126,7 @@ public class LineWrapSquigglesStrategy extends SquigglesStrategy { } /** - * Copied verbatim from org.eclipse.jface.text.source.AnnotationPainter$SquigglesStrategy + * Copied verbatim from {@link org.eclipse.jface.text.source.AnnotationPainter$SquigglesStrategy} * * @see org.eclipse.jface.text.source.AnnotationPainter$SquigglesStrategy * diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionElementComposite.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionElementComposite.java index f3923dbce..4f425fdd5 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionElementComposite.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionElementComposite.java @@ -22,6 +22,7 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.widgets.TableWrapData; +import org.eclipse.ui.views.properties.IPropertySource; import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.description.DescriptionElementBase; @@ -33,6 +34,7 @@ import eu.etaxonomy.taxeditor.editor.ContextMenu; import eu.etaxonomy.taxeditor.editor.EditorGroupedComposite; import eu.etaxonomy.taxeditor.editor.LineWrapSupport; import eu.etaxonomy.taxeditor.editor.ParseListener; +import eu.etaxonomy.taxeditor.propertysheet.description.DescriptionElementPropertySource; /** * @author p.ciardelli @@ -210,4 +212,9 @@ public class DescriptionElementComposite extends EditorGroupedComposite { managedForm.getForm().getBody().layout(); } + + @Override + public IPropertySource getPropertySource() { + return new DescriptionElementPropertySource((DescriptionElementBase) getData()); + } } \ No newline at end of file diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionLabelComposite.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionLabelComposite.java index a3b9fbbb6..f0a2bae7f 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionLabelComposite.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionLabelComposite.java @@ -25,6 +25,7 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.widgets.TableWrapData; +import org.eclipse.ui.views.properties.IPropertySource; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.description.TaxonDescription; @@ -35,6 +36,7 @@ import eu.etaxonomy.taxeditor.actions.ui.description.AddDescriptionElementCompos import eu.etaxonomy.taxeditor.editor.ContextMenu; import eu.etaxonomy.taxeditor.editor.EditorGroupedComposite; import eu.etaxonomy.taxeditor.editor.ParseListener; +import eu.etaxonomy.taxeditor.propertysheet.description.TaxonDescriptionPropertySource; /** * Composite for editing a description's label / Title Cache information. @@ -140,4 +142,9 @@ public class DescriptionLabelComposite extends EditorGroupedComposite { } }); } -} + + @Override + public IPropertySource getPropertySource() { + return new TaxonDescriptionPropertySource((TaxonDescription) getData()); + } +} \ No newline at end of file diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameComposite.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameComposite.java index 954956e83..682d811ae 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameComposite.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameComposite.java @@ -16,8 +16,6 @@ import org.apache.log4j.Logger; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.action.Action; import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.FocusAdapter; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.graphics.Font; @@ -203,6 +201,7 @@ public class NameComposite extends EditorGroupedComposite { } }; + // TODO clean this part up name.addPropertyChangeListener("fullTitleCache", listener); name.addPropertyChangeListener("nomenclaturalMicroReference", listener); @@ -212,13 +211,6 @@ public class NameComposite extends EditorGroupedComposite { if (reference != null) { reference.addPropertyChangeListener("titleCache", listener); } - - this.addDisposeListener(new DisposeListener() { - - public void widgetDisposed(DisposeEvent e) { -// name.removePropertyChangeListener(listener); - } - }); } /** @@ -325,10 +317,11 @@ public class NameComposite extends EditorGroupedComposite { if (getTextViewer() instanceof NameViewer) { ((NameViewer) getTextViewer()).setCursorToEOL(); - if (((TaxonBase) data).getName() != null) { - boolean hasProblem = ((TaxonBase) data).getName() - .getHasProblem(); - ((NameViewer) getTextViewer()).setShowError(hasProblem); + TaxonNameBase name = ((TaxonBase) data).getName(); + if (name != null) { + + boolean hasProblem = name.getHasProblem(); + ((NameViewer) getTextViewer()).setShowError(name); } } @@ -340,24 +333,32 @@ public class NameComposite extends EditorGroupedComposite { @Override public void parse(String text) { + // Either composite is not yet fully built, or + // the property sheet is writing to it if (!isUseParser) { return; } - + + // Let others know the parser is active isParsing = true; + // Get the name from the composite's data field TaxonBase taxonBase = (TaxonBase) getData(); NonViralName nonViralName = (NonViralName) taxonBase.getName(); + // Parse the name and paint the text field w any errors if (nonViralName != null) { - CdmUtil.parseFullReference(nonViralName, text, null, true); - ((NameViewer) getTextViewer()).setShowError(nonViralName.getHasProblem()); + CdmUtil.parseFullReference(nonViralName, text); + ((NameViewer) getTextViewer()).setShowError(nonViralName); } + // Any entry of text means the taxon has been changed setDirty(true); + // The parser is no longer active isParsing = false; + // Manually refresh the property sheet to reflect changes UiUtil.getPropertySheetPage().refresh(); } }); @@ -393,7 +394,6 @@ public class NameComposite extends EditorGroupedComposite { }); -// nameViewer.getTextWidget().addFocusListener(new FocusAdapter() { getTextViewer().getTextWidget().addFocusListener(new FocusAdapter() { public void focusGained(FocusEvent e) { setFocus(); @@ -401,10 +401,7 @@ public class NameComposite extends EditorGroupedComposite { }); // createLineWrapSupport(nameViewer); -// -// this.textViewer = nameViewer; -// nameViewer.getTextWidget().setBackground(TaxEditorPlugin.getDefault(). -// getColor(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR)); + getTextViewer().getTextWidget().setBackground(TaxEditorPlugin.getDefault(). getColor(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR)); diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameViewer.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameViewer.java index 78083ad11..29d77dbd7 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameViewer.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameViewer.java @@ -21,8 +21,12 @@ import org.eclipse.jface.text.IUndoManagerExtension; import org.eclipse.jface.text.Position; import org.eclipse.jface.text.TextViewerUndoManager; import org.eclipse.jface.text.source.Annotation; +import org.eclipse.jface.text.source.AnnotationBarHoverManager; import org.eclipse.jface.text.source.AnnotationModel; import org.eclipse.jface.text.source.AnnotationPainter; +import org.eclipse.jface.text.source.AnnotationRulerColumn; +import org.eclipse.jface.text.source.CompositeRuler; +import org.eclipse.jface.text.source.DefaultAnnotationHover; import org.eclipse.jface.text.source.IAnnotationAccess; import org.eclipse.jface.text.source.SourceViewer; import org.eclipse.swt.SWT; @@ -90,9 +94,18 @@ public class NameViewer extends SourceViewer { annotationPainter.addAnnotationType(WarningAnnotation.WARNING_TYPE, LineWrapSquigglesStrategy.ID); annotationPainter.setAnnotationTypeColor(WarningAnnotation.WARNING_TYPE, new Color(Display.getDefault(), WarningAnnotation.WARNING_RGB)); - + this.addPainter(annotationPainter); +// DefaultAnnotationHover hover = new DefaultAnnotationHover(); +// +// CompositeRuler fCompositeRuler = new CompositeRuler(); +// AnnotationRulerColumn annotationCol = new AnnotationRulerColumn(model, 10); +// AnnotationBarHoverManager fAnnotationHoverManager = new AnnotationBarHoverManager(annotationCol, this, +// new DefaultAnnotationHover(), fHoverControlCreator); +// fAnnotationHoverManager.install(annotationRuler.getControl()); + + // DocumentUndoManagerRegistry.connect(this.getDocument()); // IDocumentUndoManager docUndoManager = DocumentUndoManagerRegistry.getDocumentUndoManager(this.getDocument()); @@ -170,8 +183,7 @@ public class NameViewer extends SourceViewer { this.getAnnotationModel().addAnnotation( new ErrorAnnotation(0, text), - new Position(start, length)); - + new Position(start, length)); } } diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditorView.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditorView.java index b13505b94..3e950d72b 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditorView.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditorView.java @@ -75,10 +75,6 @@ public class TaxonNameEditorView extends AbstractTaxonEditorView { // Register listeners for any change in accepted name or set of relations taxon.getName().addPropertyChangeListener(taxonChangeListener); taxon.addPropertyChangeListener(taxonChangeListener); - - // The property sheet should show the Taxon's accepted name upon - // receiving focus - setDefaultPropertySheetObject(taxon.getName()); } @Override @@ -169,6 +165,9 @@ public class TaxonNameEditorView extends AbstractTaxonEditorView { // We've added elements to the managed form, so redraw it scrolledForm.reflow(true); + + setSelection(acceptedNameComposite); + acceptedNameComposite.drawBorder(); } diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/CdmUtil.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/CdmUtil.java index 6c12a3fff..006b0e9a0 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/CdmUtil.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/CdmUtil.java @@ -30,6 +30,7 @@ import eu.etaxonomy.cdm.model.name.HomotypicalGroup; import eu.etaxonomy.cdm.model.name.NameRelationship; import eu.etaxonomy.cdm.model.name.NameRelationshipType; import eu.etaxonomy.cdm.model.name.NomenclaturalCode; +import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType; import eu.etaxonomy.cdm.model.name.NonViralName; import eu.etaxonomy.cdm.model.name.Rank; import eu.etaxonomy.cdm.model.name.TaxonNameBase; @@ -43,11 +44,6 @@ import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl; import eu.etaxonomy.taxeditor.TaxEditorPlugin; import eu.etaxonomy.taxeditor.UiUtil; -/** - * @author p.ciardelli - * @created 26.05.2008 - * @version 1.0 - */ /** * @author p.ciardelli * @created 17.09.2008 @@ -59,6 +55,7 @@ public class CdmUtil { private static INonViralNameParser nonViralNameParser; private static TermVocabulary features; private static SortedSet ranks; + private static TermVocabulary statii; /** * Clears all objects retrieved from cdmlib @@ -69,6 +66,8 @@ public class CdmUtil { features = null; ranks = null; nonViralNameParser = null; + + TaxEditorPlugin.getDefault().setNomStatusVocabulary(null); } /** @@ -276,7 +275,7 @@ public class CdmUtil { nomCode = UiUtil.getPreferredNomenclaturalCode(); } - TaxonNameBase name = getNonViralNameParser().parseFullReference(fullReference, + TaxonNameBase name = getNonViralNameParser().parseReferencedName(fullReference, nomCode, rank); if (name.hasProblem()) { @@ -295,8 +294,27 @@ public class CdmUtil { * @param rank * @param makeEmpty */ - public static void parseFullReference(NonViralName nameToBeFilled, String fullReference, Rank rank, boolean makeEmpty) { - getNonViralNameParser().parseFullReference(nameToBeFilled, fullReference, rank, makeEmpty); + public static void parseFullReference(NonViralName nameToBeFilled, String fullReference) { + + Rank rank = null; + boolean makeEmpty = true; + + // If the name already has a rank, make sure it is passed to the parser + if (nameToBeFilled.getRank() != null) { + rank = nameToBeFilled.getRank(); + } + + // Call get status to get status list into the transaction +// for (NomenclaturalStatusType status : nameToBeFilled.getStatus()) { +// +// } +// TaxEditorPlugin.getDefault().getCdmApp().getTermService().saveTerm(termBase) +// NomenclaturalStatusType term = NomenclaturalStatusType.INVALID(); +//// .getRepresentation(Language.DEFAULT()); +// TaxEditorPlugin.getDefaulty().getCdmApp().getTermService().saveTerm(term); +// logger.warn(term.getRepresentation(Language.DEFAULT())); + + getNonViralNameParser().parseReferencedName(nameToBeFilled, fullReference, rank, makeEmpty); if (nameToBeFilled.hasProblem()) { nameToBeFilled.setFullTitleCache(fullReference); @@ -321,8 +339,8 @@ public class CdmUtil { * @return */ public static ReferenceBase getSessionDefaultSec() { - return null; -// return TaxEditorPlugin.getDefault().getSec(); +// return null; + return TaxEditorPlugin.getDefault().getSessionDefaultSec(); } /** @@ -438,7 +456,7 @@ public class CdmUtil { // In case format is "xxxx-xxxx" String[] years = refYear.split("-"); - // Unlikely case of "xxx-xx-xxx..." + // Unlikely case of "xxxx-xxxx-xxxx..." if (years.length > 2) { throw new NumberFormatException(); } @@ -446,7 +464,7 @@ public class CdmUtil { // Set startYear datePublished.setStartYear(getValidYear(years[0])); - // Format is "xxx-xxxx" + // Format is "xxxx-xxxx" if (years.length == 2) { datePublished.setEndYear(getValidYear(years[1])); } diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/PropertySheetNode.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/PropertySheetNode.java deleted file mode 100644 index 30f21fa7f..000000000 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/PropertySheetNode.java +++ /dev/null @@ -1,93 +0,0 @@ -package eu.etaxonomy.taxeditor.model; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.databinding.observable.value.IObservableValue; - -/** - * - * - * @author p.ciardelli - * - */ -public class PropertySheetNode { - - private boolean editable; - private List childProperties; - private PropertySheetNode parentProperty; - private String propertyField; - private String propertyValue; - private IObservableValue observeValue; - - public static boolean EDITABLE = true; - public static boolean NOT_EDITABLE = false; - - public PropertySheetNode(String field, String value, - PropertySheetNode parent, boolean editable) { - this.propertyField = field; - this.propertyValue = value; - this.parentProperty = parent; - if (parent != null) parent.addChildProperty(this); - this.editable = editable; - } - - public PropertySheetNode(String field, IObservableValue observeValue, - PropertySheetNode parent, boolean editable) { - this(field, (String) observeValue.getValue(), parent, editable); - this.observeValue = observeValue; - } - - private void addChildProperty(PropertySheetNode childProperty ) { - if (childProperties == null) - childProperties = new ArrayList(); - if (!childProperties.contains(childProperty)) - childProperties.add(childProperty); - } - - public boolean isEditable() { - return editable; - } - - public void setEditable(boolean editable) { - this.editable = editable; - } - - public String getPropertyField() { - return propertyField; - } - - public void setPropertyField(String propertyField) { - this.propertyField = propertyField; - } - - public String getPropertyValue() { - if (observeValue != null) - return (String) observeValue.getValue(); - return propertyValue; - } - - public void setPropertyValue(String propertyValue) { - this.propertyValue = propertyValue; - } - - public List getChildProperties() { - return childProperties; - } - - public void setChildProperties(List subProperties) { - this.childProperties = subProperties; - } - - public PropertySheetNode getParentProperty() { - return parentProperty; - } - - public void setParentProperty(PropertySheetNode parentProperty) { - this.parentProperty = parentProperty; - } - - public IObservableValue getObserveValue() { - return this.observeValue; - } -} diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/TaxonomicTreeView.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/TaxonomicTreeView.java index be2c280c1..2f2f7fb65 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/TaxonomicTreeView.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/TaxonomicTreeView.java @@ -202,7 +202,6 @@ public class TaxonomicTreeView extends ViewPart { treeViewer = new TaxonomicTreeViewer(taxTreeComposite); - // TODO move these into this class ((TaxonomicTreeViewer) treeViewer).createDoubleClickListener(); ((TaxonomicTreeViewer) treeViewer).createMenu(); ((TaxonomicTreeViewer) treeViewer).createQuickAdd(); @@ -233,7 +232,6 @@ public class TaxonomicTreeView extends ViewPart { .getMenuManager(); } - @Override public void setFocus() { // Set the focus } @@ -244,5 +242,5 @@ public class TaxonomicTreeView extends ViewPart { */ public TaxonomicTreeViewer getTreeViewer() { return treeViewer; - } + } } diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/TaxonomicTreeViewer.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/TaxonomicTreeViewer.java index 2dd486fdc..ab64e160a 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/TaxonomicTreeViewer.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/TaxonomicTreeViewer.java @@ -52,9 +52,7 @@ import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; -import org.springframework.transaction.TransactionStatus; -import eu.etaxonomy.cdm.common.CdmUtils; import eu.etaxonomy.cdm.model.name.NonViralName; import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.taxon.Taxon; @@ -188,6 +186,11 @@ public class TaxonomicTreeViewer extends TreeViewer { return; } + + // Make sure taxon is not being dropped onto itself + if (taxon.equals(parentTaxon)) { + return; + } } new MoveTaxonAction(taxon, parentTaxon).run(); @@ -225,13 +228,8 @@ public class TaxonomicTreeViewer extends TreeViewer { } else { NonViralName name = (NonViralName) quickAddTaxon.getName(); -// CdmUtil.parseFullName(name, trimmedValue, null, true); - CdmUtil.parseFullReference(name, trimmedValue, null, true); + CdmUtil.parseFullReference(name, trimmedValue); -// TaxonNameBase name = CdmUtil.parseFullReference( -// trimmedValue, null, null); -// name.addTaxonBase(quickAddTaxon); - new SaveTaxonAction(quickAddTaxon).run(); quickAddTaxon = null; } diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySheetContentProvider.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySheetContentProvider.java deleted file mode 100644 index 17e470cbb..000000000 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySheetContentProvider.java +++ /dev/null @@ -1,38 +0,0 @@ -package eu.etaxonomy.taxeditor.propertysheet; - -import java.util.List; - -import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.Viewer; - -import eu.etaxonomy.taxeditor.model.PropertySheetNode; - -public class PropertySheetContentProvider extends ObservableListContentProvider implements ITreeContentProvider { - - public Object[] getChildren(Object parentElement) { - List children = ((PropertySheetNode) parentElement).getChildProperties(); - return children == null? new Object[0] : children.toArray(); - } - - public Object getParent(Object element) { - return ((PropertySheetNode) element).getParentProperty(); - } - - public boolean hasChildren(Object element) { - return ((PropertySheetNode) element).getChildProperties() != null; - } - - public Object[] getElements(Object inputElement) { - if (inputElement != null && inputElement instanceof List) { - return ((List) inputElement).toArray(); - } - return new Object[0]; - } - - public void dispose() { - } - - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - } -} diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySourceAdapter.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySourceAdapter.java index 442813295..bdd2b169c 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySourceAdapter.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySourceAdapter.java @@ -10,6 +10,7 @@ package eu.etaxonomy.taxeditor.propertysheet; import org.apache.log4j.Logger; +import org.eclipse.core.runtime.IAdaptable; import org.eclipse.ui.views.properties.IPropertySource; import eu.etaxonomy.cdm.model.description.DescriptionElementBase; diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/name/NameRelationsPropertySource.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/name/NameRelationsPropertySource.java index ee0272bad..c241e9ce2 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/name/NameRelationsPropertySource.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/name/NameRelationsPropertySource.java @@ -16,6 +16,7 @@ import eu.etaxonomy.cdm.model.name.NameRelationship; import eu.etaxonomy.cdm.model.name.NameRelationshipType; import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.name.ZoologicalName; +import eu.etaxonomy.taxeditor.UiUtil; import eu.etaxonomy.taxeditor.propertysheet.CollectionPropertySource; public class NameRelationsPropertySource extends CollectionPropertySource { @@ -48,7 +49,11 @@ public class NameRelationsPropertySource extends CollectionPropertySource { if (nameRelation.getType() != null) { - String label = nameRelation.getType().getLabel(); + // Is the problem the type ... + NameRelationshipType type = nameRelation.getType(); + + // or the label? LABEL + String label = UiUtil.getNameRelationLabelType(type); if (isZoological && nameRelation.getType().equals(NameRelationshipType.BASIONYM())) { label = "original combination"; -- 2.34.1