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 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.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.TermVocabularyDto;
+import eu.etaxonomy.taxeditor.featuretree.AvailableFeaturesWizard;
+import eu.etaxonomy.taxeditor.model.ImageResources;
import eu.etaxonomy.taxeditor.ui.AbstractEntityCollectionElementWizardPage;
import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
/**
* @author pplitzner
public class FeatureStateWizardPage extends AbstractEntityCollectionElementWizardPage {
private TermComboElement<Feature> comboFeature;
- private TermComboElement<State> comboState;
- private String comboLabel;
+ private Button btnSelectState;
+
private TermNode<? extends Feature> termNode;
+ private State selectedState = null;
+ private List<TermVocabularyDto> stateVocabulariesDtos = new ArrayList<>();
+ private Text text;
- protected FeatureStateWizardPage(String pageName, String comboLabel, TermNode<? extends Feature> termNode, CdmFormFactory formFactory) {
+ protected FeatureStateWizardPage(String pageName, TermNode<? extends Feature> termNode, CdmFormFactory formFactory) {
super(pageName, formFactory);
- this.comboLabel = comboLabel;
this.termNode = termNode;
setTitle("Create Feature State");
setDescription("Select Feature and State");
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) {
+ AvailableFeaturesWizard wizard = new AvailableFeaturesWizard(stateVocabulariesDtos);
+ wizard.setSingleSelection(true);
+ WizardDialog dialog = new WizardDialog(getShell(), wizard);
+
+ if (dialog.open() == IStatus.OK) {
+ Collection<DefinedTermBase> additionalTerms = wizard.getAdditionalFeatures();
+ if(additionalTerms.size()==1){
+ selectedState = (State) additionalTerms.iterator().next();
+ text.setText(selectedState.getLabel());
+ }
+ }
+ }
+ });
formFactory.addPropertyChangeListener(this);
}
FeatureState getFeatureState(){
- return FeatureState.NewInstance(comboFeature.getSelection(), comboState.getSelection());
+ return FeatureState.NewInstance(comboFeature.getSelection(), selectedState);
}
private void updateFeatureCombo(){
}
private void updateStateCombo(Feature feature){
- comboState.setEnabled(true);
- List<State> stateTerms = new ArrayList<>();
- Set<TermVocabulary<State>> stateVocabularies = feature.getSupportedCategoricalEnumerations();
- for (TermVocabulary<State> termVocabulary : stateVocabularies) {
- stateTerms.addAll(termVocabulary.getTerms());
+ stateVocabulariesDtos.clear();
+ text.setText("");
+ selectedState = null;
+ if(feature!=null){
+ Set<TermVocabulary<State>> stateVocabularies = feature.getSupportedCategoricalEnumerations();
+ for (TermVocabulary<State> termVocabulary : stateVocabularies) {
+ stateVocabulariesDtos.add(new TermVocabularyDto(termVocabulary.getUuid(), termVocabulary.getRepresentations(), termVocabulary.getTermType()));
+ }
}
- comboState.setTerms(stateTerms);
}
@Override
public boolean isPageComplete() {
- return comboFeature.getSelection()!=null && comboState.getSelection()!=null;
+ return comboFeature.getSelection()!=null && selectedState!=null;
}
@Override