current development state
authorn.hoffmann <n.hoffmann@localhost>
Wed, 27 Oct 2010 16:31:34 +0000 (16:31 +0000)
committern.hoffmann <n.hoffmann@localhost>
Wed, 27 Oct 2010 16:31:34 +0000 (16:31 +0000)
38 files changed:
.gitattributes
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineDocumentProvider.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameRelationshipEditorInput.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditor.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/OpenEditorConfiguration.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/TaxonEditorInput.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/CreateDescriptionElementHandler.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractCdmEntityWizardPage.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractCdmFormElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractCdmFormElementWithErrors.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CdmFormFactory.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CdmPropertyChangeEvent.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/DateDetailSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/IErrorIntolerableElement.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/IExceptionHandler.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/NumberWithLabelElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/PartialElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/PointElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/RootElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/TextWithLabelElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/TimePeriodElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/AbstractCdmDetailElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/reference/ReferenceBaseDetailElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/reference/ReferenceBaseWizardPage.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/supplemental/ImageFileElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/taxon/TaxonBaseDetailElement.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/NavigationUtil.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/handler/EditHandler.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/wizard/ClassificationWizard.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/wizard/ClassificationWizardPage.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/wizard/NewTaxonNodeWizard.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/wizard/NewTaxonNodeWizardPage.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractIOHandler.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/ExtensionTypeMenuPreferences.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/TermStore.java

index 82f2d6bfc01cb109157700fa6e675aac44f5b996..f181e41ffa070987c963f5648630d2952e32e868 100644 (file)
@@ -446,6 +446,7 @@ taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/supplementalda
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/supplementaldata/SupplementalDataViewer.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractCdmEntityWizardPage.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractCdmFormElement.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractCdmFormElementWithErrors.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractFormSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/BrowserElement.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CdmFormFactory.java -text
@@ -455,6 +456,8 @@ taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/DateDetailSection.ja
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/ICdmFormElement.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/IEnableableFormElement.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/IEntityElement.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/IErrorIntolerableElement.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/IExceptionHandler.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/ILabeledElement.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/IPropertyChangeEmitter.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/IRelevantFormElement.java -text
index d999b20b969d98bd1f6ed0fe49b8410cc9a8d46f..42e33bfa4608fe99556023414be0a61787019a35 100644 (file)
@@ -289,7 +289,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
         */\r
        public IEntityCreator<?> getEntityCreator(Object element) {\r
                if (element instanceof IEditorInput) {\r
-                       Assert.isNotNull(entityCreator, "No IEntityCreator set for this element.");\r
+//                     Assert.isNotNull(entityCreator, "No IEntityCreator set for this element.");\r
                        return entityCreator;\r
                }\r
                return null;\r
index 2f06b12ae590d2d9e0dd793a4144824e2982f4b6..5399cb9b1b7dbaf56f1349b11ceb2d703f81106b 100644 (file)
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
 
+import javax.naming.NameNotFoundException;
+
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.model.common.RelationshipBase;
 import eu.etaxonomy.cdm.model.name.NameRelationship;
 import eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorInputTypeValues.BulkEditorInputType;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * @author n.hoffmann
@@ -87,7 +93,17 @@ public class NameRelationshipEditorInput extends AbstractBulkEditorInput<NameRel
        @Override
        protected List<NameRelationship> listEntities(
                        IIdentifiableEntityServiceConfigurator configurator) {
-               return null;
+               List<NameRelationship> relationships = new ArrayList<NameRelationship>(); 
+               List<RelationshipBase> all = CdmStore.getNameService().getAllRelationships(0, 0);
+               
+               for (RelationshipBase relationship : all){
+                       if(relationship instanceof NameRelationship){
+                               relationships.add((NameRelationship) relationship);
+                       }
+               }
+               
+               
+               return relationships;
        }
 
        /* (non-Javadoc)
@@ -95,8 +111,8 @@ public class NameRelationshipEditorInput extends AbstractBulkEditorInput<NameRel
         */
        @Override
        protected NameRelationship loadEntity(UUID entityUuid) {
-               // TODO Auto-generated method stub
-               return null;
+               List<String> propertyPaths = Arrays.asList(new String[]{}); 
+               return null; // CdmStore.getNameService().load(entityUuid, propertyPaths);
        }
 
 }
