eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/RulerWithIcon.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/SynonymComposite.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/reference/IReferenceSearch.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/reference/ReferenceSearchDialog.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/reference/ReferenceSelectComposite.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/handlers/AddTaxonomicChildHandler.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/handlers/CreateHeterotypicSynonymHandler.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/handlers/CreateHomotypicSynonymHandler.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/DescriptionUtil.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/ICdmSessionDataRepository.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/ICdmTaxonSetListener.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/IDistributionInfoProvider.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/LanguageUtil.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/NameEditorInput.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/ReferenceUtil.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/namerelations/wizard/NameRelationWizard.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/namerelations/wizard/NameRelationWizardModel.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/namerelations/wizard/NameRelationsListWizard.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/IReferenceSearch.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/NomenclaturalReferencePropertySource.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/ReferencePropertySource.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/ReferenceSearchDescriptor.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/ReferenceSearchDialog.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/SingleRefTypePropertySource.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/TypeCollectionPropertySource.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/TypePropertyDescriptor.java -text
import org.apache.log4j.Logger;\r
import org.eclipse.core.runtime.FileLocator;\r
import org.eclipse.core.runtime.IPath;\r
+import org.eclipse.core.runtime.IStatus;\r
+import org.eclipse.core.runtime.MultiStatus;\r
import org.eclipse.core.runtime.Path;\r
+import org.eclipse.core.runtime.Status;\r
+import org.eclipse.jface.dialogs.ErrorDialog;\r
import org.eclipse.jface.resource.FontRegistry;\r
import org.eclipse.jface.resource.ImageDescriptor;\r
import org.eclipse.jface.resource.ImageRegistry;\r
import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
import eu.etaxonomy.cdm.database.ICdmDataSource;\r
import eu.etaxonomy.cdm.model.common.init.TermNotFoundException;\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;\r
import eu.etaxonomy.taxeditor.datasource.CdmTransactionController;\r
import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
public PropertySheetPage getPropertySheetPage() {\r
return propertySheetPage;\r
}\r
-}
\ No newline at end of file
+}\r
import org.eclipse.core.runtime.IStatus;\r
import org.eclipse.core.runtime.Status;\r
import org.eclipse.jface.action.IStatusLineManager;\r
+import org.eclipse.jface.dialogs.ErrorDialog;\r
import org.eclipse.jface.window.Window;\r
import org.eclipse.swt.widgets.Shell;\r
import org.eclipse.ui.IViewPart;\r
}\r
}\r
\r
-// public static URL getUrlFromDialog() {\r
-// UrlDialog dialog = new UrlDialog(GlobalController.getShell(), \r
-// "Enter image URL", \r
-// "Enter the new image's URL:");\r
-// if (dialog.open() == Window.CANCEL) {\r
-// return null;\r
-// }\r
-// return dialog.getUrl();\r
-// }\r
+ /**\r
+ * Displays exception details in a dialog. Only shows first line in stack trace.\r
+ *<p>\r
+ *To show entire stack trace, implement following: \r
+ * http://rubenlaguna.com/wp/2007/07/25/eclipse-error-reporting-exception-stacktrace-details/\r
+ */\r
+ public static void openError(Exception exception) {\r
+ IStatus status = new Status(IStatus.ERROR, TaxEditorPlugin.PLUGIN_ID, \r
+ "Joe mama", exception); \r
+ ErrorDialog.openError(GlobalController.getShell(), \r
+ "Could not init application controller", \r
+ "Could not init application controller", \r
+ status);\r
+ }\r
}
\ No newline at end of file
\r
import java.util.ArrayList;\r
import java.util.List;\r
+import java.util.Map;\r
\r
import org.apache.log4j.Logger;\r
import org.eclipse.jface.dialogs.Dialog;\r
import org.eclipse.swt.widgets.Label;\r
import org.eclipse.swt.widgets.Shell;\r
\r
+import eu.etaxonomy.cdm.api.service.ILocationService;\r
import eu.etaxonomy.cdm.model.description.Distribution;\r
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;\r
import eu.etaxonomy.cdm.model.location.NamedArea;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.editor.reference.ReferenceSelectComposite;\r
import eu.etaxonomy.taxeditor.model.DescriptionUtil;\r
import eu.etaxonomy.taxeditor.model.IDistributionInfoProvider;\r
\r
\r
private String title;\r
private String message;\r
-\r
+ \r
+ private static final String PRESENCE_ABSENCE_SEPARATOR = "----------------------------";\r
+ /**\r
+ * Number of area menus to show\r
+ */\r
+ private static final int NUM_AREA_MENUS = 4; \r
/**\r
* UI elements\r
*/\r
private CCombo vocabTypeCombo;\r
- private CCombo areaCombo1;\r
- private CCombo areaCombo2;\r
- private CCombo areaCombo3;\r
- private CCombo areaCombo4;\r
+ private CCombo[] areaCombos = new CCombo[NUM_AREA_MENUS];\r
+// private CCombo areaCombo1;\r
+// private CCombo areaCombo2;\r
+// private CCombo areaCombo3;\r
+// private CCombo areaCombo4;\r
private CCombo presenceAbsenceCombo;\r
-\r
+ private ReferenceSelectComposite referenceComposite;\r
/**\r
* Distribution fields\r
*/\r
- private PresenceAbsenceTermBase<?> status;\r
private NamedArea area;\r
+ private PresenceAbsenceTermBase<?> presenceAbsenceStatus;\r
private Distribution distribution;\r
-\r
- \r
+ private Object vocabType;\r
+ private ReferenceBase reference;\r
+ /**\r
+ * Lists to populate drop downs\r
+ */\r
private List<Object> vocabTypes;\r
-// private List<PresenceTerm> presenceTerms;\r
-// private List<AbsenceTerm> absenceTerms;\r
-\r
- private PresenceAbsenceTermBase presenceAbsence;\r
-\r
- private List<PresenceAbsenceTermBase> presenceAbsenceTerms;\r
-\r
- private static PresenceAbsenceTermBase lastPresenceAbsence;\r
-\r
- private static final String PRESENCE_ABSENCE_SEPARATOR = "----------------------------";\r
+// private List<NamedArea> areas1;\r
+// private List<NamedArea> areas2;\r
+// private List<NamedArea> areas3;\r
+// private List<NamedArea> areas4;\r
+// private List<List<NamedArea>> areas; // = new ArrayList<NamedArea>[4]; \r
+ private List<PresenceAbsenceTermBase<?>> presenceAbsenceTerms;\r
+ private List<List<NamedArea>> areas = new ArrayList<List<NamedArea>>();\r
+ private NamedArea[] selectedAreas = new NamedArea[NUM_AREA_MENUS];\r
+ private Map<NamedArea, List<NamedArea>> areaChildren;\r
+ private Map<NamedArea, NamedArea> areaParents;\r
+ /**\r
+ * Static fields to persist default values\r
+ */\r
+ private static ReferenceBase lastReference;\r
+ private static PresenceAbsenceTermBase<?> lastPresenceAbsence;\r
+ private static Object lastVocabType;\r
\r
/**\r
* @param shell\r
* Set inputs to selections from last time dialog was used.\r
*/\r
private void recallPreviousSelections() {\r
-// if (lastVocab != null) {\r
-// vocab = lastVocab;\r
-// }\r
+ if (lastVocabType != null) {\r
+ vocabType = lastVocabType;\r
+ }\r
// if (lastArea1 != null) {\r
// area1 = lastArea1;\r
// }\r
// area4 = lastArea4;\r
// }\r
if (lastPresenceAbsence != null) {\r
- presenceAbsence = lastPresenceAbsence; \r
+ presenceAbsenceStatus = lastPresenceAbsence; \r
+ }\r
+ if (lastReference != null) {\r
+ reference = lastReference;\r
}\r
}\r
\r
return distribution;\r
}\r
\r
- /*\r
+ /*y\r
* (non-Javadoc)\r
* \r
* @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)\r
Composite composite = (Composite) super.createDialogArea(parent);\r
// create message\r
if (message != null) {\r
- createText(message, composite, parent);\r
+ createLabel(message, composite, parent);\r
}\r
- createText("Select an area vocabulary:", composite, parent);\r
+ createLabel("Select an area vocabulary:", composite, parent);\r
// create vocab type\r
vocabTypeCombo = createCombo(composite);\r
vocabTypeCombo.addSelectionListener(new SelectionAdapter() {\r
}\r
});\r
// create areas\r
- createText("Select an area:", composite, parent);\r
- areaCombo1 = createCombo(composite); \r
- areaCombo1.addSelectionListener(new SelectionAdapter() {\r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- selectArea(1);\r
- }\r
- });\r
- areaCombo2 = createCombo(composite);\r
- areaCombo2.addSelectionListener(new SelectionAdapter() {\r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- selectArea(2);\r
- }\r
- });\r
- areaCombo3 = createCombo(composite);\r
- areaCombo3.addSelectionListener(new SelectionAdapter() {\r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- selectArea(3);\r
- }\r
- });\r
- areaCombo4 = createCombo(composite);\r
- areaCombo4.addSelectionListener(new SelectionAdapter() {\r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- selectArea(4);\r
- }\r
- });\r
+ createLabel("Select an area:", composite, parent);\r
+ for (int i = 0; i < NUM_AREA_MENUS; i++) {\r
+ areaCombos[i] = createCombo(composite); \r
+ areaCombos[i].addSelectionListener(new AreaComboListener(i));\r
+ }\r
// create presence / absence\r
- createText("Select presence / absence:", composite, parent);\r
-// Composite buttons = new Composite(composite, SWT.NONE);\r
-// buttons.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL\r
-// | GridData.HORIZONTAL_ALIGN_FILL));\r
-// GridLayout gridLayout = new GridLayout();\r
-// gridLayout.numColumns = 2;\r
-// buttons.setLayout(gridLayout);\r
-// presenceButton = new Button(buttons, SWT.RADIO);\r
-// presenceButton.setText("Presence");\r
-// presenceButton.addSelectionListener(new SelectionAdapter() {\r
-// public void widgetSelected(SelectionEvent e) {\r
-// populatePresenceTerms();\r
-// }\r
-// });\r
-// absenceButton = new Button(buttons, SWT.RADIO);\r
-// absenceButton.setText("Absence");\r
-// absenceButton.addSelectionListener(new SelectionAdapter() {\r
-// public void widgetSelected(SelectionEvent e) {\r
-// populateAbsenceTerms();\r
-// }\r
-// });\r
+ createLabel("Select presence / absence:", composite, parent);\r
presenceAbsenceCombo = new CCombo(composite, SWT.BORDER);\r
presenceAbsenceCombo.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL\r
| GridData.HORIZONTAL_ALIGN_FILL));\r
selectPresenceAbsenceTerm();\r
}\r
});\r
- \r
+ // create reference\r
+ referenceComposite = new ReferenceSelectComposite(composite);\r
+\r
populateVocabTypes();\r
populateAreas();\r
populatePresenceAbsenceTerms();\r
+ populateReference();\r
\r
applyDialogFont(composite);\r
return composite;\r
}\r
\r
+ class AreaComboListener extends SelectionAdapter {\r
+ private int i;\r
+ AreaComboListener(int i) {\r
+ this.i = i;\r
+ }\r
+ @Override\r
+ public void widgetSelected(SelectionEvent e) {\r
+ selectArea(i);\r
+ }\r
+ }\r
+ \r
+ /**\r
+ * @return\r
+ */\r
+ private CCombo createCombo(Composite composite) {\r
+ CCombo combo = new CCombo(composite, SWT.BORDER);\r
+ combo.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL\r
+ | GridData.HORIZONTAL_ALIGN_FILL));\r
+ return combo;\r
+ }\r
+ \r
/**\r
* \r
*/\r
- private void populatePresenceAbsenceTerms() {\r
+ private void populateVocabTypes() {\r
int index = 0;\r
int i = 0;\r
-// for (PresenceTerm term : getPresenceTerms()) {\r
-// presenceAbsenceCombo.add(provider.getPresenceAbsenceTermLabel(term));\r
-// if (this.presenceAbsence != null && this.presenceAbsence.equals(term)) {\r
-// index = i;\r
-// }\r
-// i++;\r
-// }\r
-// presenceAbsenceCombo.add(PRESENCE_ABSENCE_SEPARATOR );\r
-// i++;\r
-// for (AbsenceTerm term : getAbsenceTerms()) {\r
-// presenceAbsenceCombo.add(provider.getPresenceAbsenceTermLabel(term));\r
-// if (this.presenceAbsence != null && this.presenceAbsence.equals(term)) {\r
-// index = i;\r
-// }\r
-// i++;\r
-// }\r
+ for (Object vocabType : getVocabTypes()) {\r
+ if (vocabType == null) {\r
+ vocabTypeCombo.add("");\r
+ } else {\r
+ if (vocabType.equals(this.vocabType)) {\r
+ index = i;\r
+ }\r
+ vocabTypeCombo.add(provider.getVocabularyTypeLabel(vocabType));\r
+ }\r
+ i++;\r
+ }\r
+ vocabTypeCombo.select(index);\r
+ }\r
+ \r
+ /**\r
+ * \r
+ */\r
+ private void populateAreas() {\r
+ clearAreas();\r
+ if (vocabType != null) {\r
+ int index = 0;\r
+ int i = 0;\r
+ for (NamedArea area : getNamedAreas(vocabType)) {\r
+ if (area == null) {\r
+ areaCombos[0].add("");\r
+ } else {\r
+ if (area.equals(this.area)) {\r
+ index = i;\r
+ }\r
+ areaCombos[0].add(area.getDescription());\r
+ }\r
+ i++;\r
+ }\r
+ areaCombos[0].select(index);\r
+ }\r
+ for (int j = 1; j < NUM_AREA_MENUS; j++) {\r
+ NamedArea selectedArea = selectedAreas[j - 1];\r
+ if (selectedArea != null) {\r
+ int index = 0;\r
+ int i = 0;\r
+ for (NamedArea area : getNamedAreas(selectedArea, j)) {\r
+ if (area == null) {\r
+ areaCombos[i].add("");\r
+ } else {\r
+ if (area.equals(this.area)) {\r
+ index = i;\r
+ }\r
+ areaCombos[0].add(area.getDescription());\r
+ }\r
+ i++;\r
+ }\r
+ areaCombos[0].select(index);\r
+ }\r
+ }\r
+// areaCombo2.setVisible(false);\r
+// areaCombo3.setVisible(false);\r
+// areaCombo4.setVisible(false);\r
+// areaCombo2.moveBelow(referenceComposite);\r
+// areaCombo3.moveBelow(referenceComposite);\r
+// areaCombo4.moveBelow(referenceComposite);\r
+ }\r
+\r
+ \r
+ /**\r
+ * @param namedArea\r
+ * @return\r
+ */\r
+ private List<NamedArea> getNamedAreas(NamedArea namedArea, int depth) {\r
+ List<NamedArea> areasTemp = new ArrayList<NamedArea>();\r
+ areasTemp.add(null);\r
+ areasTemp.addAll(provider.getVocabularyNextLevelAreas(namedArea));\r
+ return areasTemp;\r
+ }\r
+\r
+ /**\r
+ * @param vocabType\r
+ * @return\r
+ */\r
+ private List<NamedArea> getNamedAreas(Object vocabType) {\r
+ List<NamedArea> areasTemp = new ArrayList<NamedArea>();\r
+ areasTemp.add(null);\r
+ areasTemp.addAll(provider.getVocabularyTopLevelAreas(vocabType));\r
+// areas\r
+ return areasTemp;\r
+ }\r
\r
- for (PresenceAbsenceTermBase term : getPresenceAbsenceTerms()) {\r
+ /**\r
+ * \r
+ */\r
+ private void populatePresenceAbsenceTerms() {\r
+ int index = 0;\r
+ int i = 0;\r
+ for (PresenceAbsenceTermBase<?> term : getPresenceAbsenceTerms()) {\r
if (term == null) {\r
- presenceAbsenceCombo.add(PRESENCE_ABSENCE_SEPARATOR);\r
+ if (i == 0) {\r
+ presenceAbsenceCombo.add("");\r
+ } else {\r
+ presenceAbsenceCombo.add(PRESENCE_ABSENCE_SEPARATOR);\r
+ }\r
} else {\r
presenceAbsenceCombo.add(provider.getPresenceAbsenceTermLabel(term)); \r
- if (this.presenceAbsence != null && this.presenceAbsence.equals(term)) {\r
+ if (this.presenceAbsenceStatus != null && this.presenceAbsenceStatus.equals(term)) {\r
index = i;\r
}\r
}\r
presenceAbsenceCombo.select(index);\r
}\r
\r
+ /**\r
+ * \r
+ */\r
+ private void populateReference() {\r
+ if (reference != null) {\r
+ referenceComposite.setReference(reference);\r
+ }\r
+ }\r
+ \r
/**\r
* @return\r
*/\r
- private List<PresenceAbsenceTermBase> getPresenceAbsenceTerms() {\r
+ private List<Object> getVocabTypes() {\r
+ if (vocabTypes == null) {\r
+ vocabTypes = new ArrayList<Object>();\r
+ // Add empty entry for selection menu\r
+ vocabTypes.add(null);\r
+ vocabTypes.addAll(provider.getVocabularyTypes());\r
+ }\r
+ return vocabTypes;\r
+ }\r
+ \r
+ /**\r
+ * @return\r
+ */\r
+ private List<PresenceAbsenceTermBase<?>> getPresenceAbsenceTerms() {\r
if (presenceAbsenceTerms == null) {\r
- presenceAbsenceTerms = new ArrayList<PresenceAbsenceTermBase>();\r
- for (PresenceAbsenceTermBase term : provider.getPresenceTerms()) {\r
+ presenceAbsenceTerms = new ArrayList<PresenceAbsenceTermBase<?>>();\r
+ // Add empty entry for selection menu\r
+ presenceAbsenceTerms.add(null);\r
+ \r
+ for (PresenceAbsenceTermBase<?> term : provider.getPresenceTerms()) {\r
presenceAbsenceTerms.add(term);\r
}\r
presenceAbsenceTerms.add(null);\r
- for (PresenceAbsenceTermBase term : provider.getAbsenceTerms()) {\r
+ for (PresenceAbsenceTermBase<?> term : provider.getAbsenceTerms()) {\r
presenceAbsenceTerms.add(term);\r
}\r
}\r
}\r
\r
/**\r
- * \r
+ * @param i\r
*/\r
- private void populateAreas() {\r
- areaCombo2.setVisible(false);\r
- areaCombo3.setVisible(false);\r
- areaCombo4.setVisible(false);\r
- areaCombo2.moveBelow(presenceAbsenceCombo);\r
- areaCombo3.moveBelow(presenceAbsenceCombo);\r
- areaCombo4.moveBelow(presenceAbsenceCombo);\r
+ protected void selectArea(int depth) {\r
+ // This selection is made currently selected area\r
+ int i = areaCombos[depth].getSelectionIndex();\r
+ selectedAreas[depth] = getSelectedArea(depth, i);\r
+ \r
+ // Combos below this area combo are cleared\r
+// clearArea(depth+1);\r
+ populateAreas();\r
+ \r
+ // Next combo repopulated with this combo's named area children, if any\r
+// populateArea(i+1);\r
+ \r
+ // Contents of this combo become current area list\r
+ \r
+// switch (i) {\r
+// case 1:\r
+// areaCombo1.removeAll();\r
+// case 2:\r
+// areaCombo2.removeAll();\r
+// case 3:\r
+// areaCombo3.removeAll();\r
+// case 4:\r
+// areaCombo4.removeAll(); \r
+// }\r
}\r
\r
/**\r
* @param i\r
+ * @param index\r
+ * @return\r
*/\r
- protected void selectArea(int i) {\r
- // TODO Auto-generated method stub\r
- \r
+ private NamedArea getSelectedArea(int depth, int index) {\r
+ return areas.get(depth).get(index);\r
}\r
\r
/**\r
- * @return\r
+ * \r
*/\r
- private CCombo createCombo(Composite composite) {\r
- CCombo combo = new CCombo(composite, SWT.BORDER);\r
- combo.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL\r
- | GridData.HORIZONTAL_ALIGN_FILL));\r
- return combo;\r
+ protected void selectVocabType() {\r
+ int i = vocabTypeCombo.getSelectionIndex();\r
+ selectVocabType(i);\r
}\r
-\r
+ \r
+ private void selectVocabType(int i) {\r
+ vocabType = getVocabTypes().get(i);\r
+ \r
+ clearAreas();\r
+ populateAreas();\r
+// populateArea(1);\r
+ }\r
+ \r
/**\r
* \r
*/\r
protected void selectPresenceAbsenceTerm() {\r
int i = presenceAbsenceCombo.getSelectionIndex();\r
- status = presenceAbsenceTerms.get(i);\r
-// if (isPresence) {\r
-// status = presenceTerms.get(i);\r
-// } else {\r
-// status = absenceTerms.get(i);\r
-// }\r
+ presenceAbsenceStatus = presenceAbsenceTerms.get(i);\r
}\r
\r
-// /**\r
-// * \r
-// */\r
-// protected void populateAbsenceTerms() {\r
-// \r
-// isAbsence = true;\r
-// isPresence = false;\r
-// \r
-// presenceButton.setSelection(false);\r
-// absenceButton.setSelection(true);\r
-// \r
-// clearPresenceAbsenceTerms();\r
-// for (AbsenceTerm term : getAbsenceTerms()) {\r
-// presenceAbsenceCombo.add(provider.getPresenceAbsenceTermLabel(term));\r
-// }\r
-// }\r
-//\r
-// /**\r
-// * \r
-// */\r
-// protected void populatePresenceTerms() { \r
-// isAbsence = false;\r
-// isPresence = true;\r
-// \r
-// presenceButton.setSelection(true);\r
-// absenceButton.setSelection(false);\r
-// \r
-// clearPresenceAbsenceTerms();\r
-// for (PresenceTerm term : getPresenceTerms()) {\r
-// presenceAbsenceCombo.add(provider.getPresenceAbsenceTermLabel(term));\r
-// }\r
-// }\r
-\r
-// /**\r
-// * @return\r
-// */\r
-// private List<PresenceTerm> getPresenceTerms() {\r
-// if (presenceTerms == null) {\r
-// presenceTerms = provider.getPresenceTerms();\r
-// }\r
-// return presenceTerms;\r
-// }\r
-//\r
-// /**\r
-// * @return\r
-// */\r
-// private List<AbsenceTerm> getAbsenceTerms() {\r
-// if (absenceTerms == null) {\r
-// absenceTerms = provider.getAbsenceTerms();\r
-// }\r
-// return absenceTerms;\r
-// }\r
- \r
-// /**\r
-// * \r
-// */\r
-// private void clearPresenceAbsenceTerms() {\r
-// presenceAbsenceCombo.removeAll();\r
-// }\r
-\r
/**\r
* @param string\r
* @param parent \r
* @param composite \r
+ * @return \r
*/\r
- private void createText(String string, Composite composite, Composite parent) {\r
+ private Label createLabel(String string, Composite composite, Composite parent) {\r
Label label = new Label(composite, SWT.WRAP);\r
label.setText(string);\r
GridData data = new GridData(GridData.GRAB_HORIZONTAL\r
data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);\r
label.setLayoutData(data);\r
label.setFont(parent.getFont());\r
+ return label;\r
}\r
\r
/**\r
- * \r
+ * @param i\r
*/\r
- private void populateVocabTypes() {\r
- for (Object vocabType : getVocabTypes()) {\r
- vocabTypeCombo.add(provider.getVocabularyTypeLabel(vocabType));\r
+ private void clearArea(int i) {\r
+ for (int j = i; j < NUM_AREA_MENUS; j++) {\r
+ areaCombos[j].removeAll();\r
}\r
}\r
\r
/**\r
* \r
*/\r
- protected void selectVocabType() {\r
- int i = vocabTypeCombo.getSelectionIndex();\r
- Object vocabType = getVocabTypes().get(i);\r
- \r
- clearAreaCombos();\r
- populateTopLevelAreaCombo();\r
- }\r
-\r
- /**\r
- * \r
- */\r
- private void populateTopLevelAreaCombo() {\r
- // TODO Auto-generated method stub\r
- \r
- }\r
-\r
- /**\r
- * \r
- */\r
- private void clearAreaCombos() {\r
- // TODO Auto-generated method stub\r
- \r
- }\r
-\r
- /**\r
- * @return\r
- */\r
- private List<Object> getVocabTypes() {\r
- if (vocabTypes == null) {\r
- vocabTypes = provider.getVocabularyTypes();\r
- }\r
- return vocabTypes;\r
+ private void clearAreas() {\r
+ clearArea(0);\r
}\r
\r
protected void createButtonsForButtonBar(Composite parent) {\r
\r
protected void buttonPressed(int buttonId) {\r
if (IDialogConstants.OK_ID == buttonId) {\r
- createDistribution();\r
okPressed();\r
} else if (IDialogConstants.CANCEL_ID == buttonId) {\r
cancelPressed();\r
}\r
}\r
\r
+ protected void okPressed() {\r
+ createDistribution();\r
+ setStaticFields();\r
+ \r
+ super.okPressed();\r
+ }\r
+ \r
+ /**\r
+ * \r
+ */\r
+ private void setStaticFields() {\r
+ lastPresenceAbsence = getPresenceAbsenceTerm();\r
+ lastReference = getReference(); \r
+ lastVocabType = getVocabType();\r
+ }\r
+\r
+ /**\r
+ * @return\r
+ */\r
+ private Object getVocabType() {\r
+ int i = vocabTypeCombo.getSelectionIndex();\r
+ return vocabTypes.get(i);\r
+ }\r
+\r
+ /**\r
+ * @return\r
+ */\r
+ private ReferenceBase getReference() {\r
+ return referenceComposite.getReference();\r
+ }\r
+\r
+ /**\r
+ * @return\r
+ */\r
+ private PresenceAbsenceTermBase<?> getPresenceAbsenceTerm() {\r
+ int i = presenceAbsenceCombo.getSelectionIndex();\r
+ return presenceAbsenceTerms.get(i);\r
+ }\r
+ \r
/**\r
* \r
*/\r
private void createDistribution() {\r
- distribution = Distribution.NewInstance(area, status);\r
+ distribution = Distribution.NewInstance(area, presenceAbsenceStatus);\r
}\r
-}\r
+}
\ No newline at end of file
private String message;\r
\r
private Language language;\r
- private static Language lastLanguage;\r
protected Language languageTemp;\r
+ \r
+ /**\r
+ * Language selected last time the dialog was used.\r
+ */\r
+ private static Language lastLanguage;\r
\r
private CCombo combo;\r
\r
}\r
i++;\r
}\r
- \r
combo.select(index);\r
}\r
\r
\r
protected void buttonPressed(int buttonId) {\r
if (IDialogConstants.OK_ID == buttonId) {\r
- language = getLanguageSelection();\r
- lastLanguage = language;\r
okPressed();\r
} else if (IDialogConstants.CANCEL_ID == buttonId) {\r
- language = null; \r
cancelPressed();\r
}\r
}\r
\r
+ protected void okPressed() {\r
+ language = getLanguageSelection();\r
+ lastLanguage = language; \r
+ super.okPressed();\r
+ }\r
+ \r
+ protected void cancelPressed() {\r
+ language = null;\r
+ super.cancelPressed();\r
+ }\r
+ \r
private Language getLanguageSelection() {\r
int i = combo.getSelectionIndex();\r
return languages.get(i);\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
-import eu.etaxonomy.cdm.model.reference.StrictReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
// name.addPropertyChangeListener(ITaxEditorConstants.REFRESH_NAMEVIEWER, listener);\r
\r
- StrictReferenceBase reference = (StrictReferenceBase) name.getNomenclaturalReference();\r
+ ReferenceBase reference = name.getNomenclaturalReference();\r
if (reference != null) {\r
reference.addPropertyChangeListener("titleCache", listener);\r
}\r
* See LICENSE.TXT at the top of this package for the full license terms.\r
*/\r
\r
-package eu.etaxonomy.taxeditor.propertysheet.reference;\r
+package eu.etaxonomy.taxeditor.editor.reference;\r
\r
/**\r
* @author p.ciardelli\r
* See LICENSE.TXT at the top of this package for the full license terms.\r
*/\r
\r
-package eu.etaxonomy.taxeditor.propertysheet.reference;\r
+package eu.etaxonomy.taxeditor.editor.reference;\r
\r
import java.util.ArrayList;\r
import java.util.List;\r
--- /dev/null
+// $Id$\r
+/**\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
+\r
+package eu.etaxonomy.taxeditor.editor.reference;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.SelectionAdapter;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.layout.GridData;\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.Dialog;\r
+import org.eclipse.swt.widgets.Label;\r
+import org.eclipse.swt.widgets.Text;\r
+\r
+import eu.etaxonomy.cdm.model.reference.Generic;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 07.04.2009\r
+ * @version 1.0\r
+ */\r
+public class ReferenceSelectComposite extends Composite {\r
+ private static final Logger logger = Logger\r
+ .getLogger(ReferenceSelectComposite.class);\r
+ private ReferenceBase savedReference;\r
+ private Text txtReference;\r
+ private Button btnClearReference;\r
+ private Text txtMicroRef;\r
+ \r
+ /**\r
+ * @param parent\r
+ * @param style\r
+ */\r
+ public ReferenceSelectComposite(Composite parent) {\r
+ super(parent, SWT.NULL);\r
+ createContent(parent);\r
+ }\r
+ \r
+ private void createContent(Composite xcontainer) {\r
+ setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));\r
+ GridLayout gridLayout = new GridLayout();\r
+ gridLayout.marginHeight = 0;\r
+ gridLayout.marginWidth = 0;\r
+ setLayout(gridLayout);\r
+ \r
+ Label lblReference = new Label(this, SWT.NONE);\r
+ lblReference.setLayoutData(new GridData());\r
+ lblReference.setText("Choose a reference either by searching or entering it as free text:");\r
+ \r
+ // Create 3-columned composite for reference input\r
+ Composite refComposite = new Composite(this, SWT.NONE);\r
+ GridLayout gridLayout2 = new GridLayout();\r
+ gridLayout2.numColumns = 3; \r
+ gridLayout2.marginHeight = 0;\r
+ gridLayout2.marginWidth = 0;\r
+ refComposite.setLayout(gridLayout2);\r
+ refComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ \r
+ // Create reference input\r
+ txtReference = new Text(refComposite, SWT.BORDER);\r
+ txtReference.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ \r
+ // Create reference search button\r
+ Button btnSearchReference = new Button(refComposite, SWT.NONE);\r
+ btnSearchReference.setEnabled(true);\r
+ btnSearchReference.setLayoutData(new GridData());\r
+ btnSearchReference.setText("Search ...");\r
+ btnSearchReference.addSelectionListener(new SelectionAdapter() {\r
+ \r
+ // Popup reference search\r
+ public void widgetSelected(SelectionEvent e) {\r
+ popupSearch();\r
+ }\r
+ });\r
+\r
+ // Create clear reference button\r
+ btnClearReference = new Button(refComposite, SWT.NONE);\r
+ btnClearReference.setEnabled(false);\r
+ btnClearReference.setText("Clear");\r
+ btnClearReference.addSelectionListener(new SelectionAdapter() {\r
+ \r
+ // Clear selected reference\r
+ public void widgetSelected(SelectionEvent e) {\r
+ clearReference();\r
+ }\r
+ });\r
+ \r
+ // Create message re: editing references\r
+ Label lblNewRefFeedback = new Label(this, SWT.NONE);\r
+ lblNewRefFeedback.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
+ lblNewRefFeedback.setFont(\r
+ TaxEditorPlugin.getDefault().italicizeFont(lblNewRefFeedback.getFont()));\r
+ lblNewRefFeedback.setText("Existing references can only be edited in property sheet.");\r
+ \r
+ Label lblMicroref = new Label(this, SWT.NONE);\r
+ lblMicroref.setText("Enter reference detail (e.g., page no.):");\r
+ \r
+ // Create microref input\r
+ txtMicroRef = new Text(this, SWT.BORDER);\r
+ txtMicroRef.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false));\r
+ }\r
+ \r
+ public void setReference(ReferenceBase reference) {\r
+ savedReference = reference;\r
+ txtReference.setText(reference.getTitleCache());\r
+ txtReference.setEditable(false);\r
+ \r
+ btnClearReference.setEnabled(true);\r
+ }\r
+ \r
+ public void setMicroReference(String microref) {\r
+ txtMicroRef.setText(microref);\r
+ }\r
+ \r
+ /**\r
+ * \r
+ */\r
+ protected void popupSearch() {\r
+ Dialog dialog = new ReferenceSearchDialog(getShell(), \r
+ IReferenceSearch.BIBREF);\r
+ Object value = ((ReferenceSearchDialog) dialog).open();\r
+ \r
+ if (value instanceof ReferenceBase) {\r
+ setSavedReference((ReferenceBase) value);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * @param value\r
+ */\r
+ private void setSavedReference(ReferenceBase reference) {\r
+ \r
+ savedReference = reference;\r
+ \r
+ txtReference.setText(reference.getTitleCache());\r
+ txtReference.setEditable(false);\r
+ \r
+ btnClearReference.setEnabled(true);\r
+ }\r
+ \r
+ protected void clearReference() {\r
+ savedReference = null;\r
+ \r
+ txtReference.setText("");\r
+ txtReference.setEditable(true);\r
+ \r
+ btnClearReference.setEnabled(false); \r
+ }\r
+\r
+ /**\r
+ * Returns reference object, if any. Otherwise, creates a new Generic\r
+ * reference object using text the user has i nput.\r
+ * \r
+ * @return\r
+ */\r
+ public ReferenceBase getReference() {\r
+ ReferenceBase reference = null;\r
+ if (savedReference != null) {\r
+ reference = savedReference;\r
+ } else {\r
+ if (!txtReference.getText().equals("")) {\r
+ reference = Generic.NewInstance();\r
+ reference.setTitleCache(txtReference.getText());\r
+ }\r
+ }\r
+ return reference;\r
+ }\r
+ \r
+ public String getMicroReference() {\r
+ return txtMicroRef.getText();\r
+ }\r
+}
\ No newline at end of file
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.controller.GlobalController;\r
import eu.etaxonomy.taxeditor.navigation.SearchResult;\r
\r
ITaxonServiceConfigurator configurator = new TaxonServiceConfiguratorImpl();\r
\r
+ configurator.setMatchMode(MatchMode.ANYWHERE);\r
configurator.setSearchString(name.replace("*", "%"));\r
configurator.setDoTaxa(true);\r
configurator.setDoNamesWithoutTaxa(true);\r
\r
package eu.etaxonomy.taxeditor.model;\r
\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
import org.apache.log4j.Logger;\r
\r
+import eu.etaxonomy.cdm.api.service.ILocationService;\r
+import eu.etaxonomy.cdm.api.service.ILocationService.NamedAreaVocabularyType;\r
import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.description.AbsenceTerm;\r
import eu.etaxonomy.cdm.model.description.CommonTaxonName;\r
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;\r
+import eu.etaxonomy.cdm.model.description.PresenceTerm;\r
import eu.etaxonomy.cdm.model.description.TextData;\r
+import eu.etaxonomy.cdm.model.location.NamedArea;\r
+import eu.etaxonomy.cdm.model.location.NamedAreaLevel;\r
+import eu.etaxonomy.cdm.model.location.NamedAreaType;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;\r
\r
/**\r
* @author p.ciardelli\r
String value) {\r
setCache(element, value, Language.DEFAULT());\r
}\r
+ \r
+ public static IDistributionInfoProvider getDistributionInfoProvider() {\r
+ IDistributionInfoProvider provider = new DistributionInfoProvider();\r
+ return provider;\r
+ }\r
+ \r
+ static class DistributionInfoProvider implements IDistributionInfoProvider {\r
+\r
+ private static final String TDWG = "TDWG Areas";\r
+ private static final String ISO_COUNTRY = "ISO Country Codes";\r
+ private static final String ISO_WATERBODY = "ISO Waterbody Codes";\r
+ private static ILocationService locationService;\r
+ private List<Object> vocabTypes;\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.model.IDistributionInfoProvider#getAbsenceTerms()\r
+ */\r
+ @Override\r
+ public List<AbsenceTerm> getAbsenceTerms() {\r
+ List<AbsenceTerm> absenceTerms = new ArrayList<AbsenceTerm>(); \r
+ absenceTerms.add(AbsenceTerm.ABSENT());\r
+ return absenceTerms;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.model.IDistributionInfoProvider#getPresenceTerms()\r
+ */\r
+ @Override\r
+ public List<PresenceTerm> getPresenceTerms() {\r
+ List<PresenceTerm> presenceTerms = new ArrayList<PresenceTerm>();\r
+ presenceTerms.add(PresenceTerm.CULTIVATED());\r
+ presenceTerms.add(PresenceTerm.ENDEMIC_FOR_THE_RELEVANT_AREA());\r
+ presenceTerms.add(PresenceTerm.INTRODUCED());\r
+ return presenceTerms;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.model.IDistributionInfoProvider#getVocabularyNextLevelAreas(eu.etaxonomy.cdm.model.location.NamedArea)\r
+ */\r
+ @Override\r
+ public List<NamedArea> getVocabularyNextLevelAreas(NamedArea namedArea) {\r
+ List<NamedArea> namedAreas = new ArrayList<NamedArea>();\r
+ namedAreas.add(NamedArea.NewInstance("USA", "USA", "USA"));\r
+ namedAreas.add(NamedArea.NewInstance("Canada", "Canada", "CAN"));\r
+ namedAreas.add(NamedArea.NewInstance("Mexico", "Mexico", "MEX"));\r
+ return namedAreas;\r
+ }\r
+\r
+ private ILocationService getLocationService() {\r
+ if (locationService == null) {\r
+ locationService = TaxEditorPlugin.getDefault().getApplicationController().getLocationService();\r
+ }\r
+ return locationService;\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.model.IDistributionInfoProvider#getVocabularyTopLevelAreas(java.lang.Object)\r
+ */\r
+ @Override\r
+ public List<NamedArea> getVocabularyTopLevelAreas(Object vocabularyType) {\r
+\r
+ if (!(vocabularyType instanceof NamedAreaVocabularyType)) {\r
+ return null;\r
+ }\r
+ for (Object o :getLocationService().getNamedAreaVocabulary(\r
+ (NamedAreaVocabularyType) vocabularyType, NamedAreaLevel.TDWG_LEVEL1(), \r
+ NamedAreaType.NATURAL_AREA())) {\r
+ logger.warn(o.toString());\r
+ }\r
+ \r
+ if (vocabularyType.equals(TDWG)) {\r
+// for (Object o : locationService.getNamedAreaTypeVocabulary()) {\r
+// for (Object o : locationService.getNamedAreaLevelVocabulary()) {\r
+// NamedAreaVocabularyType\r
+// for (Object o : locationService.getNamedAreaVocabulary(vocabularyType, namedAreaLevel, namedAreaType) .getNamedAreaLevelVocabulary()) {\r
+// logger.warn(o.toString());\r
+// }\r
+ }\r
+ if (vocabularyType.equals(ISO_COUNTRY)) {\r
+ \r
+ }\r
+ if (vocabularyType.equals(ISO_WATERBODY)) {\r
+ \r
+ }\r
+ return null;\r
+// List<NamedArea> namedAreas = new ArrayList<NamedArea>();\r
+// namedAreas.add(NamedArea.NewInstance("North America", "North America", "NA"));\r
+// namedAreas.add(NamedArea.NewInstance("Europe", "Europe", "EUR"));\r
+// return namedAreas;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.model.IDistributionInfoProvider#getVocabularyTypes()\r
+ */\r
+ @Override\r
+ public List<Object> getVocabularyTypes() {\r
+ if (vocabTypes == null) {\r
+ vocabTypes = new ArrayList<Object>();\r
+ for (NamedAreaVocabularyType vocabType: getLocationService().getNamedAreaVocabularyTypes()) {\r
+ vocabTypes.add(vocabType);\r
+ }\r
+ }\r
+ \r
+// vocabTypes.add("TDWG Areas");\r
+// vocabTypes.add("ISO Country Codes");\r
+// vocabTypes.add("ISO Waterbody Codes");\r
+// return vocabTypes;\r
+ return vocabTypes;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.model.IDistributionInfoProvider#getVocabularyTypeLabel()\r
+ */\r
+ @Override\r
+ public String getVocabularyTypeLabel(Object vocabularyType) {\r
+ if (vocabularyType instanceof String) {\r
+ return (String) vocabularyType;\r
+ } else {\r
+ return vocabularyType.toString(); \r
+ }\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.model.IDistributionInfoProvider#getPresenceAbsenceTermLabel(eu.etaxonomy.cdm.model.description.PresenceTerm)\r
+ */\r
+ @Override\r
+ public String getPresenceAbsenceTermLabel(PresenceAbsenceTermBase term) {\r
+ return term.getDescription();\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.model.IDistributionInfoProvider#getNamedAreaChildren(eu.etaxonomy.cdm.model.location.NamedArea)\r
+ */\r
+ @Override\r
+ public List<NamedArea> getNamedAreaChildren(NamedArea namedArea) {\r
+ // TODO Auto-generated method stub\r
+ return null;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.model.IDistributionInfoProvider#getNamedAreaParent(eu.etaxonomy.cdm.model.location.NamedArea)\r
+ */\r
+ @Override\r
+ public NamedArea getNamedAreaParent(NamedArea namedArea) {\r
+ // TODO Auto-generated method stub\r
+ return null;\r
+ }\r
+ }\r
}\r
--- /dev/null
+// $Id$\r
+/**\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
+\r
+package eu.etaxonomy.taxeditor.model;\r
+\r
+import java.util.List;\r
+\r
+import eu.etaxonomy.cdm.model.description.AbsenceTerm;\r
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;\r
+import eu.etaxonomy.cdm.model.description.PresenceTerm;\r
+import eu.etaxonomy.cdm.model.location.NamedArea;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 03.04.2009\r
+ * @version 1.0\r
+ */\r
+public interface IDistributionInfoProvider {\r
+ \r
+ /**\r
+ * i.e. TDWG, ISO\r
+ * \r
+ * @return\r
+ */\r
+ List<Object> getVocabularyTypes();\r
+ \r
+ List<NamedArea> getVocabularyTopLevelAreas(Object vocabularyType);\r
+ \r
+ List<NamedArea> getVocabularyNextLevelAreas(NamedArea namedArea);\r
+ \r
+ List<PresenceTerm> getPresenceTerms();\r
+ \r
+ List<AbsenceTerm> getAbsenceTerms();\r
+\r
+ String getVocabularyTypeLabel(Object vocabularyType);\r
+\r
+ String getPresenceAbsenceTermLabel(PresenceAbsenceTermBase<?> term);\r
+ \r
+ NamedArea getNamedAreaParent(NamedArea namedArea);\r
+ \r
+ List<NamedArea> getNamedAreaChildren(NamedArea namedArea);\r
+}
\ No newline at end of file
import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
import eu.etaxonomy.cdm.model.description.TextData;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.editor.description.DistributionDialog;\r
import eu.etaxonomy.taxeditor.editor.description.LanguageDialog;\r
import eu.etaxonomy.taxeditor.operations.AbstractEditorOperation;\r
\r
@Override\r
public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
throws ExecutionException {\r
- \r
+\r
+ // Common name\r
if (feature.supportsCommonTaxonName()) {\r
- \r
- // Get language for the common name\r
Language language = LanguageDialog.getLanguage\r
("Select language", "Select the common name's language:");\r
if (language == null) {\r
return Status.CANCEL_STATUS;\r
}\r
- \r
element = CommonTaxonName.NewInstance("", language);\r
- } else {\r
+ // Feature must be explicitly set to sync w term in persistence layer\r
+ element.setFeature(feature);\r
+ } \r
+ // Distribution\r
+ if (feature.supportsDistribution()) {\r
+ element = DistributionDialog.getDistribution\r
+ ("Create distribution", null);\r
+ if (element == null) {\r
+ return Status.CANCEL_STATUS;\r
+ }\r
+ // Feature must be explicitly set to sync w term in persistence layer\r
+ element.setFeature(feature);\r
+ }\r
+ \r
+ // Default element type is TextData\r
+ if (element == null) {\r
element = TextData.NewInstance(feature);\r
}\r
description.addElement(element);\r
if (count % 3 > 0) {\r
colheight++;\r
}\r
- \r
for (int i = 0; i < colheight; i++) {\r
- \r
createButton((Feature) array[i]);\r
- \r
if (i + colheight < count) {\r
createButton((Feature) array[i + colheight]);\r
}\r
-\r
if (i + (colheight * 2) < count) {\r
createButton((Feature) array[i + (colheight * 2)]);\r
}\r
- \r
}\r
- \r
return container;\r
}\r
\r
import eu.etaxonomy.cdm.model.description.TextData;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.editor.reference.IReferenceSearch;\r
import eu.etaxonomy.taxeditor.model.DescriptionUtil;\r
import eu.etaxonomy.taxeditor.model.ReferenceUtil;\r
-import eu.etaxonomy.taxeditor.propertysheet.reference.IReferenceSearch;\r
import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;\r
import eu.etaxonomy.taxeditor.propertysheet.reference.ReferenceSearchDescriptor;\r
\r
import eu.etaxonomy.cdm.model.reference.BookSection;\r
import eu.etaxonomy.cdm.model.reference.Generic;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.taxeditor.editor.reference.IReferenceSearch;\r
\r
/**\r
* Subclass of <code>ReferencePropertySource</code> which restricts reference type menu \r
import eu.etaxonomy.cdm.model.reference.Thesis;\r
import eu.etaxonomy.cdm.model.reference.WebPage;\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.editor.reference.IReferenceSearch;\r
import eu.etaxonomy.taxeditor.model.CdmUtil;\r
import eu.etaxonomy.taxeditor.propertysheet.TimePeriodPropertySource;\r
import eu.etaxonomy.taxeditor.propertysheet.YearValidator;\r
import org.eclipse.ui.views.properties.PropertyDescriptor;\r
\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.taxeditor.editor.reference.ReferenceSearchDialog;\r
\r
/** \r
* @author p.ciardelli\r
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
-import eu.etaxonomy.cdm.model.reference.Generic;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.controller.PreferencesController;\r
-import eu.etaxonomy.taxeditor.propertysheet.reference.IReferenceSearch;\r
-import eu.etaxonomy.taxeditor.propertysheet.reference.ReferenceSearchDialog;\r
+import eu.etaxonomy.taxeditor.editor.reference.ReferenceSelectComposite;\r
\r
/**\r
* @author p.ciardelli\r
private NameTypeDesignation typeDesignation;\r
private TaxonNameBase savedName;\r
\r
- private ReferenceBase savedReference;\r
- \r
private Text txtName;\r
private Button btnClearName;\r
- private Text txtReference;\r
- private Button btnClearReference;\r
private Button btnRejected;\r
private Button btnConserved;\r
private Button btnLecto;\r
\r
private WritableList typeDesignationsList;\r
\r
+ private ReferenceSelectComposite referenceComposite;\r
+\r
/**\r
* @param typeDesignation\r
* @param name\r
btnNotDesignated.setSelection(true);\r
}\r
}\r
+ \r
+ // Create reference input composite\r
+ referenceComposite = new ReferenceSelectComposite(container);\r
\r
- // Create reference text\r
- final Label lblReference = new Label(container, SWT.NONE);\r
- lblReference.setText("Choose a reference either by searching or entering it as free text:");\r
- \r
- // Create 3-columned composite for reference\r
- Composite referenceComposite = new Composite(container, SWT.NULL);\r
- referenceComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
- GridLayout gridLayout3 = new GridLayout();\r
- gridLayout3.numColumns = 3;\r
- gridLayout3.marginHeight = 0;\r
- gridLayout3.marginWidth = 0;\r
- referenceComposite.setLayout(gridLayout3);\r
- \r
- // Create reference input\r
- txtReference = new Text(referenceComposite, SWT.BORDER);\r
- txtReference.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
- \r
- // Create reference search button\r
- Button btnSearchReference = new Button(referenceComposite, SWT.NONE);\r
- btnSearchReference.setEnabled(true);\r
- btnSearchReference.setLayoutData(new GridData());\r
- btnSearchReference.setText("Search ...");\r
- btnSearchReference.addSelectionListener(new SelectionAdapter() {\r
- \r
- // Popup reference search\r
- public void widgetSelected(SelectionEvent e) {\r
- popupReferenceSearch();\r
- }\r
- });\r
-\r
- // Create clear reference button\r
- btnClearReference = new Button(referenceComposite, SWT.NONE);\r
- btnClearReference.setEnabled(false);\r
- btnClearReference.setText("Clear");\r
- btnClearReference.addSelectionListener(new SelectionAdapter() {\r
- \r
- // Clear selected reference\r
- public void widgetSelected(SelectionEvent e) {\r
- clearReference();\r
- }\r
- });\r
-\r
// Set text to reference text if exists\r
if (typeDesignation != null && typeDesignation.getCitation() != null) {\r
- \r
- savedReference = typeDesignation.getCitation();\r
- txtReference.setText(savedReference.getTitleCache());\r
- txtReference.setEditable(false);\r
- \r
- btnClearReference.setEnabled(true);\r
+ referenceComposite.setMicroReference(typeDesignation.getCitationMicroReference());\r
+ if (typeDesignation.getCitation() != null) {\r
+ referenceComposite.setReference(typeDesignation.getCitation());\r
+ }\r
}\r
- \r
- // Tell user when he is entering a new reference\r
- Label lblNewRefFeedback = new Label(container, SWT.NONE);\r
- lblNewRefFeedback.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
- lblNewRefFeedback.setFont(\r
- TaxEditorPlugin.getDefault().italicizeFont(lblNewRefFeedback.getFont()));\r
- lblNewRefFeedback.setText("Existing references can only be edited in property sheet.");\r
}\r
\r
/**\r
updatePage();\r
}\r
}\r
-\r
- protected void popupReferenceSearch() {\r
- Dialog dialog = new ReferenceSearchDialog(getShell(), \r
- IReferenceSearch.BIBREF);\r
- Object value = ((ReferenceSearchDialog) dialog).open();\r
- \r
- if (value instanceof ReferenceBase) {\r
- setSavedReference((ReferenceBase) value);\r
- }\r
- }\r
\r
/**\r
* @param value\r
btnClearName.setEnabled(true);\r
}\r
\r
- /**\r
- * @param value\r
- */\r
- private void setSavedReference(ReferenceBase reference) {\r
- \r
- savedReference = reference;\r
- \r
- txtReference.setText(reference.getTitleCache());\r
- txtReference.setEditable(false);\r
- \r
- btnClearReference.setEnabled(true);\r
- }\r
-\r
/**\r
* \r
*/\r
\r
btnClearName.setEnabled(false); \r
}\r
- \r
- /**\r
- * \r
- */\r
- protected void clearReference() {\r
- savedReference = null;\r
- \r
- txtReference.setText("");\r
- txtReference.setEditable(true);\r
\r
- btnClearReference.setEnabled(false); \r
- }\r
- \r
@Override\r
public boolean canFlipToNextPage() {\r
return isPageComplete();\r
}\r
}\r
\r
- ReferenceBase citation = null;\r
- if (savedReference != null) {\r
- citation = savedReference;\r
- } else {\r
- if (!txtReference.getText().equals("")) {\r
- citation = Generic.NewInstance();\r
- citation.setTitleCache(txtReference.getText());\r
- }\r
- }\r
+ ReferenceBase citation = referenceComposite.getReference();\r
+ String citationMicroReference = referenceComposite.getMicroReference();\r
\r
if (typeDesignation == null) {\r
- typeDesignation = new TemporaryNameTypeDesignation(typeName, citation, null,\r
+ typeDesignation = new TemporaryNameTypeDesignation(typeName, citation, citationMicroReference,\r
null, btnRejected.getSelection(), btnConserved.getSelection(), btnLecto.getSelection(), btnNotDesignated.getSelection());\r
typeDesignation.setLectoType(btnLecto.getSelection()); \r
} else {\r
typeDesignation.setLectoType(btnLecto.getSelection());\r
typeDesignation.setNotDesignated(btnNotDesignated.getSelection());\r
typeDesignation.setCitation(citation);\r
+ typeDesignation.setCitationMicroReference(citationMicroReference);\r
}\r
\r
typeDesignationsList.remove(typeDesignation);\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.Dialog;\r
import org.eclipse.swt.widgets.Label;\r
import org.eclipse.swt.widgets.Text;\r
\r
import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
import eu.etaxonomy.cdm.model.reference.Generic;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.editor.reference.ReferenceSelectComposite;\r
import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
-import eu.etaxonomy.taxeditor.propertysheet.reference.IReferenceSearch;\r
-import eu.etaxonomy.taxeditor.propertysheet.reference.ReferenceSearchDialog;\r
\r
/**\r
* @author p.ciardelli\r
private SpecimenTypeDesignation typeDesignation;\r
private WritableList typeDesignationsList;\r
\r
- private ReferenceBase savedReference;\r
- \r
private CCombo statusCombo;\r
private Text txtDesignationType;\r
private TypeDesignationStatus[] typeStatusArray;\r
- private Text txtReference;\r
- private Button btnClearReference;\r
\r
+ private ReferenceSelectComposite referenceComposite;\r
\r
/**\r
* @param typeDesignation\r
if (typeDesignation != null && typeDesignation.getTypeSpecimen() != null) {\r
txtDesignationType.setText(typeDesignation.getTypeSpecimen().getTitleCache());\r
}\r
+ \r
+ // Create reference input composite\r
+ referenceComposite = new ReferenceSelectComposite(container);\r
\r
- // Create reference text\r
- final Label lblReference = new Label(container, SWT.NONE);\r
- lblReference.setText("Choose a reference either by searching or entering it as free text:");\r
- \r
- // Create 3-columned composite for reference\r
- Composite referenceComposite = new Composite(container, SWT.NULL);\r
- referenceComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
- GridLayout gridLayout = new GridLayout();\r
- gridLayout.numColumns = 3;\r
- gridLayout.marginHeight = 0;\r
- gridLayout.marginWidth = 0;\r
- referenceComposite.setLayout(gridLayout);\r
- \r
- // Create reference input\r
- txtReference = new Text(referenceComposite, SWT.BORDER);\r
- txtReference.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ // Set text to reference text if exists\r
+ if (typeDesignation != null) {\r
\r
- // Create reference search button\r
- Button btnSearchReference = new Button(referenceComposite, SWT.NONE);\r
- btnSearchReference.setEnabled(true);\r
- btnSearchReference.setLayoutData(new GridData());\r
- btnSearchReference.setText("Search ...");\r
- btnSearchReference.addSelectionListener(new SelectionAdapter() {\r
- \r
- // Popup reference search\r
- public void widgetSelected(SelectionEvent e) {\r
- popupSearch();\r
- }\r
- });\r
-\r
- // Create clear reference button\r
- btnClearReference = new Button(referenceComposite, SWT.NONE);\r
- btnClearReference.setEnabled(false);\r
- btnClearReference.setText("Clear");\r
- btnClearReference.addSelectionListener(new SelectionAdapter() {\r
+ referenceComposite.setMicroReference(typeDesignation.getCitationMicroReference());\r
\r
- // Clear selected reference\r
- public void widgetSelected(SelectionEvent e) {\r
- clearReference();\r
+ if (typeDesignation.getCitation() != null) {\r
+ referenceComposite.setReference(typeDesignation.getCitation()); \r
}\r
- });\r
-\r
- // Set text to reference text if exists\r
- if (typeDesignation != null && typeDesignation.getCitation() != null) {\r
- \r
- savedReference = typeDesignation.getCitation();\r
- txtReference.setText(savedReference.getTitleCache());\r
- txtReference.setEditable(false);\r
- \r
- btnClearReference.setEnabled(true);\r
- }\r
- \r
- // Tell user when he is entering a new reference\r
- Label lblNewRefFeedback = new Label(container, SWT.NONE);\r
- lblNewRefFeedback.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
- lblNewRefFeedback.setFont(\r
- TaxEditorPlugin.getDefault().italicizeFont(lblNewRefFeedback.getFont()));\r
- lblNewRefFeedback.setText("Existing references can only be edited in property sheet.");\r
- }\r
-\r
- /**\r
- * \r
- */\r
- protected void popupSearch() {\r
- Dialog dialog = new ReferenceSearchDialog(getShell(), \r
- IReferenceSearch.BIBREF);\r
- Object value = ((ReferenceSearchDialog) dialog).open();\r
- \r
- if (value instanceof ReferenceBase) {\r
- setSavedReference((ReferenceBase) value);\r
- }\r
+ } \r
}\r
\r
- /**\r
- * @param value\r
- */\r
- private void setSavedReference(ReferenceBase reference) {\r
- \r
- savedReference = reference;\r
- \r
- txtReference.setText(reference.getTitleCache());\r
- txtReference.setEditable(false);\r
- \r
- btnClearReference.setEnabled(true);\r
- }\r
\r
- /**\r
- * \r
- */\r
- protected void clearReference() {\r
- savedReference = null;\r
- \r
- txtReference.setText("");\r
- txtReference.setEditable(true);\r
- \r
- btnClearReference.setEnabled(false); \r
- }\r
\r
@Override\r
public boolean canFlipToNextPage() {\r
\r
if (complete) {\r
\r
- ReferenceBase citation = null;\r
- if (savedReference != null) {\r
- citation = savedReference;\r
- } else {\r
- if (!txtReference.getText().equals("")) {\r
- citation = Generic.NewInstance();\r
- citation.setTitleCache(txtReference.getText());\r
- }\r
- }\r
+ ReferenceBase citation = referenceComposite.getReference();\r
+ String citationMicroReference = referenceComposite.getMicroReference();\r
\r
TypeDesignationStatus status = typeStatusArray[statusCombo.getSelectionIndex()];\r
\r
\r
if (typeDesignation == null) {\r
typeDesignation = new TemporarySpecimenTypeDesignation(specimen, status, \r
- citation, null, null, true);\r
+ citation, citationMicroReference, null, true);\r
} else {\r
typeDesignation.setTypeSpecimen(specimen);\r
typeDesignation.setTypeStatus(status);\r
typeDesignation.setCitation(citation);\r
+ typeDesignation.setCitationMicroReference(citationMicroReference);\r
}\r
\r
typeDesignationsList.remove(typeDesignation);\r
import org.eclipse.swt.widgets.Button;\r
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.swt.widgets.Table;\r
-import org.eclipse.swt.widgets.TableItem;\r
\r
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
tableViewer.addDoubleClickListener(new IDoubleClickListener() {\r
public void doubleClick(DoubleClickEvent event) {\r
if (((StructuredSelection) event.getSelection())\r
- .getFirstElement() instanceof SpecimenTypeDesignation) {\r
+ .getFirstElement() instanceof TypeDesignationBase) {\r
TypeDesignationBase typeDesignation = (TypeDesignationBase) \r
((StructuredSelection) event.getSelection()).getFirstElement();\r
createTypeDesignationWizard(typeDesignation);\r