fixes #783
authorn.hoffmann <n.hoffmann@localhost>
Tue, 1 Sep 2009 14:29:05 +0000 (14:29 +0000)
committern.hoffmann <n.hoffmann@localhost>
Tue, 1 Sep 2009 14:29:05 +0000 (14:29 +0000)
.gitattributes
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/AbstractMenuPreferences.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/ExtensionTypeMenuPreferences.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/FeatureMenuPreferences.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizard.java [new file with mode: 0644]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizardPage.java [new file with mode: 0644]

index 152f41dd8ecc5a04de16bfb6d27870dd65369f33..b242e31e6dfa4b21cf56aa0243ec8aab9ac5d4c9 100644 (file)
@@ -1125,6 +1125,8 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/TaxonomicPrefere
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizard.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizardEditPage.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizardPage.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizard.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizardPage.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/LoginManager.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/StoreUtil.java -text
index ae7f74fa424c4084e535e8210a931d20e907dc9c..0fb8e30b8939bb699fc0853d040f3caa11f0ae10 100644 (file)
@@ -21,7 +21,6 @@ import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.ITableLabelProvider;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.MouseAdapter;
 import org.eclipse.swt.events.MouseEvent;
@@ -35,9 +34,7 @@ import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
 
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.taxeditor.preference.wizards.FeatureWizard;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
-import eu.etaxonomy.taxeditor.store.VocabularyStore;
 
 /**
  * @author n.hoffmann
@@ -66,10 +63,14 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
        /**
         * Constructs a new menu preference page.
         * 
-        * @param initialVocabulary the initial vocabulary contating all possible entries for the menu
-        * @param preferedTerms a List containtg already prefered terms 
-        * @param title the title of the page
-        * @param description describing text for the preference page
+        * @param initialVocabulary 
+        *                      the initial vocabulary containing all possible entries for the menu
+        * @param preferedTerms 
+        *                      a List containing already preferred terms 
+        * @param title 
+        *                      the title of the page
+        * @param description 
+        *                      describing text for the preference page
         * @param editable
         *                      whether this vocabulary should be editable. Will render "New", "Edit", "Delete" buttons
         *                      Handler for these buttons have to be overriding addEditButtonListeners()
@@ -139,6 +140,28 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                newButton = new Button(buttonContainer, SWT.PUSH);
                newButton.setText("New");
                newButton.setLayoutData(new GridData(SWT.FILL));
+
+               
+               editButton = new Button(buttonContainer, SWT.PUSH);
+               editButton.setText("Edit");
+               editButton.setLayoutData(new GridData(SWT.FILL));
+
+               
+               removeButton = new Button(buttonContainer, SWT.PUSH);
+               removeButton.setText("Remove");
+               removeButton.setLayoutData(new GridData(SWT.FILL));
+
+               
+               addNewButtonListeners();
+               addEditButtonListeners();
+               addDeleteButtonListeners();
+       }
+
+       /**
+        * Implement this method in MenuPreference Pages where the vocabulary should be editable, editable flag 
+        * is set.
+        */
+       protected void addNewButtonListeners() {
                newButton.addMouseListener(new MouseAdapter(){
 
                        /* (non-Javadoc)
@@ -152,10 +175,13 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                        }
                        
                });
-               
-               editButton = new Button(buttonContainer, SWT.PUSH);
-               editButton.setText("Edit");
-               editButton.setLayoutData(new GridData(SWT.FILL));
+       }
+       
+       /**
+        * Implement this method in MenuPreference Pages where the vocabulary should be editable, editable flag 
+        * is set.
+        */
+       protected void addEditButtonListeners() {
                editButton.addMouseListener(new MouseAdapter(){
 
                        /* (non-Javadoc)
@@ -169,10 +195,13 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                        }
                        
                });
-               
-               removeButton = new Button(buttonContainer, SWT.PUSH);
-               removeButton.setText("Remove");
-               removeButton.setLayoutData(new GridData(SWT.FILL));
+       }
+       
+       /**
+        * Implement this method in MenuPreference Pages where the vocabulary should be editable, editable flag 
+        * is set.
+        */
+       protected void addDeleteButtonListeners() {
                removeButton.addMouseListener(new MouseAdapter(){
 
                        /* (non-Javadoc)
@@ -181,20 +210,11 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                        @Override
                        public void mouseUp(MouseEvent e) {
                                super.mouseUp(e);
+
                                StoreUtil.notImplementedMessage();
                        }
                        
                });
-               
-               addEditButtonListeners();
-       }
-
-       /**
-        * Implement this method in MenuPreference Pages where the vocabulary should be editable, editable flag 
-        * is set.
-        */
-       protected void addEditButtonListeners() {
-               // empty default implementation
        }
 
        public void init(IWorkbench workbench) {
@@ -276,6 +296,6 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                PreferencesUtil.firePreferencesChanged(this.getClass());
                
                return true;
-       }       
+       }
        
 }
\ No newline at end of file
index e53d6ff76ab99b184788fceee23713f2b8f1cb6a..451e92073a2eb2b0a9972e7a5848c1e62e95b025 100644 (file)
 package eu.etaxonomy.taxeditor.preference;
 
 import org.apache.log4j.Logger;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
 
 import eu.etaxonomy.cdm.model.common.ExtensionType;
+import eu.etaxonomy.cdm.model.common.VocabularyEnum;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.taxeditor.preference.wizards.VocabularyTermWizard;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.store.VocabularyStore;
 
 /**
@@ -33,4 +40,30 @@ 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.addMouseListener(new MouseAdapter(){
+
+                       /* (non-Javadoc)
+                        * @see org.eclipse.swt.events.MouseAdapter#mouseUp(org.eclipse.swt.events.MouseEvent)
+                        */
+                       @Override
+                       public void mouseUp(MouseEvent e) {
+                               super.mouseUp(e);
+                               VocabularyTermWizard<ExtensionType> wizard = new VocabularyTermWizard<ExtensionType>(VocabularyEnum.ExtensionType); 
+                               
+                               WizardDialog dialog = new WizardDialog(StoreUtil.getShell(), wizard);
+                           dialog.open();
+                           
+                           tableViewer.setInput(VocabularyStore.getExtensionTypes());
+                       }
+                       
+               });
+       }
 }
index 761752c7752d7adc9a144671bdb729b9678d15ac..4c3c324ee427d9fcba6de946fb93f51409532cde 100644 (file)
@@ -8,12 +8,14 @@
 */\r
 package eu.etaxonomy.taxeditor.preference;\r
 \r
+import org.eclipse.jface.viewers.StructuredSelection;\r
 import org.eclipse.jface.wizard.WizardDialog;\r
 import org.eclipse.swt.events.MouseAdapter;\r
 import org.eclipse.swt.events.MouseEvent;\r
 \r
+import eu.etaxonomy.cdm.model.common.VocabularyEnum;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
-import eu.etaxonomy.taxeditor.preference.wizards.FeatureWizard;\r
+import eu.etaxonomy.taxeditor.preference.wizards.VocabularyTermWizard;\r
 import eu.etaxonomy.taxeditor.store.StoreUtil;\r
 import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
 \r
@@ -36,11 +38,11 @@ public class FeatureMenuPreferences extends AbstractMenuPreferences<Feature> {
        \r
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#addEditButtonListeners()\r
+        * \r
+        * TODO refactor into superclass\r
         */\r
        @Override\r
-       protected void addEditButtonListeners() {\r
-               super.addEditButtonListeners();\r
-               \r
+       protected void addNewButtonListeners() {\r
                newButton.addMouseListener(new MouseAdapter(){\r
 \r
                        /* (non-Javadoc)\r
@@ -49,7 +51,7 @@ public class FeatureMenuPreferences extends AbstractMenuPreferences<Feature> {
                        @Override\r
                        public void mouseUp(MouseEvent e) {\r
                                super.mouseUp(e);\r
-                               FeatureWizard wizard = new FeatureWizard(); \r
+                               VocabularyTermWizard<Feature> wizard = new VocabularyTermWizard<Feature>(VocabularyEnum.Feature); \r
                                \r
                                WizardDialog dialog = new WizardDialog(StoreUtil.getShell(), wizard);\r
                            dialog.open();\r
@@ -58,8 +60,32 @@ public class FeatureMenuPreferences extends AbstractMenuPreferences<Feature> {
                        }\r
                        \r
                });\r
-               \r
-               \r
-               // editing a feature is somewhat more complicated, because basically one can only edit the representation.\r
        }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#addEditButtonListeners()\r
+        * \r
+        * TODO refactor into superclass\r
+        */\r
+//     @Override\r
+//     protected void addDeleteButtonListeners() {\r
+//             removeButton.addMouseListener(new MouseAdapter(){\r
+//\r
+//                     /* (non-Javadoc)\r
+//                      * @see org.eclipse.swt.events.MouseAdapter#mouseUp(org.eclipse.swt.events.MouseEvent)\r
+//                      */\r
+//                     @Override\r
+//                     public void mouseUp(MouseEvent e) {\r
+//                             super.mouseUp(e);\r
+//\r
+//                             Feature selected = (Feature) ((StructuredSelection) tableViewer.getSelection()).getFirstElement();\r
+//                         \r
+//                             VocabularyStore.delete(selected);\r
+//                             \r
+//                             \r
+//                         tableViewer.setInput(VocabularyStore.getFeatures());\r
+//                     }\r
+//                     \r
+//             });\r
+//     }\r
 }\r
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizard.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizard.java
new file mode 100644 (file)
index 0000000..1890353
--- /dev/null
@@ -0,0 +1,134 @@
+// $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.wizards;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.wizard.Wizard;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.common.VocabularyEnum;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.VocabularyStore;
+
+/**
+ * @author n.hoffmann
+ * @created 12.06.2009
+ * @version 1.0
+ */
+public class VocabularyTermWizard<T extends DefinedTermBase> extends Wizard {
+       private static final Logger logger = Logger.getLogger(VocabularyTermWizard.class);
+       
+       public T term = null;
+       
+       private VocabularyEnum vocabulary;
+       
+       private boolean editMode = false;
+
+       /**
+        * 
+        */
+       public VocabularyTermWizard(VocabularyEnum vocabulary){         
+               this.vocabulary = vocabulary;
+       }
+       
+       /**
+        * 
+        * @param selectedFeature
+        */
+       public VocabularyTermWizard(VocabularyEnum vocabulary, T selectedTerm){
+               this(vocabulary);
+               this.term = selectedTerm;
+               editMode = true;
+       }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.wizard.Wizard#addPages()
+        */
+       @Override
+       public void addPages() {
+               super.addPages();
+               
+               addPage(new VocabularyTermWizardPage());
+       }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.wizard.Wizard#performFinish()
+        */
+       @Override
+       public boolean performFinish() {
+
+               ConversationHolder conversation = CdmStore.NewTransactionalConversation();
+               
+               if(editMode){
+                       VocabularyStore.updateVocabulary(getVocabulary());
+               }else{
+                       VocabularyStore.saveTerm(getTerm(), getVocabulary());
+               }
+               
+               conversation.commit(true);
+               
+               return true;
+       }
+
+       public VocabularyEnum getVocabulary(){
+               return vocabulary;
+       }
+
+       /**
+        * 
+        * @param term
+        */
+       public void setTerm(T term) {
+               this.term = term;
+       }
+
+       /**
+        * @param text
+        * @param text2
+        * @param text3
+        */
+       public void setTerm(String termString, String label, String labelAbbrev) {
+               Class clazz = vocabulary.getClazz();
+               
+               try {
+                       term = (T) clazz.newInstance();
+                       
+                       term.addRepresentation(new Representation(termString, label, labelAbbrev, Language.DEFAULT()));
+                       
+               } catch (InstantiationException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (IllegalAccessException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+               
+       }
+       
+       /**
+        * @return the term
+        */
+       public T getTerm() {
+               return term;
+       }
+
+       /**
+        * @return the editMode
+        */
+       public boolean isEditMode() {
+               return editMode;
+       }
+
+
+}
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizardPage.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizardPage.java
new file mode 100644 (file)
index 0000000..0cd287c
--- /dev/null
@@ -0,0 +1,129 @@
+// $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.wizards;
+
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+
+/**
+ * @author n.hoffmann
+ * @created 12.06.2009
+ * @version 1.0
+ */
+public class VocabularyTermWizardPage<T extends DefinedTermBase> extends WizardPage implements ModifyListener {
+
+       private Text text_label;
+       private Text text_labelAbbreviation;
+       private Text text_description;
+
+       private T term = null;
+       
+       /**
+        * 
+        */
+       public VocabularyTermWizardPage() {
+               super("VOCABULARY_TERM_WIZARD_PAGE");           
+       }
+
+       private static final Logger logger = Logger
+                       .getLogger(VocabularyTermWizardPage.class);
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+        */
+       public void createControl(Composite parent) {
+               
+               String termLabel = getWizard().getVocabulary().getClazz().getSimpleName();
+               
+               String title = getWizard().isEditMode() ? "Edit " + termLabel : "Create new " + termLabel;
+               this.setTitle(title);
+               
+               Composite composite = new Composite(parent, SWT.NULL);
+               GridLayout gridLayout = new GridLayout();
+               gridLayout.numColumns = 2;
+               gridLayout.horizontalSpacing = SWT.FILL;
+               gridLayout.verticalSpacing = SWT.FILL;
+               composite.setLayout(gridLayout);
+               
+               // label
+               CLabel label_label = new CLabel(composite, SWT.NULL);
+               label_label.setText("Label");
+               
+               text_label = new Text(composite, SWT.BORDER);
+               text_label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+               text_label.addModifyListener(this);
+               
+               // label abbreviation 
+               CLabel label_labelAbbreviation = new CLabel(composite, SWT.NULL);
+               label_labelAbbreviation.setText("Label Abbreviation");
+               
+               text_labelAbbreviation = new Text(composite, SWT.BORDER);
+               text_labelAbbreviation.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+               text_labelAbbreviation.addModifyListener(this);
+               
+               // descriptive text
+               CLabel label_description = new CLabel(composite, SWT.NULL);
+               label_description.setText("Description");
+               label_description.setLayoutData(new GridData(SWT.TOP));
+               
+               text_description = new Text(composite, SWT.BORDER | SWT.MULTI);
+               text_description.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+               text_description.addModifyListener(this);
+               
+               setControl(composite);
+               
+               if(getWizard().getTerm() != null){
+                       DefinedTermBase<T> term = getWizard().getTerm();
+                       text_label.setText(term.getLabel());
+                       // why can't we access labelAbbreviation
+//                     text_labelAbbreviation.setText(feature.get)
+                       // why can't we access the term string?
+//                     text_description.setText(feature.getT)
+               }
+       }
+
+
+       /* (non-Javadoc)
+        * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
+        */
+       public void modifyText(ModifyEvent e) {
+               logger.warn("modified");
+               if(text_description.getText().length() > 0 &&
+                               text_labelAbbreviation.getText().length() > 0 &&
+                               text_label.getText().length() > 0 ){
+                       setPageComplete(true);
+                               
+                       getWizard().setTerm(text_description.getText(), text_label.getText(), text_labelAbbreviation.getText());
+               }
+       }
+
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.wizard.WizardPage#getWizard()
+        */
+       @Override
+       public VocabularyTermWizard getWizard() {
+               return (VocabularyTermWizard) super.getWizard();
+       }
+       
+       
+}