}else{
selectedVocabularies.remove(vocabulary);
}
-
initModel();
}
}
private Collection<TermVocabulary<NamedArea>> selectedVocabularies;
+ private final ArrayList<TermVocabulary> preselectedVocabularies;
/**
* @param namedArea
* A namedArea that should be selected when the dialog opens
* @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
+ * @param preselectedVocabularyUuids the {@link UUID}s of the pre-selected vocabularies
* @return a {@link eu.etaxonomy.cdm.model.location.NamedArea} object.
*/
- public static NamedArea select(Shell shell, ConversationHolder conversation, NamedArea namedArea) {
+ public static NamedArea select(Shell shell, ConversationHolder conversation, NamedArea namedArea, UUID... preselectedVocabularyUuids) {
NamedAreaSelectionDialog dialog = new NamedAreaSelectionDialog(shell, conversation,
- "Choose an area", false, namedArea);
+ "Choose an area", false, namedArea, preselectedVocabularyUuids);
return getSelectionFromDialog(dialog);
}
* @param title a {@link java.lang.String} object.
* @param multi a boolean.
* @param namedArea a {@link eu.etaxonomy.cdm.model.location.NamedArea} object.
+ * @param preselectedVocabularyUuids the {@link UUID}s of the pre-selected Vocabularies
*/
- protected NamedAreaSelectionDialog(Shell shell, ConversationHolder conversation, String title, boolean multi, NamedArea namedArea) {
+ protected NamedAreaSelectionDialog(Shell shell, ConversationHolder conversation, String title, boolean multi, NamedArea namedArea, UUID... preselectedVocabularyUuids) {
super(shell, conversation, title, multi, NamedAreaSelectionDialog.class.getCanonicalName(), namedArea);
+ preselectedVocabularies = new ArrayList<TermVocabulary>();
+ for(int i=0;i<preselectedVocabularyUuids.length;i++){
+ TermVocabulary preselectedVocabulary = CdmStore.getService(IVocabularyService.class).find(preselectedVocabularyUuids[i]);
+ preselectedVocabularies.add(preselectedVocabulary);
+ }
+ selectedVocabularies.retainAll(preselectedVocabularies);
+ initModel();//re-init to consider pre-selected vocabularies
}
/** {@inheritDoc} */
super.fillViewMenu(menuManager);
- for(TermVocabulary<NamedArea> vocabulary : getVocabularies()){
+ for(TermVocabulary<NamedArea> vocabulary : getAvailableVocabularies()){
IncludeNamedAreaVocabulary action = new IncludeNamedAreaVocabulary(vocabulary);
menuManager.add(action);
- action.setChecked(true);
+ if(preselectedVocabularies.isEmpty() || preselectedVocabularies.contains(vocabulary)) {
+ action.setChecked(true);
+ }
}
}
/** {@inheritDoc} */
@Override
protected void init() {
- selectedVocabularies = getVocabularies();
+ selectedVocabularies = getAvailableVocabularies();
}
- private List<TermVocabulary<NamedArea>> getVocabularies(){
+ private List<TermVocabulary<NamedArea>> getAvailableVocabularies(){
List<TermVocabulary<NamedArea>> vocabularies = CdmStore.getService(IVocabularyService.class).listByTermClass(NamedArea.class, null, null, null, null);
vocabularies.add(CdmStore.getService(IVocabularyService.class).find(Country.uuidCountryVocabulary));
return vocabularies;
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
import eu.etaxonomy.cdm.model.agent.AgentBase;
import eu.etaxonomy.cdm.model.agent.Institution;
import eu.etaxonomy.cdm.model.agent.Person;
import eu.etaxonomy.cdm.model.description.FeatureTree;
import eu.etaxonomy.cdm.model.description.PolytomousKey;
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.cdm.model.location.Country;
import eu.etaxonomy.cdm.model.location.NamedArea;
import eu.etaxonomy.cdm.model.molecular.Amplification;
import eu.etaxonomy.cdm.model.molecular.Primer;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
/**
* @author n.hoffmann
*/
public class SelectionDialogFactory {
- public static <T extends ICdmBase> T getSelectionFromDialog(Class<T> clazz, Shell shell, ConversationHolder conversation, T currentSelection){
+ public static <T extends ICdmBase> T getSelectionFromDialog(Class<T> clazz, Shell shell, ConversationHolder conversation, T currentSelection){
+ return getSelectionFromDialog(clazz, shell, conversation, currentSelection, null);
+ }
+
+ public static <T extends ICdmBase> T getSelectionFromDialog(Class<T> clazz, Shell shell, ConversationHolder conversation, T currentSelection, ICdmFormElement parentElement){
if(clazz.equals(Taxon.class)){
return (T) TaxonBaseSelectionDialog.selectTaxon(shell, conversation, (Taxon) currentSelection);
return (T) FieldUnitSelectionDialog.select(shell, conversation, (FieldUnit) currentSelection);
}
if(clazz.equals(NamedArea.class)){
- return (T) NamedAreaSelectionDialog.select(shell, conversation, (NamedArea) currentSelection);
+ if(parentElement instanceof IEntityElement && ((IEntityElement) parentElement).getEntity() instanceof DerivedUnitFacade){
+ return (T) NamedAreaSelectionDialog.select(shell, conversation, (NamedArea) currentSelection, Country.uuidCountryVocabulary);
+ }
+ else{
+ return (T) NamedAreaSelectionDialog.select(shell, conversation, (NamedArea) currentSelection);
+ }
}
if(clazz.equals(Collection.class)){
return (T) CollectionSelectionDialog.select(shell, conversation, (Collection) currentSelection);