Merge branch 'develop' into LibrAlign
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / menu / AbstractMenuPreferences.java
index c8a7fc5b2fd1cfe72070784482bc38c0b2756e31..ed4825a8f02e1e5fd247977da30ffcad7172de88 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 /**
  * Copyright (C) 2007 EDIT
  * European Distributed Institute of Taxonomy
@@ -20,7 +19,6 @@ import org.eclipse.core.commands.Parameterization;
 import org.eclipse.core.commands.ParameterizedCommand;
 import org.eclipse.core.commands.common.NotDefinedException;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.preference.PreferencePage;
 import org.eclipse.jface.viewers.CheckStateChangedEvent;
 import org.eclipse.jface.viewers.CheckboxTableViewer;
 import org.eclipse.jface.viewers.ICheckStateListener;
@@ -52,13 +50,11 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.TermStore;
 
 /**
- * <p>Abstract AbstractMenuPreferences class.</p>
- *
  * @author n.hoffmann
  * @created 12.06.2009
  * @version 1.0
  */
-public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends PreferencePage implements
+public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends CdmPreferencePage implements
                IWorkbenchPreferencePage, IConversationEnabled{
 
        private Button toggleButton;
@@ -95,7 +91,11 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
        }
 
        protected List<T> getTerms(){
-               return TermStore.getTerms(getTermClass());
+           if(!CdmStore.isActive() || getTermClass()==null) {
+               return new ArrayList<T>();
+           } else {
+               return TermStore.getTerms(getTermClass());
+           }
        }
 
        /**
@@ -142,9 +142,6 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                toggleButton = new Button(buttonContainer, SWT.PUSH);
                toggleButton.setText("Toggle");
                toggleButton.addSelectionListener(new SelectionAdapter(){
-                       /* (non-Javadoc)
-                        * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-                        */
                        @Override
                        public void widgetSelected(SelectionEvent e) {
                                state = state ? false : true;
@@ -158,12 +155,6 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                return container;
        }
 
-
-       /**
-        * <p>refresh</p>
-        *
-        * @param definedTerms a {@link java.util.List} object.
-        */
        protected void refresh(List<T> definedTerms) {
                tableViewer.setInput(definedTerms);
 
@@ -171,23 +162,10 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                tableViewer.setCheckedElements(preferedTerms.toArray());
        }
 
-       /**
-        * <p>createAdditionalContent</p>
-        *
-        * @param container a {@link org.eclipse.swt.widgets.Composite} object.
-        */
        protected void createAdditionalContent(Composite container) {
                // implement where needed
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#createButtons(org.eclipse.swt.widgets.Composite)
-        */
-       /**
-        * <p>createEditButtons</p>
-        *
-        * @param buttonContainer a {@link org.eclipse.swt.widgets.Composite} object.
-        */
        protected void createEditButtons(Composite buttonContainer) {
 
                editButton = new Button(buttonContainer, SWT.PUSH);
@@ -203,9 +181,6 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
         */
        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) {
                                VocabularyTermWizard<T> wizard = new VocabularyTermWizard<T>(getTermClass(), getConversationHolder());
@@ -216,7 +191,6 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                            }
                        }
 
-
                });
        }
 
@@ -226,9 +200,6 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
         */
        protected void addEditButtonListeners() {
                editButton.addSelectionListener(new SelectionAdapter(){
-                       /* (non-Javadoc)
-                        * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-                        */
                        @Override
                        public void widgetSelected(SelectionEvent event) {
 
@@ -274,14 +245,15 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
        /** {@inheritDoc} */
        @Override
     public void init(IWorkbench workbench) {
-               setPreferenceStore(PreferencesUtil.getPreferenceStore());
-               getConversationHolder().bind();
+           setPreferenceStore(PreferencesUtil.getPreferenceStore());
+           if(!CdmStore.isActive()) {
+               MessagingUtils.noDataSourceWarningDialog(null);
+
+           } else {
+               getConversationHolder().bind();
+           }
        }
 
-       /*
-        * (non-Javadoc)
-        * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
-        */
        /**
         * <p>performDefaults</p>
         */
@@ -290,21 +262,17 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                tableViewer.setAllChecked(true);
        }
 
-       /**
-        * <p>Getter for the field <code>tableViewer</code>.</p>
-        *
-        * @return the tableViewer
-        */
        public CheckboxTableViewer getTableViewer() {
                return tableViewer;
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.preference.PreferencePage#performOk()
-        */
        /** {@inheritDoc} */
        @Override
        public boolean performOk() {
+           if(!CdmStore.isActive()) {
+               return true;
+           }
+
                if(checkNoneChecked()){
                        return false;
                }
@@ -318,9 +286,12 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
 
                CdmStore.getTermManager().setPreferredTerms(preferredTerms, getTerms());
 
+               refresh(getTerms());
+
                PreferencesUtil.firePreferencesChanged(this.getClass());
 
-               return true;
+
+               return super.performOk();
        }
 
        private boolean checkNoneChecked(){
@@ -334,16 +305,8 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                }
        }
 
-       /**
-        * <p>getTermClass</p>
-        *
-        * @return a {@link java.lang.Class} object.
-        */
        protected abstract Class<T> getTermClass();
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
-        */
        @Override
        public ConversationHolder getConversationHolder() {
                if(conversation == null){
@@ -352,9 +315,6 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                return conversation;
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
-        */
        @Override
        public void update(CdmDataChangeMap changeEvents) {
                // implement where needed