Fixes a problem that could have solved #2071; Resolves the problems described in...
authorn.hoffmann <n.hoffmann@localhost>
Wed, 26 Jan 2011 18:49:20 +0000 (18:49 +0000)
committern.hoffmann <n.hoffmann@localhost>
Wed, 26 Jan 2011 18:49:20 +0000 (18:49 +0000)
17 files changed:
.gitattributes
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorStateManager.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/SaveAllHandler.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/ChangeSynonymToAcceptedTaxonHandler.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/supplemental/MediaElement.java
taxeditor-store/plugin.xml
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/handler/CloseConnectionHandler.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/handler/DataSourceMenuPropertyTester.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractIOManager.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/AbstractImportWizard.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractCdmViewPart.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencePropertyTester.java [new file with mode: 0644]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/TaxonomicEditorGeneralPreferences.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java

index a5746d8e967a588e557d7deed4a34fb87e794a9c..162555bfd3a9db82d8226e61d70af5037030fc4d 100644 (file)
@@ -1100,6 +1100,7 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/InitNomenclatura
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/LanguagePreferencePage.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/MatchingPreferences.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalCodePreferences.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencePropertyTester.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/Resources.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/TaxonomicEditorGeneralPreferences.java -text
index 505e4896e987948e532cd51142dee44e82ce30d4..aed6628deab402668f34a2779d672a5ea528ff72 100644 (file)
@@ -22,6 +22,7 @@ import org.eclipse.ui.IPersistable;
 import org.eclipse.ui.PartInitException;
 
 import eu.etaxonomy.taxeditor.editor.view.AbstractCdmEditorViewPart;
+import eu.etaxonomy.taxeditor.editor.view.concept.ConceptViewPart;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;
 import eu.etaxonomy.taxeditor.editor.view.media.MediaViewPart;
 import eu.etaxonomy.taxeditor.model.ContextListenerAdapter;
