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
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
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
preferencesAction = ActionFactory.PREFERENCES.create(window);
- makeImportActions();
+// makeImportActions();
- exportJaxbAction = new ExportAction(ExportAction.JAXB);
- register(exportJaxbAction);
+// exportJaxbAction = new ExportAction(ExportAction.JAXB);
+// register(exportJaxbAction);
}
private void makeImportActions() {
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",
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.UiUtil;\r
+import eu.etaxonomy.taxeditor.actions.SaveAllAction;\r
import eu.etaxonomy.taxeditor.model.CdmUtil;\r
\r
/**\r
\r
public void run() {\r
\r
+ // Call save all action\r
+ new SaveAllAction().run(null);\r
+ \r
// If the taxon has children, cancel operation\r
// TODO add option to continue, and delete children\r
if (taxon.hasTaxonomicChildren()) {\r
TaxEditorPlugin.getDefault().getCdmApp().getTaxonService()\r
.removeTaxon(taxon);\r
}\r
-\r
+ \r
+ // Call save all action\r
+ new SaveAllAction().run(null);\r
}\r
}
\ No newline at end of file
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.UiUtil;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
import eu.etaxonomy.taxeditor.navigation.TaxonomicTreeViewer;\r
\r
/**\r
TaxEditorPlugin.getDefault().addSessionTaxon(taxon);\r
\r
// Save the taxon to the CDM\r
- TaxEditorPlugin.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
+ CdmUtil.getTaxonService().saveTaxon(taxon);\r
\r
// Notify taxon listeners in case name has been updated - updates editor view tab and recent names\r
taxon.firePropertyChange("name", null, null);\r
-\r
\r
// Open node on save\r
treeViewer.revealTaxon(taxon);\r
package eu.etaxonomy.taxeditor.actions.io;\r
\r
import java.io.File;\r
+import java.net.MalformedURLException;\r
\r
import org.apache.log4j.Logger;\r
import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.dialogs.MessageDialog;\r
import org.eclipse.jface.resource.ImageDescriptor;\r
import org.eclipse.swt.SWT;\r
import org.eclipse.swt.widgets.FileDialog;\r
\r
+import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+import eu.etaxonomy.cdm.io.common.CdmDefaultExport;\r
+import eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.UiUtil;\r
\r
/**\r
\r
public void run() {\r
\r
- // Use same title "Import FORMAT" for all message dialogs\r
+ // Use same title "Export FORMAT" for all message dialogs\r
String title = "Export " + getText();\r
\r
// Get file from user\r
dialog.setFileName("export.xml");\r
String filePath = dialog.open();\r
file = new File(filePath); \r
+ \r
+ // Get current data source\r
+ ICdmDataSource source = TaxEditorPlugin.getDefault().getCdmDataSource();\r
+ \r
+ // Format file path \r
+ String destination = null;\r
+// destination = file.toURI().toURL().toString();\r
+ destination = file.toString();\r
+ \r
+ JaxbExportConfigurator configurator = JaxbExportConfigurator.NewInstance(source, destination);\r
+ CdmDefaultExport<JaxbExportConfigurator> jaxbExport = \r
+ new CdmDefaultExport<JaxbExportConfigurator>();\r
+ \r
+ // Start export\r
+ boolean isSuccessfulExport = jaxbExport.invoke(configurator);\r
+ \r
+ // Tell user whether import was a success or a dismal failure\r
+ if (isSuccessfulExport) {\r
+ MessageDialog.openInformation(UiUtil.getShell(), title, "Export successful");\r
+ } else {\r
+ MessageDialog.openError(UiUtil.getShell(), title, "Export was unsuccessful.");\r
+ }\r
}\r
}\r
private File file;\r
private ImportWrapper importWrapper;\r
\r
- public ImportAction() {\r
+ private ImportAction() {\r
super(text);\r
setImageDescriptor(image);\r
setId(ID);\r
boolean isSuccessfulImport = importWrapper.invoke(source, destination, null);\r
\r
// Tell user whether import was a success or a dismal failure\r
- String msg = null;\r
if (isSuccessfulImport) {\r
MessageDialog.openInformation(UiUtil.getShell(), title, "Import successful");\r
} else {\r
// ULTRA HACKY, ULTRA MYSTERIOUS - if this is not called, name created with quick name\r
// then deleted in the same session causes error \r
// "org.springframework.dao.InvalidDataAccessApiUsageException: deleted object would be re-saved by cascade" \r
- (new PropertySourceAdapter(quickNameTaxon.getName())).getPropertySource();\r
+// (new PropertySourceAdapter(quickNameTaxon.getName())).getPropertySource();\r
\r
firePropertyChange(ITaxEditorConstants.QUICK_NAME_TAXON, null, quickNameTaxon);\r
\r
// preference store, i.e. BotanicalName\r
TaxonNameBase name = CdmUtil.parseFullReference("", null, null);\r
name.setFullTitleCache("", false);\r
+ name.setTitleCache("", false);\r
this.taxon = Taxon.NewInstance(name, CdmUtil.getSessionDefaultSec());\r
} else {\r
\r
import org.eclipse.jface.action.IMenuManager;\r
import org.eclipse.jface.action.IStatusLineManager;\r
import org.eclipse.jface.action.IToolBarManager;\r
+import org.eclipse.jface.viewers.ISelection;\r
import org.eclipse.jface.viewers.ISelectionProvider;\r
import org.eclipse.jface.viewers.StructuredSelection;\r
import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.graphics.Color;\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.Tree;\r
import org.eclipse.ui.IEditorInput;\r
import org.eclipse.ui.IEditorSite;\r
+import org.eclipse.ui.IPartListener2;\r
+import org.eclipse.ui.ISelectionListener;\r
+import org.eclipse.ui.IWorkbenchPage;\r
+import org.eclipse.ui.IWorkbenchPart;\r
+import org.eclipse.ui.IWorkbenchPartReference;\r
import org.eclipse.ui.PartInitException;\r
import org.eclipse.ui.forms.IManagedForm;\r
import org.eclipse.ui.forms.ManagedForm;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.UiUtil;\r
import eu.etaxonomy.taxeditor.propertysheet.CustomSortPropertySheetEntry;\r
-import eu.etaxonomy.taxeditor.propertysheet.PropertySourceAdapter;\r
\r
/**\r
* The abstract editor for displaying a category of <code>Taxon</code> data, corresponding\r
* When this <code>EditorPart</code> gets focus, the data structure of \r
* <code>defaultPropertyObject</code> is displayed in the property sheet.\r
*/\r
- protected Object defaultPropertySheetObject = null;\r
\r
protected IManagedForm managedForm;\r
protected ScrolledForm scrolledForm; \r
protected Composite parent;\r
protected ISelectionProvider provider;\r
+\r
+ private IHasPropertySource selectedObject;\r
\r
/* (non-Javadoc)\r
* @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)\r
*/\r
- @Override\r
- public void doSave(IProgressMonitor monitor) {\r
- // TODO Auto-generated method stub\r
-\r
- }\r
+ public void doSave(IProgressMonitor monitor) {}\r
\r
/* (non-Javadoc)\r
* @see org.eclipse.ui.part.EditorPart#doSaveAs()\r
*/\r
- @Override\r
- public void doSaveAs() {\r
- // TODO Auto-generated method stub\r
-\r
- }\r
+ public void doSaveAs() {}\r
\r
/* (non-Javadoc)\r
* @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)\r
*/\r
- @Override\r
public void init(IEditorSite site, IEditorInput input)\r
throws PartInitException {\r
+ \r
if (!(input instanceof IEditorInput))\r
throw new PartInitException(\r
"Invalid Input: Must be IFileEditorInput");\r
this.getSite().setSelectionProvider(provider);\r
}\r
\r
- /**\r
- * When this <code>EditorPart</code> gets focus, the data structure of \r
- * <code>defaultPropertyObject</code> is displayed in the property sheet.\r
- * \r
- * @param object\r
- */\r
- protected void setDefaultPropertySheetObject(Object object) {\r
- this.defaultPropertySheetObject = object;\r
- }\r
-\r
/* (non-Javadoc)\r
* @see org.eclipse.ui.part.WorkbenchPart#setFocus()\r
*/\r
public void setFocus() {\r
- setSelection(defaultPropertySheetObject);\r
+// setSelection(selectedObject);\r
}\r
\r
/**\r
* \r
* @param selectedObject\r
*/\r
- protected void setSelection(Object selectedObject) {\r
+ protected void setSelection(IHasPropertySource selectedObject) {\r
+ \r
+ // Unpaint last selection - last selection will only be unpainted\r
+ // when something else on this page is selected\r
+ if (this.selectedObject instanceof EditorGroupedComposite) {\r
+ ((EditorGroupedComposite) this.selectedObject).unpaintBorder();\r
+ }\r
+ \r
+ // Set the selection to this editor's selected object\r
+ this.selectedObject = selectedObject;\r
+ \r
+ // Get the selection's property source, pass it to the selection provider\r
IPropertySource propertySource = null;\r
if (selectedObject != null) {\r
- propertySource = new PropertySourceAdapter(selectedObject).getPropertySource();\r
+ propertySource = selectedObject.getPropertySource();\r
}\r
- \r
if (propertySource == null) {\r
provider.setSelection(new StructuredSelection());\r
} else {\r
provider.setSelection(new StructuredSelection(propertySource));\r
- } \r
+ }\r
+ \r
}\r
\r
/* (non-Javadoc)\r
* @see org.eclipse.ui.part.EditorPart#isDirty()\r
*/\r
- @Override\r
public boolean isDirty() {\r
- // TODO Auto-generated method stub\r
return false;\r
}\r
\r
/* (non-Javadoc)\r
* @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()\r
*/\r
- @Override\r
public boolean isSaveAsAllowed() {\r
- // TODO Auto-generated method stub\r
return false;\r
}\r
\r
/* (non-Javadoc)\r
* @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)\r
*/\r
- @Override\r
public void createPartControl(Composite composite) {\r
\r
managedForm = new ManagedForm(composite) {\r
firePropertyChange(PROP_DIRTY);\r
}\r
public boolean setInput(Object input) {\r
- setSelection(input);\r
+ if (input instanceof IHasPropertySource) {\r
+ setSelection((IHasPropertySource)input);\r
+ }\r
return super.setInput(input); \r
} \r
};\r
\r
public Control getControl() {\r
Control control = super.getControl();\r
+ \r
+ // Save the property sheet tree for easy access as needed\r
if (!control.isDisposed()) {\r
if (control instanceof Tree) {\r
UiUtil.setPropertySheetTree((Tree) control);\r
return control;\r
}\r
}; \r
+ \r
+ // Try out PartListener to intercept selections\r
+ IWorkbenchPage activePage = UiUtil.getActivePage();\r
+// IWorkbenchPart active = activePage.getActivePart();\r
+ IPartListener2 partListener = new IPartListener2() {\r
+\r
+ @Override\r
+ public void partActivated(IWorkbenchPartReference partRef) {\r
+ // Fires for every part\r
+ logger.warn(partRef.getTitle());\r
+ }\r
+\r
+ @Override\r
+ public void partBroughtToTop(IWorkbenchPartReference partRef) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+\r
+ @Override\r
+ public void partClosed(IWorkbenchPartReference partRef) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+\r
+ @Override\r
+ public void partDeactivated(IWorkbenchPartReference partRef) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+\r
+ @Override\r
+ public void partHidden(IWorkbenchPartReference partRef) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+\r
+ @Override\r
+ public void partInputChanged(IWorkbenchPartReference partRef) {\r
+ logger.warn("part input changed");\r
+ }\r
+\r
+ @Override\r
+ public void partOpened(IWorkbenchPartReference partRef) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+\r
+ @Override\r
+ public void partVisible(IWorkbenchPartReference partRef) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+ \r
+ };\r
+ activePage.addPartListener(partListener);\r
+\r
UiUtil.setPropertySheetPage(page);\r
\r
CustomSortPropertySheetEntry entry = new CustomSortPropertySheetEntry();\r
private Composite borderedComposite;\r
\r
private FocusListener listener = new PaintBorderListener();\r
+ \r
+ /**\r
+ * If true, the <code>borderedComposite</code>'s border is erased when\r
+ * it loses focus.\r
+ */\r
+ private boolean doLoseFocus = true;\r
\r
public CompositeBorderDecorator(Composite composite, IManagedForm form) {\r
this.borderedComposite = composite;\r
composite.addFocusListener(listener);\r
}\r
\r
+ /**\r
+ * If this is set to true, border will disappear when focus is lost.\r
+ * Otherwise, it will remain until explicitly erased. \r
+ * \r
+ * @param doLoseFocus\r
+ */\r
+ public void setLoseFocus(boolean doLoseFocus) {\r
+ this.doLoseFocus = doLoseFocus;\r
+ }\r
+ \r
+ /**\r
+ * Removes the border from <code>borderedComposite</code>.\r
+ */\r
+ public void unpaintBorder() {\r
+ paintBorder(null); \r
+ }\r
+ \r
+ /**\r
+ * Adds a border to <code>borderedComposite</code>.\r
+ */\r
+ public void paintBorder() {\r
+ paintBorder(FormToolkit.TEXT_BORDER);\r
+ }\r
+ \r
private void paintBorder(String border) { \r
borderedComposite.setData(FormToolkit.KEY_DRAW_BORDER, border);\r
toolkit.paintBordersFor(borderedComposite.getParent());\r
\r
class PaintBorderListener implements FocusListener {\r
public void focusGained(FocusEvent e) {\r
- String border = FormToolkit.TEXT_BORDER;\r
- paintBorder(border);\r
+ paintBorder();\r
}\r
\r
public void focusLost(FocusEvent e) {\r
- String border = null;\r
- paintBorder(border);\r
+ if (doLoseFocus) {\r
+ unpaintBorder();\r
+ }\r
}\r
}\r
}
\ No newline at end of file
* @created 02.06.2008\r
* @version 1.0\r
*/\r
-abstract public class EditorGroupedComposite extends GroupedComposite {\r
+abstract public class EditorGroupedComposite extends GroupedComposite implements IHasPropertySource {\r
private static final Logger logger = Logger.getLogger(EditorGroupedComposite.class);\r
\r
protected TextViewer textViewer;\r
protected TableWrapLayout layout;\r
- private ISelectionWrapper selectionWrapper;\r
private Label draggableLabel;\r
protected IManagedForm managedForm;\r
private Taxon taxon;\r
+\r
+ private CompositeBorderDecorator borderDecorator;\r
\r
/**\r
* @param parent\r
* @see org.eclipse.swt.widgets.Composite#setFocus()\r
*/\r
public boolean setFocus() {\r
- if (selectionWrapper != null) {\r
- selectionWrapper.setSelection();\r
- }\r
setSelection();\r
return super.setFocus();\r
}\r
* \r
*/\r
protected void setSelection() {\r
- managedForm.setInput(getData());\r
+ managedForm.setInput(this);\r
}\r
\r
/* (non-Javadoc)\r
public void setFont(Font font) {\r
getTextViewer().getTextWidget().setFont(font);\r
}\r
- \r
- /**\r
- * @param selectionWrapper\r
- */\r
- public void setSelectionWrapper (ISelectionWrapper selectionWrapper) {\r
- this.selectionWrapper = selectionWrapper;\r
- }\r
\r
/**\r
* If <code>textViewer</code> has already been set, it will show a \r
* \r
*/\r
public void createBorderSupport() {\r
- CompositeBorderDecorator borderDecorator = new CompositeBorderDecorator(\r
+ borderDecorator = new CompositeBorderDecorator(\r
this, managedForm);\r
if (getTextViewer() == null) {\r
logger.warn("Could not create border support - getTextViewer() returned null.");\r
} else {\r
borderDecorator.setBorderedComposite(getTextViewer().getTextWidget());\r
+ borderDecorator.setLoseFocus(false);\r
}\r
}\r
+ \r
+ public void drawBorder() {\r
+ borderDecorator.paintBorder();\r
+ }\r
\r
/**\r
* @param isDirty\r
* @see eu.etaxonomy.taxeditor.editor.name.GroupedComposite#dispose()\r
*/\r
public void dispose () {\r
+ \r
+ // Nullify decorator to stop its listener to listening for\r
+ // composite focus\r
+ borderDecorator = null;\r
+ \r
super.dispose();\r
+ \r
+ // A disposed graphic element means that the taxon has changed\r
setDirty(true);\r
}\r
\r
return false;\r
}\r
\r
+ \r
/**\r
* Returns a <code>ContextMenu</code> opened by right-clicking on\r
* <code>draggableLabel</code>.\r
*/\r
protected ContextMenu createContextMenu() {\r
return new ContextMenu(getDraggableLabel());\r
+// return new ContextMenu(this);\r
+ }\r
+ \r
+ public void unpaintBorder() {\r
+ if (borderDecorator != null) {\r
+ borderDecorator.unpaintBorder();\r
+ }\r
}\r
-}
\ No newline at end of file
+}
\ No newline at end of file
}\r
\r
public String getText() {\r
- return text;\r
+ return "Error in the string " + text;\r
}\r
\r
public Image getImage() {\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.editor;\r
+\r
+import org.eclipse.ui.views.properties.IPropertySource;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 21.11.2008\r
+ * @version 1.0\r
+ */\r
+public interface IHasPropertySource {\r
+ public IPropertySource getPropertySource();\r
+}\r
+++ /dev/null
-package eu.etaxonomy.taxeditor.editor;\r
-\r
-public interface ISelectionWrapper {\r
- public void setSelection();\r
-}\r
}\r
\r
/**\r
- * Copied verbatim from <code>org.eclipse.jface.text.source.AnnotationPainter$SquigglesStrategy</code> \r
+ * Copied verbatim from {@link org.eclipse.jface.text.source.AnnotationPainter$SquigglesStrategy} \r
* \r
* @see org.eclipse.jface.text.source.AnnotationPainter$SquigglesStrategy\r
* \r
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.ui.forms.IManagedForm;\r
import org.eclipse.ui.forms.widgets.TableWrapData;\r
+import org.eclipse.ui.views.properties.IPropertySource;\r
\r
import eu.etaxonomy.cdm.model.common.Language;\r
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
import eu.etaxonomy.taxeditor.editor.EditorGroupedComposite;\r
import eu.etaxonomy.taxeditor.editor.LineWrapSupport;\r
import eu.etaxonomy.taxeditor.editor.ParseListener;\r
+import eu.etaxonomy.taxeditor.propertysheet.description.DescriptionElementPropertySource;\r
\r
/**\r
* @author p.ciardelli\r
\r
managedForm.getForm().getBody().layout();\r
}\r
+\r
+ @Override\r
+ public IPropertySource getPropertySource() {\r
+ return new DescriptionElementPropertySource((DescriptionElementBase) getData());\r
+ }\r
}
\ No newline at end of file
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.ui.forms.IManagedForm;\r
import org.eclipse.ui.forms.widgets.TableWrapData;\r
+import org.eclipse.ui.views.properties.IPropertySource;\r
\r
import eu.etaxonomy.cdm.model.description.Feature;\r
import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
import eu.etaxonomy.taxeditor.editor.EditorGroupedComposite;\r
import eu.etaxonomy.taxeditor.editor.ParseListener;\r
+import eu.etaxonomy.taxeditor.propertysheet.description.TaxonDescriptionPropertySource;\r
\r
/**\r
* Composite for editing a description's label / Title Cache information.\r
} \r
}); \r
}\r
-}\r
+\r
+ @Override\r
+ public IPropertySource getPropertySource() {\r
+ return new TaxonDescriptionPropertySource((TaxonDescription) getData());\r
+ }\r
+}
\ No newline at end of file
import org.eclipse.core.runtime.Assert;\r
import org.eclipse.jface.action.Action;\r
import org.eclipse.jface.util.IPropertyChangeListener;\r
-import org.eclipse.swt.events.DisposeEvent;\r
-import org.eclipse.swt.events.DisposeListener;\r
import org.eclipse.swt.events.FocusAdapter;\r
import org.eclipse.swt.events.FocusEvent;\r
import org.eclipse.swt.graphics.Font;\r
}\r
};\r
\r
+ // TODO clean this part up\r
name.addPropertyChangeListener("fullTitleCache", listener);\r
name.addPropertyChangeListener("nomenclaturalMicroReference", listener);\r
\r
if (reference != null) {\r
reference.addPropertyChangeListener("titleCache", listener);\r
}\r
- \r
- this.addDisposeListener(new DisposeListener() {\r
-\r
- public void widgetDisposed(DisposeEvent e) {\r
-// name.removePropertyChangeListener(listener);\r
- }\r
- });\r
}\r
\r
/**\r
if (getTextViewer() instanceof NameViewer) {\r
((NameViewer) getTextViewer()).setCursorToEOL();\r
\r
- if (((TaxonBase) data).getName() != null) {\r
- boolean hasProblem = ((TaxonBase) data).getName()\r
- .getHasProblem();\r
- ((NameViewer) getTextViewer()).setShowError(hasProblem);\r
+ TaxonNameBase name = ((TaxonBase) data).getName();\r
+ if (name != null) {\r
+ \r
+ boolean hasProblem = name.getHasProblem();\r
+ ((NameViewer) getTextViewer()).setShowError(name);\r
}\r
}\r
\r
@Override\r
public void parse(String text) {\r
\r
+ // Either composite is not yet fully built, or\r
+ // the property sheet is writing to it\r
if (!isUseParser) {\r
return;\r
}\r
-\r
+ \r
+ // Let others know the parser is active\r
isParsing = true;\r
\r
+ // Get the name from the composite's data field\r
TaxonBase taxonBase = (TaxonBase) getData();\r
NonViralName nonViralName = (NonViralName) taxonBase.getName();\r
\r
+ // Parse the name and paint the text field w any errors\r
if (nonViralName != null) {\r
- CdmUtil.parseFullReference(nonViralName, text, null, true);\r
- ((NameViewer) getTextViewer()).setShowError(nonViralName.getHasProblem());\r
+ CdmUtil.parseFullReference(nonViralName, text);\r
+ ((NameViewer) getTextViewer()).setShowError(nonViralName);\r
}\r
\r
+ // Any entry of text means the taxon has been changed\r
setDirty(true);\r
\r
+ // The parser is no longer active\r
isParsing = false;\r
\r
+ // Manually refresh the property sheet to reflect changes\r
UiUtil.getPropertySheetPage().refresh();\r
}\r
});\r
\r
});\r
\r
-// nameViewer.getTextWidget().addFocusListener(new FocusAdapter() {\r
getTextViewer().getTextWidget().addFocusListener(new FocusAdapter() {\r
public void focusGained(FocusEvent e) {\r
setFocus();\r
});\r
\r
// createLineWrapSupport(nameViewer);\r
-//\r
-// this.textViewer = nameViewer;\r
-// nameViewer.getTextWidget().setBackground(TaxEditorPlugin.getDefault().\r
-// getColor(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR));\r
+\r
getTextViewer().getTextWidget().setBackground(TaxEditorPlugin.getDefault().\r
getColor(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR)); \r
\r
import org.eclipse.jface.text.Position;\r
import org.eclipse.jface.text.TextViewerUndoManager;\r
import org.eclipse.jface.text.source.Annotation;\r
+import org.eclipse.jface.text.source.AnnotationBarHoverManager;\r
import org.eclipse.jface.text.source.AnnotationModel;\r
import org.eclipse.jface.text.source.AnnotationPainter;\r
+import org.eclipse.jface.text.source.AnnotationRulerColumn;\r
+import org.eclipse.jface.text.source.CompositeRuler;\r
+import org.eclipse.jface.text.source.DefaultAnnotationHover;\r
import org.eclipse.jface.text.source.IAnnotationAccess;\r
import org.eclipse.jface.text.source.SourceViewer;\r
import org.eclipse.swt.SWT;\r
annotationPainter.addAnnotationType(WarningAnnotation.WARNING_TYPE, LineWrapSquigglesStrategy.ID);\r
annotationPainter.setAnnotationTypeColor(WarningAnnotation.WARNING_TYPE, \r
new Color(Display.getDefault(), WarningAnnotation.WARNING_RGB)); \r
- \r
+ \r
this.addPainter(annotationPainter);\r
\r
+// DefaultAnnotationHover hover = new DefaultAnnotationHover();\r
+// \r
+// CompositeRuler fCompositeRuler = new CompositeRuler();\r
+// AnnotationRulerColumn annotationCol = new AnnotationRulerColumn(model, 10);\r
+// AnnotationBarHoverManager fAnnotationHoverManager = new AnnotationBarHoverManager(annotationCol, this, \r
+// new DefaultAnnotationHover(), fHoverControlCreator);\r
+// fAnnotationHoverManager.install(annotationRuler.getControl());\r
+\r
+ \r
// DocumentUndoManagerRegistry.connect(this.getDocument());\r
// IDocumentUndoManager docUndoManager = DocumentUndoManagerRegistry.getDocumentUndoManager(this.getDocument());\r
\r
\r
this.getAnnotationModel().addAnnotation(\r
new ErrorAnnotation(0, text), \r
- new Position(start, length)); \r
- \r
+ new Position(start, length)); \r
}\r
}\r
\r
// Register listeners for any change in accepted name or set of relations\r
taxon.getName().addPropertyChangeListener(taxonChangeListener);\r
taxon.addPropertyChangeListener(taxonChangeListener);\r
- \r
- // The property sheet should show the Taxon's accepted name upon\r
- // receiving focus\r
- setDefaultPropertySheetObject(taxon.getName());\r
}\r
\r
@Override\r
\r
// We've added elements to the managed form, so redraw it\r
scrolledForm.reflow(true);\r
+ \r
+ setSelection(acceptedNameComposite);\r
+ acceptedNameComposite.drawBorder();\r
}\r
\r
\r
import eu.etaxonomy.cdm.model.name.NameRelationship;\r
import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.UiUtil;\r
\r
-/**\r
- * @author p.ciardelli\r
- * @created 26.05.2008\r
- * @version 1.0\r
- */\r
/**\r
* @author p.ciardelli\r
* @created 17.09.2008\r
private static INonViralNameParser nonViralNameParser;\r
private static TermVocabulary<Feature> features;\r
private static SortedSet<Rank> ranks;\r
+ private static TermVocabulary<NomenclaturalStatusType> statii;\r
\r
/**\r
* Clears all objects retrieved from <code>cdmlib</code> \r
features = null;\r
ranks = null;\r
nonViralNameParser = null;\r
+ \r
+ TaxEditorPlugin.getDefault().setNomStatusVocabulary(null);\r
}\r
\r
/**\r
nomCode = UiUtil.getPreferredNomenclaturalCode();\r
}\r
\r
- TaxonNameBase name = getNonViralNameParser().parseFullReference(fullReference,\r
+ TaxonNameBase name = getNonViralNameParser().parseReferencedName(fullReference,\r
nomCode, rank);\r
\r
if (name.hasProblem()) {\r
* @param rank\r
* @param makeEmpty\r
*/\r
- public static void parseFullReference(NonViralName nameToBeFilled, String fullReference, Rank rank, boolean makeEmpty) {\r
- getNonViralNameParser().parseFullReference(nameToBeFilled, fullReference, rank, makeEmpty);\r
+ public static void parseFullReference(NonViralName nameToBeFilled, String fullReference) {\r
+ \r
+ Rank rank = null;\r
+ boolean makeEmpty = true;\r
+ \r
+ // If the name already has a rank, make sure it is passed to the parser\r
+ if (nameToBeFilled.getRank() != null) {\r
+ rank = nameToBeFilled.getRank();\r
+ }\r
+ \r
+ // Call get status to get status list into the transaction\r
+// for (NomenclaturalStatusType status : nameToBeFilled.getStatus()) {\r
+// \r
+// }\r
+// TaxEditorPlugin.getDefault().getCdmApp().getTermService().saveTerm(termBase)\r
+// NomenclaturalStatusType term = NomenclaturalStatusType.INVALID();\r
+//// .getRepresentation(Language.DEFAULT());\r
+// TaxEditorPlugin.getDefaulty().getCdmApp().getTermService().saveTerm(term);\r
+// logger.warn(term.getRepresentation(Language.DEFAULT()));\r
+ \r
+ getNonViralNameParser().parseReferencedName(nameToBeFilled, fullReference, rank, makeEmpty);\r
\r
if (nameToBeFilled.hasProblem()) {\r
nameToBeFilled.setFullTitleCache(fullReference);\r
* @return\r
*/\r
public static ReferenceBase getSessionDefaultSec() {\r
- return null;\r
-// return TaxEditorPlugin.getDefault().getSec();\r
+// return null;\r
+ return TaxEditorPlugin.getDefault().getSessionDefaultSec();\r
}\r
\r
/**\r
// In case format is "xxxx-xxxx"\r
String[] years = refYear.split("-");\r
\r
- // Unlikely case of "xxx-xx-xxx..."\r
+ // Unlikely case of "xxxx-xxxx-xxxx..."\r
if (years.length > 2) {\r
throw new NumberFormatException();\r
}\r
// Set startYear\r
datePublished.setStartYear(getValidYear(years[0]));\r
\r
- // Format is "xxx-xxxx"\r
+ // Format is "xxxx-xxxx"\r
if (years.length == 2) {\r
datePublished.setEndYear(getValidYear(years[1]));\r
}\r
+++ /dev/null
-package eu.etaxonomy.taxeditor.model;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.eclipse.core.databinding.observable.value.IObservableValue;\r
-\r
-/**\r
- * \r
- * \r
- * @author p.ciardelli\r
- *\r
- */\r
-public class PropertySheetNode {\r
- \r
- private boolean editable;\r
- private List<PropertySheetNode> childProperties;\r
- private PropertySheetNode parentProperty;\r
- private String propertyField;\r
- private String propertyValue;\r
- private IObservableValue observeValue;\r
- \r
- public static boolean EDITABLE = true;\r
- public static boolean NOT_EDITABLE = false;\r
- \r
- public PropertySheetNode(String field, String value, \r
- PropertySheetNode parent, boolean editable) {\r
- this.propertyField = field;\r
- this.propertyValue = value;\r
- this.parentProperty = parent;\r
- if (parent != null) parent.addChildProperty(this);\r
- this.editable = editable;\r
- }\r
- \r
- public PropertySheetNode(String field, IObservableValue observeValue, \r
- PropertySheetNode parent, boolean editable) {\r
- this(field, (String) observeValue.getValue(), parent, editable);\r
- this.observeValue = observeValue;\r
- }\r
- \r
- private void addChildProperty(PropertySheetNode childProperty ) {\r
- if (childProperties == null)\r
- childProperties = new ArrayList<PropertySheetNode>();\r
- if (!childProperties.contains(childProperty))\r
- childProperties.add(childProperty);\r
- }\r
-\r
- public boolean isEditable() {\r
- return editable;\r
- }\r
-\r
- public void setEditable(boolean editable) {\r
- this.editable = editable;\r
- }\r
-\r
- public String getPropertyField() {\r
- return propertyField;\r
- }\r
-\r
- public void setPropertyField(String propertyField) {\r
- this.propertyField = propertyField;\r
- }\r
-\r
- public String getPropertyValue() {\r
- if (observeValue != null)\r
- return (String) observeValue.getValue();\r
- return propertyValue;\r
- }\r
-\r
- public void setPropertyValue(String propertyValue) {\r
- this.propertyValue = propertyValue;\r
- }\r
-\r
- public List<PropertySheetNode> getChildProperties() {\r
- return childProperties;\r
- }\r
-\r
- public void setChildProperties(List<PropertySheetNode> subProperties) {\r
- this.childProperties = subProperties;\r
- }\r
-\r
- public PropertySheetNode getParentProperty() {\r
- return parentProperty;\r
- }\r
-\r
- public void setParentProperty(PropertySheetNode parentProperty) {\r
- this.parentProperty = parentProperty;\r
- } \r
- \r
- public IObservableValue getObserveValue() {\r
- return this.observeValue;\r
- }\r
-}\r
\r
treeViewer = new TaxonomicTreeViewer(taxTreeComposite);\r
\r
- // TODO move these into this class\r
((TaxonomicTreeViewer) treeViewer).createDoubleClickListener();\r
((TaxonomicTreeViewer) treeViewer).createMenu();\r
((TaxonomicTreeViewer) treeViewer).createQuickAdd();\r
.getMenuManager();\r
}\r
\r
- @Override\r
public void setFocus() {\r
// Set the focus\r
}\r
*/\r
public TaxonomicTreeViewer getTreeViewer() {\r
return treeViewer;\r
- } \r
+ }\r
}\r
import org.eclipse.swt.widgets.Shell;\r
import org.eclipse.swt.widgets.Tree;\r
import org.eclipse.swt.widgets.TreeItem;\r
-import org.springframework.transaction.TransactionStatus;\r
\r
-import eu.etaxonomy.cdm.common.CdmUtils;\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
\r
return;\r
}\r
+ \r
+ // Make sure taxon is not being dropped onto itself\r
+ if (taxon.equals(parentTaxon)) {\r
+ return;\r
+ }\r
}\r
\r
new MoveTaxonAction(taxon, parentTaxon).run();\r
} else {\r
\r
NonViralName name = (NonViralName) quickAddTaxon.getName();\r
-// CdmUtil.parseFullName(name, trimmedValue, null, true);\r
- CdmUtil.parseFullReference(name, trimmedValue, null, true);\r
+ CdmUtil.parseFullReference(name, trimmedValue);\r
\r
-// TaxonNameBase name = CdmUtil.parseFullReference(\r
-// trimmedValue, null, null);\r
-// name.addTaxonBase(quickAddTaxon);\r
-\r
new SaveTaxonAction(quickAddTaxon).run();\r
quickAddTaxon = null;\r
}\r
+++ /dev/null
-package eu.etaxonomy.taxeditor.propertysheet;\r
-\r
-import java.util.List;\r
-\r
-import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;\r
-import org.eclipse.jface.viewers.ITreeContentProvider;\r
-import org.eclipse.jface.viewers.Viewer;\r
-\r
-import eu.etaxonomy.taxeditor.model.PropertySheetNode;\r
-\r
-public class PropertySheetContentProvider extends ObservableListContentProvider implements ITreeContentProvider {\r
-\r
- public Object[] getChildren(Object parentElement) {\r
- List<PropertySheetNode> children = ((PropertySheetNode) parentElement).getChildProperties();\r
- return children == null? new Object[0] : children.toArray();\r
- }\r
-\r
- public Object getParent(Object element) {\r
- return ((PropertySheetNode) element).getParentProperty();\r
- }\r
-\r
- public boolean hasChildren(Object element) {\r
- return ((PropertySheetNode) element).getChildProperties() != null;\r
- }\r
- \r
- public Object[] getElements(Object inputElement) {\r
- if (inputElement != null && inputElement instanceof List) {\r
- return ((List) inputElement).toArray();\r
- }\r
- return new Object[0];\r
- }\r
-\r
- public void dispose() {\r
- }\r
-\r
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {\r
- }\r
-}\r
package eu.etaxonomy.taxeditor.propertysheet;\r
\r
import org.apache.log4j.Logger;\r
+import org.eclipse.core.runtime.IAdaptable;\r
import org.eclipse.ui.views.properties.IPropertySource;\r
\r
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
+import eu.etaxonomy.taxeditor.UiUtil;\r
import eu.etaxonomy.taxeditor.propertysheet.CollectionPropertySource;\r
\r
public class NameRelationsPropertySource extends CollectionPropertySource {\r
\r
if (nameRelation.getType() != null) {\r
\r
- String label = nameRelation.getType().getLabel();\r
+ // Is the problem the type ...\r
+ NameRelationshipType type = nameRelation.getType();\r
+ \r
+ // or the label? LABEL\r
+ String label = UiUtil.getNameRelationLabelType(type);\r
if (isZoological && \r
nameRelation.getType().equals(NameRelationshipType.BASIONYM())) {\r
label = "original combination";\r