From f1d21b6a348a52f158f2a047f91259c85a0008c8 Mon Sep 17 00:00:00 2001 From: "n.hoffmann" Date: Fri, 12 Jun 2009 17:33:23 +0000 Subject: [PATCH 1/1] Refactored menu preference selection --- .gitattributes | 4 + .../preference/AbstractMenuPreferences.java | 185 ++++++++++++++++++ .../preference/FeaturePreferences.java | 127 ++++++------ .../taxeditor/preference/PreferencesUtil.java | 179 +++++------------ .../preference/RankMenuPreferences.java | 113 ++--------- .../preference/wizards/FeatureWizard.java | 63 ++++++ .../wizards/FeatureWizardEditPage.java | 43 ++++ .../wizards/FeatureWizardNewPage.java | 41 ++++ .../etaxonomy/taxeditor/store/CdmStore.java | 14 +- 9 files changed, 475 insertions(+), 294 deletions(-) create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/AbstractMenuPreferences.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizard.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizardEditPage.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizardNewPage.java diff --git a/.gitattributes b/.gitattributes index 5398fe771..54eea0536 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1008,6 +1008,7 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/MoveTaxonOperati taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/RemoveHomotypicalGroupBasionymOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/SwapSynonymAndAcceptedOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/parser/CdmParserUtil.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/AbstractMenuPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/CdmPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/DescriptionPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/FeaturePreferences.java -text @@ -1017,6 +1018,9 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalCod taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/RankMenuPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/TaxonomicPreferences.java -text +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/FeatureWizardNewPage.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/StoreUtil.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/internal/TaxeditorStorePlugin.java -text diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/AbstractMenuPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/AbstractMenuPreferences.java new file mode 100644 index 000000000..60d30a1a4 --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/AbstractMenuPreferences.java @@ -0,0 +1,185 @@ +// $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 java.util.HashMap; +import java.util.List; +import java.util.Set; + +import org.eclipse.jface.preference.PreferencePage; +import org.eclipse.jface.viewers.CheckboxTableViewer; +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.swt.SWT; +import org.eclipse.swt.events.MouseAdapter; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.IWorkbench; + +import eu.etaxonomy.cdm.model.common.DefinedTermBase; + +/** + * @author n.hoffmann + * @created 12.06.2009 + * @version 1.0 + */ +public abstract class AbstractMenuPreferences extends PreferencePage { + + private Button toggleButton; + protected HashMap menuButtons; + + protected Set vocabulary; + + private List preferedTerms; + + private CheckboxTableViewer tableViewer; + + private boolean state = true; + + /** + * 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 + */ + public AbstractMenuPreferences(Set initialVocabulary, List preferedTerms, String title, String description) { + super(title); + vocabulary = initialVocabulary; + this.preferedTerms = preferedTerms; + setDescription(description); + } + + /** + * Create contents of the preference page + * @param parent + */ + @Override + public Control createContents(Composite parent) { + + Composite container = new Composite(parent, SWT.NULL); + final GridLayout gridLayout = new GridLayout(); + gridLayout.numColumns = 2; + container.setLayout(gridLayout); + + tableViewer = CheckboxTableViewer.newCheckList(container, SWT.NULL); + GridData tableLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false); + tableLayoutData.heightHint = 300; + tableViewer.getTable().setLayoutData(tableLayoutData); + + tableViewer.setContentProvider(new MenuPreferenceContentProvider()); + tableViewer.setLabelProvider(new MenuPreferenceLabelProvider()); + + tableViewer.setInput(vocabulary); + + tableViewer.setCheckedElements(preferedTerms.toArray()); + + Composite buttonContainer = new Composite(container, SWT.NULL); + GridData buttonContainerLayoutData = new GridData(); + buttonContainerLayoutData.verticalAlignment = SWT.TOP; + buttonContainer.setLayoutData(buttonContainerLayoutData); + buttonContainer.setLayout(new GridLayout()); + + createButtons(buttonContainer); + + toggleButton = new Button(buttonContainer, SWT.PUSH); + toggleButton.setText("Toggle"); + toggleButton.addMouseListener(new MouseAdapter(){ + + /* (non-Javadoc) + * @see org.eclipse.swt.events.MouseAdapter#mouseDown(org.eclipse.swt.events.MouseEvent) + */ + @Override + public void mouseDown(MouseEvent e) { + tableViewer.setAllChecked(state); + state = state ? false : true; + } + }); + + return container; + } + + + /** + * @param buttonContainer + */ + protected abstract void createButtons(Composite buttonContainer); + + public void init(IWorkbench workbench) { + setPreferenceStore(PreferencesUtil.getPrefStore()); + } + + /* + * (non-Javadoc) + * @see org.eclipse.jface.preference.PreferencePage#performDefaults() + */ + protected void performDefaults() { + tableViewer.setAllChecked(true); + } + + /** + * + * @author n.hoffmann + * @created 12.06.2009 + * @version 1.0 + */ + private class MenuPreferenceContentProvider implements IStructuredContentProvider{ + + public Object[] getElements(Object inputElement) { + return ((Set) inputElement).toArray(new DefinedTermBase[0]); + } + + public void dispose() {} + + public void inputChanged(Viewer viewer, Object oldInput, + Object newInput) {} + + }; + + /** + * + * @author n.hoffmann + * @created 12.06.2009 + * @version 1.0 + */ + private class MenuPreferenceLabelProvider extends LabelProvider implements ITableLabelProvider{ + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int) + */ + public Image getColumnImage(Object element, int columnIndex) { + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int) + */ + public String getColumnText(Object element, int columnIndex) { + return ((DefinedTermBase)element).getLabel(); + } + + } + + /** + * @return the tableViewer + */ + public CheckboxTableViewer getTableViewer() { + return tableViewer; + }; +} \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/FeaturePreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/FeaturePreferences.java index 42b994816..ac1b08b4c 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/FeaturePreferences.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/FeaturePreferences.java @@ -8,19 +8,16 @@ */ package eu.etaxonomy.taxeditor.preference; -import java.util.HashMap; -import java.util.Map; +import java.util.ArrayList; +import java.util.List; -import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.events.MouseAdapter; +import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; -import eu.etaxonomy.cdm.model.common.TermVocabulary; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.taxeditor.store.CdmStore; @@ -28,80 +25,82 @@ import eu.etaxonomy.taxeditor.store.CdmStore; * @author p.ciardelli * @created 17.09.2008 * @version 1.0 + * @author n.hoffmann */ -public class FeaturePreferences extends PreferencePage implements +public class FeaturePreferences extends AbstractMenuPreferences implements IWorkbenchPreferencePage { public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.feature"; + private Button newButton; + private Button editButton; + private Button removeButton; - private Map featureButtons; - public FeaturePreferences() { - super(); - setDescription("Choose which features you would like to use for descriptive elements."); + super(CdmStore.getFeatures(), PreferencesUtil.getPreferredFeatures(), "Feature Preferences", "Choose which features you would like to use for descriptive elements."); } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.PreferencePage#performOk() + */ + public boolean performOk() { + List preferredFeatures = new ArrayList(); + for (Object element : getTableViewer().getCheckedElements()){ + preferredFeatures.add((Feature) element); + } + + PreferencesUtil.setPreferredFeatures(preferredFeatures); + + return true; + } - /** - * Create contents of the preference page - * @param parent + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#createButtons(org.eclipse.swt.widgets.Composite) */ @Override - public Control createContents(Composite parent) { + protected void createButtons(Composite buttonContainer) { + newButton = new Button(buttonContainer, SWT.PUSH); + newButton.setText("New"); + newButton.addMouseListener(new MouseAdapter(){ - featureButtons = new HashMap(); + /* (non-Javadoc) + * @see org.eclipse.swt.events.MouseAdapter#mouseUp(org.eclipse.swt.events.MouseEvent) + */ + @Override + public void mouseUp(MouseEvent e) { + super.mouseUp(e); + } + + }); - Composite container = new Composite(parent, SWT.NULL); - final GridLayout gridLayout = new GridLayout(); - gridLayout.numColumns = 3; - container.setLayout(gridLayout); + editButton = new Button(buttonContainer, SWT.PUSH); + editButton.setText("Edit"); + editButton.addMouseListener(new MouseAdapter(){ - CdmStore.getDefault(); - TermVocabulary features = CdmStore.getFeatures(); - - for (Feature feature : features) { - - Button button = new Button(container, SWT.CHECK); - button.setText(feature.getLabel()); - featureButtons.put(feature, button); - - if (PreferencesUtil.getFeaturePreference(feature)) { - button.setSelection(true); + /* (non-Javadoc) + * @see org.eclipse.swt.events.MouseAdapter#mouseUp(org.eclipse.swt.events.MouseEvent) + */ + @Override + public void mouseUp(MouseEvent e) { + super.mouseUp(e); } - } + + }); - return container; + removeButton = new Button(buttonContainer, SWT.PUSH); + removeButton.setText("Remove"); + removeButton.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); + } + + }); } - /* (non-Javadoc) - * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) - */ - public void init(IWorkbench workbench) { - setPreferenceStore(PreferencesUtil.getPrefStore()); - } - - /* (non-Javadoc) - * @see org.eclipse.jface.preference.PreferencePage#performDefaults() - */ - protected void performDefaults() { - - // Set all buttons to show feature - for (Button button : featureButtons.values()) { - button.setSelection(true); - } - } - - /* (non-Javadoc) - * @see org.eclipse.jface.preference.PreferencePage#performOk() - */ - public boolean performOk() { - - for (Feature feature : featureButtons.keySet()) { - Button button = featureButtons.get(feature); - PreferencesUtil.setFeaturePreference(feature, button.getSelection()); - } - - return true; - } } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java index 593530679..36f7d8e6c 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java @@ -10,10 +10,7 @@ package eu.etaxonomy.taxeditor.preference; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.List; -import java.util.SortedSet; import org.apache.log4j.Logger; import org.eclipse.jface.preference.IPreferenceStore; @@ -39,19 +36,39 @@ public class PreferencesUtil { private static final Logger logger = Logger .getLogger(PreferencesUtil.class); - private static List preferredFeatureList; - private static List preferredRankList; + + private static final String FEATURE_PREFERENCE = "FEATURE_PREFERENCE"; + private static SourceViewerDecorationSupport decorationSupport; + /** + * + * @return + */ + public static IPreferenceStore getPrefStore() { + return TaxeditorStorePlugin.getDefault().getPreferenceStore(); + } + + /** + * + * @param preferredCode + */ public static void setNomenclaturalCode(String preferredCode) { getPrefStore().setValue(Resources.CODE_PREFERENCE, preferredCode); } + /** + * + */ public static void setDefaultNomenclaturalCode() { setNomenclaturalCode(Resources.DEFAULT_CODE_PREFERENCE); } + /** + * + * @return + */ public static String getPreferredNomenclaturalCodeAsString() { String nameCodePreference = getNameCodePreference(); @@ -78,6 +95,10 @@ public class PreferencesUtil { return null; } + /** + * + * @return + */ private static String getNameCodePreference() { try{ return getPrefStore().getString(Resources.CODE_PREFERENCE); @@ -98,70 +119,28 @@ public class PreferencesUtil { */ public static List getPreferredFeatures() { - // Initialize preferredFeatureSet as necessary - if (preferredFeatureList == null) { - - setPreferredFeatures(new ArrayList()); - - for (Feature feature : CdmStore.getFeatures()) { - - // If the feature is set to show, add it to preferredFeatureSet - if (PreferencesUtil.getFeaturePreference(feature)) { - addPreferredFeature(feature); - } + ArrayList preferedFeatures = new ArrayList(); + + for (Feature feature : CdmStore.getFeatures()) { + if(getPrefStore().getBoolean(getPreferenceKey(feature))){ + preferedFeatures.add(feature); } - - Collections.sort(preferredFeatureList, new Comparator(){ - - public int compare(Feature feature1, Feature feature2) { - String feature1Label = feature1.getLabel(CdmStore.getDefaultLanguage()); - String feature2Label = feature2.getLabel(CdmStore.getDefaultLanguage()); - return feature1Label.compareToIgnoreCase(feature2Label); - } - - }); } - return preferredFeatureList; + return preferedFeatures; } /** - * True if Feature is set to "show" in preferences. * - * @param feature - * @return + * @param preferredFeatureList */ - public static boolean getFeaturePreference(Feature feature) { - - String preferenceKey = getPreferenceKey(feature); + public static void setPreferredFeatures(List preferredFeatureList) { - // If feature does not yet have a pref, set it to true - if (!PreferencesUtil.getPrefStore().contains(preferenceKey)) { - PreferencesUtil.getPrefStore().setDefault(preferenceKey, true); + for (Feature feature : CdmStore.getFeatures()) { + getPrefStore().setValue(getPreferenceKey(feature), preferredFeatureList.contains(feature)); } - - return PreferencesUtil.getPrefStore().getBoolean(preferenceKey); - } - - /** - * Set the show state of a Feature in the - * PreferenceStore. - *

