eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/preference/FeaturePreferences.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/preference/InitializeDbPreferences.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/preference/NomenclaturalCodePreferences.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/preference/RankMenuPreferences.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/preference/TaxonomicPreferences.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/AnnotationPropertySource.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/AnnotationsDialog.java -text
id="eu.etaxonomy.taxeditor.preferences.feature"\r
name="Preferred Features">\r
</page>\r
+ <page\r
+ category="eu.etaxonomy.taxeditor.preferences.taxonomic"\r
+ class="eu.etaxonomy.taxeditor.preference.RankMenuPreferences"\r
+ id="eu.etaxonomy.taxeditor.preferences.ranks"\r
+ name="Preferred Ranks">\r
+ </page>\r
</extension>\r
<extension\r
id="product1"\r
name="%productName">\r
<property\r
name="windowImages"\r
- value="eclipse.gif,eclipse32.gif,eclipse48.gif,eclipse.png,eclipse32.png">\r
+ value="icons/edit_16x16.gif">\r
</property>\r
<property\r
name="aboutText"\r
value="%productBlurb">\r
</property>\r
- <property\r
- name="aboutImage"\r
- value="eclipse_lg.gif">\r
- </property>\r
<property\r
name="startupForegroundColor"\r
value="C8D5EA">\r
value="plugin_customization.ini">\r
</property>\r
</product>\r
+ </extension>\r
+ <extension\r
+ id="TaxEditorProduct"\r
+ point="org.eclipse.core.runtime.products">\r
+ <product\r
+ application="eu.etaxonomy.taxeditor.application"\r
+ name="%productName">\r
+ <property\r
+ name="windowImages"\r
+ value="icons/edit_16x16.gif,eclipse32.gif,eclipse48.gif,eclipse.png,eclipse32.png">\r
+ </property>\r
+ <property\r
+ name="aboutText"\r
+ value="%productBlurb">\r
+ </property>\r
+ <property\r
+ name="aboutImage"\r
+ value="eclipse_lg.gif">\r
+ </property>\r
+ <property\r
+ name="startupForegroundColor"\r
+ value="C8D5EA">\r
+ </property>\r
+ <property\r
+ name="startupProgressRect"\r
+ value="0,280,455,15">\r
+ </property>\r
+ <property\r
+ name="startupMessageRect"\r
+ value="7,220,441,20">\r
+ </property>\r
+ <property\r
+ name="preferenceCustomization"\r
+ value="plugin_customization.ini">\r
+ </property>\r
+ </product>\r
</extension>
</plugin>\r
PREFERENCES\r
************************************************************************************** */\r
public static final String FEATURE_PREFERENCE = "feature_preference";\r
+ public static final String RANK_PREFERENCE = "rank_preference";\r
\r
}\r
import org.eclipse.core.commands.operations.IOperationHistory;\r
import org.eclipse.core.commands.operations.IUndoContext;\r
import org.eclipse.core.commands.operations.OperationHistoryFactory;\r
-import org.eclipse.core.runtime.Assert;\r
import org.eclipse.jface.preference.IPreferenceStore;\r
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.swt.widgets.Control;\r
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.editor.CompositeBorderDecorator;\r
private static final Logger logger = Logger.getLogger(UiUtil.class);\r
\r
private static Set<Feature> preferredFeatureSet;\r
+ private static Set<Rank> preferredRankSet;\r
\r
public static IViewPart getPropertySheet() {\r
for (IViewReference reference : getActivePage().getViewReferences()) {\r
if (preferredFeatureSet == null) {\r
\r
preferredFeatureSet = new HashSet<Feature>(); \r
- \r
- TermVocabulary<Feature> features = CdmUtil.getDescriptionService().\r
- getDefaultFeatureVocabulary();\r
- for (Feature feature : features) {\r
+ \r
+ for (Feature feature : CdmUtil.getFeatures()) {\r
\r
// If the feature is set to show, add it to preferredFeatureSet\r
if (getFeaturePreference(feature)) {\r
}\r
\r
/**\r
- * True if <code>feature</code> is set to "show" in preferences.\r
+ * True if <code>Feature</code> is set to "show" in preferences.\r
* \r
* @param feature\r
* @return\r
}\r
\r
/**\r
- * Construct a unique key using feature's Uuid\r
+ * Construct a unique key using <code>Feature</code>'s <code>Uuid</code>\r
* \r
* @param feature\r
* @return\r
. concat(feature.getUuid().toString());\r
}\r
\r
+ /**\r
+ * Returns a <code>Set</code> of the <code>Rank</code>s that the user has chosen\r
+ * to have shown in preferences.\r
+ * </p>\r
+ * <p>\r
+ * <code>Rank</code>s are shown unless otherwise specified.\r
+ * </p>\r
+ * @return\r
+ */\r
+ public static Set<Rank> getPreferredRanks() {\r
+ \r
+ // Initialize preferredFeatureSet as necessary\r
+ if (preferredRankSet == null) {\r
+ \r
+ preferredRankSet = new HashSet<Rank>(); \r
+ \r
+ for (Rank rank : CdmUtil.getRanks()) {\r
+ \r
+ // If the feature is set to show, add it to preferredFeatureSet\r
+ if (getRankPreference(rank)) {\r
+ preferredRankSet.add(rank);\r
+ }\r
+ }\r
+ \r
+ }\r
+ return preferredRankSet;\r
+ } \r
+ \r
+ /**\r
+ * True if <code>Rank</code> is set to "show" in preferences.\r
+ * \r
+ * @param rank\r
+ * @return\r
+ */\r
+ public static boolean getRankPreference(Rank rank) {\r
+ \r
+ String preferenceKey = getPreferenceKey(rank);\r
+ \r
+ // If rank does not yet have a pref, set it to true\r
+ if (!getPrefStore().contains(preferenceKey)) {\r
+ getPrefStore().setDefault(preferenceKey, true);\r
+ }\r
+ \r
+ return getPrefStore().getBoolean(preferenceKey);\r
+ }\r
+ \r
+ /**\r
+ * Set the show state of a <code>Rank</code> in the \r
+ * <code>PreferenceStore</code>.\r
+ * <p>\r
+ * Also sets <code>preferredRankSet</code> to null to force it be\r
+ * re-populated the next time {@link #getPreferredRanks()} is called.\r
+ * \r
+ * @param rank\r
+ * @param show\r
+ */ \r
+ public static void setRankPreference(Rank rank, boolean show) {\r
+ preferredRankSet = null;\r
+ getPrefStore().setValue(getPreferenceKey(rank), show);\r
+ \r
+ }\r
+ \r
+ /**\r
+ * Construct a unique key using <code>Rank</code>'s <code>Uuid</code>\r
+ * \r
+ * @param feature\r
+ * @return\r
+ */\r
+ private static String getPreferenceKey(Rank rank) {\r
+ return ITaxEditorConstants.RANK_PREFERENCE \r
+ . concat(".")\r
+ . concat(rank.getUuid().toString());\r
+ } \r
+ \r
/**\r
* @return\r
*/\r
}\r
return null;\r
}\r
-\r
}
\ No newline at end of file
if (event.getProperty().equals(\r
ITaxEditorConstants.SYNONYM)) {\r
// Delete namecomposite\r
- // TODO: put this in taxonFactory?\r
composite.dispose(); \r
}\r
}\r
import org.eclipse.core.runtime.Status;\r
import org.eclipse.jface.action.Action;\r
import org.eclipse.jface.resource.ImageDescriptor;\r
-import org.eclipse.jface.util.IPropertyChangeListener;\r
-import org.eclipse.jface.util.PropertyChangeEvent;\r
-import org.eclipse.ui.forms.IManagedForm;\r
+import org.eclipse.swt.widgets.Composite;\r
\r
+import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.UiUtil;\r
-import eu.etaxonomy.taxeditor.actions.cdm.DeleteMisappliedNameFromTaxonAction;\r
-import eu.etaxonomy.taxeditor.editor.description.DescriptionElementComposite;\r
-import eu.etaxonomy.taxeditor.editor.name.NameComposite;\r
\r
/**\r
* @author p.ciardelli\r
private static final Logger logger = Logger\r
.getLogger(DeleteElementCompositeAction.class);\r
\r
- private static String text = "Delete description element from taxon";\r
+ private static String text = "Delete description element";\r
private ImageDescriptor image = TaxEditorPlugin.getDefault()\r
.getImageDescriptor(ITaxEditorConstants.ACTIVE_DELETE_ICON);\r
\r
- private DescriptionElementComposite composite;\r
private IUndoableOperation operation;\r
private DescriptionElementBase descriptionElement;\r
private Taxon taxon;\r
\r
+ private Composite elementComposite;\r
+ private Composite featureComposite;\r
+ private Composite descriptionComposite;\r
+ private DescriptionBase description;\r
+\r
private DeleteElementCompositeAction() {\r
super(text);\r
setImageDescriptor(image);\r
}\r
\r
- public DeleteElementCompositeAction(DescriptionElementComposite composite, \r
+ public DeleteElementCompositeAction(Composite elementComposite, \r
Taxon taxon) {\r
this();\r
\r
- if (composite.getData() instanceof DescriptionElementBase) {\r
- this.descriptionElement = (DescriptionElementBase) composite.getData();\r
+ this.elementComposite = elementComposite;\r
+ \r
+ if (elementComposite.getData() instanceof DescriptionElementBase) {\r
+ this.descriptionElement = (DescriptionElementBase) elementComposite.getData();\r
} else {\r
throw new IllegalArgumentException(\r
- "This action requires a composite with a DescriptionElementBase in its data field.");\r
+ "This action requires an elementComposite with a DescriptionElementBase in its data field.");\r
}\r
-\r
this.taxon = taxon;\r
- this.composite = composite;\r
+ \r
+ featureComposite = elementComposite.getParent();\r
+ descriptionComposite = featureComposite.getParent();\r
+ if (descriptionComposite.getData() instanceof DescriptionBase) {\r
+ this.description = (DescriptionBase) descriptionComposite.getData();\r
+ } else {\r
+ throw new IllegalArgumentException(\r
+ "This action requires that the element composite's \"grandparent\" has a Description in its data field.");\r
+ }\r
\r
operation = new DeleteElementOperation();\r
}\r
@Override\r
public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
throws ExecutionException {\r
- // Delete synonym from taxon\r
+ \r
+ // Delete element from description\r
+ \r
+ \r
// Action action = new DeleteMisappliedNameFromTaxonAction(misappliedName, taxon);\r
// action.addPropertyChangeListener(new IPropertyChangeListener() {\r
// @Override\r
// public void propertyChange(PropertyChangeEvent event) {\r
// if (event.getProperty().equals(\r
// ITaxEditorConstants.MISAPPLIED_NAME)) {\r
-// composite.dispose(); \r
+// elementComposite.dispose(); \r
// }\r
// }\r
// }); \r
package eu.etaxonomy.taxeditor.editor;\r
\r
import org.apache.log4j.Logger;\r
+import org.eclipse.core.runtime.Assert;\r
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.ui.forms.IManagedForm;\r
\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+\r
/** \r
- * Formats EditorGroupComposite with cosmetic and layout properties specific to the\r
+ * Formats <code>GroupComposite</code> with cosmetic and layout properties specific to the\r
* Editor. This should be used to maintain a consistent look and feel for all Editor \r
- * freetext area group components, such as HomotypicalGroup.\r
+ * freetext area group components, such as <code>HomotypicalGroup</code>.\r
+ * <p>\r
+ * Its <code>IManagedForm</code> is required to have a <code>Taxon</code> in its \r
+ * own <code>getData()</code>.\r
+ * </p> \r
* \r
* @author p.ciardelli\r
* @created 02.06.2008\r
public class EditorGroupComposite extends GroupComposite {\r
private static final Logger logger = Logger.getLogger(EditorGroupComposite.class);\r
\r
- IManagedForm managedForm;\r
+ private IManagedForm managedForm;\r
+ private Taxon taxon;\r
\r
public EditorGroupComposite(Composite parent, IManagedForm managedForm, Object data) {\r
this(parent, managedForm);\r
\r
this.managedForm = managedForm;\r
\r
+ Object formData = managedForm.getForm().getBody().getData();\r
+ Assert.isTrue(formData instanceof Taxon, \r
+ "Managed form must have a Taxon in its data field.");\r
+ taxon = (Taxon) formData;\r
+ \r
createBorderSupport();\r
}\r
\r
public IManagedForm getManagedForm() {\r
return managedForm;\r
}\r
+ \r
+ public Taxon getTaxon() {\r
+ return taxon;\r
+ }\r
}
\ No newline at end of file
import org.eclipse.ui.forms.widgets.TableWrapData;\r
import org.eclipse.ui.forms.widgets.TableWrapLayout;\r
\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
\r
/** \r
* Formats <code>GroupedComposite</code> with cosmetic and layout properties specific to the\r
* freetext area components, such as DescriptionElementComposite.\r
* <p>\r
* Requires an <code>IManagedForm</code>, whose <code>input</code> is set to the contents\r
- * of <code>getData()</code> when the <code>EditorGroupedComposite</code> gets focus, i.e. to\r
+ * of {@link #getData()} when the <code>EditorGroupedComposite</code> gets focus, i.e. to\r
* populate the property sheet with the data.\r
* </p>\r
* <p>\r
+ * The <code>IManagedForm</code> is also required to have a <code>Taxon</code> in its \r
+ * own <code>getData()</code>.\r
+ * </p> \r
+ * <p>\r
* The <code>IManagedForm</code> can also used for drawing borders by calling the method \r
* <code>createBorderSupport()</code>.\r
* </p>\r
\r
protected TextViewer textViewer;\r
protected TableWrapLayout layout;\r
- \r
- ISelectionWrapper selectionWrapper;\r
- \r
+ private ISelectionWrapper selectionWrapper;\r
private Label draggableLabel;\r
-\r
protected IManagedForm managedForm;\r
+ private Taxon taxon;\r
\r
/**\r
* @param parent\r
super(parent);\r
\r
this.managedForm = managedForm;\r
+ \r
+ Object formData = managedForm.getForm().getBody().getData();\r
+ Assert.isTrue(formData instanceof Taxon, \r
+ "Managed form must have a Taxon in its data field.");\r
+ taxon = (Taxon) formData;\r
}\r
\r
/**\r
setDraggableControl(draggableLabel);\r
}\r
\r
+ public Taxon getTaxon() {\r
+ return taxon;\r
+ }\r
+ \r
/**\r
* @return\r
*/\r
import org.eclipse.ui.forms.widgets.TableWrapData;\r
\r
import eu.etaxonomy.cdm.model.common.Language;\r
-import eu.etaxonomy.cdm.model.common.LanguageString;\r
-import eu.etaxonomy.cdm.model.common.MultilanguageText;\r
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
import eu.etaxonomy.cdm.model.description.TextData;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.actions.ui.description.DeleteElementCompositeAction;\r
import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
import eu.etaxonomy.taxeditor.editor.EditorGroupedComposite;\r
import eu.etaxonomy.taxeditor.editor.LineWrapSupport;\r
\r
createMenu();\r
\r
-// managedForm.getForm().layout();\r
+ managedForm.getForm().getBody().layout();\r
}\r
\r
/**\r
\r
setDirty(true);\r
}\r
- \r
});\r
}\r
\r
}\r
}\r
});\r
- featuresMenu.add(new Action() {\r
- \r
- });\r
+ \r
+ // Important: add an empty action. Otherwise, when the main menu sees that\r
+ // there are no actions in the submenu, it will not be shown\r
+ featuresMenu.add(new Action() {});\r
\r
ContextMenu contextMenu = createContextMenu();\r
contextMenu.addSubmenu(featuresMenu);\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
contextMenu.addAction(deleteMisappliedNameAction);\r
}\r
\r
- /**\r
- * The hierarchy of the DescriptionElementComposite should always be:\r
- * <p>\r
- * --------> DescriptionElementComposite.getData() -> Taxon or Synonym\r
- * <p>\r
- * --------> DescriptionElementComposite.getParent().getData() -> HomotypicalGroup or <br>\r
- * -------->\r
- * DescriptionElementComposite.getParent().getData(ITaxEditorConstants.MISAPPLIED_NAME) !=\r
- * null\r
- * <p>\r
- * --------> DescriptionElementComposite.getParent().getParent().getData() -> Taxon\r
- * <p>\r
- * An error will be returned if this is not the case.\r
- * \r
- * @return\r
- */\r
- private Taxon getTaxon() {\r
- Composite parent = getParent();\r
- Composite grandParent = parent.getParent();\r
- if (grandParent != null) {\r
- Object parentData = grandParent.getData();\r
- if (parentData instanceof Taxon) {\r
- return (Taxon) parentData;\r
- }\r
- }\r
- throw new IllegalArgumentException(\r
- "The parent of the DescriptionElementComposite's parent does not have a Taxon in its data field as required.");\r
- }\r
-\r
public boolean setParent(Composite parent) {\r
\r
if (super.setParent(parent)) {\r
\r
import java.util.HashSet;\r
import java.util.Set;\r
+import java.util.SortedSet;\r
\r
import org.apache.log4j.Logger;\r
\r
import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
import eu.etaxonomy.cdm.api.service.INameService;\r
import eu.etaxonomy.cdm.api.service.ITaxonService;\r
+import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
+import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
import eu.etaxonomy.cdm.model.name.NameRelationship;\r
import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
public class CdmUtil {\r
private static final Logger logger = Logger.getLogger(CdmUtil.class);\r
\r
- static INonViralNameParser nonViralNameParser;\r
+ private static INonViralNameParser nonViralNameParser;\r
+ \r
+ private static TermVocabulary<Feature> features;\r
+ private static SortedSet<Rank> ranks;\r
\r
/**\r
* Checks whether synonym's name is the basionym for ALL names \r
return TaxEditorPlugin.getDefault().getDescriptionService();\r
}\r
\r
+ public static TermVocabulary<Feature> getFeatures() {\r
+ if (features == null) {\r
+ features = CdmUtil.getDescriptionService().\r
+ getDefaultFeatureVocabulary();\r
+ }\r
+ return features;\r
+ }\r
+ \r
+ public static SortedSet<Rank> getRanks() {\r
+ if (ranks == null) {\r
+ OrderedTermVocabulary<Rank> rankVocabulary = TaxEditorPlugin.getDefault().getRankVocabulary();\r
+ ranks = rankVocabulary.getOrderedTerms(null);\r
+ }\r
+ return ranks;\r
+ }\r
+ \r
/**\r
* @param searchText\r
* @param taxon\r
gridLayout.numColumns = 3;\r
container.setLayout(gridLayout);\r
\r
- TermVocabulary<Feature> features = CdmUtil.getDescriptionService().\r
- getDefaultFeatureVocabulary();\r
+ TermVocabulary<Feature> features = CdmUtil.getFeatures();\r
+ \r
for (Feature feature : features) {\r
\r
Button button = new Button(container, SWT.CHECK);\r
}\r
});\r
\r
- setButton(getPreferenceStore().getString(ITaxEditorConstants.CODE_PREFERENCE)); \r
+ preferredCode = getPreferenceStore().getString(ITaxEditorConstants.CODE_PREFERENCE);\r
+ if (preferredCode == null) {\r
+ getPreferenceStore().setValue(\r
+ ITaxEditorConstants.CODE_PREFERENCE, ITaxEditorConstants.DEFAULT_CODE_PREFERENCE);\r
+ }\r
+ setButton(preferredCode); \r
\r
return container;\r
}\r
}\r
\r
public boolean performOk() {\r
- TaxEditorPlugin.getDefault().getPreferenceStore().\r
- setValue(ITaxEditorConstants.CODE_PREFERENCE, preferredCode);\r
+ getPreferenceStore().setValue(\r
+ ITaxEditorConstants.CODE_PREFERENCE, preferredCode);\r
return true;\r
}\r
\r
--- /dev/null
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.taxeditor.preference;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+import java.util.SortedSet;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.preference.PreferencePage;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.layout.GridLayout;\r
+import org.eclipse.swt.widgets.Button;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Control;\r
+import org.eclipse.ui.IWorkbench;\r
+import org.eclipse.ui.IWorkbenchPreferencePage;\r
+\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.taxeditor.UiUtil;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
+\r
+/**\r
+ * Allows the user to choose which <code>Rank</code>s to display in the \r
+ * <code>PropertySheet</code> drop-down menu for <code>TaxonNameBase</code>.\r
+ * \r
+ * @author p.ciardelli\r
+ * @created 17.09.2008\r
+ * @version 1.0\r
+ */\r
+public class RankMenuPreferences extends PreferencePage implements\r
+ IWorkbenchPreferencePage {\r
+ private static final Logger logger = Logger\r
+ .getLogger(RankMenuPreferences.class);\r
+\r
+ public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.ranks";\r
+ \r
+ private Map<Rank, Button> rankButtons;\r
+\r
+ public RankMenuPreferences() {\r
+ super();\r
+ setDescription("Choose which ranks to display in the property sheet drop-down menu.");\r
+ }\r
+\r
+\r
+ /**\r
+ * Create contents of the preference page\r
+ * @param parent\r
+ */\r
+ @Override\r
+ public Control createContents(Composite parent) {\r
+\r
+ rankButtons = new HashMap<Rank, Button>();\r
+ \r
+ Composite container = new Composite(parent, SWT.NULL);\r
+ final GridLayout gridLayout = new GridLayout();\r
+ gridLayout.numColumns = 3;\r
+ container.setLayout(gridLayout);\r
+\r
+ SortedSet<Rank> ranks = CdmUtil.getRanks();\r
+ \r
+ for (Rank rank : ranks) {\r
+ \r
+ Button button = new Button(container, SWT.CHECK);\r
+ button.setText(rank.getLabel());\r
+ rankButtons.put(rank, button);\r
+ \r
+ if (UiUtil.getRankPreference(rank)) {\r
+ button.setSelection(true);\r
+ }\r
+ }\r
+ \r
+ return container;\r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)\r
+ */\r
+ public void init(IWorkbench workbench) {\r
+ setPreferenceStore(UiUtil.getPrefStore());\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.jface.preference.PreferencePage#performDefaults()\r
+ */\r
+ protected void performDefaults() {\r
+ \r
+ // Set all buttons to show feature\r
+ for (Button button : rankButtons.values()) {\r
+ button.setSelection(true);\r
+ }\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.jface.preference.PreferencePage#performOk()\r
+ */\r
+ public boolean performOk() {\r
+ \r
+ for (Rank rank : rankButtons.keySet()) {\r
+ Button button = rankButtons.get(rank);\r
+ UiUtil.setRankPreference(rank, button.getSelection());\r
+ }\r
+ \r
+ return true;\r
+ }\r
+}\r
import org.eclipse.ui.views.properties.TextPropertyDescriptor;\r
\r
import eu.etaxonomy.cdm.model.common.Annotation;\r
-import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.UiUtil;\r
import eu.etaxonomy.taxeditor.propertysheet.AnnotationPropertySource;\r
import eu.etaxonomy.taxeditor.propertysheet.AnnotationsPropertyDescriptor;\r
import eu.etaxonomy.taxeditor.propertysheet.MarkersPropertySource;\r
// ***********************************************************\r
// RANKS\r
// ***********************************************************\r
- static OrderedTermVocabulary<Rank> rankVocabulary = TaxEditorPlugin.getDefault().getRankVocabulary();\r
- static Rank[] ranks = null;\r
- static String[] P_RANK_MENU = null;\r
- private static void populateRanks() {\r
+ Rank[] ranks = null;\r
+ String[] P_RANK_MENU = null;\r
+ private void populateRanks() {\r
\r
// Get terms from rank vocabulary\r
List<Rank> ranksList = new ArrayList<Rank>();\r
- ranksList.addAll(rankVocabulary.getOrderedTerms(null));\r
+ ranksList.addAll(UiUtil.getPreferredRanks());\r
+ \r
// Populate ranks menu labels \r
List<String> ranksMenuList = new ArrayList<String>();\r
for (Rank rank : ranksList) {\r