Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/EnumControl.java')
-rw-r--r--bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/EnumControl.java97
1 files changed, 23 insertions, 74 deletions
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/EnumControl.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/EnumControl.java
index 82752ae07..67576b13d 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/EnumControl.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/EnumControl.java
@@ -1,7 +1,9 @@
package org.eclipse.fx.ecp.ui.controls;
import java.util.ArrayList;
+import java.util.Collection;
+import javafx.beans.property.Property;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.control.ChoiceBox;
@@ -24,106 +26,53 @@ import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
import org.eclipse.fx.ecp.ui.Control;
@SuppressWarnings("restriction")
-public class EnumControl extends VBox implements Control {
+public class EnumControl extends ChoiceBox<Enumerator> implements Control {
- private ValidationMessage validationMessage;
+ public EnumControl(final Property<Enumerator> property, Collection<Enumerator> values, ECPControlContext context) {
- public EnumControl(IItemPropertyDescriptor propertyDescriptor, ECPControlContext context) {
- final EObject modelElement = context.getModelElement();
- final EditingDomain editingDomain = context.getEditingDomain();
+ getItems().addAll(values);
- final EStructuralFeature feature = (EStructuralFeature) propertyDescriptor.getFeature(modelElement);
+ SingleSelectionModel<Enumerator> selectionModel = getSelectionModel();
- ChoiceBox<Enumerator> choiceBox = new ChoiceBox<>();
-
- EClassifier type = feature.getEType();
-
- EEnum eEnum = (EEnum) type;
-
- EList<EEnumLiteral> enumLiterals = eEnum.getELiterals();
-
- ArrayList<Enumerator> values = new ArrayList<Enumerator>();
-
- if (!feature.isRequired())
- values.add(null);
-
- for (EEnumLiteral literal : enumLiterals)
- values.add(literal.getInstance());
-
- choiceBox.getItems().addAll(values);
-
- SingleSelectionModel<Enumerator> selectionModel = choiceBox.getSelectionModel();
-
- Enumerator val = (Enumerator) modelElement.eGet(feature);
-
- selectionModel.select(val);
-
- getChildren().add(choiceBox);
+ selectionModel.select(property.getValue());
selectionModel.selectedItemProperty().addListener(new ChangeListener<Enumerator>() {
@Override
public void changed(ObservableValue<? extends Enumerator> observableValue, Enumerator oldValue, Enumerator newValue) {
- Command command = SetCommand.create(editingDomain, modelElement, feature, newValue);
- if (command.canExecute())
- editingDomain.getCommandStack().execute(command);
-
- if(newValue == null) {
- validationMessage.setMessage("A value must be selected");
- } else {
- validationMessage.setMessage(null);
- }
+ property.setValue(newValue);
}
});
- validationMessage = new ValidationMessage();
- getChildren().add(validationMessage);
}
@Override
public void handleValidation(Diagnostic diagnostic) {
-// if (diagnostic.getSeverity() != Diagnostic.OK) {
-//
-// validationMessage.setMessage(diagnostic.getMessage());
-//
-//// validationLabel.setText(diagnostic.getMessage());
-//
-// // Timeline timeline = new Timeline();
-// //
-// // timeline.getKeyFrames().addAll(
-// // new KeyFrame(Duration.ZERO, new
-// // KeyValue(rectangle.heightProperty(), 0, Interpolator.EASE_BOTH)),
-// // new KeyFrame(Duration.millis(300), new
-// // KeyValue(rectangle.heightProperty(), 50, Interpolator.EASE_BOTH))
-// // );
-// //
-// // timeline.play();
-//
-// // ScaleTransition transition = ScaleTransitionBuilder.create()
-// // .node(validationLabel)
-// // .duration(Duration.seconds(2))
-// // .fromY(0)
-// // .toY(1)
-// // .build();
-// // transition.play();
-//
-// } else {
-// resetValidation();
-// }
+
}
@Override
public void resetValidation() {
-// validationLabel.setText(null);
-
+
}
public static class Factory implements Control.Factory {
@Override
- public Control createControl(IItemPropertyDescriptor itemPropertyDescriptor, ECPControlContext context) {
- return new EnumControl(itemPropertyDescriptor, context);
+ public Control createControl(Property<?> property, EStructuralFeature feature, ECPControlContext context) {
+ EClassifier type = feature.getEType();
+ EEnum eEnum = (EEnum) type;
+ EList<EEnumLiteral> enumLiterals = eEnum.getELiterals();
+ ArrayList<Enumerator> values = new ArrayList<Enumerator>();
+
+ if (!feature.isRequired())
+ values.add(null);
+
+ for (EEnumLiteral literal : enumLiterals)
+ values.add(literal.getInstance());
+
+ return new EnumControl((Property<Enumerator>) property, values, context);
}
}

Back to the top