/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* 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.
*/
import org.eclipse.ui.navigator.CommonViewer;
import eu.etaxonomy.cdm.model.common.ICdmBase;
-import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
import eu.etaxonomy.cdm.model.description.PolytomousKey;
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
import eu.etaxonomy.cdm.model.taxon.Synonym;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.OpenEditorConfiguration;
import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.navigation.internal.TaxeditorNavigationPlugin;
import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator;
+import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
/**
* <p>NavigationUtil class.</p>
*/
public class NavigationUtil extends AbstractUtility{
private static IUndoContext defaultUndoContext;
-
+
/**
* <p>executeEditHandler</p>
*/
public static void executeEditHandler(){
- String commandId = "eu.etaxonomy.taxeditor.navigation.command.editSelection";
-
- IHandlerService handlerService = (IHandlerService) NavigationUtil.getService(IHandlerService.class);
+ String commandId = "eu.etaxonomy.taxeditor.navigation.command.update.editSelection";
+
+ IHandlerService handlerService = (IHandlerService) AbstractUtility.getService(IHandlerService.class);
try {
handlerService.executeCommand(commandId, null);
} catch (ExecutionException e) {
- NavigationUtil.error(NavigationUtil.class, e);
+ MessagingUtils.error(NavigationUtil.class, e);
} catch (NotDefinedException e) {
- NavigationUtil.error(NavigationUtil.class, e);
+ MessagingUtils.error(NavigationUtil.class, e);
} catch (NotEnabledException e) {
- NavigationUtil.error(NavigationUtil.class, e);
+ MessagingUtils.error(NavigationUtil.class, e);
} catch (NotHandledException e) {
- NavigationUtil.error(NavigationUtil.class, e);
+ MessagingUtils.error(NavigationUtil.class, e);
}
}
-
+
/**
* <p>openEditor</p>
*
* @param selectedObject a {@link eu.etaxonomy.cdm.model.common.CdmBase} object.
*/
public static void openEditor(ICdmBase selectedObject){
- UUID entityUuid = selectedObject.getUuid();
- try {
+ UUID entityUuid = selectedObject.getUuid();
+ try {
if(selectedObject instanceof TaxonNode){
EditorUtil.openTaxonNode(entityUuid);
}else if(selectedObject instanceof TaxonBase){
EditorUtil.openTaxonBase(entityUuid);
}else if(selectedObject instanceof TaxonNameBase){
// TODO open bulk editor
- warningDialog("Not implemented yet", NavigationUtil.class, "You tried to open a name. This is not handled by the software yet.");
+ MessagingUtils.warningDialog("Not implemented yet", NavigationUtil.class, "You tried to open a name. This is not handled by the software yet.");
}else if(selectedObject instanceof PolytomousKey){
EditorUtil.openPolytomousKey(entityUuid);
}else{
- warningDialog("Unsupported Type", NavigationUtil.class, "No editor exists for the current selection: " + selectedObject);
+ MessagingUtils.warningDialog("Unsupported Type", NavigationUtil.class, "No editor exists for the current selection: " + selectedObject);
}
} catch (PartInitException e) {
- NavigationUtil.error(NavigationUtil.class, "Error opening the editor", e);
+ MessagingUtils.error(NavigationUtil.class, "Error opening the editor", e);
} catch (Exception e) {
- EditorUtil.warningDialog("Could not create Taxon", NavigationUtil.class, e.getMessage());
- }
- }
-
- public static void openEditor(Object selectedObject){
- if (selectedObject instanceof UuidAndTitleCache){
- Class type = ((UuidAndTitleCache) selectedObject).getType();
- if(type == Taxon.class || type == Synonym.class){
- try {
- EditorUtil.openTaxonBase(((UuidAndTitleCache) selectedObject).getUuid());
- } catch (PartInitException e) {
- NavigationUtil.error(NavigationUtil.class, "Error opening the editor", e);
- }
- }
- }else if(selectedObject instanceof ICdmBase){
- openEditor((ICdmBase) selectedObject);
- }else{
- NavigationUtil.error(NavigationUtil.class, new IllegalArgumentException("Selected object is not supported: " + selectedObject));
+ MessagingUtils.errorDialog("Could not create Taxon",
+ NavigationUtil.class,
+ e.getMessage(), TaxeditorStorePlugin.PLUGIN_ID,
+ e,
+ true);
+
}
}
-
+
/**
* <p>openEmpty</p>
*
try {
EditorUtil.openEmpty(parentNodeUuid);
} catch (PartInitException e) {
- NavigationUtil.error(NavigationUtil.class, "Error opening the editor", e);
+ MessagingUtils.error(NavigationUtil.class, "Error opening the editor", e);
}
}
-
+
/**
* <p>getShell</p>
*
return TaxeditorNavigationPlugin.getDefault().getWorkbench().
getActiveWorkbenchWindow();
}
-
+
/**
* <p>getWorkbenchUndoContext</p>
*
public static IUndoContext getUndoContext() {
// FIXME this has to be more specific. Every widget has to have its own undo context
// return IOperationHistory.GLOBAL_UNDO_CONTEXT;
-
- // Plug-ins that wish their operations to be undoable from workbench views
- // such as the Navigator or Package Explorer should assign the workbench
- // undo context to their operations.
+
+ // Plug-ins that wish their operations to be undoable from workbench views
+ // such as the Navigator or Package Explorer should assign the workbench
+ // undo context to their operations.
if (defaultUndoContext == null) {
defaultUndoContext = new UndoContext();
}
* @return a boolean.
*/
public static boolean isDirty(TaxonNode taxonNode){
-
+
for (IEditorReference reference : getActivePage().getEditorReferences()) {
-
+
try {
if (reference.getEditorInput() instanceof TaxonEditorInput) {
TaxonEditorInput editorInput = (TaxonEditorInput) reference.getEditorInput();
}
}
} catch (PartInitException e) {
- NavigationUtil.error(NavigationUtil.class, e.getMessage(), e);
+ MessagingUtils.error(NavigationUtil.class, e.getMessage(), e);
throw new RuntimeException(e);
}
-
+
}
return false;
}
public static void selectInNavigator(final Object element, final Object parentElement) {
Display.getDefault().asyncExec(new Runnable(){
- public void run() {
+ @Override
+ public void run() {
TaxonNavigator navigator = showNavigator();
if (navigator != null) {
if (parentElement != null) {
viewer.setExpandedState(parentElement, true);
}
- viewer.setSelection(new StructuredSelection((TaxonNode) element));
+ viewer.setSelection(new StructuredSelection(element));
}
}
}
-
+
});
}
public static void openSearch(Object selection) {
if(selection instanceof Taxon){
Taxon taxon = (Taxon) selection;
-
+
handleOpeningOfMultipleTaxonNodes(taxon.getTaxonNodes());
-
+
}else if(selection instanceof Synonym){
Synonym synonym = (Synonym) selection;
-
+
handleOpeningOfMultipleTaxa(synonym.getAcceptedTaxa());
-
+
}else{
- warningDialog("Not implemented yet", NavigationUtil.class, "You chose to open a name that has no connection to a taxon. The Editor does not support editing of such a content type at the moment.");
+ MessagingUtils.warningDialog("Not implemented yet", NavigationUtil.class, "You chose to open a name that has no connection to a taxon. The Editor does not support editing of such a content type at the moment.");
}
-
+
}
private static void handleOpeningOfMultipleTaxa(Set<Taxon> acceptedTaxa) {
openEditor(acceptedTaxa.iterator().next());
}else if(acceptedTaxa.size() > 1){
// FIXME implement a dialog that shows all possible taxa and let the user choose which he wants to open.
- warningDialog("Not implemented yet", NavigationUtil.class, "The accepted taxon is in multiple taxonomic trees. We currently do not know which one you want to open." +
+ MessagingUtils.warningDialog("Not implemented yet", NavigationUtil.class, "The accepted taxon is in multiple taxonomic trees. We currently do not know which one you want to open." +
" This case is not handled yet by the software.");
}else if(acceptedTaxa.size() == 0){
// this is an undesired state
- warningDialog("Not implemented yet", NavigationUtil.class, "This taxon is not connected to a classification. Currently editing of such taxa is not supported yet.");
+ MessagingUtils.warningDialog("Not implemented yet", NavigationUtil.class, "This taxon is not connected to a classification. Currently editing of such taxa is not supported yet.");
}
}
*/
private static void handleOpeningOfMultipleTaxonNodes(
Set<TaxonNode> taxonNodes) {
-
+
if(taxonNodes.size() == 1){
openEditor(taxonNodes.iterator().next());
}else if(taxonNodes.size() > 1){
// FIXME implement a dialog that shows all possible taxa and let the user choose which he wants to open.
- warningDialog("Not implemented yet", NavigationUtil.class, "The accepted taxon is in multiple taxonomic trees. We currently do not know which one you want to open." +
+ MessagingUtils.warningDialog("Not implemented yet", NavigationUtil.class, "The accepted taxon is in multiple taxonomic trees. We currently do not know which one you want to open." +
" This case is not handled yet by the software.");
}else if(taxonNodes.size() == 0){
// this is an undesired state
- warningDialog("Incorrect state", NavigationUtil.class, "The accepted taxon is not in a taxonomic view. This should not have happened.");
+ MessagingUtils.warningDialog("Incorrect state", NavigationUtil.class, "The accepted taxon is not in a taxonomic view. This should not have happened.");
}
}