/**
* 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 eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
import eu.etaxonomy.taxeditor.editor.name.container.AbstractGroupedContainer;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.DataChangeBridge;
import eu.etaxonomy.taxeditor.model.IDataChangeBehavior;
import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
/**
- *
+ *
* Generates the tabbed editor with <code>TaxonNameEditor</code> on top and tabs
* for "Descriptions", "Concepts", "Geography", etc.
- *
+ *
* @author p.ciardelli
* @author n.hoffmann
* @created 15.05.2008
/*
* (non-Javadoc)
- *
+ *
* @see org.eclipse.ui.forms.editor.FormEditor#addPages()
*/
/** {@inheritDoc} */
// EditorUtil.showPropertySheet();
} catch (PartInitException e) {
- EditorUtil.error(getClass(), e);
+ AbstractUtility.error(getClass(), e);
}
}
}
monitor.worked(1);
- for (IEditorPart editorPage : getPages()) {
- if (editorPage instanceof TaxonNameEditor) {
- if (((TaxonNameEditor) editorPage).checkForEmptyNames()) {
- MessageDialog
- .openWarning(
- EditorUtil.getShell(),
- "No Name Specified",
- "An attempt was made to save a taxon or synonym with "
- + "an empty name. Operation was cancelled.");
- return;
- }
- }
-
- editorPage.doSave(monitor);
- monitor.worked(1);
- }
+ for (IEditorPart editorPage : getPages()) {
+ if (editorPage instanceof TaxonNameEditor) {
+ if (((TaxonNameEditor) editorPage).checkForEmptyNames()) {
+ MessageDialog.openWarning(AbstractUtility.getShell(), "No Name Specified",
+ "An attempt was made to save a taxon or synonym with "
+ + "an empty name. Operation was cancelled.");
+ return;
+ }
+ }
+
+ editorPage.doSave(monitor);
+ monitor.worked(1);
+ }
// commit the conversation and start a new transaction immediately
conversation.commit(true);
monitor.worked(1);
- this.setDirty(false);
- monitor.worked(1);
- } catch (Exception e) {
- setFocus();
- EditorUtil
- .errorDialog(
- "An error occurred while saving",
- getClass(),
- "An error occurred while saving the editor. Please close and reopen the taxon again.",
- e);
- disableEditor(true);
- } finally {
- monitor.done();
- }
+ this.setDirty(false);
+ monitor.worked(1);
+ } catch (Exception e) {
+ setFocus();
+ AbstractUtility.errorDialog("An error occurred while saving", getClass(),
+ "An error occurred while saving the editor. Please close and reopen the taxon again.", e);
+ disableEditor(true);
+ } finally {
+ monitor.done();
+ }
}
private void disableEditor(boolean isOnError) {
if(isOnError){
editorPage.setOnError();
}else {
- editorPage.setDisabled();
+ editorPage.setDisabled();
}
}
conversation.unregisterForDataStoreChanges(this);
/*
* (non-Javadoc)
- *
+ *
* @see org.eclipse.ui.part.MultiPageEditorPart#isDirty()
*/
/**
* <p>
* isDirty
* </p>
- *
+ *
* @return a boolean.
*/
- public boolean isDirty() {
+ @Override
+ public boolean isDirty() {
return dirty;
}
/*
* (non-Javadoc)
- *
+ *
* @see org.eclipse.ui.forms.editor.FormEditor#editorDirtyStateChanged()
*/
/** {@inheritDoc} */
/**
* {@inheritDoc}
- *
+ *
* Checks whether nested editors are calling
* <code>firePropertyChange(PROP_DIRTY)</code> to signal an edit has taken
* place before passing property change along to
*/
/*
* (non-Javadoc)
- *
+ *
* @see org.eclipse.ui.part.MultiPageEditorPart#handlePropertyChange(int)
*/
- protected void handlePropertyChange(int propertyId) {
+ @Override
+ protected void handlePropertyChange(int propertyId) {
if (propertyId == PROP_DIRTY) {
setDirty(true);
}
public void init(IEditorSite site, IEditorInput input)
throws PartInitException {
- if (!(input instanceof TaxonEditorInput))
- throw new PartInitException(
+ if (!(input instanceof TaxonEditorInput)) {
+ throw new PartInitException(
"Invalid Input: Must be TaxonEditorInput");
+ }
this.input = (TaxonEditorInput) input;
setPartName(partName);
}
- /**
- * {@inheritDoc}
- *
- * Editor pages call this in their postOperation to notify the
- * MultiPageTaxonEditor of unsaved changes
- */
- public void changed(Object element) {
- // setDirty(true);
- dirty = true;
- super.editorDirtyStateChanged();
- if (element instanceof TaxonBase) {
- TaxonNameEditor page = (TaxonNameEditor) getPage(Page.NAME);
- AbstractGroupedContainer container = page
- .getContainer((TaxonBase) element);
- if (container != null) {
- container.refresh();
- }
- }
- }
+ /**
+ * {@inheritDoc}
+ *
+ * Editor pages call this in their postOperation to notify the
+ * MultiPageTaxonEditor of unsaved changes
+ */
+ @Override
+ public void changed(Object element) {
+ // setDirty(true);
+ dirty = true;
+ super.editorDirtyStateChanged();
+ if (element instanceof TaxonBase) {
+ TaxonNameEditor page = (TaxonNameEditor) getPage(Page.NAME);
+ AbstractGroupedContainer container = page.getContainer((TaxonBase) element);
+ if (container != null) {
+ container.refresh();
+ }
+ }
+ }
/**
* The accepted taxon that is the input for this editor
- *
+ *
* @return the accepted taxon
*/
public Taxon getTaxon() {
/*
* (non-Javadoc)
- *
+ *
* @see
* eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder
* ()
* <p>
* getConversationHolder
* </p>
- *
+ *
* @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
* object.
*/
- public ConversationHolder getConversationHolder() {
+ @Override
+ public ConversationHolder getConversationHolder() {
return conversation;
}
* <p>
* setConversationHolder
* </p>
- *
+ *
* @param conversation
* a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
* object.
* <p>
* Getter for the field <code>undoContext</code>.
* </p>
- *
+ *
* @return a {@link org.eclipse.core.commands.operations.IUndoContext}
* object.
*/
* <p>
* Setter for the field <code>undoContext</code>.
* </p>
- *
+ *
* @param undoContext
* a {@link org.eclipse.core.commands.operations.IUndoContext}
* object.
getActiveEditor().setFocus();
}
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.cdm.persistence.hibernate.ICdmPostCrudObserver#update(eu
- * .etaxonomy.cdm.persistence.hibernate.CdmCrudEvent)
- */
- /** {@inheritDoc} */
- public void update(CdmDataChangeMap events) {
- if (dataChangeBehavior == null) {
- dataChangeBehavior = new MultiPageTaxonEditorDataChangeBehaviour(
- this);
- }
-
- DataChangeBridge.handleDataChange(events, dataChangeBehavior);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.taxeditor.store.operations.IPostOperationEnabled#postOperation
- * ()
- */
- /** {@inheritDoc} */
- public boolean postOperation(CdmBase objectAffectedByOperation) {
- setDirty(true);
-
- for (IEditorPart editor : this.getPages()) {
- if (editor instanceof IPostOperationEnabled) {
- ((IPostOperationEnabled) editor)
- .postOperation(objectAffectedByOperation);
- } else {
- EditorUtil.warn(getClass(),
- "postOperation not enabled for editor " + editor);
- }
- }
- EditorUtil
- .warn(getClass(),
- "postOperation called on MultiPageTaxonEditor. Can you make it more specific?");
-
- return false;
- }
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * eu.etaxonomy.cdm.persistence.hibernate.ICdmPostCrudObserver#update(eu
+ * .etaxonomy.cdm.persistence.hibernate.CdmCrudEvent)
+ */
+ /** {@inheritDoc} */
+ @Override
+ public void update(CdmDataChangeMap events) {
+ if (dataChangeBehavior == null) {
+ dataChangeBehavior = new MultiPageTaxonEditorDataChangeBehaviour(this);
+ }
+
+ DataChangeBridge.handleDataChange(events, dataChangeBehavior);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * eu.etaxonomy.taxeditor.store.operations.IPostOperationEnabled#postOperation
+ * ()
+ */
+ /** {@inheritDoc} */
+ @Override
+ public boolean postOperation(CdmBase objectAffectedByOperation) {
+ setDirty(true);
+
+ for (IEditorPart editor : this.getPages()) {
+ if (editor instanceof IPostOperationEnabled) {
+ ((IPostOperationEnabled) editor).postOperation(objectAffectedByOperation);
+ } else {
+ AbstractUtility.warn(getClass(), "postOperation not enabled for editor " + editor);
+ }
+ }
+ AbstractUtility.warn(getClass(), "postOperation called on MultiPageTaxonEditor. Can you make it more specific?");
+
+ return false;
+ }
/**
* Returns an <code>IEditorPart</code> implementation by type
- *
+ *
* @param page
* the page type
* @return a {@link eu.etaxonomy.taxeditor.editor.IMultiPageTaxonEditorPage}
/**
* Return a list of <code>AbstractTaxonEditor</code>s registered with this
* <code>MultiPageTaxonEditor</code>.
- *
+ *
* @return a {@link java.util.List} object.
*/
public List<IMultiPageTaxonEditorPage> getPages() {
/**
* Refreshes a certain page of the MultipageTaxonEditor
- *
+ *
* @param page
* a {@link eu.etaxonomy.taxeditor.editor.Page} object.
* @return a boolean.
/**
* Refreshes a certain page of the MultipageTaxonEditor and sets focus to
* that page
- *
+ *
* @param page
* a {@link eu.etaxonomy.taxeditor.editor.Page} object.
* @param focus
* <p>
* onComplete
* </p>
- *
+ *
* @return a boolean.
*/
- public boolean onComplete() {
+ @Override
+ public boolean onComplete() {
return false;
}
- /**
- * Reloads the data for this
- */
- public void reload() {
- if (isDirty()) {
- EditorUtil
- .warningDialog(
- "Editor has unsaved data",
- getClass(),
- "This editor can not be "
- + "refreshed because it contains unsaved data. Refreshing "
- + "this editor would discard the changes. Please save this editor, "
- + "close and reopen it manually in order to get the latest content");
- } else {
- TaxonEditorInput input = (TaxonEditorInput) getEditorInput();
-
- UUID uuid = input.getTaxonNode().getUuid();
-
- conversation.clear();
-
- try {
- TaxonEditorInput newInput = TaxonEditorInput.NewInstance(uuid);
- setInput(newInput);
- for (IMultiPageTaxonEditorPage editorPart : getPages()) {
- editorPart.redraw();
- }
- } catch (Exception e) {
- EditorUtil.errorDialog("Error refreshing editor", getClass(),
- "Could not refresh this editor", e);
- }
- }
- }
-
+ /**
+ * Reloads the data for this
+ */
+ public void reload() {
+ if (isDirty()) {
+ AbstractUtility.warningDialog("Editor has unsaved data", getClass(), "This editor can not be "
+ + "refreshed because it contains unsaved data. Refreshing "
+ + "this editor would discard the changes. Please save this editor, "
+ + "close and reopen it manually in order to get the latest content");
+ } else {
+ TaxonEditorInput input = (TaxonEditorInput) getEditorInput();
+
+ UUID uuid = input.getTaxonNode().getUuid();
+
+ conversation.clear();
+
+ try {
+ TaxonEditorInput newInput = TaxonEditorInput.NewInstance(uuid);
+ setInput(newInput);
+ for (IMultiPageTaxonEditorPage editorPart : getPages()) {
+ editorPart.redraw();
+ }
+ } catch (Exception e) {
+ AbstractUtility.errorDialog("Error refreshing editor", getClass(), "Could not refresh this editor", e);
+ }
+ }
+ }
+
@Override
public String toString() {
return String.format("%s[%s]", this.getClass().getSimpleName(), getEditorInput());
/**\r
* Copyright (C) 2011 EDIT\r
- * European Distributed Institute of Taxonomy \r
+ * European Distributed Institute of Taxonomy\r
* http://www.e-taxonomy.eu\r
- * \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
import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementDropAdapter;\r
import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementTransfer;\r
import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;\r
-import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;\r
-import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;\r
\r
\r
/**\r
- * The Class create a speific Use View to keep the taxonomic view clean\r
- * @author a.theys \r
+ * The Class create a specific Use View to keep the taxonomic view clean\r
+ * @author a.theys\r
* @created mar 13, 2012\r
* @version 1.0\r
*/\r
-public class UsesViewPart extends DescriptiveViewPart implements IPartContentHasDetails, IPartContentHasSupplementalData {\r
+public class UsesViewPart extends DescriptiveViewPart {\r
\r
/** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.uses"</code> */\r
public static final String ID = "eu.etaxonomy.taxeditor.editor.view.uses";\r
/** {@inheritDoc} */\r
@Override\r
public void createViewer(Composite parent) {\r
- \r
+\r
viewer = new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL\r
| SWT.V_SCROLL | SWT.FULL_SELECTION));\r
viewer.setContentProvider(new UsesContentProvider(featureNodeContainerCache));\r
viewer.setLabelProvider(new UsesLabelProvider());\r
viewer.setAutoExpandLevel(2);\r
- \r
- \r
- \r
+\r
+\r
+\r
Transfer[] transfers = new Transfer[] { DescriptionElementTransfer.getInstance() };\r
viewer.addDragSupport(dndOperations, transfers, new DescriptionElementDragListener(\r
this));\r
viewer.addDropSupport(dndOperations, transfers,\r
new DescriptionElementDropAdapter(viewer));\r
- \r
+\r
// Propagate selection from viewer\r
getSite().setSelectionProvider(viewer);\r
- \r
- showAllElementsAction = new ToggleDescriptionAction(false); \r
+\r
+ showAllElementsAction = new ToggleDescriptionAction(false);\r
hideAllElementsAction = new ToggleDescriptionAction(true);\r
- \r
+\r
// Add context menu to tree\r
createMenu();\r
- \r
+\r
createToolbar();\r
\r
}\r
- \r
+\r
/** {@inheritDoc} */\r
@Override\r
public boolean postOperation(CdmBase objectAffectedByOperation) {\r
viewer.refresh();\r
return super.postOperation(objectAffectedByOperation);\r
}\r
- \r
+\r
\r
\r
}\r
// $Id$
/**
* 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 eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
-import eu.etaxonomy.taxeditor.view.AbstractCdmViewPart;
-import eu.etaxonomy.taxeditor.view.detail.CdmSectionPart;
/**
public static final String ID = "eu.etaxonomy.taxeditor.view.supplementalData";
private SupplementalDataViewer viewer;
-
+
/* (non-Javadoc)
* @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
*/
/** {@inheritDoc} */
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- if(StoreUtil.getActiveEditor() == null){
+ @Override
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ if(AbstractUtility.getActiveEditor() == null){
showEmptyPage();
return;
}
-
- if(((part instanceof EditorPart) || (part instanceof AbstractCdmViewPart)) && selection instanceof IStructuredSelection) {
- IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+
+ if(!(selection instanceof IStructuredSelection)){
+ return;
+ }
+
+ IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+
+ if((part instanceof EditorPart || part instanceof IPartContentHasSupplementalData)) {
if(structuredSelection.size() != 1){
showEmptyPage();
return;
}
-
+
// do not show supplemental data for feature nodes
if(structuredSelection.getFirstElement() instanceof FeatureNodeContainer){
showEmptyPage();
return;
}
- if(structuredSelection.getFirstElement() instanceof DerivedUnitFacade){
+ else if(structuredSelection.getFirstElement() instanceof DerivedUnitFacade){
return;
}
- if(structuredSelection.getFirstElement() instanceof PolytomousKeyNode){
+ else if(structuredSelection.getFirstElement() instanceof PolytomousKeyNode){
structuredSelection = new StructuredSelection(((PolytomousKeyNode)structuredSelection.getFirstElement()).getKey());
}
showViewer(part, structuredSelection);
}else{
- showEmptyPage();
+ showEmptyPage();
}
}
-
+
/** {@inheritDoc} */
@Override
public void dispose() {
*
* @return a boolean.
*/
- public boolean onComplete() {
+ @Override
+ public boolean onComplete() {
// TODO Auto-generated method stub
return false;
}
-
-
+
+
}