- * Also sets preferredFeatureSet to null to force it be - * re-populated the next time {@link getPreferredFeatures} is called. - * - * @param feature - * @param show - */ - public static void setFeaturePreference(Feature feature, boolean show) { - setPreferredFeatures(null); - PreferencesUtil.getPrefStore().setValue(PreferencesUtil.getPreferenceKey(feature), show); - } - - public static IPreferenceStore getPrefStore() { - return TaxeditorStorePlugin.getDefault().getPreferenceStore(); } - + /** * Construct a unique key using Feature's Uuid * @@ -169,7 +148,7 @@ public class PreferencesUtil { * @return */ private static String getPreferenceKey(Feature feature) { - return Resources.FEATURE_PREFERENCE + return FEATURE_PREFERENCE . concat(".") . concat(feature.getUuid().toString()); } @@ -185,64 +164,28 @@ public class PreferencesUtil { */ public static List getPreferredRanks() { - // Initialize preferredRankSet as necessary - if (preferredRankList == null) { - - setPreferredRanks(new ArrayList()); - - for (Rank rank : CdmStore.getDefault().getRanksInternal()) { - - // If the feature is set to show, add it to preferredFeatureSet - if (PreferencesUtil.getRankPreference(rank)) { - addPreferredRank(rank); - } + ArrayList preferedRanks = new ArrayList(); + + for (Rank rank : CdmStore.getRanks()) { + if(getPrefStore().getBoolean(getPreferenceKey(rank))){ + preferedRanks.add(rank); } - - Collections.sort(preferredRankList, new Comparator(){ - - public int compare(Rank rank1, Rank rank2) { - return rank1.isHigher(rank2) ? 1 : 0; - } - }); - } - return preferredRankList; + return preferedRanks; } - + /** - * True if Rank is set to "show" in preferences. * - * @param rank - * @return + * @param preferedRankList */ - public static boolean getRankPreference(Rank rank) { - - String preferenceKey = PreferencesUtil.getPreferenceKey(rank); - - // If rank does not yet have a pref, set it to true - if (!getPrefStore().contains(preferenceKey)) { - getPrefStore().setDefault(preferenceKey, true); + public static void setPreferredRanks(List preferedRankList) { + for (Rank rank : CdmStore.getRanks()) { + getPrefStore().setValue(getPreferenceKey(rank), preferedRankList.contains(rank)); } - - return getPrefStore().getBoolean(preferenceKey); } - /** - * Set the show state of a Rank in the - * PreferenceStore. - *

- * Also sets preferredRankSet to null to force it be - * re-populated the next time {@link getPreferredRanks} is called. - * - * @param rank - * @param show - */ - public static void setRankPreference(Rank rank, boolean show) { - setPreferredRanks(null); - getPrefStore().setValue(PreferencesUtil.getPreferenceKey(rank), show); - - } + /** * Construct a unique key using Rank's Uuid @@ -289,25 +232,11 @@ public class PreferencesUtil { String code = getNameCodePreference(); return key + "." + code; } - - - public static void setPreferredFeatures(List preferredFeatureList) { - PreferencesUtil.preferredFeatureList = preferredFeatureList; - } - - public static void setPreferredRanks(List preferredRankList) { - PreferencesUtil.preferredRankList = preferredRankList; - } - - public static void addPreferredRank(Rank rank) { - preferredRankList.add(rank); - } - - public static void addPreferredFeature(Feature feature) { - preferredFeatureList.add(feature); - } - + /** + * + * @return + */ public static SourceViewerDecorationSupport getDecorationSupport() { if (decorationSupport == null) { decorationSupport = new SourceViewerDecorationSupport(null, null, null, EditorsUI.getSharedTextColors()); diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/RankMenuPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/RankMenuPreferences.java index 9859862b0..58b12d421 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/RankMenuPreferences.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/RankMenuPreferences.java @@ -8,23 +8,12 @@ */ package eu.etaxonomy.taxeditor.preference; -import java.util.HashMap; +import java.util.ArrayList; import java.util.List; -import java.util.Map; -import org.eclipse.jface.preference.PreferencePage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.MouseAdapter; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; -import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary; import eu.etaxonomy.cdm.model.name.Rank; import eu.etaxonomy.taxeditor.store.CdmStore; @@ -35,93 +24,15 @@ import eu.etaxonomy.taxeditor.store.CdmStore; * @author p.ciardelli * @created 17.09.2008 * @version 1.0 + * @author n.hoffmann */ -public class RankMenuPreferences extends PreferencePage implements +public class RankMenuPreferences extends AbstractMenuPreferences implements IWorkbenchPreferencePage { public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.ranks"; - - private Map rankButtons; - - private Button toggleButton; public RankMenuPreferences() { - super(); - setDescription("Choose which ranks to display in the property sheet drop-down menu."); - } - - - /** - * Create contents of the preference page - * @param parent - */ - @Override - public Control createContents(Composite parent) { - - rankButtons = new HashMap(); - - Composite container = new Composite(parent, SWT.NULL); - final GridLayout gridLayout = new GridLayout(); - gridLayout.numColumns = 3; - container.setLayout(gridLayout); - - CdmStore.getDefault(); - OrderedTermVocabulary ranks = CdmStore.getRanks(); - - for (Rank rank : ranks) { - - Button button = new Button(container, SWT.CHECK); - button.setText(rank.getLabel()); - rankButtons.put(rank, button); - - if (PreferencesUtil.getRankPreference(rank)) { - button.setSelection(true); - } - } - - Composite toggleContainer = new Composite(parent, SWT.NULL); - toggleContainer.setLayout(new GridLayout()); - - toggleButton = new Button(toggleContainer, SWT.TOGGLE); - toggleButton.setText("Toggle Selection"); - toggleButton.addMouseListener(new MouseAdapter(){ - - /* (non-Javadoc) - * @see org.eclipse.swt.events.MouseAdapter#mouseDown(org.eclipse.swt.events.MouseEvent) - */ - @Override - public void mouseDown(MouseEvent e) { - setSelectionForAll(toggleButton.getSelection()); - } - }); - - return container; - } - - - /* (non-Javadoc) - * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) - */ - public void init(IWorkbench workbench) { - setPreferenceStore(PreferencesUtil.getPrefStore()); - } - - /* (non-Javadoc) - * @see org.eclipse.jface.preference.PreferencePage#performDefaults() - */ - protected void performDefaults() { - setSelectionForAll(true); - } - - /** - * Set all buttons to the given value - * - * @param selection true to activate all of the checkboxes, false otherwise - */ - private void setSelectionForAll(boolean selection){ - for (Button button : rankButtons.values()) { - button.setSelection(selection); - } + super(CdmStore.getRanks(), PreferencesUtil.getPreferredRanks(), "Rank Preferences", "Choose which ranks to display in the property sheet drop-down menu."); } /* (non-Javadoc) @@ -129,11 +40,21 @@ public class RankMenuPreferences extends PreferencePage implements */ public boolean performOk() { - for (Rank rank : rankButtons.keySet()) { - Button button = rankButtons.get(rank); - PreferencesUtil.setRankPreference(rank, button.getSelection()); + List preferredRanks = new ArrayList(); + for (Object element : getTableViewer().getCheckedElements()){ + preferredRanks.add((Rank) element); } + PreferencesUtil.setPreferredRanks(preferredRanks); + return true; } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#createButtons(org.eclipse.swt.widgets.Composite) + */ + @Override + protected void createButtons(Composite buttonContainer) { + // not used + } } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizard.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizard.java new file mode 100644 index 000000000..d3b85d702 --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizard.java @@ -0,0 +1,63 @@ +// $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.model.description.Feature; + +/** + * @author n.hoffmann + * @created 12.06.2009 + * @version 1.0 + */ +public class FeatureWizard extends Wizard { + private static final Logger logger = Logger.getLogger(FeatureWizard.class); + + private Feature selectedFeature = null; + + /** + * + */ + public FeatureWizard(){} + + /** + * + * @param selectedFeature + */ + public FeatureWizard(Feature selectedFeature){ + this.selectedFeature = selectedFeature; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.wizard.Wizard#addPages() + */ + @Override + public void addPages() { + super.addPages(); + + addPage(selectedFeature == null ? new FeatureWizardNewPage() : new FeatureWizardEditPage(selectedFeature)); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.wizard.Wizard#performFinish() + */ + @Override + public boolean performFinish() { + // TODO Auto-generated method stub + return false; + } + + + + +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizardEditPage.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizardEditPage.java new file mode 100644 index 000000000..39a20da8c --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizardEditPage.java @@ -0,0 +1,43 @@ +// $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.widgets.Composite; + +import eu.etaxonomy.cdm.model.description.Feature; + +/** + * @author n.hoffmann + * @created 12.06.2009 + * @version 1.0 + */ +public class FeatureWizardEditPage extends WizardPage { + + /** + * @param selectedFeature + */ + public FeatureWizardEditPage(Feature selectedFeature) { + super("Edit Feature"); + } + + private static final Logger logger = Logger + .getLogger(FeatureWizardEditPage.class); + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) + */ + public void createControl(Composite parent) { + // TODO Auto-generated method stub + + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizardNewPage.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizardNewPage.java new file mode 100644 index 000000000..f1a645e36 --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizardNewPage.java @@ -0,0 +1,41 @@ +// $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.widgets.Composite; + +/** + * @author n.hoffmann + * @created 12.06.2009 + * @version 1.0 + */ +public class FeatureWizardNewPage extends WizardPage { + + /** + * + */ + public FeatureWizardNewPage() { + super("Create new Feature"); + } + + private static final Logger logger = Logger + .getLogger(FeatureWizardNewPage.class); + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) + */ + public void createControl(Composite parent) { + // TODO Auto-generated method stub + + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java index 5b4f81c0e..426b3d940 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java @@ -151,8 +151,8 @@ public class CdmStore{ return applicationController.getTermService().getVocabulary(VocabularyEnum.Feature); } - public static TermVocabulary getFeatures() { - return getDefault().getFeaturesInternal(); + public static SortedSet getFeatures() { + return getDefault().getFeaturesInternal().getTermsOrderedByLabels(getDefaultLanguage()); } public SortedSet getNameRelationshipTypes() { @@ -168,17 +168,13 @@ public class CdmStore{ return getDefault().getNomenclaturalStatusTypesInternal().getTerms(); } - public OrderedTermVocabulary getRanksInternal(){ + private OrderedTermVocabulary getRanksInternal(){ TermVocabulary vocabulary = applicationController.getTermService().getVocabulary(VocabularyEnum.Rank); return HibernateProxyHelper.deproxy(vocabulary, OrderedTermVocabulary.class); } - public static OrderedTermVocabulary getRanks(){ - return getDefault().getRanksInternal(); - } - - public static List getPreferredRanks(){ - return PreferencesUtil.getPreferredRanks(); + public static SortedSet getRanks(){ + return getDefault().getRanksInternal().getOrderedTerms(null); } public List getRootTaxa() { -- 2.34.1