import eu.etaxonomy.cdm.model.description.Feature;\r
import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.actions.cdm.SaveTaxonAction;\r
+import eu.etaxonomy.taxeditor.datasource.CdmTransactionController;\r
import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;\r
+import eu.etaxonomy.taxeditor.editor.name.CdmParserController;\r
import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;\r
import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
import eu.etaxonomy.taxeditor.model.NameEditorInput;\r
+import eu.etaxonomy.taxeditor.navigation.RecentNamesView;\r
import eu.etaxonomy.taxeditor.navigation.TaxonomicTreeView;\r
import eu.etaxonomy.taxeditor.navigation.TaxonomicTreeViewer;\r
import eu.etaxonomy.taxeditor.propertysheet.CustomSortPropertySheetEntry;\r
// ps.addPropertyListener(l)\r
}\r
\r
+ public static void saveAll(){\r
+ setIsSaving(true);\r
+ \r
+ // Get all open windows\r
+ for (IEditorPart taxonEditor : getOpenTaxonEditors()) {\r
+\r
+ // Save the dirty ones\r
+ if (taxonEditor.isDirty()) {\r
+ \r
+ \r
+ IEditorInput input = taxonEditor.getEditorInput();\r
+ if (input.getAdapter(Taxon.class) != null) {\r
+ Taxon taxon = (Taxon) input.getAdapter(Taxon.class);\r
+ CdmSessionDataRepository.getDefault().saveTaxon(taxon);\r
+ if (taxonEditor instanceof MultiPageTaxonEditor) {\r
+ ((MultiPageTaxonEditor) taxonEditor).setDirtyExtern(false);\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ // Commit the transaction \r
+ CdmTransactionController.commitTransaction();\r
+ \r
+ // Force library objects to be associated with new transaction\r
+ CdmSessionDataRepository.getDefault().clearNonTaxonData();\r
+ \r
+ // Start a new transaction\r
+ CdmTransactionController.startTransaction();\r
+ \r
+ // Put all open taxa in the new transaction\r
+ CdmTransactionController.addSessionTaxaToTransaction();\r
+ \r
+ setIsSaving(false);\r
+ // TODO: delete undoHistory\r
+ }\r
+ \r
+ //public void deleteTaxon()\r
+ \r
/**\r
* @param input\r
* @return\r
return getActivePage().openEditor(input, editorId);\r
}\r
\r
+ /**\r
+ * Open an emtpy taxon editor\r
+ * \r
+ * @return\r
+ * @throws PartInitException\r
+ */\r
+ public static IEditorPart openTaxonEditor() \r
+ throws PartInitException{\r
+ return openTaxonEditor(null);\r
+ }\r
+ \r
+ /** \r
+ * Open a taxon editor for the given taxon\r
+ * \r
+ * @param taxon\r
+ * @return\r
+ * @throws PartInitException\r
+ */\r
public static IEditorPart openTaxonEditor(Taxon taxon)\r
throws PartInitException{\r
+ if(taxon == null){\r
+ TaxonNameBase name = CdmParserController.parseFullReference("", null, null);\r
+ name.setFullTitleCache("", false);\r
+ name.setTitleCache("", false);\r
+ taxon = Taxon.NewInstance(name, \r
+ CdmSessionDataRepository.getDefault().getDefaultSec());\r
+ }else{\r
+ // If this taxon is not visible in the tree, open node\r
+ TaxonomicTreeViewer treeViewer = getTreeViewer(); \r
+ if (treeViewer != null) {\r
+ treeViewer.revealTaxon(taxon);\r
+ }\r
+ \r
+ // Add to recent names list\r
+ RecentNamesView.addRecentName(taxon);\r
+ }\r
+ \r
IEditorInput input = new NameEditorInput(taxon);\r
return openEditor(input, MultiPageTaxonEditor.ID);\r
}\r
}\r
\r
public static IUndoContext getWorkbenchUndoContext() {\r
- return getOperationSupport().getUndoContext();\r
+ // TODO make this more specific than GLOBAL_UNDO_CONTEXT\r
+// return getOperationSupport().getUndoContext();\r
+ return IOperationHistory.GLOBAL_UNDO_CONTEXT;\r
}\r
\r
public static void doEditorSave(Taxon taxon, boolean confirm) {\r