eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/namerelationswizard/NameRelationWizard.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/namerelationswizard/NameRelationWizardModel.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/namerelationswizard/NameRelationsListWizard.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/NomRefSearchDescriptor.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/IReferenceSearch.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/NomenclaturalReferencePropertySource.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/ReferencePropertySource.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/ReferenceSearchDescriptor.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/ReferenceSearchDialog.java -text
import org.apache.log4j.Logger;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.taxeditor.TaxEditorPlugin;
import eu.etaxonomy.taxeditor.UiUtil;
+import eu.etaxonomy.taxeditor.actions.cdm.SaveTaxonAction;
+import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
import eu.etaxonomy.taxeditor.model.CdmUtil;
/**
// Save the dirty ones
if (taxonEditor.isDirty()) {
+ IEditorInput input = taxonEditor.getEditorInput();
+ if (input.getAdapter(Taxon.class) != null) {
+ Taxon taxon = (Taxon) input.getAdapter(Taxon.class);
+ new SaveTaxonAction(taxon).run();
+ if (taxonEditor instanceof MultiPageTaxonEditor) {
+ ((MultiPageTaxonEditor) taxonEditor).setDirtyExtern(false);
+ }
+ }
+
taxonEditor.doSave(null);
}
}
\r
import eu.etaxonomy.cdm.model.name.NameRelationship;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.occurrence.Collection;\r
import eu.etaxonomy.taxeditor.UiUtil;\r
import eu.etaxonomy.taxeditor.propertysheet.namerelationswizard.NameRelationWizard;\r
import eu.etaxonomy.taxeditor.propertysheet.namerelationswizard.NameRelationWizardModel;\r
}\r
\r
Wizard wizard = new NameRelationWizard(relationModel);\r
+ \r
+ WizardDialog dialog = new WizardDialog(UiUtil.getShell(), wizard);\r
+ dialog.create();\r
+ dialog.open();\r
}\r
}
\ No newline at end of file
int cursorPosition = styledText.getCaretOffset();\r
\r
// If no line break in verifyText, Parse text normally\r
- if (!verifyText.contains(System.getProperty("line.separator")))\r
+ if (!verifyText.contains(System.getProperty("line.separator"))) {\r
return;\r
+ }\r
\r
// Don't add verifyText without further processing\r
e.doit = false;\r
\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.actions.SaveAllAction;\r
import eu.etaxonomy.taxeditor.actions.cdm.SaveTaxonAction;\r
import eu.etaxonomy.taxeditor.editor.description.TaxonDescriptionEditorView;\r
import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditorView;\r
\r
@Override\r
public void doSave(IProgressMonitor monitor) {\r
-// monitor.beginTask(name, totalWork)\r
- new SaveTaxonAction(taxon).run();\r
-// CdmUtil.commitTransaction(tx);\r
- setDirty(false);\r
-// tx = CdmUtil.startTransaction();\r
-// CdmUtil.getTaxonService().saveTaxon(taxon);\r
+ \r
+ // Bummer quick fix - saving individual taxa leads to too many\r
+ // concurrency errors\r
+ new SaveAllAction().run(null);\r
+ \r
+//// monitor.beginTask(name, totalWork)\r
+// new SaveTaxonAction(taxon).run();\r
+//// CdmUtil.commitTransaction(tx);\r
+// setDirty(false);\r
+//// tx = CdmUtil.startTransaction();\r
+//// CdmUtil.getTaxonService().saveTaxon(taxon);\r
}\r
\r
private void setDirty(boolean dirty) {\r
\r
setPartName(partName);\r
}\r
+ \r
+ /**\r
+ * SaveAllAction needs to set this.\r
+ * \r
+ * @param IS_DIRTY\r
+ */\r
+ public void setDirtyExtern(boolean IS_DIRTY) {\r
+ setDirty(IS_DIRTY);\r
+ }\r
}
\ No newline at end of file
import java.util.SortedSet;\r
\r
import org.apache.log4j.Logger;\r
+import org.eclipse.jface.dialogs.MessageDialog;\r
import org.springframework.transaction.TransactionStatus;\r
\r
import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
public static List getReferencesByTitle(String reference) {\r
\r
reference = reference.replace("*", "%");\r
- \r
- return getReferenceService().getReferencesByTitle(reference);\r
+ List resultsList = null;\r
+ try {\r
+ resultsList = getReferenceService().getReferencesByTitle(reference);\r
+ } catch (RuntimeException e) {\r
+ MessageDialog.openError(UiUtil.getShell(), "Search reference error", \r
+ "Reference search returned an error. This could be a Hibernate concurrency problem. " +\r
+ "Please try saving your work, then searching again.");\r
+ }\r
+ return resultsList;\r
}\r
}\r
import org.eclipse.ui.views.properties.IPropertyDescriptor;\r
import org.eclipse.ui.views.properties.IPropertySource;\r
import org.eclipse.ui.views.properties.PropertyDescriptor;\r
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;\r
\r
import eu.etaxonomy.cdm.model.description.CommonTaxonName;\r
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
import eu.etaxonomy.cdm.model.description.TextData;\r
import eu.etaxonomy.cdm.model.reference.Generic;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.propertysheet.reference.IReferenceSearch;\r
import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;\r
+import eu.etaxonomy.taxeditor.propertysheet.reference.ReferenceSearchDescriptor;\r
\r
/**\r
* @author p.ciardelli\r
public static final String P_FEATURE = "00:Feature";\r
public static final String P_BIBREF = "02:Bibliographic Reference";\r
\r
- protected static final String[] TOP_LEVEL_PROPERTIES = new String[] {P_ID_ELEMENT_CLASS, P_ID_FEATURE, P_ID_BIBREF}; \r
+// protected static final String[] TOP_LEVEL_PROPERTIES = new String[] {P_ID_ELEMENT_CLASS, P_ID_FEATURE, P_ID_BIBREF};\r
+ protected static final String[] TOP_LEVEL_PROPERTIES = new String[] {P_ID_BIBREF};\r
\r
private String[] P_FEATURE_CLASS_NAME_MENU;\r
private Class[] P_FEATURE_CLASSES;\r
}\r
\r
if (id.equals(P_ID_BIBREF)) {\r
- descriptors.addElement(new TextPropertyDescriptor(P_ID_BIBREF, P_BIBREF));\r
-// descriptors.addElement(new PropertyDescriptor(P_ID_BIBREF, P_BIBREF));\r
+ descriptors.addElement(new ReferenceSearchDescriptor(P_ID_BIBREF, P_BIBREF, IReferenceSearch.BIBREF) {\r
+ protected void saveReference(ReferenceBase reference) {\r
+ setPropertyValue(P_ID_BIBREF, reference);\r
+ }\r
+ }); \r
+// descriptors.addElement(new TextPropertyDescriptor(P_ID_BIBREF, P_BIBREF));\r
}\r
}\r
\r
}\r
\r
if (id.equals(P_ID_BIBREF)) {\r
+ \r
+ if (value instanceof ReferenceBase) {\r
+ descriptionElement.setCitation((ReferenceBase) value);\r
+ }\r
+ \r
+ if (value instanceof String) {\r
+ \r
+ }\r
ReferenceBase bibRef = descriptionElement.getCitation();\r
if (bibRef == null) {\r
bibRef = Generic.NewInstance();\r
// toString() method\r
bibRef.setTitleCache(value.toString());\r
}\r
+ \r
+ descriptionElement.firePropertyChange(ITaxEditorConstants.PROPERTY_SHEET_CHANGE, null, null);\r
}\r
}\r
public static final String P_LABEL = "00:Description Text";\r
public static final String P_UUID = "01:UUID"; \r
\r
+// protected static final String[] TOP_LEVEL_PROPERTIES = new String[] {\r
+// P_ID_LABEL, P_ID_UUID};\r
protected static final String[] TOP_LEVEL_PROPERTIES = new String[] {\r
- P_ID_LABEL, P_ID_UUID}; \r
+ P_ID_UUID}; \r
\r
/**\r
* Constructor for top level property fields. All fields that are not subfields\r
}\r
if (id.equals(P_ID_UUID)) {\r
descriptors.addElement(\r
- new TextPropertyDescriptor(P_ID_UUID, P_UUID));\r
+ new PropertyDescriptor(P_ID_UUID, P_UUID));\r
}\r
}\r
\r
import eu.etaxonomy.taxeditor.propertysheet.AnnotationPropertySource;\r
import eu.etaxonomy.taxeditor.propertysheet.AnnotationsPropertyDescriptor;\r
import eu.etaxonomy.taxeditor.propertysheet.MarkersPropertySource;\r
-import eu.etaxonomy.taxeditor.propertysheet.reference.NomRefSearchDescriptor;\r
+import eu.etaxonomy.taxeditor.propertysheet.reference.IReferenceSearch;\r
+import eu.etaxonomy.taxeditor.propertysheet.reference.ReferenceSearchDescriptor;\r
import eu.etaxonomy.taxeditor.propertysheet.reference.NomenclaturalReferencePropertySource;\r
import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;\r
\r
\r
if (id.equals(P_ID_NOMENCLATURAL_REF)) {\r
descriptors.addElement(\r
- new NomRefSearchDescriptor(P_ID_NOMENCLATURAL_REF, P_NOMENCLATURAL_REF) {\r
+ new ReferenceSearchDescriptor(P_ID_NOMENCLATURAL_REF, P_NOMENCLATURAL_REF, IReferenceSearch.NOMREF) {\r
protected void saveReference(ReferenceBase reference) {\r
if (reference instanceof INomenclaturalReference) {\r
setPropertyValue(P_ID_NOMENCLATURAL_REF, reference);\r
import java.util.Vector;\r
\r
import org.apache.log4j.Logger;\r
+import org.eclipse.jface.dialogs.MessageDialog;\r
import org.eclipse.ui.views.properties.IPropertyDescriptor;\r
import org.eclipse.ui.views.properties.IPropertySource;\r
import org.eclipse.ui.views.properties.PropertyDescriptor;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
import eu.etaxonomy.cdm.model.reference.Generic;\r
+import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.taxeditor.UiUtil;\r
+import eu.etaxonomy.taxeditor.propertysheet.reference.IReferenceSearch;\r
import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;\r
+import eu.etaxonomy.taxeditor.propertysheet.reference.ReferenceSearchDescriptor;\r
\r
/**\r
* @author p.ciardelli\r
if (id.equals(P_ID_TAXONNAME)) {\r
descriptors.addElement(\r
new PropertyDescriptor(P_ID_TAXONNAME, P_TAXONNAME));\r
- }\r
- \r
+ } \r
if (id.equals(P_ID_TAXONSEC)) {\r
- descriptors.addElement(\r
- new PropertyDescriptor(P_ID_TAXONSEC, P_TAXONSEC));\r
+ descriptors.addElement(new ReferenceSearchDescriptor(P_ID_TAXONSEC, P_TAXONSEC, IReferenceSearch.BIBREF) {\r
+ protected void saveReference(ReferenceBase reference) {\r
+ setPropertyValue(P_ID_TAXONSEC, reference);\r
+ }\r
+ });\r
}\r
}\r
\r
\r
ReferenceBase sec = taxon.getSec();\r
\r
- // Create sec reference as necessary\r
- if (sec == null) {\r
- sec = Generic.NewInstance();\r
- }\r
- \r
// Create property source for submenu\r
ReferencePropertySource secPropertySource = new ReferencePropertySource(sec);\r
\r
* @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)\r
*/\r
public void setPropertyValue(Object id, Object value) {\r
- // All setting done in submenus\r
+ if (id.equals(P_ID_TAXONSEC)) {\r
+ if (value instanceof ReferenceBase) {\r
+ taxon.setSec((ReferenceBase) value);\r
+ }\r
+ }\r
}\r
}\r
if (relation == null) {\r
new OpenNameRelationWizardAction(name, nameRelationsList).run();\r
} else {\r
-// new OpenNameRelationWizardAction(name, relation).run();\r
+ new OpenNameRelationWizardAction(name, relation).run();\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.propertysheet.reference;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 14.11.2008\r
+ * @version 1.0\r
+ */\r
+public interface IReferenceSearch {\r
+\r
+ public static final int NOMREF = 1;\r
+ public static final int BIBREF = 1;\r
+ \r
+}\r
* @created 19.05.2008\r
* @version 1.0\r
*/\r
-abstract public class NomRefSearchDescriptor extends PropertyDescriptor {\r
+abstract public class ReferenceSearchDescriptor extends PropertyDescriptor {\r
private static final Logger logger = Logger\r
- .getLogger(NomRefSearchDescriptor.class);\r
+ .getLogger(ReferenceSearchDescriptor.class);\r
\r
- public NomRefSearchDescriptor(Object id, String displayName) {\r
+ int searchType;\r
+ \r
+ public ReferenceSearchDescriptor(Object id, String displayName, int searchType) {\r
super(id, displayName);\r
+ \r
+ this.searchType = searchType;\r
}\r
\r
public CellEditor createPropertyEditor(Composite parent) {\r
protected Object openDialogBox(\r
Control cellEditorWindow) {\r
Dialog dialog = new ReferenceSearchDialog(cellEditorWindow.getShell(), \r
- ReferenceSearchDialog.NOMREF);\r
+ searchType);\r
Object value = ((ReferenceSearchDialog) dialog).open();\r
if (value instanceof ReferenceBase) {\r
\r
import org.eclipse.swt.events.MouseEvent;\r
import org.eclipse.swt.events.SelectionAdapter;\r
import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.events.VerifyEvent;\r
+import org.eclipse.swt.events.VerifyListener;\r
import org.eclipse.swt.layout.GridData;\r
import org.eclipse.swt.layout.GridLayout;\r
import org.eclipse.swt.widgets.Button;\r
private Text searchTermText;\r
private static final Logger logger = Logger\r
.getLogger(ReferenceSearchDialog.class);\r
- \r
- public static final int NOMREF = 1;\r
- private int searchType = 0;\r
- \r
+ \r
protected Object result;\r
private Shell shell;\r
private Button okButton;\r
private TableViewer resultsTableViewer;\r
private ReferenceBase selectedReference;\r
+ private int searchType;\r
\r
public ReferenceSearchDialog(Shell parent, int searchType) {\r
super(parent, SWT.NONE);\r
searchTermText = new Text(searchComposite, SWT.BORDER);\r
final GridData gd_searchTermText = new GridData(SWT.FILL, SWT.CENTER, true, false);\r
searchTermText.setLayoutData(gd_searchTermText);\r
+ \r
+ // Listen for user hitting <CR> in input field\r
+// searchTermText.addVerifyListener(new VerifyListener () {\r
+// public void verifyText(VerifyEvent e) {\r
+//// if (e.text.contains(System.getProperty("line.separator"))) {\r
+// if (e.text.equals(System.getProperty("line.separator"))) {\r
+// \r
+// // Suppress <CR> being added to search term\r
+// e.doit = false;\r
+// \r
+// populateSearchResults();\r
+// }\r
+// }\r
+// });\r
\r
// Create "Search" button\r
final Button searchButton = new Button(searchComposite, SWT.NONE);\r
\r
// Populate search results table after clicking button\r
public void mouseUp(MouseEvent e) {\r
- \r
- // Get search results\r
- List resultsArray = CdmUtil.getReferencesByTitle(searchTermText.getText());\r
-\r
- // Delete non-nomenclatural references as needed\r
- if (searchType == NOMREF) {\r
- for (Object result : resultsArray) {\r
- if (!(result instanceof INomenclaturalReference)) {\r
- resultsArray.remove(result);\r
- }\r
- }\r
- }\r
- \r
- // Tell user if there are no results\r
- if (resultsArray.size() == 0) {\r
- resultsArray.add("Query returned no results.");\r
- }\r
- \r
- // Send results to results table\r
- resultsTableViewer.setInput(resultsArray.toArray());\r
- \r
- // Disable OK button\r
- okButton.setEnabled(false);\r
+ populateSearchResults();\r
}\r
});\r
\r
});\r
\r
}\r
+ \r
+ private void populateSearchResults() {\r
+ // Get search results\r
+ List resultsArray = CdmUtil.getReferencesByTitle(searchTermText.getText());\r
+\r
+ // Delete non-nomenclatural references as needed\r
+ if (searchType == IReferenceSearch.NOMREF) {\r
+ for (Object result : resultsArray) {\r
+ if (!(result instanceof INomenclaturalReference)) {\r
+ resultsArray.remove(result);\r
+ }\r
+ }\r
+ }\r
+ \r
+ // Tell user if there are no results\r
+ if (resultsArray.size() == 0) {\r
+ resultsArray.add("Query returned no results.");\r
+ }\r
+ \r
+ // Send results to results table\r
+ resultsTableViewer.setInput(resultsArray.toArray());\r
+ \r
+ // Disable OK button\r
+ okButton.setEnabled(false); \r
+ }\r
+ \r
private void setSelectedReference(ReferenceBase selectedReference) {\r
this.selectedReference = selectedReference;\r
}\r