@@ -63,6 +64,7 @@ public class EditorStateManager extends ContextListenerAdapter {
        /** {@inheritDoc} */
        @Override
        public void contextStop(IMemento memento, IProgressMonitor monitor) {
+               EditorUtil.closeAll();
                resetConstantViews();
        }
        
@@ -72,14 +74,17 @@ public class EditorStateManager extends ContextListenerAdapter {
        private void resetConstantViews() {
                AbstractCdmEditorViewPart descriptiveView = (AbstractCdmEditorViewPart) EditorUtil.getView(DescriptiveViewPart.ID, false);
                AbstractCdmEditorViewPart mediaView = (AbstractCdmEditorViewPart) EditorUtil.getView(MediaViewPart.ID, false);
+               AbstractCdmEditorViewPart conceptView = (AbstractCdmEditorViewPart) EditorUtil.getView(ConceptViewPart.ID, false);
                
                if(descriptiveView != null){
                        descriptiveView.showEmptyPage();
                }
-               
                if(mediaView != null){
                        mediaView.showEmptyPage();
                }
+               if(conceptView != null){
+                       conceptView.showEmptyPage();
+               }
        }
 
        /* (non-Javadoc)
index 9186ef57d09b897cf1030d089a3b9ecd70e35ea9..60d277db2345d32ac400dba959acdb87ca38a3ed 100644 (file)
@@ -42,30 +42,6 @@ import eu.etaxonomy.taxeditor.model.AbstractUtility;
 public class EditorUtil extends AbstractUtility{
 
        private static boolean isSaving = false;
-       
-       /**
-        * <p>closeAll</p>
-        *
-        * @return a boolean.
-        */
-       public static boolean closeAll() {
-               for (IEditorPart editor : getOpenEditors()) {
-                       if (!getActivePage().closeEditor(editor, true)) {
-                               return false;
-                       }
-               }
-               return true;
-       }
-       
-       /**
-        * Close the given editor.
-        *
-        * @param editor The <tt>MultipageTaxonEditor</tt> to close.
-        * @return <tt>true</tt> on success
-        */
-       public static boolean close(MultiPageTaxonEditor editor) {
-               return getActivePage().closeEditor(editor, true);
-       }
 
        /**
         * Opens a new editor window with the given input
@@ -87,7 +63,7 @@ public class EditorUtil extends AbstractUtility{
         * @throws org.eclipse.ui.PartInitException if any.
         */
        public static void open(TaxonEditorInput input) throws PartInitException{
-               IEditorPart editor = open(input, MultiPageTaxonEditor.ID);
+               open(input, MultiPageTaxonEditor.ID);
        }
        
        public static void open(PolytomousKeyEditorInput input) throws PartInitException{
@@ -270,7 +246,7 @@ public class EditorUtil extends AbstractUtility{
                                return false;
                        }
                        
-                       editor.doSave(null);
+                       editor.doSave(EditorUtil.getMonitor());
                }
                return true;
        }
index e41228fa823321c4eca9f612c6d0c9dd90ccea9a..41b142bb1ce002f6659635e4ffc37fb2c47d1244 100644 (file)
@@ -40,7 +40,7 @@ public class SaveAllHandler extends AbstractHandler implements IHandler {
                
                for (IEditorPart editor : EditorUtil.getOpenEditors()) {
                        if (editor.isDirty()) {
-                               editor.doSave(null);
+                               editor.doSave(EditorUtil.getMonitor());
                        }
                }
                
index 6b8aadde4d984861f5a4802be55914711ea5104a..26dc6daa04264d0e3af771ffcc494526a9174907 100644 (file)
@@ -108,7 +108,7 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme
                // Redraw existing editor
                ((IPostOperationEnabled) editor).postOperation(null);
                
-               editor.doSave(null);
+               editor.doSave(EditorUtil.getMonitor());
                
                if (objectAffectedByOperation instanceof TaxonNode) {
                
index e73bfbf9cec21ca2e3f52e0fe9c066f03591cb7e..0292fcdcfdeff13547a254b153986079d94dae91 100644 (file)
@@ -3,6 +3,8 @@
  */
 package eu.etaxonomy.taxeditor.section.supplemental;
 
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.FocusEvent;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
@@ -56,7 +58,7 @@ public class MediaElement extends AbstractEntityCollectionElement<Media> {
        /** {@inheritDoc} */
        @Override
        public void createControls(ICdmFormElement element, int style) {
-               text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
+               text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);           
                selection_artist = (AgentSelectionElement) formFactory.createSelectionElement(SelectionType.AGENT, getConversationHolder(), element, "Artist", null, style);
                text_description = formFactory.createLanguageStringWithLabelElement(element, "Description",  null, 100, style);
                section_mediaRepresentation = (MediaRepresentationSection) formFactory.createEntityDetailSection(EntityDetailType.MEDIAREPRESENTATION, getConversationHolder(), element, style);
index 248134d02b4e34111f548e985b2aa8f44e84cacc..1915742e22bd9fe20d7b0ba86134c8a76b3015cc 100644 (file)
             category="eu.etaxonomy.taxeditor.preferences.general"
             class="eu.etaxonomy.taxeditor.preference.MatchingPreferences"
             id="eu.etaxonomy.taxeditor.preferences.matching"
-            name="Matching">
+            name="Matching (Experimental)">
       </page>
       <page
             category="eu.etaxonomy.taxeditor.preferences.matching"
                      name="org.eclipse.ui.views.showView.viewId"
                      value="eu.etaxonomy.taxeditor.reporting.viewPart">
                </parameter>
+               <visibleWhen
+                     checkEnabled="true">
+                  <reference
+                        definitionId="isShowExperimentalFeatures">
+                  </reference>
+               </visibleWhen>
             </command>
          </menu>
       </menuContribution>
          properties="isCompatible"
          type="org.eclipse.jface.viewers.IStructuredSelection">
    </propertyTester>
+   <propertyTester
+         class="eu.etaxonomy.taxeditor.preference.PreferencePropertyTester"
+         id="eu.etaxonomy.taxeditor.preferences.propertyTester"
+         namespace="eu.etaxonomy.taxeditor.preferences.propertyTester"
+         properties="isShowExperimentalFeatures"
+         type="org.eclipse.jface.viewers.IStructuredSelection">
+   </propertyTester>
 </extension>
 <extension
       point="org.eclipse.core.expressions.definitions">
          </test>
       </with>
    </definition>
+   <definition
+         id="isShowExperimentalFeatures">
+      <with
+            variable="activeMenuSelection">
+         <test
+               property="eu.etaxonomy.taxeditor.preferences.propertyTester.isShowExperimentalFeatures">
+         </test>
+      </with>
+   </definition>
 </extension>
        
 </plugin>
index defaee1921118e904cf749c4412858256c5aba85..e2c9aeca51ead5a7655b509e8dbb64a57bc2e7dd 100644 (file)
@@ -39,9 +39,8 @@ public class CloseConnectionHandler extends AbstractHandler {
                
                boolean confirmed = MessageDialog.openConfirm(shell, "Confirm Datasource Close", "Do you really want to close the datasource connection?\n\n");
                
-               
                if(confirmed){
-                       CdmStore.close(null);
+                       CdmStore.close(StoreUtil.getMonitor());
                }
                
                CdmDataSourceViewPart view = (CdmDataSourceViewPart) StoreUtil.getView(CdmDataSourceViewPart.ID, true);
index 5cf0b2df5316ca641b5c624ac9afe4a94cf2c890..e97653356511a95bd0009af6c018f2a1ac145d6b 100644 (file)
@@ -14,6 +14,8 @@ import org.eclipse.core.expressions.PropertyTester;
 import org.eclipse.jface.viewers.IStructuredSelection;
 
 import eu.etaxonomy.taxeditor.datasource.view.CdmMetaDataAwareDataSourceContainer;
+import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 
 /**
  * <p>DataSourceMenuPropertyTester class.</p>
@@ -47,10 +49,13 @@ public class DataSourceMenuPropertyTester extends PropertyTester {
                if (COMPATIBLE.equals(property)) {
                        return isCompatible(selectedElements);
                }
+               
 
                return false;
        }
 
+
+
        /**
         * @param selectedElements
         * @return
index 660366a0e5a8f818a88e228d02ce2b8076cdda08..09b5afca00d2e8472cf84901c9368d610cedb8a7 100644 (file)
@@ -47,10 +47,12 @@ public abstract class AbstractIOManager<CONFIGURATOR extends IIoConfigurator> {
         * @param configurator a CONFIGURATOR object.
         */
        public void run(final CONFIGURATOR configurator){
-               
+               // create job
                Job job = createIOJob(configurator);
+               // configure the job
                job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
                job.setUser(true);
+               // schedule job
                job.schedule();
                
        }
index 303c5afac82d7cd8327966efe47c813f31902514..4b946fa36f118ca55a29402cc11a601c4fd4d0e8 100644 (file)
@@ -24,7 +24,6 @@ import org.eclipse.ui.IWorkbenchPage;
 
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;
 import eu.etaxonomy.cdm.io.common.IIoConfigurator;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 
 /**
  * <p>Abstract AbstractImportWizard class.</p>
index 484e1b537be932be48b285e8b201be85d1c99e44..360a2f61e1eaa5cc53c0e961ffcb0636179b89f5 100644 (file)
@@ -82,10 +82,7 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
        }
        
        private void createViewerComposite(Composite parent) {
-               
                viewerComposite = new SashForm(parent, SWT.HORIZONTAL);
-               
-               
        }
     
        /**
@@ -102,8 +99,6 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
      * @param selection a {@link org.eclipse.jface.viewers.ISelection} object.
      */
     public void showViewer(IWorkbenchPart part, ISelection selection){
-
-       
        this.part = part;               
                                
                IStructuredSelection structuredSelection = (IStructuredSelection) selection;
index 362a406f088a49d991ee0c7a95da806f4c04a674..aa66420a0a9a56bae224fa0337d467721890a887 100644 (file)
@@ -42,6 +42,7 @@ import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.ide.undo.WorkspaceUndoUtil;
+import org.eclipse.ui.part.EditorPart;
 import org.eclipse.ui.progress.IProgressService;
 import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
 import org.eclipse.ui.themes.ITheme;
@@ -63,6 +64,26 @@ public abstract class AbstractUtility {
        /** Constant <code>statusLineManager</code> */
        protected static IStatusLineManager statusLineManager;
        
+       
+       /**
+        * <p>closeAll</p>
+        *
+        * @return a boolean.
+        */
+       public static boolean closeAll() {
+               return getActivePage().closeAllEditors(true);
+       }
+       
+       /**
+        * Close the given editor.
+        *
+        * @param editor The <tt>MultipageTaxonEditor</tt> to close.
+        * @return <tt>true</tt> on success
+        */
+       public static boolean close(EditorPart editor) {
+               return getActivePage().closeEditor(editor, true);
+       }
+       
        /**
         * <p>getShell</p>
         *
@@ -114,7 +135,7 @@ public abstract class AbstractUtility {
         */
        public static IViewPart showView(String id){
                try {
-                       return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(id);
+                       return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(id, null, IWorkbenchPage.VIEW_VISIBLE);
                } catch (PartInitException e) {
                        error(AbstractUtility.class, "Could not open view: " + id, e);
                        throw new RuntimeException(e);
@@ -147,15 +168,6 @@ public abstract class AbstractUtility {
                }
                return null;
        }
-               
-       /**
-        * <p>closeAll</p>
-        *
-        * @return a boolean.
-        */
-       public static boolean closeAll() {
-               return getActivePage().closeAllEditors(true);
-       }
        
        /**
         * <p>getService</p>
index dffdef1ee0f3ee1c9c165841ab8e85da6de45725..925084e764c275d662501a96751afcc8a6a5c5eb 100644 (file)
@@ -97,4 +97,6 @@ public interface IPreferenceKeys {
         * The language to be used for all things multilanguage
         */
        public static final String GLOBAL_LANGUAGE_UUID = "eu.etaxonomy.taxeditor.globalLanguage";
+
+       public static final String SHOW_EXPERIMENTAL_FEATURES = "eu.etaxonomy.taxeditor.showExperimentalFeatures";
 }
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencePropertyTester.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencePropertyTester.java
new file mode 100644 (file)
index 0000000..aee9397
--- /dev/null
@@ -0,0 +1,46 @@
+// $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.preference;
+
+import org.eclipse.core.expressions.PropertyTester;
+
+/**
+ * @author n.hoffmann
+ * @created Jan 26, 2011
+ * @version 1.0
+ */
+public class PreferencePropertyTester extends PropertyTester {
+
+
+       private static final String SHOW_EXPERIMENTAL_FEATURES = "isShowExperimentalFeatures";
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
+        */
+       @Override
+       public boolean test(Object receiver, String property, Object[] args,
+                       Object expectedValue) {
+               
+               if(SHOW_EXPERIMENTAL_FEATURES.equals(property)){
+                       return isShowExperimentalFeatures();
+               }
+               
+               return false;
+       }
+
+       /**
+        * @return
+        */
+       private boolean isShowExperimentalFeatures() {
+               return PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_EXPERIMENTAL_FEATURES);
+       }
+       
+}
index 8a98d62583fce4de0138b66350235b52fdb45726..78c0f8ad7ffb5b850d985f2bc1155dafb3d67bc2 100644 (file)
@@ -44,6 +44,8 @@ public class TaxonomicEditorGeneralPreferences extends PreferencePage implements
        private boolean shouldConnectAtStartup;
 
        private boolean shouldExpandSectionWhenDataAvailable;
+
+       private boolean shouldShowExperimentalFeatures;
        
        /* (non-Javadoc)
         * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
@@ -60,9 +62,12 @@ public class TaxonomicEditorGeneralPreferences extends PreferencePage implements
                createShouldConnectAtStartUp(container);
                createShouldExpandSectionWhenDataAvailable(container);
                
+               createShowExperimentalFeatures(container);
+               
                return container;
        }
 
+
        private void createShouldExpandSectionWhenDataAvailable(Composite container) {
                shouldExpandSectionWhenDataAvailable = getPreferenceStore().getBoolean(IPreferenceKeys.SHOULD_EXPAND_SECTION_WHEN_DATA_AVAILABLE);
                
@@ -128,7 +133,7 @@ public class TaxonomicEditorGeneralPreferences extends PreferencePage implements
        }
        
        private void createShouldConnectAtStartUp(Composite parent){
-               shouldConnectAtStartup = getPreferenceStore().getBoolean(PreferencesUtil.SHOULD_CONNECT_AT_STARTUP);
+               shouldConnectAtStartup = getPreferenceStore().getBoolean(IPreferenceKeys.SHOULD_CONNECT_AT_STARTUP);
                
                final Composite composite = createComposite(parent);
                
@@ -151,6 +156,32 @@ public class TaxonomicEditorGeneralPreferences extends PreferencePage implements
                });
        }
        
+       /**
+        * @param container
+        */
+       private void createShowExperimentalFeatures(Composite parent) {
+               shouldShowExperimentalFeatures = getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_EXPERIMENTAL_FEATURES);
+               final Composite composite = createComposite(parent);
+               
+               final Button button_toggle = new Button(composite, SWT.CHECK);          
+               
+               
+               button_toggle.setText("Show experimental features-");
+               
+               button_toggle.setSelection(shouldShowExperimentalFeatures);
+               
+               
+               button_toggle.addSelectionListener(new SelectionAdapter(){
+                       /* (non-Javadoc)
+                        * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+                        */
+                       @Override
+                       public void widgetSelected(SelectionEvent e) {
+                               shouldShowExperimentalFeatures = button_toggle.getSelection();
+                       }
+               });
+       }
+       
        private Composite createComposite(Composite parent){
                Composite composite = new Composite(parent, SWT.NULL);
                composite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 2, 1));
@@ -174,7 +205,9 @@ public class TaxonomicEditorGeneralPreferences extends PreferencePage implements
                getPreferenceStore().setValue(IPreferenceKeys.EDIT_MAP_SERVICE_ACCES_POINT, editMapServiceAccessPoint);
                getPreferenceStore().setValue(IPreferenceKeys.SHOULD_CONNECT_AT_STARTUP, shouldConnectAtStartup);
                getPreferenceStore().setValue(IPreferenceKeys.SHOULD_EXPAND_SECTION_WHEN_DATA_AVAILABLE, shouldExpandSectionWhenDataAvailable);
+               getPreferenceStore().setValue(IPreferenceKeys.SHOW_EXPERIMENTAL_FEATURES, shouldShowExperimentalFeatures);
                
                return super.performOk();
        }
+       
 }
index 488c8f4976926522a5d715a929783b14699f48b4..cc6a56c7b8242fd53fe4d78ab45705cc4b0ac977 100644 (file)
@@ -148,7 +148,7 @@ public class CdmStore{
                        @Override
                        public void run() {
                                getContextManager().notifyContextAboutToStop(monitor);
-                               if((monitor == null || (!monitor.isCanceled()) && isActive() && StoreUtil.closeAll())){
+                               if((monitor == null || (!monitor.isCanceled()) && isActive())){
                                        getContextManager().notifyContextStop(monitor);
                                        if(instance.getApplicationController() != null){
                                                instance.getApplicationController().close();