diff options
author | Torsten Sommer | 2013-05-13 12:05:58 +0000 |
---|---|---|
committer | Torsten Sommer | 2013-05-13 12:05:58 +0000 |
commit | f44bcb5445652b87acabb513acc79f6a2facf60d (patch) | |
tree | db7b5543da39fe1b66936ef110bbe4cd5ac7cad1 | |
parent | 9e42521c27d6d846df76ef94d99266f3b95f03fc (diff) | |
download | org.eclipse.efxclipse-f44bcb5445652b87acabb513acc79f6a2facf60d.tar.gz org.eclipse.efxclipse-f44bcb5445652b87acabb513acc79f6a2facf60d.tar.xz org.eclipse.efxclipse-f44bcb5445652b87acabb513acc79f6a2facf60d.zip |
Moved ECP projects from GitHub.
98 files changed, 3387 insertions, 0 deletions
diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/.classpath b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/.classpath new file mode 100644 index 000000000..1fa3e6803 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/.project b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/.project new file mode 100644 index 000000000..43079c940 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>at.bestsolution.efxclipse.ecp.ui</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/META-INF/MANIFEST.MF b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/META-INF/MANIFEST.MF new file mode 100644 index 000000000..b90fff9a4 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/META-INF/MANIFEST.MF @@ -0,0 +1,20 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: ECP for JavaFX UI +Bundle-SymbolicName: at.bestsolution.efxclipse.ecp.ui;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: at.bestsolution.efxclipse.ecp.ui.ECPUIPlugin +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.eclipse.emf.ecp.edit;bundle-version="1.0.0", + org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1", + org.eclipse.e4.ui.workbench;bundle-version="0.11.0", + org.eclipse.e4.core.di;bundle-version="1.2.0", + org.eclipse.e4.core.contexts;bundle-version="1.2.0", + com.google.guava;bundle-version="10.0.1", + org.eclipse.fx.emf.edit.ui;bundle-version="0.8.1", + at.bestsolution.efxclipse.runtime.ecp.dummy;bundle-version="1.0.0" +Bundle-ActivationPolicy: lazy +Export-Package: at.bestsolution.efxclipse.ecp.ui +Service-Component: OSGI-INF/modelElementOpener.xml +Import-Package: javax.inject;version="1.0.0" diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/OSGI-INF/modelElementOpener.xml b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/OSGI-INF/modelElementOpener.xml new file mode 100644 index 000000000..0ba024413 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/OSGI-INF/modelElementOpener.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="at.bestsolution.efxclipse.ecp.app"> + <implementation class="at.bestsolution.efxclipse.ecp.ui.ECPModelElementOpenerImpl"/> + <service> + <provide interface="at.bestsolution.efxclipse.ecp.ui.ECPModelElementOpener"/> + </service> +</scr:component> diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/build.properties b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/build.properties new file mode 100644 index 000000000..e9863e281 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/build.properties @@ -0,0 +1,5 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/plugin.xml b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/plugin.xml new file mode 100644 index 000000000..c8353f8b3 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/plugin.xml @@ -0,0 +1,89 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.emf.ecp.edit.controls"> + <!-- + <factory + class="at.bestsolution.efxclipse.ecp.ui.controls.DummyControl$Factory" + controlClass="javafx.scene.Node" + id="at.bestsolution.efxclipse.ecp.ui.factories.dummyControl" + showLabel="true"> + <staticTest + priority="1" + singleValue="true" + supportedClassType="java.lang.Object"> + </staticTest> + </factory> + --> + <factory + class="at.bestsolution.efxclipse.ecp.ui.controls.CheckBoxControl$Factory" + controlClass="javafx.scene.Node" + id="at.bestsolution.efxclipse.ecp.ui.factories.checkBoxControl" + showLabel="true"> + <staticTest + priority="1" + singleValue="true" + supportedClassType="java.lang.Boolean"> + </staticTest> + </factory> + <factory + class="at.bestsolution.efxclipse.ecp.ui.controls.TextFieldControl$Factory" + controlClass="javafx.scene.Node" + id="at.bestsolution.efxclipse.ecp.ui.factories.textFieldControl" + showLabel="true"> + + <staticTest + priority="1" + singleValue="true" + supportedClassType="java.math.BigDecimal"> + </staticTest> + <staticTest + priority="1" + singleValue="true" + supportedClassType="java.math.BigInteger"> + </staticTest> + <staticTest + priority="1" + singleValue="true" + supportedClassType="java.lang.Character"> + </staticTest> + <staticTest + priority="1" + singleValue="true" + supportedClassType="java.util.Date"> + </staticTest> + <staticTest + priority="1" + singleValue="true" + supportedClassType="java.lang.Double"> + </staticTest> + <staticTest + priority="1" + singleValue="true" + supportedClassType="java.lang.Float"> + </staticTest> + <staticTest + priority="1" + singleValue="true" + supportedClassType="java.lang.Integer"> + </staticTest> + <staticTest + priority="1" + singleValue="true" + supportedClassType="java.lang.Long"> + </staticTest> + <staticTest + priority="1" + singleValue="true" + supportedClassType="java.lang.Short"> + </staticTest> + <staticTest + priority="1" + singleValue="true" + supportedClassType="java.lang.String"> + </staticTest> + </factory> + </extension> + +</plugin> diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/DummyControlFactory.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/DummyControlFactory.java new file mode 100644 index 000000000..db99f10c1 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/DummyControlFactory.java @@ -0,0 +1,15 @@ +package at.bestsolution.efxclipse.ecp.ui; + +import org.eclipse.emf.ecp.edit.Control; +import org.eclipse.emf.ecp.edit.ECPControlContext; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +@SuppressWarnings("restriction") +public class DummyControlFactory implements Control.Factory { + + @Override + public Control createControl(IItemPropertyDescriptor itemPropertyDescriptor, ECPControlContext context) { + return null; + } + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/ECPModelElementOpener.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/ECPModelElementOpener.java new file mode 100644 index 000000000..21ef0532b --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/ECPModelElementOpener.java @@ -0,0 +1,12 @@ +package at.bestsolution.efxclipse.ecp.ui; + +import org.eclipse.e4.ui.model.application.MApplication; +import org.eclipse.e4.ui.workbench.modeling.EModelService; +import org.eclipse.e4.ui.workbench.modeling.EPartService; +import org.eclipse.emf.ecore.EObject; + +public interface ECPModelElementOpener { + + void openModelElement(EObject modelElement, MApplication application, EModelService modelService, EPartService partService); + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/ECPModelElementOpenerImpl.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/ECPModelElementOpenerImpl.java new file mode 100644 index 000000000..3dcb2e4a0 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/ECPModelElementOpenerImpl.java @@ -0,0 +1,43 @@ +package at.bestsolution.efxclipse.ecp.ui; + +import org.eclipse.e4.ui.model.application.MApplication; +import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory; +import org.eclipse.e4.ui.model.application.ui.basic.MInputPart; +import org.eclipse.e4.ui.model.application.ui.basic.MPartStack; +import org.eclipse.e4.ui.workbench.modeling.EModelService; +import org.eclipse.e4.ui.workbench.modeling.EPartService; +import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecp.edit.ECPControlContext; + +import at.bestsolution.efxclipse.runtime.ecp.dummy.DummyControlContext; +import at.bestsolution.efxclipse.runtime.ecp.dummy.DummyWorkspace; + +@SuppressWarnings("restriction") +public class ECPModelElementOpenerImpl implements ECPModelElementOpener { + + @Override + public void openModelElement(EObject modelElement, MApplication application, EModelService modelService, EPartService partService) { + MPartStack stack = (MPartStack) + modelService.find("at.bestsolution.efxclipse.ecp.app.partstacks.editors", + application); + + MInputPart part = MBasicFactory.INSTANCE.createInputPart(); + part.setContributionURI("bundleclass://at.bestsolution.efxclipse.ecp.app/at.bestsolution.efxclipse.ecp.ModelEditorPart"); + +// part.setIconURI("platform:/plugin/de.vogella.rcp.e4.todo/icons/sample.gif"); + part.setCloseable(true); + + stack.getChildren().add(part); + partService.showPart(part, PartState.ACTIVATE); + + part.getContext().set(EObject.class, modelElement); + + ModelElementEditor editor = (ModelElementEditor) part.getObject(); + + ECPControlContext modelElementContext = new DummyControlContext(DummyWorkspace.INSTANCE.getPlayer()); + + editor.setInput(modelElementContext); + } + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/ECPUIPlugin.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/ECPUIPlugin.java new file mode 100644 index 000000000..e9988a02c --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/ECPUIPlugin.java @@ -0,0 +1,50 @@ +package at.bestsolution.efxclipse.ecp.ui; + +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class ECPUIPlugin extends AbstractUIPlugin { + + // The plug-in ID + public static final String PLUGIN_ID = "at.bestsolution.efxclipse.ecp.ui"; //$NON-NLS-1$ + + // The shared instance + private static ECPUIPlugin plugin; + + /** + * The constructor + */ + public ECPUIPlugin() { + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static ECPUIPlugin getDefault() { + return plugin; + } + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/FXControlFactory.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/FXControlFactory.java new file mode 100644 index 000000000..07e6eb040 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/FXControlFactory.java @@ -0,0 +1,48 @@ +package at.bestsolution.efxclipse.ecp.ui; + +import java.util.Set; + +import javafx.beans.property.Property; +import javafx.scene.control.TextField; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecp.edit.AbstractControl; +import org.eclipse.emf.ecp.edit.ControlDescription; +import org.eclipse.emf.ecp.edit.ControlFactory; +import org.eclipse.emf.ecp.edit.ECPControlContext; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +public class FXControlFactory implements ControlFactory { + + public static final FXControlFactory INSTANCE = new FXControlFactory(); + + @Override + public <T> AbstractControl<T> createControl(T parent, IItemPropertyDescriptor itemPropertyDescriptor, ECPControlContext context) { + return null; + } + + @Override + @SuppressWarnings("unchecked") + public <T> AbstractControl<T> createControl(T parent, IItemPropertyDescriptor itemPropertyDescriptor, ECPControlContext context, + String controlId) { + EStructuralFeature feature = (EStructuralFeature) itemPropertyDescriptor.getFeature(context.getModelElement()); + + if(feature instanceof EAttribute) { + EAttribute attribute = (EAttribute) feature; + if(attribute.getEAttributeType() == EcorePackage.Literals.ESTRING) { + return (AbstractControl<T>) new StringControl(true, itemPropertyDescriptor, feature, context, false); + } + } + + return null; + } + + @Override + public Set<ControlDescription> getControlDescriptors() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/FXPropertyObservableValue.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/FXPropertyObservableValue.java new file mode 100644 index 000000000..5bd3f75a4 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/FXPropertyObservableValue.java @@ -0,0 +1,49 @@ +package at.bestsolution.efxclipse.ecp.ui; + +import javafx.beans.property.Property; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; + +import org.eclipse.core.databinding.observable.value.AbstractObservableValue; +import org.eclipse.core.databinding.observable.value.ValueDiff; + + +public class FXPropertyObservableValue<T> extends AbstractObservableValue { + + Property<T> property; + + public FXPropertyObservableValue(Property<T> property) { + this.property = property; + property.addListener(new ChangeListener<T>() { + + @Override + public void changed(ObservableValue<? extends T> observableValue, final T oldValue, final T newValue) { + fireValueChange(new ValueDiff() { + + @Override + public Object getOldValue() { + return oldValue; + } + + @Override + public Object getNewValue() { + return newValue; + } + + }); + } + + }); + } + + @Override + public Object getValueType() { + return null; + } + + @Override + protected Object doGetValue() { + return property.getValue(); + } + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/ModelElementEditor.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/ModelElementEditor.java new file mode 100644 index 000000000..15a337bd2 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/ModelElementEditor.java @@ -0,0 +1,9 @@ +package at.bestsolution.efxclipse.ecp.ui; + +import org.eclipse.emf.ecp.edit.ECPControlContext; + +public interface ModelElementEditor { + + void setInput(ECPControlContext modelElement); + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/StringControl.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/StringControl.java new file mode 100644 index 000000000..ab5f195dd --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/StringControl.java @@ -0,0 +1,84 @@ +package at.bestsolution.efxclipse.ecp.ui; + +import javafx.scene.Node; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Priority; + +import org.eclipse.core.databinding.DataBindingContext; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.databinding.edit.EditingDomainEObjectObservableValue; +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecp.edit.AbstractControl; +import org.eclipse.emf.ecp.edit.ECPControlContext; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +public class StringControl extends AbstractControl<Node> { + + public StringControl(boolean showLabel, IItemPropertyDescriptor itemPropertyDescriptor, EStructuralFeature feature, + ECPControlContext modelElementContext, boolean embedded) { + super(showLabel, itemPropertyDescriptor, feature, modelElementContext, embedded); + } + + @Override + public Node createControl(Node parent) { + IItemPropertyDescriptor descriptor = getItemPropertyDescriptor(); + EObject modelElement = getModelElementContext().getModelElement(); + EditingDomain editingDomain = getModelElementContext().getEditingDomain(); + DataBindingContext dataBindingContext = getModelElementContext().getDataBindingContext(); + + HBox hBox = new HBox(); + + Label label = new Label(descriptor.getDisplayName(modelElement)); + label.setPrefWidth(150); + hBox.getChildren().add(label); + + Object feature = descriptor.getFeature(modelElement); + + if(feature instanceof EAttribute) { + EAttribute attribute = (EAttribute) feature; + if(attribute.getEAttributeType() == EcorePackage.Literals.ESTRING) { + TextField textField = new TextField(); + HBox.setHgrow(textField, Priority.ALWAYS); + hBox.getChildren().add(textField); + + //Property<String> textProperty = EMFEditFXProperties.value(editingDomain, modelElement, attribute); + //textField.textProperty().bindBidirectional(textProperty); + + FXPropertyObservableValue<String> targetObservableValue = new FXPropertyObservableValue<String>(textField.textProperty()); + + EditingDomainEObjectObservableValue modelObservableValue = new EditingDomainEObjectObservableValue(editingDomain, modelElement, attribute); + + dataBindingContext.bindValue(targetObservableValue, modelObservableValue); + } + } + + return null; + } + + @Override + public void dispose() { + // do nothing + } + + @Override + public void handleValidation(Diagnostic diagnostic) { + // TODO Auto-generated method stub + } + + @Override + public void resetValidation() { + // TODO Auto-generated method stub + } + + @Override + public void setEditable(boolean isEditable) { + // TODO Auto-generated method stub + } + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/CheckBoxControl.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/CheckBoxControl.java new file mode 100644 index 000000000..f3de0a6e3 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/CheckBoxControl.java @@ -0,0 +1,57 @@ +package at.bestsolution.efxclipse.ecp.ui.controls; + +import javafx.scene.control.CheckBox; +import javafx.scene.control.Label; +import javafx.scene.layout.HBox; + +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecp.edit.Control; +import org.eclipse.emf.ecp.edit.ECPControlContext; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +@SuppressWarnings("restriction") +public class CheckBoxControl extends HBox implements Control { + + public CheckBoxControl(IItemPropertyDescriptor propertyDescriptor, ECPControlContext context) { + getStyleClass().add("formControl"); + + EObject modelElement = context.getModelElement(); + + String displayName = propertyDescriptor.getDisplayName(modelElement); + Label label = new Label(displayName); + label.getStyleClass().add(IControlConstants.CONTROL_LABEL_CLASS); + getChildren().add(label); + + EStructuralFeature feature = (EStructuralFeature) propertyDescriptor.getFeature(modelElement); + Object val = modelElement.eGet(feature); + + CheckBox checkBox = new CheckBox(); + checkBox.setSelected((Boolean) val); + + getChildren().add(checkBox); + } + + @Override + public void handleValidation(Diagnostic diagnostic) { + // TODO Auto-generated method stub + + } + + @Override + public void resetValidation() { + // TODO Auto-generated method stub + + } + + public static class Factory implements Control.Factory { + + @Override + public Control createControl(IItemPropertyDescriptor itemPropertyDescriptor, ECPControlContext context) { + return new CheckBoxControl(itemPropertyDescriptor, context); + } + + } + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/DummyControl.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/DummyControl.java new file mode 100644 index 000000000..c47621bee --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/DummyControl.java @@ -0,0 +1,57 @@ +package at.bestsolution.efxclipse.ecp.ui.controls; + + +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Priority; + +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecp.edit.Control; +import org.eclipse.emf.ecp.edit.ECPControlContext; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +@SuppressWarnings("restriction") +public class DummyControl extends HBox implements Control { + + public DummyControl(IItemPropertyDescriptor propertyDescriptor, ECPControlContext context) { + EObject modelElement = context.getModelElement(); + + String displayName = propertyDescriptor.getDisplayName(modelElement); + Label label = new Label(displayName); + label.getStyleClass().add(IControlConstants.CONTROL_LABEL_CLASS); + getChildren().add(label); + + EStructuralFeature feature = (EStructuralFeature) propertyDescriptor.getFeature(modelElement); + Object val = modelElement.eGet(feature); + + TextField textField = new TextField(); + textField.setText(val.toString()); + textField.setDisable(true); + HBox.setHgrow(textField, Priority.ALWAYS); + + getChildren().add(textField); + } + + @Override + public void handleValidation(Diagnostic diagnostic) { + // TODO Auto-generated method stub + } + + @Override + public void resetValidation() { + // TODO Auto-generated method stub + } + + public static class Factory implements Control.Factory { + + @Override + public Control createControl(IItemPropertyDescriptor itemPropertyDescriptor, ECPControlContext context) { + return new DummyControl(itemPropertyDescriptor, context); + } + + } + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/EnumControl.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/EnumControl.java new file mode 100644 index 000000000..c8b553500 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/EnumControl.java @@ -0,0 +1,100 @@ +package at.bestsolution.efxclipse.ecp.ui.controls; + +import java.util.ArrayList; + +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.Label; +import javafx.scene.control.SingleSelectionModel; +import javafx.scene.layout.HBox; + +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.Enumerator; +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EEnumLiteral; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecp.edit.Control; +import org.eclipse.emf.ecp.edit.ECPControlContext; +import org.eclipse.emf.edit.command.SetCommand; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +@SuppressWarnings("restriction") +public class EnumControl extends HBox implements Control { + + public EnumControl(IItemPropertyDescriptor propertyDescriptor, ECPControlContext context) { + final EObject modelElement = context.getModelElement(); + final EditingDomain editingDomain = context.getEditingDomain(); + + String displayName = propertyDescriptor.getDisplayName(modelElement); + Label label = new Label(displayName); + label.getStyleClass().add(IControlConstants.CONTROL_LABEL_CLASS); + getChildren().add(label); + + final EStructuralFeature feature = (EStructuralFeature) propertyDescriptor.getFeature(modelElement); + + 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.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); + } + + }); + } + + @Override + public void handleValidation(Diagnostic diagnostic) { + // TODO Auto-generated method stub + + } + + @Override + public void resetValidation() { + // TODO Auto-generated method stub + + } + + public static class Factory implements Control.Factory { + + @Override + public Control createControl(IItemPropertyDescriptor itemPropertyDescriptor, ECPControlContext context) { + return new EnumControl(itemPropertyDescriptor, context); + } + + } + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/FormControlFactory.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/FormControlFactory.java new file mode 100644 index 000000000..9caff4d08 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/FormControlFactory.java @@ -0,0 +1,52 @@ +package at.bestsolution.efxclipse.ecp.ui.controls; + +import javafx.scene.Node; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecp.edit.ECPControlContext; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +public class FormControlFactory { + + public Node createFormControl(IItemPropertyDescriptor propertyDescriptor, ECPControlContext context) { + + EObject modelElement = context.getModelElement(); + EStructuralFeature feature = (EStructuralFeature) propertyDescriptor.getFeature(modelElement); + + EClassifier type = feature.getEType(); + + if (feature.isMany()) { + if (type == EcorePackage.Literals.ESTRING) { + return new MultiTextControl(propertyDescriptor, context); + } + if (feature instanceof EReference) { + return new MultiReferenceControl(propertyDescriptor, context); + } + } else { + + if (type == EcorePackage.Literals.EBOOLEAN) { + return new CheckBoxControl(propertyDescriptor, context); + } else if (type instanceof EEnum) { + return new EnumControl(propertyDescriptor, context); + } else if (feature instanceof EAttribute) { + TextFieldControl textFieldControl = new TextFieldControl(propertyDescriptor, context); + if (type instanceof EDataType && textFieldControl.isControlFor((EDataType) type)) + return textFieldControl; + } else if (feature instanceof EReference) { + return new ReferenceControl(propertyDescriptor, context); + } + + } + + return new DummyControl(propertyDescriptor, context); + + } + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/IControlConstants.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/IControlConstants.java new file mode 100644 index 000000000..21b5e93ee --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/IControlConstants.java @@ -0,0 +1,8 @@ +package at.bestsolution.efxclipse.ecp.ui.controls; + +public interface IControlConstants { + + String CONTROL_LABEL_CLASS = "controlLabel"; + String INVALID_CLASS = "invalid"; + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/MultiReferenceControl.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/MultiReferenceControl.java new file mode 100644 index 000000000..5e7a15573 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/MultiReferenceControl.java @@ -0,0 +1,58 @@ +package at.bestsolution.efxclipse.ecp.ui.controls; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.Label; +import javafx.scene.control.ListView; +import javafx.scene.control.SingleSelectionModel; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Priority; + +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.Enumerator; +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EEnumLiteral; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecp.edit.ECPControlContext; +import org.eclipse.emf.edit.command.SetCommand; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +public class MultiReferenceControl extends HBox { + + public MultiReferenceControl(IItemPropertyDescriptor propertyDescriptor, ECPControlContext context) { + final EObject modelElement = context.getModelElement(); + final EditingDomain editingDomain = context.getEditingDomain(); + + getStyleClass().add("multiReferenceControl"); + + String displayName = propertyDescriptor.getDisplayName(modelElement); + Label label = new Label(displayName); + label.getStyleClass().add(IControlConstants.CONTROL_LABEL_CLASS); + getChildren().add(label); + + final EStructuralFeature feature = (EStructuralFeature) propertyDescriptor.getFeature(modelElement); + + ListView<Object> listView = new ListView<>(); + + List<Object> values = (List<Object>) modelElement.eGet(feature); + + listView.setItems(FXCollections.observableList(values)); + + getChildren().add(listView); + + listView.setDisable(true); + + HBox.setHgrow(listView, Priority.ALWAYS); + } + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/MultiTextControl.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/MultiTextControl.java new file mode 100644 index 000000000..fdccf1a16 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/MultiTextControl.java @@ -0,0 +1,60 @@ +package at.bestsolution.efxclipse.ecp.ui.controls; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.Label; +import javafx.scene.control.ListView; +import javafx.scene.control.SingleSelectionModel; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Priority; + +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.Enumerator; +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EEnumLiteral; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecp.edit.ECPControlContext; +import org.eclipse.emf.edit.command.SetCommand; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +public class MultiTextControl extends HBox { + + public MultiTextControl(IItemPropertyDescriptor propertyDescriptor, ECPControlContext context) { + final EObject modelElement = context.getModelElement(); + final EditingDomain editingDomain = context.getEditingDomain(); + + getStyleClass().add("multiTextControl"); + + String displayName = propertyDescriptor.getDisplayName(modelElement); + Label label = new Label(displayName); + label.getStyleClass().add(IControlConstants.CONTROL_LABEL_CLASS); + getChildren().add(label); + + final EStructuralFeature feature = (EStructuralFeature) propertyDescriptor.getFeature(modelElement); + + + + ListView<String> listView = new ListView<>(); + + List<String> values = (List<String>) modelElement.eGet(feature); + + listView.setItems(FXCollections.observableList(values)); + + getChildren().add(listView); + + listView.setDisable(true); + + HBox.setHgrow(listView, Priority.ALWAYS); + } + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/ReferenceControl.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/ReferenceControl.java new file mode 100644 index 000000000..47333c072 --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/ReferenceControl.java @@ -0,0 +1,89 @@ +package at.bestsolution.efxclipse.ecp.ui.controls; + +import java.net.URL; + +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.image.ImageView; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Priority; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecp.edit.ECPControlContext; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +public class ReferenceControl extends HBox { + + public ReferenceControl(IItemPropertyDescriptor propertyDescriptor, ECPControlContext context) { + + final EObject modelElement = context.getModelElement(); + final EditingDomain editingDomain = context.getEditingDomain(); + + String displayName = propertyDescriptor.getDisplayName(modelElement); + Label label = new Label(displayName); + label.getStyleClass().add(IControlConstants.CONTROL_LABEL_CLASS); + getChildren().add(label); + + final EReference feature = (EReference) propertyDescriptor.getFeature(modelElement); + + Object value = modelElement.eGet(feature); + + ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(value, IItemLabelProvider.class); + + HBox hBox = new HBox(); + + Label label2 = new Label(labelProvider.getText(value)); + + URL image = (URL) labelProvider.getImage(value); + + hBox.getChildren().add(new ImageView(image.toExternalForm())); + hBox.getChildren().add(label2); + Button button = new Button("..."); + button.setOnAction(new EventHandler<ActionEvent>() { + + @Override + public void handle(ActionEvent arg0) { +// ReferenceSelectionDialog referenceSelectionDialog = new ReferenceSelectionDialog(null, null); +// referenceSelectionDialog.showAndWait(); + +// final Stage dialog = new Stage(); +// dialog.initModality(Modality.WINDOW_MODAL); +//// dialog.initOwner(primaryStage); +// dialog.setScene( +// new Scene( +// HBoxBuilder.create().styleClass("modal-dialog").children( +// LabelBuilder.create().text("Will you like this page?").build(), +// ButtonBuilder.create().text("Yes").defaultButton(true).onAction(new EventHandler<ActionEvent>() { +// @Override public void handle(ActionEvent actionEvent) { +// dialog.close(); +// } +// }).build(), +// ButtonBuilder.create().text("No").cancelButton(true).onAction(new EventHandler<ActionEvent>() { +// @Override public void handle(ActionEvent actionEvent) { +// dialog.close(); +// } +// }).build() +// ).build() +// , Color.TRANSPARENT +// ) +// ); +// dialog.showAndWait(); + } + }); + + hBox.getChildren().add(button); + + HBox.setHgrow(label2, Priority.ALWAYS); + + getChildren().add(hBox); + } + +} diff --git a/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/TextFieldControl.java b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/TextFieldControl.java new file mode 100644 index 000000000..2af6a9c4a --- /dev/null +++ b/bundles/runtime/at.bestsolution.efxclipse.ecp.ui/src/at/bestsolution/efxclipse/ecp/ui/controls/TextFieldControl.java @@ -0,0 +1,139 @@ +package at.bestsolution.efxclipse.ecp.ui.controls; + +import java.util.Collection; +import java.util.Objects; + +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.ObservableList; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Priority; + +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecp.edit.Control; +import org.eclipse.emf.ecp.edit.ECPControlContext; +import org.eclipse.emf.edit.command.SetCommand; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +import com.google.common.collect.Sets; + +@SuppressWarnings("restriction") +public class TextFieldControl extends HBox implements Control { + + final Collection<EDataType> supportedTypes = Sets.newHashSet( + EcorePackage.Literals.EBIG_DECIMAL, + EcorePackage.Literals.EBIG_INTEGER, + EcorePackage.Literals.EBOOLEAN, + EcorePackage.Literals.ECHAR, + EcorePackage.Literals.ECHARACTER_OBJECT, + EcorePackage.Literals.EDATE, + EcorePackage.Literals.EDOUBLE, + EcorePackage.Literals.EDOUBLE_OBJECT, + EcorePackage.Literals.EFLOAT, + EcorePackage.Literals.EFLOAT_OBJECT, + EcorePackage.Literals.EINT, + EcorePackage.Literals.EINTEGER_OBJECT, + EcorePackage.Literals.ELONG, + EcorePackage.Literals.ELONG_OBJECT, + EcorePackage.Literals.ESHORT, + EcorePackage.Literals.ESHORT_OBJECT, + EcorePackage.Literals.ESTRING); + private TextField textField; + + public boolean isControlFor(EDataType type) { + return supportedTypes.contains(type); + } + + public TextFieldControl(IItemPropertyDescriptor propertyDescriptor, ECPControlContext context) { + + final EObject modelElement = context.getModelElement(); + final EditingDomain editingDomain = context.getEditingDomain(); + + String displayName = propertyDescriptor.getDisplayName(modelElement); + Label label = new Label(displayName); + label.getStyleClass().add(IControlConstants.CONTROL_LABEL_CLASS); + getChildren().add(label); + + final EStructuralFeature feature = (EStructuralFeature) propertyDescriptor.getFeature(modelElement); + + //final EDataTypeValueHandler valueHandler = new EDataTypeValueHandler((EDataType) feature.getEType()); + + Object value = modelElement.eGet(feature); + + textField = null;//new TextField(valueHandler.toString(value)); + + textField.textProperty().addListener(new ChangeListener<String>() { + + @Override + public void changed(ObservableValue<? extends String> observableValue, String oldText, String newText) { + String message = "lala"; //valueHandler.isValid(newText); + ObservableList<String> styleClass = textField.getStyleClass(); + if (message == null) + styleClass.remove(IControlConstants.INVALID_CLASS); + else if (!styleClass.contains(IControlConstants.INVALID_CLASS)) + styleClass.add(IControlConstants.INVALID_CLASS); + } + + }); + + textField.focusedProperty().addListener(new ChangeListener<Boolean>() { + + @Override + public void changed(ObservableValue<? extends Boolean> observableValue, Boolean oldFocused, Boolean newFocused) { + if (!newFocused) { + Object oldValue = modelElement.eGet(feature); + String text = textField.getText(); + String message = "lala"; // valueHandler.isValid(text); + + if (message == null) { + Object newValue = "lala"; // valueHandler.toValue(text); + + // only commit if the value has changed + if (!Objects.equals(oldValue, newValue)) { + Command command = SetCommand.create(editingDomain, modelElement, feature, newValue); + if (command.canExecute()) + editingDomain.getCommandStack().execute(command); + } + } else { + System.err.println(message); + } + } + } + + }); + + HBox.setHgrow(textField, Priority.ALWAYS); + + getChildren().add(textField); + } + + @Override + public void handleValidation(Diagnostic diagnostic) { + // TODO Auto-generated method stub + + } + + @Override + public void resetValidation() { + // TODO Auto-generated method stub + + } + + public static class Factory implements Control.Factory { + + @Override + public Control createControl(IItemPropertyDescriptor itemPropertyDescriptor, ECPControlContext context) { + return new TextFieldControl(itemPropertyDescriptor, context); + } + + } + +} diff --git a/demos/at.bestsolution.efxclipse.ecp.app.feature/.project b/demos/at.bestsolution.efxclipse.ecp.app.feature/.project new file mode 100644 index 000000000..f07cf1750 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.feature/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>at.bestsolution.efxclipse.ecp.app.feature</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.pde.FeatureBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.FeatureNature</nature> + </natures> +</projectDescription> diff --git a/demos/at.bestsolution.efxclipse.ecp.app.feature/build.properties b/demos/at.bestsolution.efxclipse.ecp.app.feature/build.properties new file mode 100644 index 000000000..b045d3976 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.feature/build.properties @@ -0,0 +1 @@ +bin.includes = feature.xml
\ No newline at end of file diff --git a/demos/at.bestsolution.efxclipse.ecp.app.feature/feature.xml b/demos/at.bestsolution.efxclipse.ecp.app.feature/feature.xml new file mode 100644 index 000000000..f789ac762 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.feature/feature.xml @@ -0,0 +1,632 @@ +<?xml version="1.0" encoding="UTF-8"?> +<feature + id="at.bestsolution.efxclipse.ecp.app.feature" + label="ECP for JavaFX Application Feature" + version="1.0.0.qualifier" + provider-name="${BundleProject_bundleVendor}"> + + <description url="http://www.efxclipse.org"> + TODO FILL WITH CONTENT + </description> + + <copyright url="http://www.efxclipse.org"> + TODO FILL WITH CONTENT + </copyright> + + <license url="http://www.efxclipse.org"> + TODO FILL WITH CONTENT + </license> + + <plugin + id="at.bestsolution.efxclipse.ecp.app" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="com.ibm.icu" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="javax.annotation" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="javax.inject" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="javax.xml" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.apache.commons.logging" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.core.commands" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.core.contenttype" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.core.databinding" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.core.databinding.observable" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.core.databinding.property" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.core.expressions" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.core.filesystem" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.core.jobs" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.core.resources" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.core.runtime" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.core.runtime.compatibility.registry" + download-size="0" + install-size="0" + version="0.0.0" + fragment="true" + unpack="false"/> + + <plugin + id="org.eclipse.e4.core.commands" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.e4.core.contexts" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.e4.core.di" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.e4.core.di.extensions" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.e4.core.services" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.e4.ui.di" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.e4.ui.model.workbench" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.e4.ui.services" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.e4.ui.workbench" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.emf.common" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.emf.databinding" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.emf.ecore" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.emf.ecore.change" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.emf.ecore.xmi" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.equinox.app" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.equinox.common" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.equinox.concurrent" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.equinox.ds" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.equinox.event" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.equinox.launcher" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.equinox.preferences" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.equinox.registry" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.equinox.util" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.osgi.services" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.equinox.console" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.apache.felix.gogo.command" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.apache.felix.gogo.runtime" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.apache.felix.gogo.shell" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.osgi" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.core" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.core.databinding" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.core.guice" + download-size="0" + install-size="0" + version="0.0.0"/> + + <plugin + id="org.eclipse.fx.core.log4j" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.core.p2" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.demo.contacts" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.demo.contacts.app" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.demo.contacts.edit" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.demo.contacts.edit.tests" + download-size="0" + install-size="0" + version="0.0.0" + fragment="true" + unpack="false"/> + + <plugin + id="org.eclipse.fx.demo.contacts.tests" + download-size="0" + install-size="0" + version="0.0.0" + fragment="true" + unpack="false"/> + + <plugin + id="org.eclipse.fx.emf.databinding" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.emf.edit.ui" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.emf.edit.ui.tests" + download-size="0" + install-size="0" + version="0.0.0" + fragment="true" + unpack="false"/> + + <plugin + id="org.eclipse.fx.formats.svg" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ide.css" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ide.css.tests" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ide.css.ui" + download-size="0" + install-size="0" + version="0.0.0"/> + + <plugin + id="org.eclipse.fx.ide.jdt.core" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ide.jdt.ui" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ide.ui" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.javafx" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.osgi" + download-size="0" + install-size="0" + version="0.0.0" + fragment="true" + unpack="false"/> + + <plugin + id="org.eclipse.fx.osgi.util" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.animation" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.application" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.databinding" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.di" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.di.interopt" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.dialogs" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.keybindings" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.keybindings.e4" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.keybindings.generic" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.panes" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.services" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.theme" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.workbench.base" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.workbench.fx" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.workbench.fx.controls" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.workbench.renderers.base" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.workbench.renderers.fx" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.fx.ui.workbench3" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + +</feature> diff --git a/demos/at.bestsolution.efxclipse.ecp.app.feature/pom.xml b/demos/at.bestsolution.efxclipse.ecp.app.feature/pom.xml new file mode 100644 index 000000000..639a36286 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.feature/pom.xml @@ -0,0 +1,16 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <name>ECP for JavaFX - application feature</name> + <groupId>at.bestsolution.efxclipse.ecp</groupId> + <artifactId>at.bestsolution.efxclipse.ecp.app.feature</artifactId> + <packaging>eclipse-feature</packaging> + + <parent> + <groupId>at.bestsolution.efxclipse.ecp</groupId> + <artifactId>at.bestsolution.efxclipse.ecp.app.releng</artifactId> + <relativePath>../at.bestsolution.efxclipse.ecp.app.releng/pom.xml</relativePath> + <version>1.0.0-SNAPSHOT</version> + </parent> + +</project>
\ No newline at end of file diff --git a/demos/at.bestsolution.efxclipse.ecp.app.jemmy.feature/.project b/demos/at.bestsolution.efxclipse.ecp.app.jemmy.feature/.project new file mode 100644 index 000000000..91701289d --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.jemmy.feature/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>at.bestsolution.efxclipse.ecp.app.jemmy.feature</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.pde.FeatureBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.FeatureNature</nature> + </natures> +</projectDescription> diff --git a/demos/at.bestsolution.efxclipse.ecp.app.jemmy.feature/build.properties b/demos/at.bestsolution.efxclipse.ecp.app.jemmy.feature/build.properties new file mode 100644 index 000000000..b045d3976 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.jemmy.feature/build.properties @@ -0,0 +1 @@ +bin.includes = feature.xml
\ No newline at end of file diff --git a/demos/at.bestsolution.efxclipse.ecp.app.jemmy.feature/feature.xml b/demos/at.bestsolution.efxclipse.ecp.app.jemmy.feature/feature.xml new file mode 100644 index 000000000..20fb88d74 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.jemmy.feature/feature.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<feature + id="at.bestsolution.efxclipse.ecp.app.jemmy.feature" + label="ECP for JavaFX Jemmy JUnit Feature" + version="1.0.0.qualifier" + provider-name="${BundleProject_bundleVendor}" + > + <description url="http://www.efxclipse.org"> + TODO FILL WITH CONTENT + </description> + + <copyright url="http://www.efxclipse.org"> + TODO FILL WITH CONTENT + </copyright> + + <license url="http://www.efxclipse.org"> + TODO FILL WITH CONTENT + </license> + + <plugin id="at.bestsolution.efxclipse.ecp.app.jemmy" install-size="0" version="0.0.0" unpack="false" /> + + +</feature> diff --git a/demos/at.bestsolution.efxclipse.ecp.app.jemmy/.classpath b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/.classpath new file mode 100644 index 000000000..751c8f2e5 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/demos/at.bestsolution.efxclipse.ecp.app.jemmy/.project b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/.project new file mode 100644 index 000000000..43c807a77 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>at.bestsolution.efxclipse.ecp.app.jemmy</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + </natures> +</projectDescription> diff --git a/demos/at.bestsolution.efxclipse.ecp.app.jemmy/META-INF/MANIFEST.MF b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/META-INF/MANIFEST.MF new file mode 100644 index 000000000..1f8e7dbaa --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/META-INF/MANIFEST.MF @@ -0,0 +1,55 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: My Sample App Jemmy UI Tests +Bundle-SymbolicName: at.bestsolution.efxclipse.ecp.app.jemmy +Bundle-Version: 1.0.0.qualifier +Bundle-RequiredExecutionEnvironment: +Require-Bundle: org.junit4, + at.bestsolution.efxclipse.runtime.jemmy +Import-Package: javax.inject;version="1.0.0", + javax.annotation;version="1.0.0", + javafx.animation;version="2.0.0", + javafx.application;version="2.0.0", + javafx.beans;version="2.0.0", + javafx.beans.binding;version="2.0.0", + javafx.beans.property;version="2.0.0", + javafx.beans.value;version="2.0.0", + javafx.collections;version="2.0.0", + javafx.concurrent;version="2.0.0", + javafx.event;version="2.0.0", + javafx.fxml;version="2.0.0", + javafx.geometry;version="2.0.0", + javafx.scene;version="2.0.0", + javafx.scene.chart;version="2.0.0", + javafx.scene.control;version="2.0.0", + javafx.scene.control.cell;version="2.0.0", + javafx.scene.effect;version="2.0.0", + javafx.scene.image;version="2.0.0", + javafx.scene.input;version="2.0.0", + javafx.scene.layout;version="2.0.0", + javafx.scene.media;version="2.0.0", + javafx.scene.paint;version="2.0.0", + javafx.scene.shape;version="2.0.0", + javafx.scene.text;version="2.0.0", + javafx.scene.transform;version="2.0.0", + javafx.scene.web;version="2.0.0", + javafx.stage;version="2.0.0", + javafx.util;version="2.0.0", + org.jemmy.action;version="3.0.0", + org.jemmy.browser;version="3.0.0", + org.jemmy.control;version="3.0.0", + org.jemmy.dock;version="3.0.0", + org.jemmy.env;version="3.0.0", + org.jemmy.fx;version="3.0.0", + org.jemmy.fx.control;version="3.0.0", + org.jemmy.fx.control.caspian;version="3.0.0", + org.jemmy.image;version="3.0.0", + org.jemmy.image.pixel;version="3.0.0", + org.jemmy.input;version="3.0.0", + org.jemmy.input.glass;version="3.0.0", + org.jemmy.interfaces;version="3.0.0", + org.jemmy.lookup;version="3.0.0", + org.jemmy.operators;version="3.0.0", + org.jemmy.resources;version="3.0.0", + org.jemmy.support;version="3.0.0", + org.jemmy.timing;version="3.0.0" diff --git a/demos/at.bestsolution.efxclipse.ecp.app.jemmy/at.bestsolution.efxclipse.ecp.app.jemmy.launch b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/at.bestsolution.efxclipse.ecp.app.jemmy.launch new file mode 100644 index 000000000..c42db2a90 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/at.bestsolution.efxclipse.ecp.app.jemmy.launch @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig"> +<setAttribute key="additional_plugins"/> +<booleanAttribute key="append.args" value="true"/> +<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/> +<booleanAttribute key="askclear" value="false"/> +<booleanAttribute key="automaticAdd" value="false"/> +<booleanAttribute key="automaticValidate" value="false"/> +<stringAttribute key="bootstrap" value=""/> +<stringAttribute key="checked" value="[NONE]"/> +<booleanAttribute key="clearConfig" value="true"/> +<booleanAttribute key="clearws" value="true"/> +<booleanAttribute key="clearwslog" value="false"/> +<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/> +<booleanAttribute key="default" value="false"/> +<stringAttribute key="featureDefaultLocation" value="workspace"/> +<stringAttribute key="featurePluginResolution" value="workspace"/> +<booleanAttribute key="includeOptional" value="true"/> +<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/my.app.sample.jemmy/src/my/app/sample/jemmy/TestSuite.java"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="1"/> +</listAttribute> +<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/> +<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/> +<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/> +<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="at.bestsolution.efxclipse.ecp.app.jemmy.TestSuite"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-nl ${target.nl} -consoleLog -nosplash"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="at.bestsolution.efxclipse.ecp.app.jemmy"/> +<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx512m -Dosgi.framework.extensions=at.bestsolution.efxclipse.runtime.osgi -Dtest.jemmy.product=at.bestsolution.efxclipse.ecp.app.product"/> +<stringAttribute key="pde.version" value="3.3"/> +<stringAttribute key="product" value="org.eclipse.sdk.ide"/> +<booleanAttribute key="run_in_ui_thread" value="false"/> +<setAttribute key="selected_features"> +<setEntry value="at.bestsolution.efxclipse.ecp.app.jemmy.feature:default"/> +<setEntry value="at.bestsolution.efxclipse.ecp.app.feature:default"/> +<setEntry value="at.bestsolution.efxclipse.runtime.jemmy.junit.feature:default"/> +<setEntry value="at.bestsolution.efxclipse.runtime.jemmy.feature:default"/> +</setAttribute> +<booleanAttribute key="show_selected_only" value="false"/> +<booleanAttribute key="tracing" value="false"/> +<booleanAttribute key="useCustomFeatures" value="true"/> +<booleanAttribute key="useDefaultConfig" value="true"/> +<booleanAttribute key="useDefaultConfigArea" value="false"/> +<booleanAttribute key="useProduct" value="false"/> +</launchConfiguration> diff --git a/demos/at.bestsolution.efxclipse.ecp.app.jemmy/build.properties b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/build.properties new file mode 100644 index 000000000..c634d9795 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/build.properties @@ -0,0 +1,3 @@ +bin.includes = .,\ + META-INF/ +source.. = src/ diff --git a/demos/at.bestsolution.efxclipse.ecp.app.jemmy/pom.xml b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/pom.xml new file mode 100644 index 000000000..b78cf7d86 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/pom.xml @@ -0,0 +1,79 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <name>ECP for JavaFX - jemmy tests</name> + <groupId>at.bestsolution.efxclipse.ecp</groupId> + <artifactId>at.bestsolution.efxclipse.ecp.app.jemmy</artifactId> + <packaging>eclipse-test-plugin</packaging> + + <parent> + <groupId>at.bestsolution.efxclipse.ecp</groupId> + <artifactId>at.bestsolution.efxclipse.ecp.app.releng</artifactId> + <relativePath>../at.bestsolution.efxclipse.ecp.app.releng/pom.xml</relativePath> + <version>1.0.0-SNAPSHOT</version> + </parent> + + <build> + <plugins> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-surefire-plugin</artifactId> + <version>${tycho-version}</version> + <configuration> + <testSuite>at.bestsolution.efxclipse.ecp.app.jemmy</testSuite> + <testClass>at.bestsolution.efxclipse.ecp.app.jemmy.TestSuite</testClass> + <useUIHarness>false</useUIHarness> + <useUIThread>false</useUIThread> + <argLine>-Xms40m -Xmx512m -Defxclipse.osgi.hook.debug=true -Dosgi.framework.extensions=at.bestsolution.efxclipse.runtime.osgi -Dtest.jemmy.product=at.bestsolution.efxclipse.ecp.app.product</argLine> + <appArgLine>-consoleLog -nosplash</appArgLine> + <application>org.eclipse.pde.junit.runtime.coretestapplication</application> + <dependencies> + <dependency> + <type>eclipse-feature</type> + <artifactId>at.bestsolution.efxclipse.ecp.app.feature</artifactId> + <version>0.0.0</version> + </dependency> + </dependencies> + <frameworkExtensions> + <frameworkExtension> + <groupId>at.bestsolution.efxclipse</groupId> + <artifactId>at.bestsolution.efxclipse.runtime.osgi</artifactId> + <version>${efx-version}</version> + </frameworkExtension> + </frameworkExtensions> + </configuration> + <executions> + <execution> + <phase>test</phase> + <goals> + <goal>test</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-maven-plugin</artifactId> + <version>${tycho-version}</version> + <extensions>true</extensions> + </plugin> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>target-platform-configuration</artifactId> + <version>${tycho-version}</version> + <configuration> + <resolver>p2</resolver> + </configuration> + </plugin> + </plugins> + </build> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + +</project> diff --git a/demos/at.bestsolution.efxclipse.ecp.app.jemmy/src/at/bestsolution/efxclipse/ecp/app/jemmy/SampleTestCase.java b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/src/at/bestsolution/efxclipse/ecp/app/jemmy/SampleTestCase.java new file mode 100644 index 000000000..2fbd0faf7 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/src/at/bestsolution/efxclipse/ecp/app/jemmy/SampleTestCase.java @@ -0,0 +1,25 @@ +package at.bestsolution.efxclipse.ecp.app.jemmy; + +import junit.framework.Assert; + +import org.jemmy.fx.SceneDock; +import org.junit.BeforeClass; +import org.junit.Test; + +public class SampleTestCase { + protected static SceneDock scene; + + @BeforeClass + public static void startApp() throws InterruptedException { + try { + scene = new SceneDock(); + } catch(Throwable t ) { + t.printStackTrace(); + } + } + + @Test + public void sampleTestMethod() { + Assert.fail("Not implemented"); + } +} diff --git a/demos/at.bestsolution.efxclipse.ecp.app.jemmy/src/at/bestsolution/efxclipse/ecp/app/jemmy/TestSuite.java b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/src/at/bestsolution/efxclipse/ecp/app/jemmy/TestSuite.java new file mode 100644 index 000000000..c8b2f238b --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.jemmy/src/at/bestsolution/efxclipse/ecp/app/jemmy/TestSuite.java @@ -0,0 +1,12 @@ +package at.bestsolution.efxclipse.ecp.app.jemmy; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +import at.bestsolution.efxclipse.runtime.jemmy.OSGiJemmyBootstrapTestCase; + +@RunWith(Suite.class) +@Suite.SuiteClasses({ SampleTestCase.class }) +public class TestSuite extends OSGiJemmyBootstrapTestCase { + +} diff --git a/demos/at.bestsolution.efxclipse.ecp.app.product/.project b/demos/at.bestsolution.efxclipse.ecp.app.product/.project new file mode 100644 index 000000000..02d5f3e23 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.product/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>at.bestsolution.efxclipse.ecp.app.product</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/demos/at.bestsolution.efxclipse.ecp.app.product/at.bestsolution.efxclipse.ecp.app.product.product b/demos/at.bestsolution.efxclipse.ecp.app.product/at.bestsolution.efxclipse.ecp.app.product.product new file mode 100644 index 000000000..695b08da8 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.product/at.bestsolution.efxclipse.ecp.app.product.product @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?pde version="3.5"?> + +<product name="ECP for JavaFX" uid="at.bestsolution.efxclipse.ecp.app.product" id="at.bestsolution.efxclipse.ecp.app.product" application="org.eclipse.fx.ui.workbench.fx.application" version="1.0.0" useFeatures="true" includeLaunchers="false"> + + <configIni use="default"> + </configIni> + + <launcherArgs> + <programArgs>-nosplash</programArgs> + <vmArgs>-Dosgi.framework.extensions=at.bestsolution.efxclipse.runtime.osgi</vmArgs> + </launcherArgs> + + <windowImages/> + + <plugins> + </plugins> + + <features> + <feature id="at.bestsolution.efxclipse.ecp.app.feature" version="1.0.0.qualifier"/> + </features> + + <configurations> + <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" /> + <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" /> + <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="1" /> + <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" /> + </configurations> + +</product> diff --git a/demos/at.bestsolution.efxclipse.ecp.app.product/at.bestsolution.efxclipse.ecp.app.product.product.launch b/demos/at.bestsolution.efxclipse.ecp.app.product/at.bestsolution.efxclipse.ecp.app.product.product.launch new file mode 100644 index 000000000..d717a1bfc --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.product/at.bestsolution.efxclipse.ecp.app.product.product.launch @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench"> +<setAttribute key="additional_plugins"/> +<booleanAttribute key="append.args" value="true"/> +<stringAttribute key="application" value="org.eclipse.fx.ui.workbench.fx.application"/> +<booleanAttribute key="askclear" value="true"/> +<booleanAttribute key="automaticAdd" value="false"/> +<booleanAttribute key="automaticValidate" value="false"/> +<stringAttribute key="bootstrap" value=""/> +<stringAttribute key="checked" value="[NONE]"/> +<booleanAttribute key="clearConfig" value="true"/> +<booleanAttribute key="clearws" value="true"/> +<booleanAttribute key="clearwslog" value="false"/> +<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/at.bestsolution.efxclipse.ecp.app.product.product"/> +<booleanAttribute key="default" value="false"/> +<stringAttribute key="featureDefaultLocation" value="workspace"/> +<stringAttribute key="featurePluginResolution" value="workspace"/> +<booleanAttribute key="includeOptional" value="true"/> +<stringAttribute key="location" value="${workspace_loc}/../runtime-at.bestsolution.efxclipse.ecp.app.product"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -nosplash"/> +<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.requiredJavaVersion=1.5 -Dhelp.lucene.tokenizer=standard -Xms40m -Xmx512m -Dosgi.framework.extensions=org.eclipse.fx.osgi"/> +<stringAttribute key="pde.version" value="3.3"/> +<stringAttribute key="product" value="at.bestsolution.efxclipse.ecp.app.product"/> +<stringAttribute key="productFile" value="/at.bestsolution.efxclipse.ecp.app.product/at.bestsolution.efxclipse.ecp.app.product.product"/> +<setAttribute key="selected_features"> +<setEntry value="at.bestsolution.efxclipse.ecp.app.feature:default"/> +</setAttribute> +<stringAttribute key="selected_target_plugins" value="com.google.guava*11.0.1@default:default,com.google.inject@default:default,com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.ant@default:default,org.apache.batik.css@default:default,org.apache.batik.util.gui@default:default,org.apache.batik.util@default:default,org.apache.commons.logging*1.1.1.v201101211721@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.log4j@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.launcher.win32.win32.x86_64@default:false,org.eclipse.equinox.launcher@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.junit*4.10.0.v4_10_0_v20120426-0900@default:default,org.junit4@default:default,org.objenesis@default:default,org.w3c.css.sac@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/> +<stringAttribute key="selected_workspace_plugins" value="at.bestsolution.efxclipse.ecp.app@default:default,at.bestsolution.efxclipse.ecp.ui@default:default,at.bestsolution.efxclipse.runtime.ecp.dummy@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.fx.core.databinding@default:default,org.eclipse.fx.core.guice@default:default,org.eclipse.fx.core.log4j@default:default,org.eclipse.fx.core@default:default,org.eclipse.fx.emf.databinding@default:default,org.eclipse.fx.emf.edit.ui@default:default,org.eclipse.fx.javafx@default:default,org.eclipse.fx.osgi.util@default:default,org.eclipse.fx.osgi@default:false,org.eclipse.fx.ui.animation@default:default,org.eclipse.fx.ui.application@default:default,org.eclipse.fx.ui.databinding@default:default,org.eclipse.fx.ui.di.interopt@default:default,org.eclipse.fx.ui.di@default:default,org.eclipse.fx.ui.dialogs@default:default,org.eclipse.fx.ui.keybindings.e4@default:default,org.eclipse.fx.ui.keybindings.generic@default:default,org.eclipse.fx.ui.keybindings@default:default,org.eclipse.fx.ui.panes@default:default,org.eclipse.fx.ui.services@default:default,org.eclipse.fx.ui.theme@default:default,org.eclipse.fx.ui.workbench.base@default:default,org.eclipse.fx.ui.workbench.fx.controls@default:default,org.eclipse.fx.ui.workbench.fx@default:default,org.eclipse.fx.ui.workbench.renderers.base@default:default,org.eclipse.fx.ui.workbench.renderers.fx@default:default,org.eclipse.fx.ui.workbench3@default:default,org.eclipse.osgi@-1:true"/> +<booleanAttribute key="show_selected_only" value="false"/> +<booleanAttribute key="tracing" value="false"/> +<booleanAttribute key="useCustomFeatures" value="false"/> +<booleanAttribute key="useDefaultConfig" value="true"/> +<booleanAttribute key="useDefaultConfigArea" value="true"/> +<booleanAttribute key="useProduct" value="true"/> +<booleanAttribute key="usefeatures" value="false"/> +</launchConfiguration> diff --git a/demos/at.bestsolution.efxclipse.ecp.app.product/pom.xml b/demos/at.bestsolution.efxclipse.ecp.app.product/pom.xml new file mode 100644 index 000000000..56886c782 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.product/pom.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <name>ECP for JavaFX - application product</name> + <groupId>at.bestsolution.efxclipse.ecp</groupId> + <artifactId>at.bestsolution.efxclipse.ecp.app.product</artifactId> + <packaging>eclipse-repository</packaging> + + <parent> + <groupId>at.bestsolution.efxclipse.ecp</groupId> + <artifactId>at.bestsolution.efxclipse.ecp.app.releng</artifactId> + <relativePath>../at.bestsolution.efxclipse.ecp.app.releng/pom.xml</relativePath> + <version>1.0.0-SNAPSHOT</version> + </parent> + + <build> + <plugins> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-p2-director-plugin</artifactId> + <version>${tycho-version}</version> + <executions> + <execution> + <id>materialize-products</id> + <goals> + <goal>materialize-products</goal> + </goals> + </execution> + <execution> + <id>archive-products</id> + <goals> + <goal>archive-products</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project>
\ No newline at end of file diff --git a/demos/at.bestsolution.efxclipse.ecp.app.releng/.project b/demos/at.bestsolution.efxclipse.ecp.app.releng/.project new file mode 100644 index 000000000..2b35b0897 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.releng/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>at.bestsolution.efxclipse.ecp.app.releng</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/demos/at.bestsolution.efxclipse.ecp.app.releng/at.bestsolution.efxclipse.tooling.build-0.0.1.jar b/demos/at.bestsolution.efxclipse.ecp.app.releng/at.bestsolution.efxclipse.tooling.build-0.0.1.jar Binary files differnew file mode 100644 index 000000000..82629ad44 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.releng/at.bestsolution.efxclipse.tooling.build-0.0.1.jar diff --git a/demos/at.bestsolution.efxclipse.ecp.app.releng/build.xml b/demos/at.bestsolution.efxclipse.ecp.app.releng/build.xml new file mode 100644 index 000000000..211d2c524 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.releng/build.xml @@ -0,0 +1,51 @@ +<project name="native-build" default="do-deploy" basedir="." xmlns:fx="javafx:com.sun.javafx.tools.ant"> + <property name="eclipse-app-dir" value="../at.bestsolution.efxclipse.ecp.app.product/target/macosx.cocoa.x86_64/eclipse" /> + + <target name="init-fx-tasks"> + <path id="fxant"> + <filelist> + <file name="${java.home}\..\lib\ant-javafx.jar"/> + <file name="${java.home}\lib\jfxrt.jar"/> + </filelist> + </path> + + <taskdef resource="com/sun/javafx/tools/ant/antlib.xml" + uri="javafx:com.sun.javafx.tools.ant" + classpathref="fxant"/> + <taskdef name="configIni" classpath="at.bestsolution.efxclipse.tooling.build-0.0.1.jar" classname="at.bestsolution.efxclipse.tooling.build.ConfigFixTask" /> + </target> + + <target name="config-fix" depends="init-fx-tasks"> + <configIni rootfolder="${eclipse-app-dir}"/> + </target> + + <target name="do-deploy" depends="config-fix, init-fx-tasks"> + <fx:resources id="appRes"> + <fx:fileset dir="." includes="fx-osgi-launch.jar"/> + <fx:fileset dir="${eclipse-app-dir}" includes="**/*"/> + </fx:resources> + + <fx:application id="fxApplication" + name="ECP for JavaFX" + mainClass="org.eclipse.equinox.launcher.Main" + toolkit="swing" + + /> + + <fx:deploy + embedJNLP="false" + extension="false" + includeDT="false" + offlineAllowed="true" + outdir="${basedir}/deploy" + outfile="fix-ide" + nativeBundles="all" + updatemode="background" + > + + <fx:info title="ECP for JavaFX" vendor=""/> + <fx:application refid="fxApplication"/> + <fx:resources refid="appRes"/> + </fx:deploy> + </target> +</project>
\ No newline at end of file diff --git a/demos/at.bestsolution.efxclipse.ecp.app.releng/fx-osgi-launch.jar b/demos/at.bestsolution.efxclipse.ecp.app.releng/fx-osgi-launch.jar Binary files differnew file mode 100644 index 000000000..e17ac5e3f --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.releng/fx-osgi-launch.jar diff --git a/demos/at.bestsolution.efxclipse.ecp.app.releng/pom.xml b/demos/at.bestsolution.efxclipse.ecp.app.releng/pom.xml new file mode 100644 index 000000000..781032ed6 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app.releng/pom.xml @@ -0,0 +1,176 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <name>ECP for JavaFX - releng</name> + + <prerequisites> + <maven>3.0</maven> + </prerequisites> + + <groupId>at.bestsolution.efxclipse.ecp</groupId> + <artifactId>at.bestsolution.efxclipse.ecp.app.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <packaging>pom</packaging> + <properties> + <tycho-version>0.16.0</tycho-version> + <junit-version>4.8.1</junit-version> + <mockito-version>1.8.4</mockito-version> + <platform-version>4.2</platform-version> + <efx-version>0.1.1</efx-version> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + + <modules> + <module>../at.bestsolution.efxclipse.ecp.app</module> + <module>../at.bestsolution.efxclipse.ecp.app.feature</module> + <module>../at.bestsolution.efxclipse.ecp.app.product</module> + <module>../at.bestsolution.efxclipse.ecp.app.jemmy</module> + </modules> + + <repositories> + <repository> + <id>juno</id> + <layout>p2</layout> + <url>http://download.eclipse.org/releases/juno</url> + </repository> + <repository> + <id>efxclipse-repo</id> + <layout>p2</layout> + <url>http://www.efxclipse.org/p2-repos/releases/latest</url> + </repository> + + </repositories> + + <pluginRepositories> + <pluginRepository> + <id>tycho</id> + <url>http://repository.sonatype.org/content/groups/sonatype-public-grid</url> + <snapshots> + <enabled>true</enabled> + </snapshots> + </pluginRepository> + </pluginRepositories> + + <build> + + <!-- build plugins --> + <plugins> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-maven-plugin</artifactId> + <version>${tycho-version}</version> + <extensions>true</extensions> + </plugin> + + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>target-platform-configuration</artifactId> + <version>${tycho-version}</version> + <configuration> + <resolver>p2</resolver> + <pomDependencies>consider</pomDependencies> + <environments> + <environment> + <os>linux</os> + <ws>gtk</ws> + <arch>x86</arch> + </environment> + <environment> + <os>linux</os> + <ws>gtk</ws> + <arch>x86_64</arch> + </environment> + <environment> + <os>win32</os> + <ws>win32</ws> + <arch>x86</arch> + </environment> + <environment> + <os>win32</os> + <ws>win32</ws> + <arch>x86_64</arch> + </environment> + <environment> + <os>macosx</os> + <ws>cocoa</ws> + <arch>x86_64</arch> + </environment> + </environments> + </configuration> + </plugin> + </plugins> + + + <!-- defines the default settings for the used plugins --> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-compiler-plugin</artifactId> + <version>${tycho-version}</version> + <configuration> + <encoding>UTF-8</encoding> + <source>1.7</source> + <target>1.7</target> + <extraClasspathElements> + <extraClasspathElement> + <groupId>javafx</groupId> + <artifactId>javafx.mvn</artifactId> + <version>2.2.0-SNAPSHOT</version> + </extraClasspathElement> + </extraClasspathElements> + </configuration> + </plugin> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-source-plugin</artifactId> + <version>${tycho-version}</version> + <executions> + <execution> + <id>plugin-source</id> + <goals> + <goal>plugin-source</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-packaging-plugin</artifactId> + <version>${tycho-version}</version> + <configuration> + <archiveSite>true</archiveSite> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junit-version}</version> + <scope>test</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <version>${mockito-version}</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + +</project>
\ No newline at end of file diff --git a/demos/at.bestsolution.efxclipse.ecp.app/.classpath b/demos/at.bestsolution.efxclipse.ecp.app/.classpath new file mode 100644 index 000000000..751c8f2e5 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/demos/at.bestsolution.efxclipse.ecp.app/.project b/demos/at.bestsolution.efxclipse.ecp.app/.project new file mode 100644 index 000000000..e210c1ea0 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/.project @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>at.bestsolution.efxclipse.ecp.app</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.xtext.ui.shared.xtextBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ds.core.builder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.xtext.ui.shared.xtextNature</nature> + </natures> +</projectDescription> diff --git a/demos/at.bestsolution.efxclipse.ecp.app/Application.e4xmi b/demos/at.bestsolution.efxclipse.ecp.app/Application.e4xmi new file mode 100644 index 000000000..5c3464db5 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/Application.e4xmi @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_wIZNwZO_EeK1DMHyA2N3yA" elementId="org.eclipse.e4.application" bindingContexts="_wIZNwJO_EeK1DMHyA2N3yA"> + <children xsi:type="basic:TrimmedWindow" xmi:id="_BinB4JPAEeK1DMHyA2N3yA" elementId="at.bestsolution.efxclipse.ecp.app.trimmedwindow.0" label="Main Window" x="20" y="20" width="1500" height="1000"> + <children xsi:type="basic:PartSashContainer" xmi:id="_K08kYJPKEeK1DMHyA2N3yA" elementId="at.bestsolution.efxclipse.ecp.app.partsashcontainer.0" horizontal="true"> + <children xsi:type="basic:PartStack" xmi:id="_MA-5sJPKEeK1DMHyA2N3yA" elementId="at.bestsolution.efxclipse.ecp.app.partstack.0"> + <children xsi:type="basic:Part" xmi:id="_zTgCYJPAEeK1DMHyA2N3yA" elementId="at.bestsolution.efxclipse.ecp.app.part.0" contributionURI="bundleclass://at.bestsolution.efxclipse.ecp.app/at.bestsolution.efxclipse.ecp.ModelExplorerPart" label="Model Explorer"> + <menus xmi:id="_m34iIKwdEeKOacGlVFA1Xw" elementId="at.bestsolution.efxclipse.ecp.app.menu.0" label="Bla"> + <children xsi:type="menu:HandledMenuItem" xmi:id="_vPnCEKwdEeKOacGlVFA1Xw" elementId="at.bestsolution.efxclipse.ecp.app.handledmenuitem.0" label="Blub" command="_zREoUKNJEeKrxsf5nYgbOA"/> + </menus> + </children> + </children> + <children xsi:type="basic:PartSashContainer" xmi:id="_pMxkkJRxEeK6bNllnvSnhw" elementId="at.bestsolution.efxclipse.ecp.app.partsashcontainer.1"> + <children xsi:type="basic:PartStack" xmi:id="_NrmBYJPKEeK1DMHyA2N3yA" elementId="at.bestsolution.efxclipse.ecp.app.partstacks.editors"> + <children xsi:type="basic:Part" xmi:id="_idED8JR0EeK6bNllnvSnhw" elementId="at.bestsolution.efxclipse.ecp.app.part.2" contributionURI="bundleclass://at.bestsolution.efxclipse.ecp.app/at.bestsolution.efxclipse.ecp.ModelEditorPart" label="Model Editor" closeable="true"/> + </children> + <children xsi:type="basic:PartStack" xmi:id="_rS0rEJRxEeK6bNllnvSnhw" elementId="at.bestsolution.efxclipse.ecp.app.partstack.2"> + <children xsi:type="basic:Part" xmi:id="_r9f_wJRxEeK6bNllnvSnhw" elementId="at.bestsolution.efxclipse.ecp.app.part.1" contributionURI="bundleclass://at.bestsolution.efxclipse.ecp.app/at.bestsolution.efxclipse.ecp.RepositoryBrowserPart" label="Repository Browser"/> + </children> + </children> + </children> + <mainMenu xmi:id="_ExCa0JPCEeK1DMHyA2N3yA" elementId="at.bestsolution.efxclipse.ecp.app.menu.0"> + <children xsi:type="menu:Menu" xmi:id="_x8DqEJSLEeK6bNllnvSnhw" elementId="" label="_File"> + <children xsi:type="menu:HandledMenuItem" xmi:id="_g3-KEKNJEeKrxsf5nYgbOA" elementId="" label="Open Model Element" command="_R-d_MKNJEeKrxsf5nYgbOA"/> + <children xsi:type="menu:HandledMenuItem" xmi:id="_0g9PwJSLEeK6bNllnvSnhw" elementId="" label="Exit" command="_zREoUKNJEeKrxsf5nYgbOA"/> + </children> + <children xsi:type="menu:Menu" xmi:id="_fKWWQKddEeKa-q0jml1KAw" elementId="at.bestsolution.efxclipse.ecp.app.menu.0" label="Edit"> + <children xsi:type="menu:HandledMenuItem" xmi:id="_i3jn0KddEeKa-q0jml1KAw" elementId="" label="Undo" command="_TIft8KddEeKa-q0jml1KAw"/> + <children xsi:type="menu:HandledMenuItem" xmi:id="_myz8cKddEeKa-q0jml1KAw" elementId="" label="Redo" command="_UvMmAKddEeKa-q0jml1KAw"/> + </children> + </mainMenu> + </children> + <handlers xmi:id="_RAYmUKNJEeKrxsf5nYgbOA" elementId="" contributionURI="bundleclass://at.bestsolution.efxclipse.ecp.app/at.bestsolution.efxclipse.ecp.handlers.OpenModelElementHandler" command="_R-d_MKNJEeKrxsf5nYgbOA"/> + <handlers xmi:id="_38AGYKNJEeKrxsf5nYgbOA" elementId="" contributionURI="bundleclass://at.bestsolution.efxclipse.ecp.app/at.bestsolution.efxclipse.ecp.handlers.ExitHandler" command="_zREoUKNJEeKrxsf5nYgbOA"/> + <rootContext xmi:id="_wIZNwJO_EeK1DMHyA2N3yA" elementId="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows"> + <children xmi:id="_wIZ00JO_EeK1DMHyA2N3yA" elementId="org.eclipse.ui.contexts.window" name="In Windows"/> + <children xmi:id="_wIZ00ZO_EeK1DMHyA2N3yA" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/> + </rootContext> + <commands xmi:id="_R-d_MKNJEeKrxsf5nYgbOA" elementId="at.bestsolution.efxclipse.ecp.app.commands.openModelElement" commandName="Open Model Element"> + <parameters xmi:id="_XSvEcKNlEeKwjd1bf4rv-A" elementId="at.bestsolution.efxclipse.ecp.app.commandparameter.modelElement" name="Model Element" typeId="theTypeID" optional="false"/> + </commands> + <commands xmi:id="_zREoUKNJEeKrxsf5nYgbOA" elementId="at.bestsolution.efxclipse.ecp.app.commands.exit" commandName="Exit"/> + <commands xmi:id="_TIft8KddEeKa-q0jml1KAw" elementId="org.eclipse.fx.ecp.app.commands.undo" commandName="Undo"/> + <commands xmi:id="_UvMmAKddEeKa-q0jml1KAw" elementId="org.eclipse.fx.ecp.app.commands.redo" commandName="Redo"/> + <addons xmi:id="_wIZ00pO_EeK1DMHyA2N3yA" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/> + <addons xmi:id="_wIZ005O_EeK1DMHyA2N3yA" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/> + <addons xmi:id="_wIZ01JO_EeK1DMHyA2N3yA" elementId="at.bestsolution.efxclipse.runtime.bindings.e4.service" contributionURI="bundleclass://at.bestsolution.efxclipse.runtime.bindings.e4/at.bestsolution.efxclipse.runtime.bindings.e4.BindingServiceAddon"/> + <addons xmi:id="_wIZ01ZO_EeK1DMHyA2N3yA" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/> + <addons xmi:id="_wIZ01pO_EeK1DMHyA2N3yA" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/> + <addons xmi:id="_wIZ015O_EeK1DMHyA2N3yA" elementId="at.bestsolution.efxclipse.runtime.bindings.e4.model" contributionURI="bundleclass://at.bestsolution.efxclipse.runtime.bindings.e4/at.bestsolution.efxclipse.runtime.bindings.e4.BindingProcessingAddon"/> +</application:Application> diff --git a/demos/at.bestsolution.efxclipse.ecp.app/ECPAppProposal.pdf b/demos/at.bestsolution.efxclipse.ecp.app/ECPAppProposal.pdf Binary files differnew file mode 100644 index 000000000..6226b2bcc --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/ECPAppProposal.pdf diff --git a/demos/at.bestsolution.efxclipse.ecp.app/META-INF/MANIFEST.MF b/demos/at.bestsolution.efxclipse.ecp.app/META-INF/MANIFEST.MF new file mode 100644 index 000000000..56fe425cc --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/META-INF/MANIFEST.MF @@ -0,0 +1,59 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: My Sample App +Bundle-SymbolicName: at.bestsolution.efxclipse.ecp.app; singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-RequiredExecutionEnvironment: +Require-Bundle: org.eclipse.e4.ui.model.workbench, + org.eclipse.e4.core.services, + org.eclipse.e4.core.di, + org.eclipse.e4.ui.di, + org.eclipse.e4.core.di.extensions, + org.eclipse.e4.core.contexts, + org.eclipse.core.databinding, + org.eclipse.core.databinding.observable, + org.eclipse.core.databinding.property, + org.eclipse.e4.ui.workbench, + org.eclipse.e4.ui.services, + org.eclipse.emf.ecp.core;bundle-version="1.0.0", + org.eclipse.core.runtime;bundle-version="3.8.0", + org.eclipse.emf.ecp.edit;bundle-version="1.0.0", + com.google.guava;bundle-version="10.0.1", + org.eclipse.fx.ui.application;bundle-version="0.8.1", + org.eclipse.fx.ui.workbench.fx;bundle-version="0.8.1", + org.eclipse.fx.emf.edit.ui;bundle-version="0.8.1", + org.eclipse.fx.emf.databinding;bundle-version="0.8.1", + org.eclipse.fx.ui.databinding;bundle-version="0.8.1", + org.eclipse.fx.ui.di;bundle-version="0.8.1", + org.eclipse.fx.ui.theme;bundle-version="0.8.1", + at.bestsolution.efxclipse.ecp.ui;bundle-version="1.0.0", + at.bestsolution.efxclipse.runtime.ecp.dummy;bundle-version="1.0.0" +Import-Package: javax.inject;version="1.0.0", + javax.annotation;version="1.0.0", + javafx.animation;version="2.0.0", + javafx.application;version="2.0.0", + javafx.beans;version="2.0.0", + javafx.beans.binding;version="2.0.0", + javafx.beans.property;version="2.0.0", + javafx.beans.value;version="2.0.0", + javafx.collections;version="2.0.0", + javafx.concurrent;version="2.0.0", + javafx.event;version="2.0.0", + javafx.fxml;version="2.0.0", + javafx.geometry;version="2.0.0", + javafx.scene;version="2.0.0", + javafx.scene.chart;version="2.0.0", + javafx.scene.control;version="2.0.0", + javafx.scene.control.cell;version="2.0.0", + javafx.scene.effect;version="2.0.0", + javafx.scene.image;version="2.0.0", + javafx.scene.input;version="2.0.0", + javafx.scene.layout;version="2.0.0", + javafx.scene.media;version="2.0.0", + javafx.scene.paint;version="2.0.0", + javafx.scene.shape;version="2.0.0", + javafx.scene.text;version="2.0.0", + javafx.scene.transform;version="2.0.0", + javafx.scene.web;version="2.0.0", + javafx.stage;version="2.0.0", + javafx.util;version="2.0.0" diff --git a/demos/at.bestsolution.efxclipse.ecp.app/TODOS.txt b/demos/at.bestsolution.efxclipse.ecp.app/TODOS.txt new file mode 100644 index 000000000..8b1deeb7a --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/TODOS.txt @@ -0,0 +1,31 @@ + +API: + +- Prefixes: What's the rule behind the prefixes (ME, ECP, I, ...)? +- Variable names sometimes don't match the type name / getters and setters +- No clear separation between EMFStore and ECP +- Interface documentation is very poor +- An architecture chart would be nice +- SWT dependencies all over the place + + +Step 1: + +- create architectural overview +- create JavaFX e4 application with basic parts (Repository Explorer, Project Explorer, Model Element Editor, Validation View) +- create a model workspace mockup +- create basic unit test +- create build config +- add some basic javadoc +- update website + +Step 2: + +- add more dialogs / wizards +- add Jemmy tests +- add proper documentation + +ECP Questions: + +InternalChildreList contains a reference to its parent. Yet the parent needs to be passed to Provider.fillChildren(). Why? + diff --git a/demos/at.bestsolution.efxclipse.ecp.app/build.properties b/demos/at.bestsolution.efxclipse.ecp.app/build.properties new file mode 100644 index 000000000..060ac9ea1 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/build.properties @@ -0,0 +1,8 @@ +source.. = src/ +bin.includes = .,\ + META-INF/,\ + plugin.xml,\ + css/,\ + Application.e4xmi,\ + OSGI-INF/modelElementOpener.xml,\ + OSGI-INF/modelElementOpener.xml diff --git a/demos/at.bestsolution.efxclipse.ecp.app/css/default.css b/demos/at.bestsolution.efxclipse.ecp.app/css/default.css new file mode 100644 index 000000000..a38730ef4 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/css/default.css @@ -0,0 +1 @@ +/* Main CSS-File */
\ No newline at end of file diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/EPackage.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/EPackage.gif Binary files differnew file mode 100644 index 000000000..30c5c10cc --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/EPackage.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/EPackageUnknown.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/EPackageUnknown.gif Binary files differnew file mode 100644 index 000000000..459efb43c --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/EPackageUnknown.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/add.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/add.gif Binary files differnew file mode 100644 index 000000000..252d7ebcb --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/add.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/bricks.png b/demos/at.bestsolution.efxclipse.ecp.app/icons/bricks.png Binary files differnew file mode 100644 index 000000000..0905f933b --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/bricks.png diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/checkout_project.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/checkout_project.gif Binary files differnew file mode 100644 index 000000000..e7b7fb4d8 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/checkout_project.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/checkout_project_old.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/checkout_project_old.gif Binary files differnew file mode 100644 index 000000000..97d4cb07f --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/checkout_project_old.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/checkout_project_wiz.png b/demos/at.bestsolution.efxclipse.ecp.app/icons/checkout_project_wiz.png Binary files differnew file mode 100644 index 000000000..fdff016ce --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/checkout_project_wiz.png diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/database_go.png b/demos/at.bestsolution.efxclipse.ecp.app/icons/database_go.png Binary files differnew file mode 100644 index 000000000..61a8556c4 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/database_go.png diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/database_save.png b/demos/at.bestsolution.efxclipse.ecp.app/icons/database_save.png Binary files differnew file mode 100644 index 000000000..44c06dddf --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/database_save.png diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/delete.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/delete.gif Binary files differnew file mode 100644 index 000000000..b6922ac11 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/delete.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/delete_wiz.png b/demos/at.bestsolution.efxclipse.ecp.app/icons/delete_wiz.png Binary files differnew file mode 100644 index 000000000..ac0f45b81 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/delete_wiz.png diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/error.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/error.gif Binary files differnew file mode 100644 index 000000000..0bc60689c --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/error.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/folder_brick.png b/demos/at.bestsolution.efxclipse.ecp.app/icons/folder_brick.png Binary files differnew file mode 100644 index 000000000..5dea9769a --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/folder_brick.png diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/link_with_editor.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/link_with_editor.gif Binary files differnew file mode 100644 index 000000000..870934b69 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/link_with_editor.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/magnifier.png b/demos/at.bestsolution.efxclipse.ecp.app/icons/magnifier.png Binary files differnew file mode 100644 index 000000000..cf3d97f75 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/magnifier.png diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/pending.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/pending.gif Binary files differnew file mode 100644 index 000000000..b234df7bf --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/pending.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/project_closed.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/project_closed.gif Binary files differnew file mode 100644 index 000000000..6052a8687 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/project_closed.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/project_open.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/project_open.gif Binary files differnew file mode 100644 index 000000000..a4ea580d2 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/project_open.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/properties_wiz.png b/demos/at.bestsolution.efxclipse.ecp.app/icons/properties_wiz.png Binary files differnew file mode 100644 index 000000000..2247e9f02 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/properties_wiz.png diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/property_obj.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/property_obj.gif Binary files differnew file mode 100644 index 000000000..f8277cfaf --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/property_obj.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/provider.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/provider.gif Binary files differnew file mode 100644 index 000000000..8493df40d --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/provider.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/provider_disabled.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/provider_disabled.gif Binary files differnew file mode 100644 index 000000000..d17cc224a --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/provider_disabled.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/providers.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/providers.gif Binary files differnew file mode 100644 index 000000000..0fa090a18 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/providers.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/refresh.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/refresh.gif Binary files differnew file mode 100644 index 000000000..e3831471a --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/refresh.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/repositories.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/repositories.gif Binary files differnew file mode 100644 index 000000000..c13bea1ca --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/repositories.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/repository.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/repository.gif Binary files differnew file mode 100644 index 000000000..0470e1588 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/repository.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/icons/sample.gif b/demos/at.bestsolution.efxclipse.ecp.app/icons/sample.gif Binary files differnew file mode 100644 index 000000000..34fb3c9d8 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/icons/sample.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/notes.txt b/demos/at.bestsolution.efxclipse.ecp.app/notes.txt new file mode 100644 index 000000000..6da16ccbb --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/notes.txt @@ -0,0 +1,12 @@ + + +org.eclipse.emf.edit.ui.provider.PropertyDescriptor + +Implements org.eclipse.ui.views.properties.IPropertyDescriptor +- creates / validates SWT CellEditors + +org.eclipse.emf.edit.provider.ItemPropertyDescriptor + +-base class with most of the implementation for IItemProviderPropertyDescriptor + +org.eclipse.emf.common.ui.celleditor.ExtendedComboBoxCellEditor
\ No newline at end of file diff --git a/demos/at.bestsolution.efxclipse.ecp.app/plugin.xml b/demos/at.bestsolution.efxclipse.ecp.app/plugin.xml new file mode 100644 index 000000000..c9d126fdb --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/plugin.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> +<plugin> +<extension id="product" point="org.eclipse.core.runtime.products"> + <product name="ECP for JavaFX" application="org.eclipse.fx.ui.workbench.fx.application" > + <property name="appName" value="ECP for JavaFX" /> + + <property name="applicationXMI" value="at.bestsolution.efxclipse.ecp.app/Application.e4xmi" /> + + <property name="cssTheme" value="theme.default" /> + + </product> + +</extension> +<extension point="org.eclipse.fx.ui.theme"> + <theme id="theme.default" basestylesheet="css/default.css" /> + +</extension> +</plugin> diff --git a/demos/at.bestsolution.efxclipse.ecp.app/pom.xml b/demos/at.bestsolution.efxclipse.ecp.app/pom.xml new file mode 100644 index 000000000..0910dbc45 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/pom.xml @@ -0,0 +1,33 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <name>ECP for JavaFX - application bundle</name> + <groupId>at.bestsolution.efxclipse.ecp</groupId> + <artifactId>at.bestsolution.efxclipse.ecp.app</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>at.bestsolution.efxclipse.ecp</groupId> + <artifactId>at.bestsolution.efxclipse.ecp.app.releng</artifactId> + <relativePath>../at.bestsolution.efxclipse.ecp.app.releng/pom.xml</relativePath> + <version>1.0.0-SNAPSHOT</version> + </parent> + + <build> + <resources> + <resource> + <directory>.</directory> + <includes> + <include>META-INF/</include> + </includes> + </resource> + </resources> + <plugins> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-source-plugin</artifactId> + </plugin> + </plugins> + </build> + +</project> diff --git a/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/ModelEditorPart.java b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/ModelEditorPart.java new file mode 100644 index 000000000..ebe872413 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/ModelEditorPart.java @@ -0,0 +1,146 @@ +/******************************************************************************* + * Copyright (c) 2012 TESIS DYNAware GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Torsten Sommer <torsten.sommer@tesis.de> - initial API and implementation + *******************************************************************************/ +package at.bestsolution.efxclipse.ecp; + +import java.net.URL; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.geometry.VPos; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.ScrollPane; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.Priority; + +import javax.inject.Inject; + +import org.eclipse.e4.ui.model.application.MApplication; +import org.eclipse.e4.ui.model.application.ui.basic.MPart; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.util.Diagnostician; +import org.eclipse.emf.ecp.edit.Control; +import org.eclipse.emf.ecp.edit.Control.Factory; +import org.eclipse.emf.ecp.edit.Control.Factory.Registry; +import org.eclipse.emf.ecp.edit.ECPControlContext; +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +import at.bestsolution.efxclipse.ecp.ui.ModelElementEditor; + +@SuppressWarnings("restriction") +public class ModelEditorPart implements ModelElementEditor { + + private ScrollPane scrollPane; + private MPart part; + private Map<EStructuralFeature, Control> controls = new HashMap<>(); + + @Inject + public ModelEditorPart(BorderPane parent, final MApplication application, MPart part) { + this.part = part; + // part.setCloseable(true); + + // ECPControlContext modelElementContext = new + // DummyControlContext(DummyWorkspace.INSTANCE.getPlayer()); + // ECPControlContext modelElementContext = new + // DummyControlContext(DummyWorkspace.INSTANCE.getTournament()); + // ECPControlContext modelElementContext = new + // DummyControlContext(DummyWorkspace.INSTANCE.getReferee()); + + scrollPane = new ScrollPane(); + scrollPane.setFitToWidth(true); + scrollPane.getStylesheets().add(getClass().getResource("style.css").toExternalForm()); + + parent.setCenter(scrollPane); + } + + public void setInput(final ECPControlContext modelElementContext) { + ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + AdapterFactoryItemDelegator adapterFactoryItemDelegator = new AdapterFactoryItemDelegator(adapterFactory); + EObject modelElement = modelElementContext.getModelElement(); + + IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(modelElement, IItemLabelProvider.class); + part.setLabel(labelProvider.getText(modelElement)); + Object image = labelProvider.getImage(modelElement); + if (image instanceof URL) + part.setIconURI(((URL) image).toExternalForm()); + + List<IItemPropertyDescriptor> propertyDescriptors = adapterFactoryItemDelegator.getPropertyDescriptors(modelElement); + // FormControlFactory controlFactory = new FormControlFactory(); + + GridPane gridPane = new GridPane(); + gridPane.getStyleClass().add("theForm"); + // gridPane.setStyle("-fx-alignment: top-left;"); + + // VBox vBox = new VBox(); + // vBox.getStyleClass().add("theForm"); + + Button button = new Button("validate"); + button.setOnAction(new EventHandler<ActionEvent>() { + + @Override + public void handle(ActionEvent arg0) { + Diagnostic diagnostic = Diagnostician.INSTANCE.validate(modelElementContext.getModelElement()); + for (Diagnostic childDiagnostic : diagnostic.getChildren()) { + Control control = controls.get(childDiagnostic.getData().get(1)); + if(control != null) + control.handleValidation(childDiagnostic); + } + + } + + }); + + gridPane.add(button, 1, 0); + + Registry registry = Control.Factory.Registry.INSTANCE; + + int i = 1; + for (IItemPropertyDescriptor propertyDescriptor : propertyDescriptors) { + + String displayName = propertyDescriptor.getDisplayName(modelElement); + Label label = new Label(displayName); + label.getStyleClass().add("controlLabel"); + // label.setStyle("-fx-alignment: top-left;"); + GridPane.setValignment(label, VPos.TOP); + gridPane.add(label, 0, i); + + Factory factory = registry.getFactory(Node.class, propertyDescriptor, modelElement); + + EStructuralFeature feature = (EStructuralFeature) propertyDescriptor.getFeature(modelElement); + + if (factory != null) { + Control control = factory.createControl(propertyDescriptor, modelElementContext); + Node node = (Node) control; + gridPane.add(node, 1, i); + GridPane.setHgrow(node, Priority.ALWAYS); + controls.put(feature, control); + } + i++; + } + + Label label = new Label("The End."); + gridPane.add(label, 0, i); + + scrollPane.setContent(gridPane); + } + +} diff --git a/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/ModelExplorerPart.java b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/ModelExplorerPart.java new file mode 100644 index 000000000..8f0740156 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/ModelExplorerPart.java @@ -0,0 +1,111 @@ +/******************************************************************************* + * Copyright (c) 2012 TESIS DYNAware GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Torsten Sommer <torsten.sommer@tesis.de> - initial API and implementation + *******************************************************************************/ +package at.bestsolution.efxclipse.ecp; + +import javafx.scene.control.TreeItem; +import javafx.scene.control.TreeView; +import javafx.scene.layout.BorderPane; + +import javax.inject.Inject; + +import org.eclipse.e4.ui.model.application.MApplication; +import org.eclipse.emf.ecp.core.ECPProjectManager; +import org.eclipse.emf.ecp.internal.core.util.ChildrenListImpl; +import org.eclipse.emf.ecp.spi.core.InternalProvider; +import org.eclipse.emf.ecp.spi.core.util.InternalChildrenList; +import org.eclipse.fx.emf.edit.ui.AdapterFactoryTreeCellFactory; +import org.eclipse.fx.emf.edit.ui.AdapterFactoryTreeItem; + +import at.bestsolution.efxclipse.ecp.provider.ECPItemProviderAdapterFactory; +import at.bestsolution.efxclipse.runtime.ecp.dummy.DummyWorkspace; + +@SuppressWarnings("restriction") +public class ModelExplorerPart { + + static class ModelElementTreeItem extends TreeItem<Object> { + ModelElementTreeItem(Object item, InternalProvider provider) { + super(item); + InternalChildrenList childrenList = new ChildrenListImpl(item); + provider.fillChildren(null, item, childrenList); + for (Object child : childrenList.getChildren()) { + getChildren().add(new ModelElementTreeItem(child, provider)); + } + } + } + + @Inject + public ModelExplorerPart(BorderPane parent, final MApplication application, ECPProjectManager projectManager) { + + TreeView<Object> treeView = new TreeView<>(); + +// TreeItem<Object> root = new TreeItem<Object>(); +// +// for (final ECPProject project : projectManager.getProjects()) { +// +// final InternalProvider provider = (InternalProvider) project.getProvider(); +// +// TreeItem<Object> projectTreeItem = new TreeItem<Object>(project); +// +// for (Object element : project.getElements()) { +// TreeItem<Object> elementTreeItem = new ModelElementTreeItem(element, provider); +// projectTreeItem.getChildren().add(elementTreeItem); +// } +// +// root.getChildren().add(projectTreeItem); +// } +// +// treeView.setRoot(root); + treeView.setShowRoot(false); + +// treeView.setCellFactory(new Callback<TreeView<Object>, TreeCell<Object>>() { +// +// @Override +// public TreeCell<Object> call(TreeView<Object> arg0) { +// return new TreeCell<Object>() { +// +// @Override +// protected void updateItem(Object item, boolean empty) { +// super.updateItem(item, empty); +// if (item instanceof ECPProject) { +// ECPProject project = (ECPProject) item; +// setText(project.getName()); +// } else if (item != null) { +// ComposedAdapterFactory adapterFactory = DummyWorkspace.INSTANCE.getAdapterFactory(); +// IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(item, IItemLabelProvider.class); +// if (labelProvider != null) +// setText(labelProvider.getText(item)); +// else +// setText(item.toString()); +// } else { +// setText(null); +// } +// } +// +// }; +// } +// +// }); + + //ComposedAdapterFactory adapterFactory = DummyWorkspace.INSTANCE.getAdapterFactory(); + + ECPItemProviderAdapterFactory adapterFactory = new ECPItemProviderAdapterFactory(DummyWorkspace.INSTANCE.getProvider()); + + AdapterFactoryTreeItem rootItem = new AdapterFactoryTreeItem(projectManager, treeView, adapterFactory); + + treeView.setRoot(rootItem); + + treeView.setCellFactory(new AdapterFactoryTreeCellFactory(adapterFactory)); + + parent.setCenter(treeView); + + } + +} diff --git a/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/RepositoryBrowserPart.java b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/RepositoryBrowserPart.java new file mode 100644 index 000000000..f6bf9247b --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/RepositoryBrowserPart.java @@ -0,0 +1,64 @@ +/******************************************************************************* + * Copyright (c) 2012 TESIS DYNAware GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Torsten Sommer <torsten.sommer@tesis.de> - initial API and implementation + *******************************************************************************/ +package at.bestsolution.efxclipse.ecp; + +import java.util.Collection; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.scene.control.ListCell; +import javafx.scene.control.ListView; +import javafx.scene.image.ImageView; +import javafx.scene.layout.BorderPane; +import javafx.util.Callback; + +import javax.inject.Inject; + +import org.eclipse.e4.ui.model.application.MApplication; +import org.eclipse.emf.ecp.core.ECPRepository; +import org.eclipse.emf.ecp.core.ECPRepositoryManager; + +@SuppressWarnings("restriction") +public class RepositoryBrowserPart { + + @Inject + public RepositoryBrowserPart(BorderPane parent, final MApplication application, ECPRepositoryManager repositoryManager) { + + ListView<ECPRepository> listView = new ListView<>(); + + listView.setCellFactory(new Callback<ListView<ECPRepository>, ListCell<ECPRepository>>() { + + @Override + public ListCell<ECPRepository> call(ListView<ECPRepository> arg0) { + return new ListCell<ECPRepository>() { + @Override + protected void updateItem(ECPRepository repository, boolean empty) { + super.updateItem(repository, empty); + if (repository != null) { + setText(repository.getName()); + setGraphic(new ImageView("platform:/plugin/at.bestsolution.efxclipse.ecp.app/icons/repository.gif")); + } + } + }; + } + }); + + Collection<ECPRepository> repositories = repositoryManager.getRepositories(); + + ObservableList<ECPRepository> repositoriesList = FXCollections.observableArrayList(repositories); + + listView.setItems(repositoriesList); + + parent.setCenter(listView); + + } + +} diff --git a/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/arrow.png b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/arrow.png Binary files differnew file mode 100644 index 000000000..9ea256a28 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/arrow.png diff --git a/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/dialogs/ReferenceSelectionDialog.fxml b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/dialogs/ReferenceSelectionDialog.fxml new file mode 100644 index 000000000..25bf3f779 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/dialogs/ReferenceSelectionDialog.fxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import java.lang.*?> +<?import java.util.*?> +<?import javafx.scene.control.*?> +<?import javafx.scene.layout.*?> +<?import javafx.scene.paint.*?> + +<BorderPane id="BorderPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml"> + <bottom> + <HBox prefHeight="-1.0" prefWidth="-1.0"> + <children> + <Button fx:id="okButton" defaultButton="true" mnemonicParsing="false" text="OK" /> + <Button id="cancelButton" fx:id="cancleButton" mnemonicParsing="false" text="Cancel" /> + </children> + </HBox> + </bottom> + <center> + <ListView fx:id="listView" prefHeight="200.0" prefWidth="200.0" /> + </center> +</BorderPane> diff --git a/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/dialogs/ReferenceSelectionDialog.fxml.bak b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/dialogs/ReferenceSelectionDialog.fxml.bak new file mode 100644 index 000000000..fbe317230 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/dialogs/ReferenceSelectionDialog.fxml.bak @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import java.lang.*?> +<?import java.util.*?> +<?import javafx.scene.control.*?> +<?import javafx.scene.layout.*?> +<?import javafx.scene.paint.*?> + +<BorderPane id="BorderPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml"> + <bottom> + <HBox prefHeight="-1.0" prefWidth="-1.0"> + <children> + <Button fx:id="okButton" defaultButton="true" mnemonicParsing="false" text="OK" /> + <Button fx:id="cancleButton" mnemonicParsing="false" text="Cancle" /> + </children> + </HBox> + </bottom> + <center> + <ListView fx:id="listView" prefHeight="200.0" prefWidth="200.0" /> + </center> +</BorderPane> diff --git a/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/dialogs/ReferenceSelectionDialog.java b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/dialogs/ReferenceSelectionDialog.java new file mode 100644 index 000000000..0b4e04de5 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/dialogs/ReferenceSelectionDialog.java @@ -0,0 +1,64 @@ +package at.bestsolution.efxclipse.ecp.dialogs; + +import java.io.IOException; +import java.net.URL; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; + +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.scene.control.ListView; +import javafx.scene.layout.Pane; +import javafx.stage.Stage; + +public class ReferenceSelectionDialog extends Stage { + + EObject modelElement; + EReference reference; + + public ReferenceSelectionDialog(EObject modelElement, EReference reference) { + this.modelElement = modelElement; + this.reference = reference; + + URL location = getClass().getResource("ReferenceSelectionDialog.fxml"); + FXMLLoader fxmlLoader = new FXMLLoader(location); + +// controller = new DetailsViewController(); + + Controller controller = new Controller(); + + fxmlLoader.setController(controller); + + Pane root = null; + try { + root = (Pane) fxmlLoader.load(); + } catch (IOException e) { + e.printStackTrace(); + } + + Scene scene = new Scene(root); + + setScene(scene); + } + + class Controller { + + @FXML + ListView<?> listView; + + public void init() { + ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + + + System.out.println(); + } + + + + } + +} diff --git a/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/handlers/ExitHandler.java b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/handlers/ExitHandler.java new file mode 100644 index 000000000..16824ad18 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/handlers/ExitHandler.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2009 Siemens AG and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Kai Tödter - initial implementation + ******************************************************************************/ + +package at.bestsolution.efxclipse.ecp.handlers; + +import javafx.application.Platform; +import org.eclipse.e4.core.di.annotations.Execute; + +@SuppressWarnings("restriction") +public class ExitHandler { + + @Execute + public void exit() { + // TODO better life cycle support + Platform.exit(); + } + +} diff --git a/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/handlers/OpenModelElementHandler.java b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/handlers/OpenModelElementHandler.java new file mode 100644 index 000000000..fa7fc4569 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/handlers/OpenModelElementHandler.java @@ -0,0 +1,67 @@ +package at.bestsolution.efxclipse.ecp.handlers; + +import org.eclipse.e4.core.di.annotations.Execute; +import org.eclipse.e4.core.di.annotations.Optional; +import org.eclipse.e4.ui.model.application.MApplication; +import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory; +import org.eclipse.e4.ui.model.application.ui.basic.MInputPart; +import org.eclipse.e4.ui.model.application.ui.basic.MPartStack; +import org.eclipse.e4.ui.workbench.modeling.EModelService; +import org.eclipse.e4.ui.workbench.modeling.EPartService; +import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecp.core.ECPProjectManager; +import org.eclipse.emf.ecp.edit.ECPControlContext; + +import at.bestsolution.efxclipse.ecp.ModelEditorPart; +import at.bestsolution.efxclipse.ecp.ui.ECPModelElementOpener; +import at.bestsolution.efxclipse.runtime.ecp.dummy.DummyControlContext; +import at.bestsolution.efxclipse.runtime.ecp.dummy.DummyWorkspace; + +@SuppressWarnings("restriction") +public class OpenModelElementHandler { + + // @Execute + // public void open(MApplication application, EModelService modelService, + // EPartService partService) { + // // Assuming that all editors should open in the the stack with the + // // ID "org.eclipse.e4.primaryDataStack" + // + // MPartStack stack = (MPartStack) + // modelService.find("at.bestsolution.efxclipse.ecp.app.partstacks.editors", + // application); + // + // MInputPart part = MBasicFactory.INSTANCE.createInputPart(); + // // Pointing to the contributing class + // part.setContributionURI("bundleclass://at.bestsolution.efxclipse.ecp.app/at.bestsolution.efxclipse.ecp.ModelEditorPart"); + // + // // part.setInputURI(input.getInputURI()); + // // + // part.setIconURI("platform:/plugin/de.vogella.rcp.e4.todo/icons/sample.gif"); + // part.setLabel("huhu"); + // // part.setTooltip(input.getTooltip()); + // part.setCloseable(true); + // + // stack.getChildren().add(part); + // partService.showPart(part, PartState.ACTIVATE); + // + // part.getContext().set(EObject.class, + // DummyWorkspace.INSTANCE.getTournament()); + // + // ModelEditorPart modelEditorPart = (ModelEditorPart) part.getObject(); + // + // ECPControlContext modelElementContext = new + // DummyControlContext(DummyWorkspace.INSTANCE.getReferee()); + // + // modelEditorPart.setInput(modelElementContext); + // } + + @Execute + public void open(ECPModelElementOpener modelElementOpener, MApplication application, EModelService modelService, + EPartService partService) { + + EObject modelElement = DummyWorkspace.INSTANCE.getReferee(); + modelElementOpener.openModelElement(modelElement, application, modelService, partService); + } + +} diff --git a/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/provider/ECPItemProviderAdapterFactory.java b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/provider/ECPItemProviderAdapterFactory.java new file mode 100644 index 000000000..cb3d46df8 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/provider/ECPItemProviderAdapterFactory.java @@ -0,0 +1,59 @@ +package at.bestsolution.efxclipse.ecp.provider; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notifier; +import org.eclipse.emf.ecp.spi.core.InternalProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; + +public class ECPItemProviderAdapterFactory implements AdapterFactory { + + protected InternalProvider provider; + + /** + * This keeps track of all the supported types checked by + * {@link #isFactoryForType isFactoryForType}. + */ + protected Collection<Object> supportedTypes = new ArrayList<Object>(); + protected ECPProviderItemProvider modelElementItemProvider; + + public ECPItemProviderAdapterFactory(InternalProvider provider) { + this.provider = provider; + supportedTypes.add(IStructuredItemContentProvider.class); + supportedTypes.add(ITreeItemContentProvider.class); + supportedTypes.add(IItemLabelProvider.class); + } + + @Override + public boolean isFactoryForType(Object type) { + return supportedTypes.contains(type); + } + + @Override + public Adapter adapt(Notifier target, Object type) { + return adapt(target, type); + } + + @Override + public Object adapt(Object target, Object type) { + ECPProviderItemProvider itemProvider = new ECPProviderItemProvider(this, provider); + + return supportedTypes.contains(type) ? itemProvider : null; + } + + @Override + public Adapter adaptNew(Notifier target, Object type) { + throw new UnsupportedOperationException(); + } + + @Override + public void adaptAllNew(Notifier notifier) { + throw new UnsupportedOperationException(); + } + +} diff --git a/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/provider/ECPProviderItemProvider.java b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/provider/ECPProviderItemProvider.java new file mode 100644 index 000000000..61f5f762c --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/provider/ECPProviderItemProvider.java @@ -0,0 +1,83 @@ +package at.bestsolution.efxclipse.ecp.provider; + +import java.io.IOException; +import java.net.URL; +import java.util.Collection; +import java.util.Map; +import java.util.WeakHashMap; + +import javafx.scene.image.ImageView; + +import org.eclipse.core.runtime.Platform; +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.ecp.core.ECPProject; +import org.eclipse.emf.ecp.core.util.ECPModelContext; +import org.eclipse.emf.ecp.internal.core.util.ChildrenListImpl; +import org.eclipse.emf.ecp.spi.core.InternalProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.osgi.framework.Bundle; + +import at.bestsolution.efxclipse.runtime.ecp.dummy.DummyWorkspace; + +@SuppressWarnings("restriction") +public class ECPProviderItemProvider extends ItemProviderAdapter implements ITreeItemContentProvider, IItemLabelProvider { + + InternalProvider provider; + Map<Object, Object> parentsCache = new WeakHashMap<Object, Object>(); + + public ECPProviderItemProvider(AdapterFactory adapterFactory, InternalProvider provider) { + super(adapterFactory); + this.provider = provider; + } + + @Override + public Collection<?> getChildren(Object object) { + ECPModelContext modelContext = getModelContext(object); + ChildrenListImpl childrenList = new ChildrenListImpl(object); + provider.fillChildren(modelContext, object, childrenList); + return childrenList; + } + + @Override + public String getText(Object object) { + if (object instanceof ECPProject) { + ECPProject project = (ECPProject) object; + return project.getName(); + } + + IItemLabelProvider labelProvider = (IItemLabelProvider) DummyWorkspace.INSTANCE.getAdapterFactory().adapt(object, + IItemLabelProvider.class); + if (labelProvider != null) + return labelProvider.getText(object); + + return object.toString(); + } + + @Override + public Object getImage(Object object) { + if (object instanceof ECPProject) { + try { + URL url = new URL("platform:/plugin/at.bestsolution.efxclipse.ecp.app/icons/project_open.gif"); + return new ImageView(((URL) url).toExternalForm()); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + IItemLabelProvider labelProvider = (IItemLabelProvider) DummyWorkspace.INSTANCE.getAdapterFactory().adapt(object, + IItemLabelProvider.class); + if (labelProvider != null) + return labelProvider.getImage(object); + + return super.getImage(object); + } + + protected ECPModelContext getModelContext(Object element) { + // TODO add proper implementation + return null; + } + +} diff --git a/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/provider/fldr_obj.gif b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/provider/fldr_obj.gif Binary files differnew file mode 100644 index 000000000..51e703b1b --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/provider/fldr_obj.gif diff --git a/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/style.css b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/style.css new file mode 100644 index 000000000..a8bad55a9 --- /dev/null +++ b/demos/at.bestsolution.efxclipse.ecp.app/src/at/bestsolution/efxclipse/ecp/style.css @@ -0,0 +1,56 @@ +.invalid { + -fx-background-color: -fx-outer-border, #FF5555, #FFFAFA; +} + +.theForm { + -fx-padding: 10.0; + -fx-hgap: 6.0; + -fx-vgap: 6.0; +} + +.formControl { + /* -fx-min-height: 20; */ + /* -fx-pref-height: 50; works */ + /* -fx-padding: 10; */ +} + +.multiTextControl .list-view { + -fx-pref-height: 50.0; +} + +.multiReferenceControl .list-view { + -fx-pref-height: 80.0; +} + +.multiAttributeControl .list-view { + -fx-pref-height: 80.0; +} + +.controlLabel { + /*-fx-pref-width: 150.0;*/ + -fx-alignment: top-left; + -fx-min-height: 20.0; + /*-fx-background-color: red;*/ + -fx-padding: 3; + + -fx-font-size: 12px; + -fx-font-weight: bold; + -fx-text-fill: #333333; + -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 ); +} + +.validationLabel { + -fx-padding: 16 10 10 10; + /* -fx-background-insets: 0 0 -1 0, 0, 1, 2; */ + /* -fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color; */ + /* -fx-background-image: url("arrow.png"); */ + /* -fx-background-position: 50 -15; */ + /* -fx-background-repeat: no-repeat; */ + -fx-min-width: 100; + -fx-background-insets: 8 0 0 0; + -fx-background-color: linear-gradient(#f04349 0%, #c81e2b 100%); + -fx-background-radius: 5; + -fx-text-fill: white; + -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 ); +} + |