X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/aa312f10182a61c706645e994956ab258c608f02..5acb8103fac2f404769b0f734bdff1e6b206633b:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureStateWizardPage.java diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureStateWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureStateWizardPage.java index d19db885c..68182ac1c 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureStateWizardPage.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureStateWizardPage.java @@ -9,22 +9,41 @@ package eu.etaxonomy.taxeditor.ui.section.feature; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Set; +import java.util.UUID; +import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +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.Label; +import org.eclipse.swt.widgets.Text; +import eu.etaxonomy.cdm.api.service.ITermNodeService; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.description.FeatureState; import eu.etaxonomy.cdm.model.description.State; +import eu.etaxonomy.cdm.model.term.DefinedTermBase; import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermVocabulary; +import eu.etaxonomy.cdm.persistence.dto.TermNodeDto; +import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto; +import eu.etaxonomy.taxeditor.featuretree.AvailableTermsWizard; +import eu.etaxonomy.taxeditor.model.ImageResources; +import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.ui.AbstractEntityCollectionElementWizardPage; -import eu.etaxonomy.taxeditor.ui.combo.TermComboElement; +import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; +import eu.etaxonomy.taxeditor.ui.element.LayoutConstants; /** * @author pplitzner @@ -34,13 +53,15 @@ import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; public class FeatureStateWizardPage extends AbstractEntityCollectionElementWizardPage { private TermComboElement comboFeature; - private TermComboElement comboState; - private String comboLabel; - private TermNode termNode; + private Button btnSelectState; - protected FeatureStateWizardPage(String pageName, String comboLabel, TermNode termNode, CdmFormFactory formFactory) { + private TermNodeDto termNode; + private State selectedState = null; + private List stateVocabulariesDtos = new ArrayList<>(); + private Text text; + + protected FeatureStateWizardPage(String pageName, TermNodeDto termNode, CdmFormFactory formFactory) { super(pageName, formFactory); - this.comboLabel = comboLabel; this.termNode = termNode; setTitle("Create Feature State"); setDescription("Select Feature and State"); @@ -52,8 +73,34 @@ public class FeatureStateWizardPage extends AbstractEntityCollectionElementWizar comboFeature = formFactory.createDefinedTermComboElement(Collections.EMPTY_LIST, rootElement, "Parent Feature", null, SWT.NONE); - comboState = formFactory.createDefinedTermComboElement(Collections.EMPTY_LIST, rootElement, comboLabel, null, SWT.NONE); - comboState.setEnabled(false); + Label label = new Label(rootElement.getLayoutComposite(), SWT.NONE); + label.setText("State"); + Composite buttonTextComposite = new Composite(rootElement.getLayoutComposite(), SWT.NONE); + buttonTextComposite.setLayoutData(LayoutConstants.FILL(1, 1)); + buttonTextComposite.setLayout(new GridLayout(2, false)); + text = new Text(buttonTextComposite, SWT.NONE); + text.setEditable(false); + text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); + btnSelectState = new Button(buttonTextComposite, SWT.PUSH); + btnSelectState.setImage(ImageResources.getImage(ImageResources.BROWSE_ICON)); + btnSelectState.addSelectionListener(new SelectionAdapter() { + + @Override + public void widgetSelected(SelectionEvent e) { + AvailableTermsWizard wizard = new AvailableTermsWizard(stateVocabulariesDtos); + wizard.setSingleSelection(true); + WizardDialog dialog = new WizardDialog(getShell(), wizard); + + if (dialog.open() == IStatus.OK) { + Collection additionalTerms = wizard.getAdditionalFeatures(); + if(additionalTerms.size()==1){ + selectedState = (State) additionalTerms.iterator().next(); + text.setText(selectedState.getLabel()); + FeatureStateWizardPage.this.getWizard().getContainer().updateButtons(); + } + } + } + }); formFactory.addPropertyChangeListener(this); @@ -61,42 +108,48 @@ public class FeatureStateWizardPage extends AbstractEntityCollectionElementWizar } FeatureState getFeatureState(){ - return FeatureState.NewInstance(comboFeature.getSelection(), comboState.getSelection()); + return FeatureState.NewInstance(comboFeature.getSelection(), selectedState); } private void updateFeatureCombo(){ List features = new ArrayList<>(); - TermNode parent = termNode.getParent(); - while(parent!=null){ - Feature parentTerm = parent.getTerm(); - if(parentTerm!=null - && parentTerm.isSupportsCategoricalData() - && !parentTerm.getSupportedCategoricalEnumerations().isEmpty()){ - features.add(parentTerm); + UUID parentUuid = termNode.getParentUuid(); + if (parentUuid != null){ + TermNode parent = CdmStore.getService(ITermNodeService.class).load(parentUuid); + while(parent!=null){ + Feature parentTerm = parent.getTerm(); + if(parentTerm!=null + && parentTerm.isSupportsCategoricalData() + && !parentTerm.getSupportedCategoricalEnumerations().isEmpty()){ + features.add(parentTerm); + } + parent = parent.getParent(); } - parent = parent.getParent(); } comboFeature.setTerms(features); if(features.size()==1){ Feature feature = features.get(0); comboFeature.setSelection(feature); updateStateCombo(feature); + comboFeature.removeEmptyElement(); } } private void updateStateCombo(Feature feature){ - comboState.setEnabled(true); - List stateTerms = new ArrayList<>(); - Set> stateVocabularies = feature.getSupportedCategoricalEnumerations(); - for (TermVocabulary termVocabulary : stateVocabularies) { - stateTerms.addAll(termVocabulary.getTerms()); + stateVocabulariesDtos.clear(); + text.setText(""); + selectedState = null; + if(feature!=null){ + Set> stateVocabularies = feature.getSupportedCategoricalEnumerations(); + for (TermVocabulary termVocabulary : stateVocabularies) { + stateVocabulariesDtos.add(new TermVocabularyDto(termVocabulary.getUuid(), termVocabulary.getRepresentations(), termVocabulary.getTermType(), termVocabulary.getTitleCache(), termVocabulary.isAllowDuplicates(), termVocabulary.isOrderRelevant(), termVocabulary.isFlat())); + } } - comboState.setTerms(stateTerms); } @Override public boolean isPageComplete() { - return comboFeature.getSelection()!=null && comboState.getSelection()!=null; + return comboFeature.getSelection()!=null && selectedState!=null; } @Override @@ -104,6 +157,7 @@ public class FeatureStateWizardPage extends AbstractEntityCollectionElementWizar if(event.getSource()==comboFeature){ Feature feature = comboFeature.getSelection(); updateStateCombo(feature); + comboFeature.removeEmptyElement(); } getWizard().getContainer().updateButtons(); }