index 4cc069de70771573db9e58371ef99b5bcb65791d..25916472788aafebd3e1d6da8a73f7eb248e6a13 100644 (file)
@@ -66,10 +66,11 @@ public class EditorUtil extends AbstractUtility{
         * @param input\r
         * @param editorId\r
         * @return \r
+        * @return \r
         * @throws PartInitException\r
         */\r
-       private static void open(final IEditorInput input, final String editorId) throws PartInitException{\r
-               getActivePage().openEditor(input, editorId);\r
+       private static IEditorPart open(final IEditorInput input, final String editorId) throws PartInitException{\r
+               return getActivePage().openEditor(input, editorId);\r
        }\r
        \r
        /**\r
@@ -80,7 +81,7 @@ public class EditorUtil extends AbstractUtility{
         * @throws PartInitException\r
         */\r
        public static void open(TaxonEditorInput input) throws PartInitException{\r
-               open(input, MultiPageTaxonEditor.ID);\r
+               IEditorPart editor = open(input, MultiPageTaxonEditor.ID);\r
        }\r
 \r
        /**\r
index 919ee144941a4a23a90db288381fd3128b4447f6..06fcb2beaf73198c93a1ecec33730091be051962 100644 (file)
@@ -47,7 +47,6 @@ import eu.etaxonomy.taxeditor.operations.IPostOperationEnabled;
  * @created 15.05.2008\r
  * @version 1.0\r
  */\r
-//public class MultiPageTaxonEditor extends MultiPageEditorPart implements IConversationEnabled, IPostOperationEnabled {\r
 public class MultiPageTaxonEditor extends FormEditor implements IConversationEnabled, IPostOperationEnabled, IDirtyMarkableSelectionProvider, IPartContentHasDetails { \r
        private static final Logger logger = Logger.getLogger(MultiPageTaxonEditor.class);\r
 \r
index 5699670bee89ea4d2c70323b195f69ee9f258701..154117d92460d518878ad146697b8da0ca14065d 100644 (file)
 
 package eu.etaxonomy.taxeditor.editor;
 
-import org.apache.log4j.Logger;
-
 import eu.etaxonomy.cdm.model.name.NonViralName;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 
 /**
@@ -22,8 +19,6 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
  * @version 1.0
  */
 public class OpenEditorConfiguration {
-       private static final Logger logger = Logger
-                       .getLogger(OpenEditorConfiguration.class);
        
        private TaxonNode parentNode;
        
index 8c6b724725b89e88d50160816325bf2a68507c34..3dd925a6117463c726c18695925a45748a885a44 100644 (file)
@@ -93,7 +93,7 @@ public class TaxonEditorInput implements IEditorInput, IConversationEnabled, IPe
        if(taxonBase instanceof Taxon){
                Taxon taxon = (Taxon) taxonBase;
                
-               if (taxon.isMisappliedName()){
+               if (taxon.isMisapplication()){
                        // TODO get accepted taxon
                        EditorUtil.info("trying to open Mispplied Name ");
                        
@@ -246,8 +246,12 @@ public class TaxonEditorInput implements IEditorInput, IConversationEnabled, IPe
        public boolean equals(Object obj) {
                if (TaxonEditorInput.class.equals(obj.getClass()) 
                                && getTaxon() != null
-                               && getTaxon().equals(((TaxonEditorInput) obj).getTaxon()))
+                               && getTaxon().equals(((TaxonEditorInput) obj).getTaxon())){
+                       if(((TaxonEditorInput) obj).getInitiallySelectedTaxonBase() != null){
+                               setInitiallySelectedTaxonBase(((TaxonEditorInput) obj).getInitiallySelectedTaxonBase());
+                       }
                        return true;
+               }
                return false;
        }
 
@@ -300,7 +304,7 @@ public class TaxonEditorInput implements IEditorInput, IConversationEnabled, IPe
        }
 
     
-    private void setInitiallySelectedTaxonBase(TaxonBase taxonBase) {
+    public void setInitiallySelectedTaxonBase(TaxonBase taxonBase) {
                this.initiallySelectedTaxonBase = taxonBase;
        }
 
index c12e9e0d852b5250ce7cb6b656d7749156dda7b6..00fea9e3f155250c0c09e7d4f138696c03b9b0aa 100644 (file)
@@ -567,21 +567,21 @@ public class TaxonNameEditor extends EditorPart implements IMultiPageTaxonEditor
        }\r
 \r
        public AbstractGroupedContainer getSelectedObject(){\r
-               if(selectedObject == null){\r
-                       TaxonEditorInput input = (TaxonEditorInput) editor.getEditorInput();\r
+               TaxonEditorInput input = (TaxonEditorInput) editor.getEditorInput();\r
+               if(input.getInitiallySelectedTaxonBase() != null){\r
                        \r
-                       if(input.getInitiallySelectedTaxonBase() != null){\r
-                               TaxonBase initiallySelectedTaxonBase = input.getInitiallySelectedTaxonBase();\r
-                               AbstractGroupedContainer container = getContainerForData(initiallySelectedTaxonBase);\r
-                               if(container != null){\r
-                                       return container;\r
-                               }\r
+                       TaxonBase initiallySelectedTaxonBase = input.getInitiallySelectedTaxonBase();\r
+                       AbstractGroupedContainer container = getContainerForData(initiallySelectedTaxonBase);\r
+                       if(container != null){\r
+                               input.setInitiallySelectedTaxonBase(null);\r
+                               return container;\r
                        }\r
-                       \r
-                       return acceptedNameContainer;\r
                }else{\r
-                       return selectedObject;\r
+                       if(selectedObject != null){\r
+                               return selectedObject;\r
+                       }\r
                }\r
+               return acceptedNameContainer;\r
        }\r
        \r
        public void dragEntered() {\r
index b1b96590d4999bb035b93de26ff6e6ff78db6943..c9d25635c2109eb42d73d31e911110938bf8b828 100644 (file)
@@ -41,8 +41,6 @@ import eu.etaxonomy.taxeditor.operations.IPostOperationEnabled;
  * @version 1.0
  */
 public class CreateDescriptionElementHandler extends AbstractHandler {
-       private static final Logger logger = Logger
-                       .getLogger(CreateDescriptionElementHandler.class);
 
        /*
         * (non-Javadoc)
@@ -67,20 +65,19 @@ public class CreateDescriptionElementHandler extends AbstractHandler {
                        TaxonDescription description = null;
 
                        ISelection selection = HandlerUtil.getCurrentSelection(event);
-                       if (selection instanceof IStructuredSelection) {
+                       if (selection instanceof ITreeSelection) {
+                               TreePath[] paths = ((ITreeSelection) selection).getPaths();
+                               Object firstSegment = paths[0].getFirstSegment();
+                               if (firstSegment instanceof TaxonDescription) {
+                                       description = (TaxonDescription) firstSegment;
+                               }
+                       }else if (selection instanceof IStructuredSelection) {
                                Object selectedElement = ((IStructuredSelection) selection)
                                                .getFirstElement();
                                if (selectedElement instanceof TaxonDescription){
                                        description = (TaxonDescription) selectedElement;
                                }
                        } 
-                       else if (selection instanceof ITreeSelection) {
-                               TreePath[] paths = ((ITreeSelection) selection).getPaths();
-                               Object firstSegment = paths[0].getFirstSegment();
-                               if (firstSegment instanceof TaxonDescription) {
-                                       description = (TaxonDescription) firstSegment;
-                               }
-                       }
 
                        if (description != null) {
 
@@ -95,10 +92,10 @@ public class CreateDescriptionElementHandler extends AbstractHandler {
                                                        description, feature, postOperationEnabled);
                                        EditorUtil.executeOperation(operation);
                                } catch (NotDefinedException e) {
-                                       logger.warn("Command name not set");
+                                       EditorUtil.warn(getClass(), "Command name not set");
                                }
                        } else {
-                               logger.error("Could not determine the taxon description");
+                               EditorUtil.error(getClass(), new IllegalArgumentException("Could not determine the taxon description"));
                                return null;
                        }
                }
index 0d75381f2d0dcd04f1bcb19e9deb99c387ae72a4..8e30ab325f6abe8052bc29e7a5770472c93a1fa7 100644 (file)
 
 package eu.etaxonomy.taxeditor.forms;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
@@ -28,13 +30,10 @@ import eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement;
  */
 public abstract class AbstractCdmEntityWizardPage<T extends IAnnotatableEntity> extends WizardPage implements IConversationEnabled {
 
-       private static final Logger logger = Logger
-                       .getLogger(AbstractCdmEntityWizardPage.class);
        protected CdmFormFactory formFactory;
        protected T entity;
 
        AbstractCdmDetailElement<T> detailElement;
-       private Composite control;
        private ConversationHolder conversation;
        
        protected AbstractCdmEntityWizardPage(CdmFormFactory formFactory, ConversationHolder conversation, T entity) {
@@ -60,13 +59,18 @@ public abstract class AbstractCdmEntityWizardPage<T extends IAnnotatableEntity>
         * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
         */
        public void createControl(Composite parent) {
-               control = formFactory.createComposite(parent);
+               Composite control = formFactory.createComposite(parent);
                
                control.setLayout(CdmFormFactory.LAYOUT(2, false));
                WizardPageRootElement rootElement = new WizardPageRootElement(formFactory, control, getConversationHolder());
+                                               
+               Color bgColor = getShell().getBackground();
                
                detailElement = createElement(rootElement);
                
+               rootElement.setBackground(bgColor);
+               control.setBackground(bgColor);
+               
                setControl(control);
        }
        
@@ -96,7 +100,7 @@ public abstract class AbstractCdmEntityWizardPage<T extends IAnnotatableEntity>
                        super.refresh();
                        this.removeElements();
                        detailElement = createElement(this);
-                       control.layout();
+                       ((Composite) getControl()).layout();
                }
                
                public ConversationHolder getConversationHolder() {
index d0ac782aea41d566e1f4d6e2511c86bf989887f4..3d46f6851f21feeee6db568d6679df3d33927bc0 100644 (file)
@@ -217,6 +217,8 @@ public abstract class AbstractCdmFormElement implements IPropertyChangeEmitter,
        
        @Override
        public void setBackground(Color color) {
-               
+               for(ICdmFormElement element : getElements()){
+                       element.setBackground(color);
+               }
        }
 }
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractCdmFormElementWithErrors.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractCdmFormElementWithErrors.java
new file mode 100644 (file)
index 0000000..ec0fdb6
--- /dev/null
@@ -0,0 +1,61 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.
+*/
+
+package eu.etaxonomy.taxeditor.forms;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * @author n.hoffmann
+ * @created Oct 26, 2010
+ * @version 1.0
+ */
+public abstract class AbstractCdmFormElementWithErrors extends AbstractCdmFormElement implements IErrorIntolerableElement {
+
+       private List<IExceptionHandler> exceptionHandlers = new ArrayList<IExceptionHandler>();
+
+       /**
+        * @param formFactory
+        * @param formElement
+        */
+       public AbstractCdmFormElementWithErrors(CdmFormFactory formFactory,
+                       ICdmFormElement formElement) {
+               super(formFactory, formElement);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.IErrorIntolerableElement#addExceptionHandler(eu.etaxonomy.taxeditor.forms.IExceptionHandler)
+        */
+       @Override
+       public void addExceptionHandler(IExceptionHandler handler) {
+               exceptionHandlers.add(handler);
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.IErrorIntolerableElement#removeExceptionHandler(eu.etaxonomy.taxeditor.forms.IExceptionHandler)
+        */
+       @Override
+       public void removeExceptionHandler(IExceptionHandler handler) {
+               exceptionHandlers.remove(handler);
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.IErrorIntolerableElement#exceptionOccurred()
+        */
+       @Override
+       public void exceptionOccurred(CdmPropertyChangeEvent event) {
+               for(IExceptionHandler handler : exceptionHandlers){
+                       handler.handleException(event);
+               }
+       }
+
+}
index 505640029d3b8dc5ffba24e1a1e028e6ab031321..629a97b674138d5bad974be819126b49498ec468 100644 (file)
@@ -13,6 +13,7 @@ import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionProvider;
 import org.eclipse.jface.window.Window;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyledText;
 import org.eclipse.swt.events.FocusAdapter;
 import org.eclipse.swt.events.FocusEvent;
 import org.eclipse.swt.events.FocusListener;
@@ -29,6 +30,7 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.forms.IFormColors;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.eclipse.ui.forms.widgets.Section;
@@ -1529,4 +1531,25 @@ public class CdmFormFactory extends FormToolkit{
                
        }
 
+       
+       /**
+        * Creates a styled text as a part of the form.
+        * 
+        * @param parent
+        *            the text parent
+        * @param value
+        *            the text initial value
+        * @param style
+        *            the text style
+        * @return the text widget
+        */
+       public StyledText createStyledText(Composite parent, String value, int style) {
+               StyledText text = new StyledText(parent, getBorderStyle() | style | getOrientation());
+               if (value != null)
+                       text.setText(value);
+               text.setForeground(getColors().getForeground());
+               text.setBackground(getColors().getBackground());
+//             text.addFocusListener(visibilityHandler);
+               return text;
+       }
 }
index e45922fa5cca8d64fef84bc7db57062afcb9a0fb..1b31cf25ce22373baebf5afb8850f0d43b54c888 100644 (file)
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.forms;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.util.PropertyChangeEvent;
 
 /**
@@ -26,15 +25,34 @@ public class CdmPropertyChangeEvent extends PropertyChangeEvent {
 
        private Object originatingEvent;
 
+       private Exception exception;
+
        public Object getOriginatingEvent() {
                return originatingEvent;
        }
 
-       private static final Logger logger = Logger
-                       .getLogger(CdmPropertyChangeEvent.class);
-       
        public CdmPropertyChangeEvent(Object eventObject, Object originatingEvent) {
                super(eventObject, "EMPTY", null, null);
                this.originatingEvent = originatingEvent;
        }
+       
+       public CdmPropertyChangeEvent(Object eventObject, Exception exception) {
+               super(eventObject, "EMPTY", null, null);
+               this.exception = exception;
+       }
+
+       /**
+        * @param e
+        */
+       public void setException(Exception exception) {
+               this.exception = exception;
+       }
+       
+       public Exception getException(){
+               return exception;
+       }
+       
+       public boolean hasException(){
+               return exception != null;
+       }
 }
index 8004c40df4591d12c64fd1a1205f8289db07f7a5..1de5f8f164cf31913edd87135bd80a3b101ebbf2 100644 (file)
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.forms;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.joda.time.Partial;
 
@@ -23,9 +22,6 @@ import eu.etaxonomy.cdm.model.common.TimePeriod;
  */
 public class DateDetailSection extends AbstractFormSection {
 
-
-       private static final Logger logger = Logger
-                       .getLogger(DateDetailSection.class);
        private PartialElement partialElement_start;
        private PartialElement partialElement_end;
        private TimePeriod timePeriod;
@@ -35,8 +31,8 @@ public class DateDetailSection extends AbstractFormSection {
                super(formFactory, null, parentElement, style);
                this.setText("Date Details");
                
-               partialElement_start = formFactory.createPartialElement(this, "Start", null, style);
-               partialElement_end = formFactory.createPartialElement(this, "End", null, style);
+               partialElement_start = formFactory.createPartialElement(this, "Start", null, style);
+               partialElement_end = formFactory.createPartialElement(this, "End", null, style);
                
                formFactory.addPropertyChangeListener(this);
        }
@@ -54,16 +50,33 @@ public class DateDetailSection extends AbstractFormSection {
                        return;
                }
                Object eventSource = event.getSource();
+               
+               if(getElements().contains(eventSource)){
+                       if(event instanceof CdmPropertyChangeEvent){
+                               if(((CdmPropertyChangeEvent) event).hasException()){
+                                       handleException((CdmPropertyChangeEvent) event);
+                                       return;
+                               }
+                       }
+                       handleEvent(eventSource);
+               }
+       }
+       
+       /**
+        * @param event
+        */
+       private void handleException(CdmPropertyChangeEvent event) {
+               firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event.getException()));
+       }
+       
+       private void handleEvent(Object eventSource){
                if(eventSource == partialElement_start){
                        timePeriod.setStart(partialElement_start.getPartial());
-                       firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
                }else if(eventSource == partialElement_end){
                        Partial end = partialElement_end.getPartial();
-                       
                        timePeriod.setEnd(end);
-                       
-                       firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
                }
+               firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
        }
 
        public TimePeriod getTimePeriod() {
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/IErrorIntolerableElement.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/IErrorIntolerableElement.java
new file mode 100644 (file)
index 0000000..99e614b
--- /dev/null
@@ -0,0 +1,32 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.
+*/
+
+package eu.etaxonomy.taxeditor.forms;
+
+
+/**
+ * @author n.hoffmann
+ * @created Oct 26, 2010
+ * @version 1.0
+ */
+public interface IErrorIntolerableElement {
+
+       public void addExceptionHandler(IExceptionHandler handler);
+       
+       public void removeExceptionHandler(IExceptionHandler handler);
+
+       /**
+        * @param event
+        */
+       public void exceptionOccurred(CdmPropertyChangeEvent event);
+       
+       
+       
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/IExceptionHandler.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/IExceptionHandler.java
new file mode 100644 (file)
index 0000000..28c9e1c
--- /dev/null
@@ -0,0 +1,24 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.
+*/
+
+package eu.etaxonomy.taxeditor.forms;
+
+
+/**
+ * @author n.hoffmann
+ * @created Oct 26, 2010
+ * @version 1.0
+ */
+public interface IExceptionHandler {
+
+       void handleException(CdmPropertyChangeEvent event);
+       
+       void clearException();
+}
index 7b4faec89074d6ff19746415f636947cc8149b96..ab476c04da30210176079bff1f163556134f0138 100644 (file)
 
 package eu.etaxonomy.taxeditor.forms;
 
-import org.apache.log4j.Logger;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.widgets.Display;
+
+import eu.etaxonomy.cdm.common.CdmUtils;
+
 
 /**
  * @author n.hoffmann
@@ -19,9 +24,11 @@ import org.apache.log4j.Logger;
  */
 public class NumberWithLabelElement extends TextWithLabelElement {
 
-       private static final Logger logger = Logger
-                       .getLogger(NumberWithLabelElement.class);
+       private Float start;
+       private Float end;
        
+       private NumberFormatException exception;
+
        public NumberWithLabelElement(CdmFormFactory toolkit,
                        ICdmFormElement parentElement, String labelString,
                        Integer initialInteger, int style) {
@@ -60,4 +67,52 @@ public class NumberWithLabelElement extends TextWithLabelElement {
                }               
                return null;
        }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       @Override
+       public void modifyText(ModifyEvent event) {
+               String value = text.getText();
+               if(CdmUtils.isEmpty(value)){
+                       text.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
+                       return;
+               }
+               
+               try{
+                       
+                       Float number = Float.parseFloat(value);
+                       
+                       if((start != null && number < start) || (end != null && number > end)){
+                               throw new NumberFormatException("You entered a number that is not within the allowed bounds.");
+                       }
+                       
+               }catch(NumberFormatException e){
+                       text.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
+                       firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
+                       return;
+               }
+               
+               exception = null;
+               text.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
+               
+               super.modifyText(event);
+       }
+       
+       public void setLimits(int numberOfDigits, Integer start, Integer end){
+               setLimits(numberOfDigits, start.floatValue(), end.floatValue());
+       }
+       
+       public void setLimits(int numberOfDigits, Float start, Float end){
+               text.setTextLimit(numberOfDigits);
+               this.start = start;
+               this.end = end;
+       }
+       
+       /**
+        * @return the exception
+        */
+       public NumberFormatException getException() {
+               return exception;
+       }
 }
index afcbedc11e446a1cae6ec8078fe8c7d48aefae6c..e701ca7b52aa618c9c5230167826b6c333649d64 100644 (file)
 
 package eu.etaxonomy.taxeditor.forms;
 
-import org.apache.log4j.Logger;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.forms.widgets.TableWrapData;
 import org.joda.time.Partial;
 
 import eu.etaxonomy.cdm.model.common.TimePeriod;
@@ -30,113 +22,97 @@ import eu.etaxonomy.cdm.model.common.TimePeriod;
  * @created Mar 31, 2010
  * @version 1.0
  */
-public class PartialElement extends AbstractCdmFormElement implements ModifyListener {
+public class PartialElement extends AbstractCdmFormElement {
 
-
-       private static final Logger logger = Logger.getLogger(PartialElement.class);
-
-       
        private Label label;
-       private Composite container;
-       private Text text_day;
-       private Text text_month;
-       private Text text_year;
+       private NumberWithLabelElement number_day;
+       private NumberWithLabelElement number_month;
+       private NumberWithLabelElement number_year;
        private Partial partial;
-
+       
        public PartialElement(CdmFormFactory formFactory,
                        ICdmFormElement formElement, String labelString, int style) {
                super(formFactory, formElement);
                
+               formElement.getLayoutComposite().setLayout(CdmFormFactory.LAYOUT(7, false));
+               
                label = formFactory.createLabel(getLayoutComposite(), labelString);
                addControl(label);
                
-               container = formFactory.createComposite(getLayoutComposite());
-               addControl(container);
-               container.setLayout(CdmFormFactory.LAYOUT(3, false));
-               container.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
-               container.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN));
-               
-               text_day = formFactory.createText(container, null, style);
-               addControl(text_day);
-               text_day.setTextLimit(2);
-               
-               TableWrapData layoutData = new TableWrapData();
-               
+               number_month = formFactory.createIntegerTextWithLabelElement(this, "Month", null, style);               
+               number_month.setLimits(2, 1, 12);
                
-               text_day.setLayoutData(layoutData);
+               number_day = formFactory.createIntegerTextWithLabelElement(this, "Day", null, style);
+               number_day.setLimits(2, 1, 31);
                
-               text_month = formFactory.createText(container, null, style);
-               addControl(text_month);
-               text_month.setTextLimit(2);
+               number_year = formFactory.createIntegerTextWithLabelElement(this, "Year", null, style);
+               number_year.setLimits(4, -9999, 9999);
                
-               text_month.setLayoutData(layoutData);
-               
-               text_year = formFactory.createText(container, null, style);
-               addControl(text_year);          
-               text_year.setTextLimit(4);
-               
-               layoutData = new TableWrapData();
-               
-               text_year.setLayoutData(layoutData);
-               
-               addListeners();
+               formFactory.addPropertyChangeListener(this);            
        }
        
        public void setPartial(Partial partial){
                this.partial = partial;
                
-               removeListeners();
-               
                if(partial != null){
-                       setInteger(text_day, TimePeriod.getPartialValue(partial, TimePeriod.DAY_TYPE));
-                       setInteger(text_month, TimePeriod.getPartialValue(partial, TimePeriod.MONTH_TYPE));
-                       setInteger(text_year, TimePeriod.getPartialValue(partial, TimePeriod.YEAR_TYPE));
+                       number_day.setInteger(TimePeriod.getPartialValue(partial, TimePeriod.DAY_TYPE));
+                       number_month.setInteger(TimePeriod.getPartialValue(partial, TimePeriod.MONTH_TYPE));
+                       number_year.setInteger(TimePeriod.getPartialValue(partial, TimePeriod.YEAR_TYPE));
                }
-               addListeners();
-       }
-       
-       private void addListeners() {
-               text_day.addModifyListener(this);
-               text_month.addModifyListener(this);
-               text_year.addModifyListener(this);
-       }
-
-       private void removeListeners() {
-               text_day.removeModifyListener(this);
-               text_month.removeModifyListener(this);
-               text_year.removeModifyListener(this);
        }
 
        public Partial getPartial(){
                return partial;
        }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               if(event == null){
+                       return;
+               }
+               
+               Object eventSource = event.getSource();
+               
+               if(getElements().contains(eventSource)){
+                       if(event instanceof CdmPropertyChangeEvent){
+                               if(((CdmPropertyChangeEvent) event).hasException()){
+                                       handleException((CdmPropertyChangeEvent) event);
+                                       return;
+                               }
+                       }
+                       handleEvent(eventSource);
+               }               
+       }
        
-       private void setInteger(Text text, Integer integer) {
-               text.setText(integer == null ? "" : integer + "");
+       /**
+        * @param event
+        */
+       private void handleException(CdmPropertyChangeEvent event) {
+               firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event.getException()));
        }
 
+       private void handleEvent(Object eventSource){
+               if(eventSource == number_month){
+                       partial = TimePeriod.setPartialField(partial, number_month.getInteger(), TimePeriod.MONTH_TYPE);
+//                     firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+               }else if(eventSource == number_day){
+                       partial = TimePeriod.setPartialField(partial, number_day.getInteger(), TimePeriod.DAY_TYPE);
+//                     firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+               }else if(eventSource == number_year){
+                       partial = TimePeriod.setPartialField(partial, number_year.getInteger(), TimePeriod.YEAR_TYPE);
+//                     firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+               }
+               firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+       }
+       
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.forms.ISelectable#setSelected(boolean)
         */
        public void setSelected(boolean selected) {
-               // TODO Auto-generated method stub
-
-       }
-
-       public void modifyText(ModifyEvent e) {
-               Widget widget = e.widget;
-               
-               if(widget == text_day){
-                       partial = TimePeriod.setPartialField(partial, new Integer(text_day.getText()), TimePeriod.DAY_TYPE);
-               }else if(widget == text_month){
-                       partial = TimePeriod.setPartialField(partial, new Integer(text_month.getText()), TimePeriod.MONTH_TYPE);
-               }else if(widget == text_year){
-                       String yearString = text_year.getText();
-                       
-                       partial = TimePeriod.setPartialField(partial, new Integer(yearString), TimePeriod.YEAR_TYPE);
-               }
-               
-               firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
+               setBackground(getColor(selected));
        }
        
        @Override
index a6bd34cb1b4588653c1146f42ac1beb5166f2446..f9c0c21d71a46099029d114e5122bf9fdfe3c992 100644 (file)
@@ -13,6 +13,7 @@ package eu.etaxonomy.taxeditor.forms;
 import java.text.ParseException;
 
 import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.widgets.Text;
 
 import eu.etaxonomy.cdm.model.location.Point;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
@@ -42,8 +43,8 @@ public class PointElement extends AbstractCdmFormElement implements IEntityEleme
                
                formFactory.addPropertyChangeListener(this);
                
-               text_latitude = formFactory.createTextWithLabelElement(formElement, "Latitude", null, style);
-               text_longitude = formFactory.createTextWithLabelElement(formElement, "Longitude", null, style);
+               text_latitude = formFactory.createTextWithLabelElement(formElement, "Latitude (hexagesimal)", null, style);
+               text_longitude = formFactory.createTextWithLabelElement(formElement, "Longitude (hexagesimal)", null, style);
                number_errorRadius = formFactory.createIntegerTextWithLabelElement(formElement, "Error Radius (m)", null, style);
                combo_referenceSystem = (ReferenceSystemComboElement) formFactory.createTermComboElement(TermComboType.REFERENCE_SYSTEM, formElement, "Reference System", null, style);
                
@@ -70,7 +71,11 @@ public class PointElement extends AbstractCdmFormElement implements IEntityEleme
                Object eventSource = event.getSource();
                if(eventSource == text_latitude){
                        try {
+                               Text textField = (Text) text_latitude.getMainControl();
+                               int caretPosition = textField.getCaretPosition(); 
                                point.setLatitudeByParsing(text_latitude.getText());
+                               text_latitude.setText(point.getLatitudeSexagesimal().toString(false));
+//                             textField.set
                        } catch (ParseException e) {
                                EditorUtil.error(getClass(), e);
                        }
@@ -78,6 +83,7 @@ public class PointElement extends AbstractCdmFormElement implements IEntityEleme
                else if(eventSource == text_longitude){
                        try {
                                point.setLongitudeByParsing(text_longitude.getText());
+                               text_longitude.setText(point.getLongitudeSexagesimal().toString(false));
                        } catch (ParseException e) {
                                EditorUtil.error(getClass(), e);
                        }
@@ -107,10 +113,12 @@ public class PointElement extends AbstractCdmFormElement implements IEntityEleme
         */
        public void setPoint(Point point) {
                this.point = point;
-               text_latitude.setText(point.getLatitudeSexagesimal().toString(false));
-               text_longitude.setText(point.getLongitudeSexagesimal().toString(false));
-               number_errorRadius.setInteger(point.getErrorRadius());
-               combo_referenceSystem.setSelection(point.getReferenceSystem());
+               if(point != null){
+                       text_latitude.setText(point.getLatitudeSexagesimal().toString(false));
+                       text_longitude.setText(point.getLongitudeSexagesimal().toString(false));
+                       number_errorRadius.setInteger(point.getErrorRadius());
+                       combo_referenceSystem.setSelection(point.getReferenceSystem());
+               }
        }
 
        /**
index be559a7b47cd66e0e6eebed85df31e068a9efd61..4b67b8b51ff154543cae71008784cc518a3e1592 100644 (file)
@@ -34,7 +34,9 @@ public class RootElement extends AbstractCdmFormElement {
 
        @Override
        public void setBackground(Color color) {
-               //no
+               for(ICdmFormElement element : getElements()){
+                       element.setBackground(color);
+               }
        }
        
 }
index 2088b0ef484b078691b73dfe405f73a8f8cc1f68..fb725b96af6f2a76127aa929864ca5260b3374a1 100644 (file)
@@ -4,6 +4,7 @@
 package eu.etaxonomy.taxeditor.forms;
 
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyledText;
 import org.eclipse.swt.events.KeyAdapter;
 import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.events.ModifyEvent;
@@ -12,7 +13,6 @@ import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.forms.widgets.TableWrapData;
 
 import eu.etaxonomy.cdm.common.CdmUtils;
@@ -25,7 +25,7 @@ import eu.etaxonomy.taxeditor.preference.Resources;
  */
 public class TextWithLabelElement extends AbstractCdmFormElement implements ModifyListener, IEnableableFormElement{
                
-       protected Text text;
+       protected StyledText text;
        private Label label;
        
        public static final int MAX_HEIGHT = 0;
@@ -51,16 +51,18 @@ public class TextWithLabelElement extends AbstractCdmFormElement implements Modi
                }
                
                int scrollStyle = textHeight == null ? SWT.NULL : (SWT.V_SCROLL | SWT.MULTI);
-               text = formFactory.createText(getLayoutComposite(), "", SWT.BORDER | SWT.WRAP | scrollStyle);
+               text = formFactory.createStyledText(getLayoutComposite(), "", SWT.BORDER | SWT.WRAP | scrollStyle);
+       
                addControl(text);
-                               
+                       
+//             text.setWO
+               
                if(textHeight == null){
-                       // Don't accept carriage returns as input when in single line mode
                        text.addKeyListener( new KeyAdapter(){
                                @Override
                                public void keyPressed(KeyEvent e) {
                                        if(e.character == SWT.CR){
-                                               // do nothing when return was hit
+                                               // Don't accept carriage returns as input when in single line mode
                                                e.doit = false;
                                        }else if(e.character == SWT.TAB){
                                                // traverse is not working for wrapped text widgets so
@@ -156,4 +158,11 @@ public class TextWithLabelElement extends AbstractCdmFormElement implements Modi
        public Control getMainControl() {
                return text;
        }
+       
+       /**
+        * 
+        */
+       public void setTextLimit(int limit) {
+               text.setTextLimit(limit);
+       }
 }
index bae8c78da40b00c5a1b6fe38cad85d952dca256a..b1ae1bc4a1501997eccab993f9a52a52e30c8afc 100644 (file)
@@ -22,13 +22,12 @@ import eu.etaxonomy.cdm.model.common.TimePeriod;
  * @created Nov 17, 2009
  * @version 1.0
  */
-public class TimePeriodElement extends AbstractCdmFormElement{
+public class TimePeriodElement extends AbstractCdmFormElementWithErrors{
 
-       private Label label;
-       
        private TextWithLabelElement text_freeText;
        private TimePeriod timePeriod;
        private DateDetailSection section_dateDetails;
+       private Label emptyLabel;
        
        /**
         * @param parent
@@ -41,26 +40,22 @@ public class TimePeriodElement extends AbstractCdmFormElement{
                formFactory.addPropertyChangeListener(this);
                
                text_freeText = formFactory.createTextWithLabelElement(this, labelString, null, style);
-               addControl(formFactory.createLabel(getLayoutComposite(), ""));
+               emptyLabel = formFactory.createLabel(getLayoutComposite(), "");
+               addControl(emptyLabel);
                
                section_dateDetails = formFactory.createDateDetailSection(this, Section.TWISTIE);
                addControl(section_dateDetails);
                
-               setEntity(timePeriod);
+               setTimePeriod(timePeriod);
                
        }
 
        public void setSelected(boolean selected) {
-               label.setBackground(getColor(selected));
+               setBackground(getColor(selected));
        }
 
        public void setEntity(TimePeriod timePeriod) {
-
-               this.timePeriod = timePeriod;
-               if(timePeriod != null){
-                       text_freeText.setText(timePeriod.toString());
-                       section_dateDetails.setTimePeriod(timePeriod);
-               }
+               setTimePeriod(timePeriod);
        }
        
        @Override
@@ -69,17 +64,38 @@ public class TimePeriodElement extends AbstractCdmFormElement{
                        return;
                }
                Object eventSource = event.getSource();
+               
+               if(getElements().contains(eventSource)){
+                       if(event instanceof CdmPropertyChangeEvent){
+                               if(((CdmPropertyChangeEvent) event).hasException()){
+                                       handleException((CdmPropertyChangeEvent) event);
+                                       return;
+                               }
+                       }
+                       handleEvent(eventSource);
+               }
+       }
+       
+       /**
+        * @param event
+        */
+       private void handleException(CdmPropertyChangeEvent event) {
+               exceptionOccurred(new CdmPropertyChangeEvent(this, event.getException()));
+       }
+       
+       private void handleEvent(Object eventSource){           
+               
                if(eventSource == text_freeText){
                        String freeText = text_freeText.getText();
-                       
                        timePeriod = TimePeriod.parseString(freeText);
-                       firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+                       section_dateDetails.setTimePeriod(timePeriod);
+                       
                }else if(eventSource == section_dateDetails){
                        timePeriod = section_dateDetails.getTimePeriod();
-                       firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+                       text_freeText.setText(timePeriod.toString());
                }
                
-               
+               firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
        }
 
        /**
@@ -87,6 +103,10 @@ public class TimePeriodElement extends AbstractCdmFormElement{
         */
        public void setTimePeriod(TimePeriod timePeriod) {
                this.timePeriod = timePeriod;
+               if(timePeriod != null){
+                       text_freeText.setText(timePeriod.toString());
+                       section_dateDetails.setTimePeriod(timePeriod);
+               }
        }
 
        /**
@@ -98,6 +118,8 @@ public class TimePeriodElement extends AbstractCdmFormElement{
        
        @Override
        public void setBackground(Color color) {
-               if(label != null) label.setBackground(color);
+               emptyLabel.setBackground(color);
+               text_freeText.setBackground(color);
+               section_dateDetails.setBackground(color);
        }
 }
index 923898d69d533ca3abac57e705af149980200325..3910059325bba9f4d504ad2da9c4b34c9aa63698 100644 (file)
@@ -20,8 +20,10 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.model.common.IAnnotatableEntity;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
+import eu.etaxonomy.taxeditor.forms.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.forms.IEnableableFormElement;
 import eu.etaxonomy.taxeditor.forms.IEntityElement;
@@ -153,6 +155,13 @@ public abstract class AbstractCdmDetailElement<T extends IAnnotatableEntity> ext
                        ICdmFormElement eventElement = (ICdmFormElement) eventSource;
                        ICdmFormElement eventElementContainer = eventElement.getParentElement();
                        if (eventElementContainer == this){
+                               if(event instanceof CdmPropertyChangeEvent){
+                                       if(((CdmPropertyChangeEvent) event).hasException()){
+                                               handleException((CdmPropertyChangeEvent) event);
+                                               return;
+                                       }
+                               }
+                               
                                handleEvent(eventSource);
                                if(getParentElement() instanceof AbstractCdmDetailSection)
                                        ((AbstractCdmDetailSection)getParentElement()).updateTitle();
@@ -161,6 +170,11 @@ public abstract class AbstractCdmDetailElement<T extends IAnnotatableEntity> ext
        }
 
        public abstract void handleEvent(Object eventSource);
+       
+       public void handleException(CdmPropertyChangeEvent event){
+               //override this in subclasses if you want to deal with the error
+               EditorUtil.error(event.getSource().getClass(), event.getException());
+       }
 
        public boolean isIrrelevant() {
                return irrelevant;
index e1f225320e3b0944d7f2ab55a0529cfb274d7bc7..1f7a6ae962e6fd54e29088ce1b73349bf4da5d67 100644 (file)
 
 package eu.etaxonomy.taxeditor.section.reference;
 
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 
-import org.apache.log4j.Logger;
 import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.model.agent.AgentBase;
@@ -20,11 +21,15 @@ import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.reference.Generic;
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.model.reference.ReferenceType;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory.EnumComboType;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory.SelectionType;
+import eu.etaxonomy.taxeditor.forms.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
+import eu.etaxonomy.taxeditor.forms.IErrorIntolerableElement;
+import eu.etaxonomy.taxeditor.forms.IExceptionHandler;
 import eu.etaxonomy.taxeditor.forms.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.forms.TimePeriodElement;
 import eu.etaxonomy.taxeditor.forms.ToggleableTextElement;
@@ -39,10 +44,7 @@ import eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement;
  * @created Mar 2, 2010
  * @version 1.0
  */
-public class ReferenceBaseDetailElement extends AbstractCdmDetailElement<ReferenceBase> {
-       
-       private static final Logger logger = Logger
-                       .getLogger(ReferenceBaseDetailElement.class);
+public class ReferenceBaseDetailElement extends AbstractCdmDetailElement<ReferenceBase> implements IErrorIntolerableElement, IExceptionHandler {
        
        // property holder
        private ToggleableTextElement toggleable_cache;
@@ -61,7 +63,7 @@ public class ReferenceBaseDetailElement extends AbstractCdmDetailElement<Referen
        private TextWithLabelElement text_volume;
        private TextWithLabelElement text_uri;
        private AbstractSelectionElement<AgentBase> selection_authorTeam;
-       private TimePeriodElement composite_timePeriod;
+       private TimePeriodElement element_timePeriod;
        private AbstractSelectionElement<ReferenceBase> selection_inReference;
        private AbstractSelectionElement<Institution> selection_institution;
        private ReferenceTypeComboElement combo_referenceType;
@@ -112,7 +114,8 @@ public class ReferenceBaseDetailElement extends AbstractCdmDetailElement<Referen
                }
                
                // date published
-               composite_timePeriod = formFactory.createTimePeriodElement(formElement, "Date Published", entity.getDatePublished(), style);
+               element_timePeriod = formFactory.createTimePeriodElement(formElement, "Date Published", entity.getDatePublished(), style);
+               element_timePeriod.addExceptionHandler(this);
                
                createUriAndAbstract(this, entity, SWT.NULL);
        }
@@ -124,7 +127,7 @@ public class ReferenceBaseDetailElement extends AbstractCdmDetailElement<Referen
        @Override
        protected void updateContent() {
                if(getEntity() == null){
-                       setEntity(Generic.NewInstance());
+                       setEntity(ReferenceFactory.newGeneric());
                }
                
                super.updateContent();
@@ -279,8 +282,9 @@ public class ReferenceBaseDetailElement extends AbstractCdmDetailElement<Referen
                        getEntity().setType(combo_referenceType.getSelection());
                        getParentElement().refresh();
                }
-               else if(eventSource == composite_timePeriod){
-                       getEntity().setDatePublished(composite_timePeriod.getTimePeriod());
+               else if(eventSource == element_timePeriod){
+                       getEntity().setDatePublished(element_timePeriod.getTimePeriod());
+                       clearException();
                }
                // selections
                else if(eventSource == selection_authorTeam){
@@ -349,4 +353,53 @@ public class ReferenceBaseDetailElement extends AbstractCdmDetailElement<Referen
                        toggleable_cache.setText(getEntity().getTitleCache());
                }
        }
+       
+       /*
+        * (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleException(eu.etaxonomy.taxeditor.forms.CdmPropertyChangeEvent)
+        */
+       @Override
+       public void handleException(CdmPropertyChangeEvent event) {
+               exceptionOccurred(event);
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.IExceptionHandler#clearException()
+        */
+       @Override
+       public void clearException() {
+               exceptionOccurred(null);
+       }
+
+       private List<IExceptionHandler> exceptionHandlers = new ArrayList<IExceptionHandler>();
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.IErrorIntolerableElement#addExceptionHandler(eu.etaxonomy.taxeditor.forms.IExceptionHandler)
+        */
+       @Override
+       public void addExceptionHandler(IExceptionHandler handler) {
+               exceptionHandlers.add(handler);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.IErrorIntolerableElement#removeExceptionHandler(eu.etaxonomy.taxeditor.forms.IExceptionHandler)
+        */
+       @Override
+       public void removeExceptionHandler(IExceptionHandler handler) {
+               exceptionHandlers.remove(handler);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.IErrorIntolerableElement#exceptionOccurred(eu.etaxonomy.taxeditor.forms.CdmPropertyChangeEvent)
+        */
+       @Override
+       public void exceptionOccurred(CdmPropertyChangeEvent event) {
+               for(IExceptionHandler handler : exceptionHandlers){
+                       if(event == null) {
+                               clearException();
+                       }else{
+                               handler.handleException(event);
+                       }
+               }
+       }
 }
index a0df6ccf6df924deada7a2c941f5f693fd5bffd9..aab1d93de834c40183a660916bbf924dea1bc52d 100644 (file)
 
 package eu.etaxonomy.taxeditor.section.reference;
 
-import org.apache.log4j.Logger;
 import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
 import eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
-import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.forms.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
+import eu.etaxonomy.taxeditor.forms.IExceptionHandler;
 import eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement;
 
 /**
@@ -26,11 +27,7 @@ import eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement;
  * @created Jun 1, 2010
  * @version 1.0
  */
-public class ReferenceBaseWizardPage extends AbstractCdmEntityWizardPage<ReferenceBase> {
-
-
-       private static final Logger logger = Logger
-                       .getLogger(ReferenceBaseWizardPage.class);
+public class ReferenceBaseWizardPage extends AbstractCdmEntityWizardPage<ReferenceBase> implements IExceptionHandler{
 
        public ReferenceBaseWizardPage(CdmFormFactory formFactory, ConversationHolder conversation, ReferenceBase entity) {
                super(formFactory, conversation, entity);
@@ -43,8 +40,24 @@ public class ReferenceBaseWizardPage extends AbstractCdmEntityWizardPage<Referen
         */
        public AbstractCdmDetailElement createElement(ICdmFormElement rootElement){
                ReferenceBaseDetailElement referenceElement = (ReferenceBaseDetailElement) formFactory.createCdmDetailElement(DetailType.REFERENCEBASE, rootElement, SWT.NULL);
+               referenceElement.addExceptionHandler(this);
                referenceElement.setEntity(entity);
-               
                return referenceElement;
        }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.IExceptionHandler#handleException(eu.etaxonomy.taxeditor.forms.CdmPropertyChangeEvent)
+        */
+       @Override
+       public void handleException(CdmPropertyChangeEvent event) {
+               setMessage(event.getException().getMessage(), WARNING);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.IExceptionHandler#clearException()
+        */
+       @Override
+       public void clearException() {
+               setMessage(null);
+       }
 }
index 264bd559e5f1790d58fb51806dbbd82efb73f878..3ece682c71511bd181e8996e64f441ac9b9637a2 100644 (file)
@@ -20,6 +20,7 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.common.mediaMetaData.ImageMetaData;
 import eu.etaxonomy.cdm.model.media.ImageFile;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.forms.AbstractFormSection;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
@@ -36,9 +37,6 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  */
 public class ImageFileElement extends AbstractMediaRepresentationPartElement<ImageFile> {
 
-
-       private static final Logger logger = Logger
-                       .getLogger(ImageFileElement.class);
        private NumberWithLabelElement text_height;
        private NumberWithLabelElement text_width;
        private BrowserElement element_browser;
@@ -109,16 +107,12 @@ public class ImageFileElement extends AbstractMediaRepresentationPartElement<Ima
                                element_image.setImageUri(imageUri);
                                
                        } catch (IOException e) {
-                               logger.error("IOError reading image metadata", e);
-                               throw new RuntimeException("IOError reading image metadata");
+                               EditorUtil.error(getClass(), e);
                        }
-                                               
-                       
                } catch (URISyntaxException e) {
-                       logger.warn("Image Uri is not valid");
+                       EditorUtil.info("Image Uri is not valid");
                } catch (Exception e) {
-                       logger.warn("Image could not be shown: ", e);
-//                     new RuntimeException(e);
+                       EditorUtil.error(getClass(), "Image could not be shown: ", e);
                }
        }
 
index 62161b2146de145688c214629dbf65f94092f1cd..d63c65eb08d78f7aed82687144bc93a1e5417890 100644 (file)
@@ -12,7 +12,6 @@ package eu.etaxonomy.taxeditor.section.taxon;
 
 import java.util.Arrays;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
 
@@ -49,10 +48,6 @@ public class TaxonBaseDetailElement extends AbstractCdmDetailElement<TaxonBase>{
        private CheckboxElement checkbox_excluded;
 
        private CheckboxElement checkbox_unplaced;
-
-
-       private static final Logger logger = Logger
-                       .getLogger(TaxonBaseDetailElement.class);
        
        public TaxonBaseDetailElement(CdmFormFactory cdmFormFactory,
                        ICdmFormElement formElement, int style) {
@@ -70,7 +65,7 @@ public class TaxonBaseDetailElement extends AbstractCdmDetailElement<TaxonBase>{
                
                if(entity instanceof Taxon){
                        checkbox_excluded = formFactory.createCheckbox(formElement, "Is excluded", ((Taxon) entity).isExcluded(), style);
-                       checkbox_unplaced = formFactory.createCheckbox(formElement, "Is excluded", ((Taxon) entity).isUnplaced(), style);
+                       checkbox_unplaced = formFactory.createCheckbox(formElement, "Is unplaced", ((Taxon) entity).isUnplaced(), style);
                }               
        }
        
index d982f6c59fc9ab28a0278005e05924f180024115..2b7627f98e54f60e95f29fbbacf531adf11d5c71 100644 (file)
@@ -58,13 +58,13 @@ public class NavigationUtil extends AbstractUtility{
                try {
                        handlerService.executeCommand(commandId, null);
                } catch (ExecutionException e) {
-                       NavigationUtil.error(NavigationUtil.class, "ExecutionException when trying to execute EditHandler.", e);
+                       NavigationUtil.error(NavigationUtil.class, e);
                } catch (NotDefinedException e) {
-                       NavigationUtil.error(NavigationUtil.class, "NotDefinedException when trying to execute EditHandler.", e);
+                       NavigationUtil.error(NavigationUtil.class, e);
                } catch (NotEnabledException e) {
-                       NavigationUtil.error(NavigationUtil.class, "NotEnabledException when trying to execute EditHandler.", e);
+                       NavigationUtil.error(NavigationUtil.class, e);
                } catch (NotHandledException e) {
-                       NavigationUtil.error(NavigationUtil.class, "NotHandledException when trying to execute EditHandler.", e);
+                       NavigationUtil.error(NavigationUtil.class, e);
                }
        }
        
@@ -77,7 +77,7 @@ public class NavigationUtil extends AbstractUtility{
                                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 hanlded by the software yet.");
+                               warningDialog("Not implemented yet", NavigationUtil.class, "You tried to open a name. This is not handled by the software yet.");
                        }else{
                                warningDialog("Unsupported Type", NavigationUtil.class, "No editor exists for the current selection: " + selectedObject);
                        }
index dee991a275c1dd6deae60758a6c2f4e35435c31e..324e1e28b2d707c55249a22ab5cd2fc9c1ae1056 100644 (file)
@@ -10,7 +10,6 @@ package eu.etaxonomy.taxeditor.navigation.handler;
 */
 
 
-import org.apache.log4j.Logger;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
@@ -36,8 +35,6 @@ import eu.etaxonomy.taxeditor.wizard.ClassificationWizard;
  * @version 1.0
  */
 public class EditHandler extends AbstractHandler implements IHandler{
-       private static final Logger logger = Logger
-                       .getLogger(EditHandler.class);
 
        /* (non-Javadoc)
         * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
index 4de14308722271fece702eafa3937adb21665af4..70a3ef9ebcb0f997c6eaff027ab0586bd42f4c3c 100644 (file)
@@ -45,13 +45,13 @@ public class ClassificationWizard extends Wizard implements INewWizard, IPostOpe
        private ConversationHolder conversation;
        
        public ClassificationWizard(){
-               setWindowTitle("New Classification");
+               setWindowTitle("New Entity");
                conversation = CdmStore.createConversation();
        }
        
        public ClassificationWizard(TaxonomicTree classification){
                this();
-               setWindowTitle("Edit Classification");
+               setWindowTitle("Edit Entity");
                this.classification = CdmStore.getTaxonTreeService().load(classification.getUuid());
        }
        
index 16d77130880132ba52c7d3d1acdf5fe12f45fa70..2c5559643e935f6a375ac270e6737731b0c77f67 100644 (file)
@@ -15,6 +15,7 @@ import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 
@@ -77,6 +78,10 @@ public class ClassificationWizardPage extends WizardPage implements IPropertyCha
                selection_reference = (ReferenceSelectionElement) formFactory.createSelectionElement(SelectionType.REFERENCE, getConversationHolder(), rootElement, "Reference", classification.getReference(), SWT.NULL);
                text_referenceDetail = formFactory.createTextWithLabelElement(rootElement, "Reference Detail", classification.getMicroReference(), SWT.NULL);
                
+               Color bgColor = getShell().getBackground();
+               
+               rootElement.setBackground(bgColor);
+               control.setBackground(bgColor);
                
                setControl(control);
        }
index 7f61943e31a69f3e592a6732834b5b536aac4e9e..150de71db4255e72156348b2a85b315c5d198e8c 100644 (file)
@@ -42,7 +42,7 @@ public class NewTaxonNodeWizard extends Wizard implements INewWizard, IPostOpera
        private ConversationHolder conversation;
        
        public NewTaxonNodeWizard() {
-               this.setWindowTitle("New Taxon");
+               this.setWindowTitle("New Entity");
                conversation = CdmStore.createConversation();
                selection = getNavigatorSelection();
        }
index f70bde458cadd2865634211db94b69e68514a9da..e75dc486bd91b2ff9c5a496d0547b1238cfce547 100644 (file)
@@ -14,6 +14,7 @@ import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 
@@ -51,7 +52,6 @@ public class NewTaxonNodeWizardPage extends WizardPage implements IPropertyChang
        private TaxonBaseSelectionElement selection_reuseExistingTaxon;
        private TextWithLabelElement text_newTaxonName;
        private CheckboxElement checkbox_openInEditor;
-       private Composite control;
        private CdmFormFactory formFactory;
        private NameSelectionElement selection_reuseExistingName;
        private ITreeNode parentTreeNode;
@@ -65,7 +65,9 @@ public class NewTaxonNodeWizardPage extends WizardPage implements IPropertyChang
         * @param pageName
         */
        protected NewTaxonNodeWizardPage(ConversationHolder conversation, ITreeNode selectedNode) {
-               super("New Taxon");
+               super("Taxon");
+               
+               setTitle("Taxon");
                
                this.conversation = conversation;
                this.formFactory = new CdmFormFactory(Display.getCurrent());
@@ -121,7 +123,7 @@ public class NewTaxonNodeWizardPage extends WizardPage implements IPropertyChang
         */
        @Override
        public void createControl(Composite parent) {
-               control = formFactory.createComposite(parent);
+               Composite control = formFactory.createComposite(parent);
                
                control.setLayout(CdmFormFactory.LAYOUT(2, false));
                RootElement rootElement = new RootElement(formFactory, control);
@@ -137,6 +139,12 @@ public class NewTaxonNodeWizardPage extends WizardPage implements IPropertyChang
                checkbox_openInEditor = formFactory.createCheckbox(rootElement, "Open in Editor", openInEditor, SWT.NULL);
                
                setParentTreeNode(initiallySelectedNode);
+               
+               Color bgColor = getShell().getBackground();
+               
+               rootElement.setBackground(bgColor);
+               control.setBackground(bgColor);
+               
                setControl(control);
                
        }
index ea2609aac06403045d949a1864a2f1a4ec4f848a..afc78bb0d5dc0bac7ab142b6c4359d20f952d4e6 100644 (file)
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.io;
 
-import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.ui.progress.IProgressConstants;
 
@@ -23,9 +22,7 @@ import eu.etaxonomy.cdm.io.common.IIoConfigurator;
  * @version 1.0
  */
 public abstract class AbstractIOHandler<CONFIGURATOR extends IIoConfigurator> {
-       private static final Logger logger = Logger
-                       .getLogger(AbstractIOHandler.class);
-       
+
        protected CdmApplicationController applicationController;
        
        public static enum TYPE {
@@ -45,6 +42,7 @@ public abstract class AbstractIOHandler<CONFIGURATOR extends IIoConfigurator> {
                
                Job job = createIOJob(configurator);
                job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
+               job.setUser(true);
                job.schedule();
                
        }
index 479a7c9c949bb035b1125ab7df5a632079024000..9ca4bea5f25ee4c3a74f0b749d6f5079479d3ac9 100644 (file)
 
 package eu.etaxonomy.taxeditor.preference.menu;
 
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-
 import eu.etaxonomy.cdm.model.common.ExtensionType;
-import eu.etaxonomy.taxeditor.preference.wizard.VocabularyTermWizard;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.store.TermStore;
 
 /**
@@ -35,30 +29,6 @@ public class ExtensionTypeMenuPreferences extends AbstractMenuPreferences<Extens
                                "Choose which extension types to display",
                                true);
        }
-       
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#addEditButtonListeners()
-        * 
-        * TODO refactor into superclass
-        */
-       @Override
-       protected void addNewButtonListeners() {
-               newButton.addSelectionListener(new SelectionAdapter(){
-                       /* (non-Javadoc)
-                        * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-                        */
-                       @Override
-                       public void widgetSelected(SelectionEvent e) {
-                               super.widgetSelected(e);
-                               VocabularyTermWizard<ExtensionType> wizard = new VocabularyTermWizard<ExtensionType>(ExtensionType.class); 
-                               
-                               WizardDialog dialog = new WizardDialog(StoreUtil.getShell(), wizard);
-                           dialog.open();
-                           
-                           tableViewer.setInput(TermStore.getExtensionTypes());
-                       }
-               });
-       }
 
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.preference.menu.AbstractMenuPreferences#getTermClass()
index 81efde0e3744fe609b1dccd917b280e7061442d8..a2442d05a5c42e1cedf9b45a26f5aecf172449d8 100644 (file)
@@ -109,8 +109,8 @@ public class CdmStore{
                                checkDatabaseNotEmpty(monitor);
                        }
                        
-                       if(! monitor.isCanceled()){
-                               // check if the datasource is compatible with this editor
+                       if(dbSchemaValidation != DbSchemaValidation.CREATE && ! monitor.isCanceled()){
+                               // if we do not create the datasource, we want to check if the datasource is compatible with this editor
                                checkDbSchemaVersionCompatibility(monitor);
                        }
                        
@@ -262,14 +262,10 @@ public class CdmStore{
        protected static CdmStore getDefault(){
                if(instance != null && instance.isConnected){
                        return instance;
-               }else if(instance == null){
-                       
-                       connect();
-                       
-                       return instance;
-               }else if(!instance.isConnected){
-                       
-                       StoreUtil.warningDialog("No datasource connection", instance, "Application is not connected to a datastore.");
+               }else if(instance == null || !instance.isConnected){
+                                               
+                       StoreUtil.warningDialog("Application is not connected to a datastore", instance, "The requested operation is only available when " +
+                                       "connected to a datasource. You may choose a datasource to connect to or create a new one in the datasource view.");
                        
                        StoreUtil.showView(CdmDataSourceViewPart.ID);
                        
@@ -324,9 +320,11 @@ public class CdmStore{
         */
        public static void close(IProgressMonitor monitor){
                getContextManager().notifyContextAboutToStop(monitor);
-               if((monitor == null || !monitor.isCanceled()) && isActive() && StoreUtil.closeAll()){
+               if((monitor == null || (!monitor.isCanceled()) && isActive() && StoreUtil.closeAll())){
                        getContextManager().notifyContextStop(monitor);
-                       instance.getApplicationController().close();
+                       if(instance.getApplicationController() != null){
+                               instance.getApplicationController().close();
+                       }
                        instance.close();
                }
        }
@@ -364,7 +362,10 @@ public class CdmStore{
        }
        
        public static CdmApplicationController getCurrentApplicationController(){
-               return getDefault().getApplicationController();
+               if(getDefault() != null){
+                       return getDefault().getApplicationController();
+               }
+               return null;
        }
 
        /*
@@ -378,7 +379,7 @@ public class CdmStore{
         * @return
         */
        public static ConversationHolder createConversation() {
-               ConversationHolder conversation = getDefault().getApplicationController().NewConversation();
+               ConversationHolder conversation = getCurrentApplicationController().NewConversation();
                
                conversation.startTransaction();
                return conversation;
@@ -388,44 +389,44 @@ public class CdmStore{
         * EXPOSING SERVICES
         */
        
-       public static ITaxonService getTaxonService(){ return getDefault().getApplicationController().getTaxonService();}
+       public static ITaxonService getTaxonService(){ return getCurrentApplicationController().getTaxonService();}
        
-       public static ITaxonTreeService getTaxonTreeService() { return getDefault().getApplicationController().getTaxonTreeService();}
+       public static ITaxonTreeService getTaxonTreeService() { return getCurrentApplicationController().getTaxonTreeService();}
        
-       public static ITaxonNodeService getTaxonNodeService() { return getDefault().getApplicationController().getTaxonNodeService();}
+       public static ITaxonNodeService getTaxonNodeService() { return getCurrentApplicationController().getTaxonNodeService();}
        
-       public static INameService getNameService(){ return getDefault().getApplicationController().getNameService();}
+       public static INameService getNameService(){ return getCurrentApplicationController().getNameService();}
        
-       public static IReferenceService getReferenceService(){ return getDefault().getApplicationController().getReferenceService();}
+       public static IReferenceService getReferenceService(){ return getCurrentApplicationController().getReferenceService();}
        
-       public static ILocationService getLocationService(){ return getDefault().getApplicationController().getLocationService();}
+       public static ILocationService getLocationService(){ return getCurrentApplicationController().getLocationService();}
 
-       public static ProviderManager getAuthenticationManager() { return getDefault().getApplicationController().getAuthenticationManager();}
+       public static ProviderManager getAuthenticationManager() { return getCurrentApplicationController().getAuthenticationManager();}
 
-       public static IUserService getUserService() { return getDefault().getApplicationController().getUserService(); }
+       public static IUserService getUserService() { return getCurrentApplicationController().getUserService(); }
        
-       public static ICommonService getCommonService() { return getDefault().getApplicationController().getCommonService(); }
+       public static ICommonService getCommonService() { return getCurrentApplicationController().getCommonService(); }
        
-       public static IAgentService getAgentService() { return getDefault().getApplicationController().getAgentService(); }
+       public static IAgentService getAgentService() { return getCurrentApplicationController().getAgentService(); }
        
-       public static ITermService getTermService() { return getDefault().getApplicationController().getTermService(); }
+       public static ITermService getTermService() { return getCurrentApplicationController() != null ? getCurrentApplicationController().getTermService() : null; }
        
-       public static IVocabularyService getVocabularyService() { return getDefault().getApplicationController().getVocabularyService(); }
+       public static IVocabularyService getVocabularyService() { return getCurrentApplicationController().getVocabularyService(); }
        
-       public static IMediaService getMediaService() { return getDefault().getApplicationController().getMediaService(); }
+       public static IMediaService getMediaService() { return getCurrentApplicationController().getMediaService(); }
        
-       public static IOccurrenceService getOccurrenceService() { return getDefault().getApplicationController().getOccurrenceService(); }
+       public static IOccurrenceService getOccurrenceService() { return getCurrentApplicationController().getOccurrenceService(); }
        
-       public static IFeatureTreeService getFeatureTreeService() { return getDefault().getApplicationController().getFeatureTreeService(); }
+       public static IFeatureTreeService getFeatureTreeService() { return getCurrentApplicationController().getFeatureTreeService(); }
        
-       public static IFeatureNodeService getFeatureNodeService() { return getDefault().getApplicationController().getFeatureNodeService(); }
+       public static IFeatureNodeService getFeatureNodeService() { return getCurrentApplicationController().getFeatureNodeService(); }
 
-       public static ICollectionService getCollectionService() { return getDefault().getApplicationController().getCollectionService(); }
+       public static ICollectionService getCollectionService() { return getCurrentApplicationController().getCollectionService(); }
        
        public static IEditGeoService getGeoService(){
-               return (IEditGeoService) getDefault().getApplicationController().getBean("editGeoService");
+               return (IEditGeoService) getCurrentApplicationController().getBean("editGeoService");
        }
-               
+       
        /*
         * METHODS TO FIND ENTITIES
         */
@@ -563,7 +564,7 @@ public class CdmStore{
         */
        public static synchronized ImportHandler getImportHandler(){
                if(importHandler == null){
-                       importHandler = ImportHandler.NewInstance(getDefault().getApplicationController());
+                       importHandler = ImportHandler.NewInstance(getCurrentApplicationController());
                }
                return importHandler;
        }
@@ -574,7 +575,7 @@ public class CdmStore{
         */
        public static synchronized ExportHandler getExportHandler(){
                if(exportHandler == null){
-                       exportHandler = ExportHandler.NewInstance(getDefault().getApplicationController());
+                       exportHandler = ExportHandler.NewInstance(getCurrentApplicationController());
                }
                return exportHandler;
        }
index 96fc0a389013915c95aa4127d50a78c2af4141d4..c6555e1d09eb840dab6338a044dfb8e222c44513 100644 (file)
@@ -15,6 +15,7 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
+import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.AnnotationType;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
@@ -109,13 +110,6 @@ public class TermStore {
                return getTerms(Language.class);
        }
        
-       
-       /**
-        * @param selected
-        */
-       public static void delete(DefinedTermBase selected) {
-               CdmStore.getTermService().delete(selected);
-       }
        /**
         * 
         * @return
@@ -274,7 +268,14 @@ public class TermStore {
        /*************** save methods ******************************/
        
        public static void saveTerm(DefinedTermBase term){
-               CdmStore.getTermService().saveOrUpdate(term);
+               getTermService().saveOrUpdate(term);
+       }
+       
+       /**
+        * @param selected
+        */
+       public static void delete(DefinedTermBase selected) {
+               getTermService().delete(selected);
        }
        
        /**
@@ -283,7 +284,7 @@ public class TermStore {
         * @param feature
         */
        public static void updateVocabulary(DefinedTermBase term) {
-               CdmStore.getTermService().saveOrUpdate(term);
+               getTermService().saveOrUpdate(term);
        }
        
        
@@ -305,7 +306,7 @@ public class TermStore {
        }
        
        private static <TERM extends DefinedTermBase> List<TERM> getTerms(Class<TERM> clazz){
-               Comparator comparator = new Comparator<TERM>() {
+               Comparator<TERM> comparator = new Comparator<TERM>() {
                        @Override
                        public int compare(TERM o1, TERM o2) {
                                String label1 = o1.getLabel(getDefaultLanguage()) != null ? o1.getLabel(getDefaultLanguage()) : o1.getTitleCache();
@@ -318,13 +319,21 @@ public class TermStore {
        }
        
        
-       private static <TERM extends DefinedTermBase> List<TERM> getTerms(Class<TERM> clazz, Comparator comparator){
+       private static <TERM extends DefinedTermBase> List<TERM> getTerms(Class<TERM> clazz, Comparator<TERM> comparator){
 
-               List<TERM> terms = CdmStore.getTermService().listByTermClass(clazz, null, null, null, null);
                
-               Collections.sort(terms, comparator); 
+               List<TERM> terms = new ArrayList<TERM>();
+               if(getTermService() != null){
+                       terms = getTermService().listByTermClass(clazz, null, null, null, null);
+               
+                       Collections.sort(terms, comparator); 
+               }
                
                return terms;
                
        }
+       
+       private static ITermService getTermService(){
+               return CdmStore.getTermService();
+       }
 }