Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmallet2018-01-12 11:16:00 +0000
committerPierre-Charles David2018-01-26 09:16:09 +0000
commit5a5a7c4e5e9b2cb7282397c199c84036e474ad3a (patch)
tree95c1cdfe32fa12a3b65d4a9ee54b246c84bce81f
parent5aeb4bcceb81f977148efb188858ceb09a5f51f5 (diff)
downloadorg.eclipse.sirius-5a5a7c4e5e9b2cb7282397c199c84036e474ad3a.tar.gz
org.eclipse.sirius-5a5a7c4e5e9b2cb7282397c199c84036e474ad3a.tar.xz
org.eclipse.sirius-5a5a7c4e5e9b2cb7282397c199c84036e474ad3a.zip
[526081] Update custom widget documentation
Modification of the code examples in order to have no compilation error. Bug:526081 Change-Id: I23fca7162c900317887fc789d2ba1ac008ed25eb Signed-off-by: jmallet <jessy.mallet@obeo.fr> Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_advanced.html277
-rw-r--r--plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_advanced.textile273
-rw-r--r--plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_basic.html263
-rw-r--r--plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_basic.textile263
4 files changed, 546 insertions, 530 deletions
diff --git a/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_advanced.html b/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_advanced.html
index 1a5fcf0939..a0c8bd3669 100644
--- a/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_advanced.html
+++ b/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_advanced.html
@@ -39,7 +39,11 @@
<code>valueExpression</code> and both should have the type
<code>InterpretedExpresion</code>.
</p>
- <p>You can then create a genmodel file for your Ecore model in the same repository and launch the generation of the model and its edit support. You will thus have two plugins:</p>
+ <p>You can then create a genmodel file for your Ecore model in the same repository. Make sure to configure your
+ <code>genmodel</code> with a
+ <em>Runtime Version</em> property set to
+ <em>2.3</em> so that the generated Java is compatible with the &#8220;parent&#8221; metamodel from Sirius. Launching the generation of the model and its edit support will produce two plugins:
+ </p>
<ul>
<li>Sirius Properties model extension:
<code>com.example.awesomeproject.sirius.properties.ext.widgets.table</code>
@@ -384,9 +388,8 @@ public class ExtTableDescriptionOnClickExpressionPropertySection extends Abstrac
<p>Now we can reuse our work in the basic approach but this time with our own specific DSL instead of reusing the CustomElements from the EEF DSL. First we will have to modify the lifecycle manager provider to support our EEFExtTableDescription.</p>
<pre>package com.example.awesomeproject.eef.ide.ui.ext.widgets.table.internal;
-import com.example.awesomeproject.eef.ext.widgets.table.EEFExtTableDescription;
-
import org.eclipse.eef.EEFControlDescription;
+import org.eclipse.eef.EEFCustomWidgetDescription;
import org.eclipse.eef.core.api.EditingContextAdapter;
import org.eclipse.eef.ide.ui.api.widgets.IEEFLifecycleManager;
import org.eclipse.eef.ide.ui.api.widgets.IEEFLifecycleManagerProvider;
@@ -394,35 +397,39 @@ import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
public class TableLifecycleManagerProvider implements IEEFLifecycleManagerProvider {
+ /**
+ * The identifier of the control description supported.
+ */
+ private static final String SUPPORTED_ID = "com.example.awesomeproject.sirius.properties.ext.widgets.table"; //$NON-NLS-1$
+
+ @Override
+ public boolean canHandle(EEFControlDescription controlDescription) {
+ // only support custom widgets with the proper identifier
+ return SUPPORTED_ID.equals(controlDescription.getIdentifier()) &amp;&amp; controlDescription instanceof EEFCustomWidgetDescription;
+ }
- @Override
- public boolean canHandle(EEFControlDescription controlDescription) {
- return controlDescription instanceof EEFExtTableDescription;
- }
-
- @Override
- public IEEFLifecycleManager getLifecycleManager(EEFControlDescription controlDescription, IVariableManager variableManager,
- IInterpreter interpreter, EditingContextAdapter contextAdapter) {
- if (controlDescription instanceof EEFExtTableDescription) {
- return new TableLifecycleManager((EEFExtTableDescription) controlDescription, variableManager, interpreter, contextAdapter);
- }
- throw new IllegalArgumentException();
- }
+ @Override
+ public IEEFLifecycleManager getLifecycleManager(EEFControlDescription controlDescription, IVariableManager variableManager, IInterpreter interpreter, EditingContextAdapter contextAdapter) {
+ if (controlDescription instanceof EEFCustomWidgetDescription) {
+ return new TableLifecycleManager((EEFCustomWidgetDescription) controlDescription, variableManager, interpreter, contextAdapter);
+ }
+ throw new IllegalArgumentException();
+ }
}
+
</pre>
<p>
<br/>Now we can just modify our lifecycle manager to support our EEFExtTableDescription.
</p>
<pre>package com.example.awesomeproject.eef.ide.ui.ext.widgets.table.internal;
-import com.example.awesomeproject.eef.ext.widgets.table.EEFExtTableDescription;
+import java.util.function.Consumer;
-import com.example.awesomeproject.eef.core.ext.widgets.table.TableController;
+import org.eclipse.eef.EEFCustomWidgetDescription;
import org.eclipse.eef.EEFWidgetDescription;
import org.eclipse.eef.common.ui.api.IEEFFormContainer;
import org.eclipse.eef.core.api.EditingContextAdapter;
-import org.eclipse.eef.core.api.controllers.IConsumer;
import org.eclipse.eef.core.api.controllers.IEEFWidgetController;
import org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
@@ -440,174 +447,172 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Table;
-public class TableLifecycleManager extends AbstractEEFWidgetLifecycleManager {
+import com.example.awesomeproject.eef.core.ext.widgets.table.internal.TableController;
- private EEFExtTableDescription description;
+public class TableLifecycleManager extends AbstractEEFWidgetLifecycleManager {
- private TableViewer tableViewer;
+ private EEFCustomWidgetDescription description;
- private ComposedAdapterFactory composedAdapterFactory;
+ private TableViewer tableViewer;
- private SelectionListener onClickListener;
+ private ComposedAdapterFactory composedAdapterFactory;
- private TableController controller;
+ private SelectionListener onClickListener;
- private IConsumer&lt;Object&gt; newValueConsumer;
+ private TableController controller;
- public TableLifecycleManager(EEFExtTableDescription description, IVariableManager variableManager, IInterpreter interpreter,
- EditingContextAdapter contextAdapter) {
- super(variableManager, interpreter, contextAdapter);
- this.description = description;
- }
+ private Consumer&lt;Object&gt; newValueConsumer;
+
+ public TableLifecycleManager(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
+ EditingContextAdapter contextAdapter) {
+ super(variableManager, interpreter, contextAdapter);
+ this.description = description;
+ }
- @Override
- protected void createMainControl(Composite parent, IEEFFormContainer formContainer) {
- Table table = formContainer.getWidgetFactory().createTable(parent,
- SWT.READ_ONLY | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.SINGLE);
- this.tableViewer = new TableViewer(table);
- this.composedAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+ @Override
+ protected void createMainControl(Composite parent, IEEFFormContainer formContainer) {
+ Table table = formContainer.getWidgetFactory().createTable(parent,
+ SWT.READ_ONLY | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.SINGLE);
+ this.tableViewer = new TableViewer(table);
+ this.composedAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
- this.tableViewer.setContentProvider(ArrayContentProvider.getInstance());
- this.tableViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(new AdapterFactoryLabelProvider.StyledLabelProvider(
- this.composedAdapterFactory, this.tableViewer)));
+ this.tableViewer.setContentProvider(ArrayContentProvider.getInstance());
+ this.tableViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(new AdapterFactoryLabelProvider.StyledLabelProvider(
+ this.composedAdapterFactory, this.tableViewer)));
- this.controller = new TableController(description, variableManager, interpreter, contextAdapter);
- }
+ this.controller = new TableController(description, variableManager, interpreter, editingContextAdapter);
+ }
- @Override
- public void aboutToBeShown() {
- super.aboutToBeShown();
+ @Override
+ public void aboutToBeShown() {
+ super.aboutToBeShown();
- this.newValueConsumer = (newValue) -&gt; this.tableViewer.setInput(newValue);
- this.controller.onNewValue(this.newValueConsumer);
+ this.newValueConsumer = (newValue) -&gt; this.tableViewer.setInput(newValue);
+ this.controller.onNewValue(this.newValueConsumer);
- this.onClickListener = new SelectionListener() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
- TableLifecycleManager.this.controller.handleClick(selection);
- }
+ this.onClickListener = new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
+ TableLifecycleManager.this.controller.handleClick(selection);
+ }
- @Override
- public void widgetDefaultSelected(SelectionEvent event) {
- Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
- TableLifecycleManager.this.controller.handleClick(selection);
- }
- };
- this.tableViewer.getTable().addSelectionListener(this.onClickListener);
- }
+ @Override
+ public void widgetDefaultSelected(SelectionEvent event) {
+ Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
+ TableLifecycleManager.this.controller.handleClick(selection);
+ }
+ };
+ this.tableViewer.getTable().addSelectionListener(this.onClickListener);
+ }
- @Override
- public void refresh() {
- super.refresh();
+ @Override
+ public void refresh() {
+ super.refresh();
- this.controller.refresh();
- }
+ this.controller.refresh();
+ }
- @Override
- public void aboutToBeHidden() {
- super.aboutToBeHidden();
- this.controller.removeValueConsumer();
- this.newValueConsumer = null;
+ @Override
+ public void aboutToBeHidden() {
+ super.aboutToBeHidden();
+ this.controller.removeValueConsumer();
+ this.newValueConsumer = null;
- this.tableViewer.getTable().removeSelectionListener(this.onClickListener);
- this.onClickListener = null;
- }
+ this.tableViewer.getTable().removeSelectionListener(this.onClickListener);
+ this.onClickListener = null;
+ }
- @Override
- protected IEEFWidgetController getController() {
- return this.controller;
- }
+ @Override
+ protected IEEFWidgetController getController() {
+ return this.controller;
+ }
- @Override
- protected EEFWidgetDescription getWidgetDescription() {
- return this.description;
- }
+ @Override
+ protected EEFWidgetDescription getWidgetDescription() {
+ return this.description;
+ }
- @Override
- protected Control getValidationControl() {
- return this.tableViewer.getTable();
- }
+ @Override
+ protected Control getValidationControl() {
+ return this.tableViewer.getTable();
+ }
- @Override
- public void dispose() {
- super.dispose();
+ @Override
+ public void dispose() {
+ super.dispose();
- this.composedAdapterFactory.dispose();
- }
+ this.composedAdapterFactory.dispose();
+ }
+
+ @Override
+ protected void setEnabled(boolean isEnabled) {
+ this.tableViewer.getTable().setEnabled(isEnabled);
+ }
}
-
</pre>
<p>
<br/>And finally we can easily adapter our controller.
</p>
<pre>package com.example.awesomeproject.eef.core.ext.widgets.table.internal;
-import com.example.awesomeproject.eef.ext.widgets.table.EEFExtTableDescription;
-
+import java.util.function.Consumer;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.eef.EEFCustomWidgetDescription;
import org.eclipse.eef.core.api.EditingContextAdapter;
-import org.eclipse.eef.core.api.controllers.AbstractEEFWidgetController;
-import org.eclipse.eef.core.api.controllers.IConsumer;
+import org.eclipse.eef.core.api.controllers.AbstractEEFCustomWidgetController;
import org.eclipse.eef.core.api.utils.EvalFactory;
import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
-public class TableController extends AbstractEEFWidgetController {
-
- private static final String VALUE_EXPRESSION_ID = "valueExpression"; //$NON-NLS-1$
-
- private static final String ON_CLICK_EXPRESSION_ID = "onClickExpression"; //$NON-NLS-1$
+public class TableController extends AbstractEEFCustomWidgetController {
- private static final String SELECTION_VARIABLE_NAME = "selection"; //$NON-NLS-1$
+ private static final String VALUE_EXPRESSION_ID = "valueExpression"; //$NON-NLS-1$
- private IConsumer&lt;Object&gt; newValueConsumer;
+ private static final String ON_CLICK_EXPRESSION_ID = "onClickExpression"; //$NON-NLS-1$
- private EEFExtTableDescription description;
+ private static final String SELECTION_VARIABLE_NAME = "selection"; //$NON-NLS-1$
- private EditingContextAdapter contextAdapter;
-
- public TableController(EEFExtTableDescription description, IVariableManager variableManager, IInterpreter interpreter,
- EditingContextAdapter contextAdapter) {
- super(variableManager, interpreter);
- this.description = description;
- this.contextAdapter = contextAdapter;
- }
+ private Consumer&lt;Object&gt; newValueConsumer;
+
+ public TableController(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
+ EditingContextAdapter contextAdapter) {
+ super(description, variableManager, interpreter, contextAdapter);
+ }
- @Override
- protected EEFExtTableDescription getDescription() {
- return this.description;
- }
+ @Override
+ protected EEFCustomWidgetDescription getDescription() {
+ return this.description;
+ }
- @Override
- public void refresh() {
- super.refresh();
- this.newEval().call(this.description.getValueExpression(), this.newValueConsumer);
- }
+ @Override
+ public void refresh() {
+ super.refresh();
+ this.newEval().call(this.getCustomExpression(VALUE_EXPRESSION_ID).get(), this.newValueConsumer);
+ }
- public void handleClick(Object object) {
- this.contextAdapter.performModelChange(() -&gt; {
- String onClickExpression = this.description.getOnClickExpression();
+ public void handleClick(Object object) {
+ this.editingContextAdapter.performModelChange(() -&gt; {
+ String onClickExpression = this.getCustomExpression(ON_CLICK_EXPRESSION_ID).get();
- Map&lt;String, Object&gt; variables = new HashMap&lt;String, Object&gt;();
- variables.putAll(this.variableManager.getVariables());
- variables.put(SELECTION_VARIABLE_NAME, object);
+ Map&lt;String, Object&gt; variables = new HashMap&lt;String, Object&gt;();
+ variables.putAll(this.variableManager.getVariables());
+ variables.put(SELECTION_VARIABLE_NAME, object);
- EvalFactory.of(this.interpreter, variables).call(onClickExpression);
- });
- }
+ EvalFactory.of(this.interpreter, variables).call(onClickExpression);
+ });
+ }
- public void onNewValue(IConsumer&lt;Object&gt; consumer) {
- this.newValueConsumer = consumer;
- }
+ public void onNewValue(Consumer&lt;Object&gt; consumer) {
+ this.newValueConsumer = consumer;
+ }
- public void removeValueConsumer() {
- this.newValueConsumer = null;
- }
+ public void removeValueConsumer() {
+ this.newValueConsumer = null;
+ }
}
</pre>
diff --git a/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_advanced.textile b/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_advanced.textile
index ac9474a46e..5f5c2c0edc 100644
--- a/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_advanced.textile
+++ b/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_advanced.textile
@@ -22,7 +22,7 @@ Once this resource has been loaded, give a name, NsPrefix and NsURI to your EPac
After that, you can create an EClass under the EPackage with the named @ExtTableDescription@ and with the EClass @WidgetDescription@ as a supertype. This EClass should contain for our example two EAttributes named @onClickExpression@ and @valueExpression@ and both should have the type @InterpretedExpresion@.
-You can then create a genmodel file for your Ecore model in the same repository and launch the generation of the model and its edit support. You will thus have two plugins:
+You can then create a genmodel file for your Ecore model in the same repository. Make sure to configure your @genmodel@ with a _Runtime Version_ property set to _2.3_ so that the generated Java is compatible with the "parent" metamodel from Sirius. Launching the generation of the model and its edit support will produce two plugins:
* Sirius Properties model extension: @com.example.awesomeproject.sirius.properties.ext.widgets.table@
* Sirius Properties model extension Edit support: @com.example.awesomeproject.sirius.properties.ext.widgets.table.edit@
@@ -339,9 +339,8 @@ Now we can reuse our work in the basic approach but this time with our own speci
pre..
package com.example.awesomeproject.eef.ide.ui.ext.widgets.table.internal;
-import com.example.awesomeproject.eef.ext.widgets.table.EEFExtTableDescription;
-
import org.eclipse.eef.EEFControlDescription;
+import org.eclipse.eef.EEFCustomWidgetDescription;
import org.eclipse.eef.core.api.EditingContextAdapter;
import org.eclipse.eef.ide.ui.api.widgets.IEEFLifecycleManager;
import org.eclipse.eef.ide.ui.api.widgets.IEEFLifecycleManagerProvider;
@@ -349,35 +348,39 @@ import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
public class TableLifecycleManagerProvider implements IEEFLifecycleManagerProvider {
+ /**
+ * The identifier of the control description supported.
+ */
+ private static final String SUPPORTED_ID = "com.example.awesomeproject.sirius.properties.ext.widgets.table"; //$NON-NLS-1$
- @Override
- public boolean canHandle(EEFControlDescription controlDescription) {
- return controlDescription instanceof EEFExtTableDescription;
- }
-
- @Override
- public IEEFLifecycleManager getLifecycleManager(EEFControlDescription controlDescription, IVariableManager variableManager,
- IInterpreter interpreter, EditingContextAdapter contextAdapter) {
- if (controlDescription instanceof EEFExtTableDescription) {
- return new TableLifecycleManager((EEFExtTableDescription) controlDescription, variableManager, interpreter, contextAdapter);
- }
- throw new IllegalArgumentException();
- }
+ @Override
+ public boolean canHandle(EEFControlDescription controlDescription) {
+ // only support custom widgets with the proper identifier
+ return SUPPORTED_ID.equals(controlDescription.getIdentifier()) && controlDescription instanceof EEFCustomWidgetDescription;
+ }
+
+ @Override
+ public IEEFLifecycleManager getLifecycleManager(EEFControlDescription controlDescription, IVariableManager variableManager, IInterpreter interpreter, EditingContextAdapter contextAdapter) {
+ if (controlDescription instanceof EEFCustomWidgetDescription) {
+ return new TableLifecycleManager((EEFCustomWidgetDescription) controlDescription, variableManager, interpreter, contextAdapter);
+ }
+ throw new IllegalArgumentException();
+ }
}
+
p.
Now we can just modify our lifecycle manager to support our EEFExtTableDescription.
pre..
package com.example.awesomeproject.eef.ide.ui.ext.widgets.table.internal;
-import com.example.awesomeproject.eef.ext.widgets.table.EEFExtTableDescription;
+import java.util.function.Consumer;
-import com.example.awesomeproject.eef.core.ext.widgets.table.TableController;
+import org.eclipse.eef.EEFCustomWidgetDescription;
import org.eclipse.eef.EEFWidgetDescription;
import org.eclipse.eef.common.ui.api.IEEFFormContainer;
import org.eclipse.eef.core.api.EditingContextAdapter;
-import org.eclipse.eef.core.api.controllers.IConsumer;
import org.eclipse.eef.core.api.controllers.IEEFWidgetController;
import org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
@@ -395,104 +398,110 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Table;
-public class TableLifecycleManager extends AbstractEEFWidgetLifecycleManager {
+import com.example.awesomeproject.eef.core.ext.widgets.table.internal.TableController;
- private EEFExtTableDescription description;
+public class TableLifecycleManager extends AbstractEEFWidgetLifecycleManager {
- private TableViewer tableViewer;
+ private EEFCustomWidgetDescription description;
- private ComposedAdapterFactory composedAdapterFactory;
+ private TableViewer tableViewer;
- private SelectionListener onClickListener;
+ private ComposedAdapterFactory composedAdapterFactory;
- private TableController controller;
+ private SelectionListener onClickListener;
- private IConsumer<Object> newValueConsumer;
+ private TableController controller;
- public TableLifecycleManager(EEFExtTableDescription description, IVariableManager variableManager, IInterpreter interpreter,
- EditingContextAdapter contextAdapter) {
- super(variableManager, interpreter, contextAdapter);
- this.description = description;
- }
+ private Consumer<Object> newValueConsumer;
+
+ public TableLifecycleManager(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
+ EditingContextAdapter contextAdapter) {
+ super(variableManager, interpreter, contextAdapter);
+ this.description = description;
+ }
- @Override
- protected void createMainControl(Composite parent, IEEFFormContainer formContainer) {
- Table table = formContainer.getWidgetFactory().createTable(parent,
- SWT.READ_ONLY | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.SINGLE);
- this.tableViewer = new TableViewer(table);
- this.composedAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+ @Override
+ protected void createMainControl(Composite parent, IEEFFormContainer formContainer) {
+ Table table = formContainer.getWidgetFactory().createTable(parent,
+ SWT.READ_ONLY | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.SINGLE);
+ this.tableViewer = new TableViewer(table);
+ this.composedAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
- this.tableViewer.setContentProvider(ArrayContentProvider.getInstance());
- this.tableViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(new AdapterFactoryLabelProvider.StyledLabelProvider(
- this.composedAdapterFactory, this.tableViewer)));
+ this.tableViewer.setContentProvider(ArrayContentProvider.getInstance());
+ this.tableViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(new AdapterFactoryLabelProvider.StyledLabelProvider(
+ this.composedAdapterFactory, this.tableViewer)));
- this.controller = new TableController(description, variableManager, interpreter, contextAdapter);
- }
+ this.controller = new TableController(description, variableManager, interpreter, editingContextAdapter);
+ }
- @Override
- public void aboutToBeShown() {
- super.aboutToBeShown();
+ @Override
+ public void aboutToBeShown() {
+ super.aboutToBeShown();
- this.newValueConsumer = (newValue) -> this.tableViewer.setInput(newValue);
- this.controller.onNewValue(this.newValueConsumer);
+ this.newValueConsumer = (newValue) -> this.tableViewer.setInput(newValue);
+ this.controller.onNewValue(this.newValueConsumer);
- this.onClickListener = new SelectionListener() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
- TableLifecycleManager.this.controller.handleClick(selection);
- }
+ this.onClickListener = new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
+ TableLifecycleManager.this.controller.handleClick(selection);
+ }
- @Override
- public void widgetDefaultSelected(SelectionEvent event) {
- Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
- TableLifecycleManager.this.controller.handleClick(selection);
- }
- };
- this.tableViewer.getTable().addSelectionListener(this.onClickListener);
- }
+ @Override
+ public void widgetDefaultSelected(SelectionEvent event) {
+ Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
+ TableLifecycleManager.this.controller.handleClick(selection);
+ }
+ };
+ this.tableViewer.getTable().addSelectionListener(this.onClickListener);
+ }
- @Override
- public void refresh() {
- super.refresh();
+ @Override
+ public void refresh() {
+ super.refresh();
- this.controller.refresh();
- }
+ this.controller.refresh();
+ }
- @Override
- public void aboutToBeHidden() {
- super.aboutToBeHidden();
- this.controller.removeValueConsumer();
- this.newValueConsumer = null;
+ @Override
+ public void aboutToBeHidden() {
+ super.aboutToBeHidden();
+ this.controller.removeValueConsumer();
+ this.newValueConsumer = null;
- this.tableViewer.getTable().removeSelectionListener(this.onClickListener);
- this.onClickListener = null;
- }
+ this.tableViewer.getTable().removeSelectionListener(this.onClickListener);
+ this.onClickListener = null;
+ }
- @Override
- protected IEEFWidgetController getController() {
- return this.controller;
- }
+ @Override
+ protected IEEFWidgetController getController() {
+ return this.controller;
+ }
- @Override
- protected EEFWidgetDescription getWidgetDescription() {
- return this.description;
- }
+ @Override
+ protected EEFWidgetDescription getWidgetDescription() {
+ return this.description;
+ }
- @Override
- protected Control getValidationControl() {
- return this.tableViewer.getTable();
- }
+ @Override
+ protected Control getValidationControl() {
+ return this.tableViewer.getTable();
+ }
- @Override
- public void dispose() {
- super.dispose();
+ @Override
+ public void dispose() {
+ super.dispose();
- this.composedAdapterFactory.dispose();
- }
+ this.composedAdapterFactory.dispose();
+ }
+
+ @Override
+ protected void setEnabled(boolean isEnabled) {
+ this.tableViewer.getTable().setEnabled(isEnabled);
+ }
}
-
p.
And finally we can easily adapter our controller.
@@ -500,70 +509,62 @@ And finally we can easily adapter our controller.
pre..
package com.example.awesomeproject.eef.core.ext.widgets.table.internal;
-import com.example.awesomeproject.eef.ext.widgets.table.EEFExtTableDescription;
-
+import java.util.function.Consumer;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.eef.EEFCustomWidgetDescription;
import org.eclipse.eef.core.api.EditingContextAdapter;
-import org.eclipse.eef.core.api.controllers.AbstractEEFWidgetController;
-import org.eclipse.eef.core.api.controllers.IConsumer;
+import org.eclipse.eef.core.api.controllers.AbstractEEFCustomWidgetController;
import org.eclipse.eef.core.api.utils.EvalFactory;
import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
-public class TableController extends AbstractEEFWidgetController {
-
- private static final String VALUE_EXPRESSION_ID = "valueExpression"; //$NON-NLS-1$
-
- private static final String ON_CLICK_EXPRESSION_ID = "onClickExpression"; //$NON-NLS-1$
+public class TableController extends AbstractEEFCustomWidgetController {
- private static final String SELECTION_VARIABLE_NAME = "selection"; //$NON-NLS-1$
+ private static final String VALUE_EXPRESSION_ID = "valueExpression"; //$NON-NLS-1$
- private IConsumer<Object> newValueConsumer;
+ private static final String ON_CLICK_EXPRESSION_ID = "onClickExpression"; //$NON-NLS-1$
- private EEFExtTableDescription description;
+ private static final String SELECTION_VARIABLE_NAME = "selection"; //$NON-NLS-1$
- private EditingContextAdapter contextAdapter;
-
- public TableController(EEFExtTableDescription description, IVariableManager variableManager, IInterpreter interpreter,
- EditingContextAdapter contextAdapter) {
- super(variableManager, interpreter);
- this.description = description;
- this.contextAdapter = contextAdapter;
- }
+ private Consumer<Object> newValueConsumer;
+
+ public TableController(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
+ EditingContextAdapter contextAdapter) {
+ super(description, variableManager, interpreter, contextAdapter);
+ }
- @Override
- protected EEFExtTableDescription getDescription() {
- return this.description;
- }
+ @Override
+ protected EEFCustomWidgetDescription getDescription() {
+ return this.description;
+ }
- @Override
- public void refresh() {
- super.refresh();
- this.newEval().call(this.description.getValueExpression(), this.newValueConsumer);
- }
+ @Override
+ public void refresh() {
+ super.refresh();
+ this.newEval().call(this.getCustomExpression(VALUE_EXPRESSION_ID).get(), this.newValueConsumer);
+ }
- public void handleClick(Object object) {
- this.contextAdapter.performModelChange(() -> {
- String onClickExpression = this.description.getOnClickExpression();
+ public void handleClick(Object object) {
+ this.editingContextAdapter.performModelChange(() -> {
+ String onClickExpression = this.getCustomExpression(ON_CLICK_EXPRESSION_ID).get();
- Map<String, Object> variables = new HashMap<String, Object>();
- variables.putAll(this.variableManager.getVariables());
- variables.put(SELECTION_VARIABLE_NAME, object);
+ Map<String, Object> variables = new HashMap<String, Object>();
+ variables.putAll(this.variableManager.getVariables());
+ variables.put(SELECTION_VARIABLE_NAME, object);
- EvalFactory.of(this.interpreter, variables).call(onClickExpression);
- });
- }
+ EvalFactory.of(this.interpreter, variables).call(onClickExpression);
+ });
+ }
- public void onNewValue(IConsumer<Object> consumer) {
- this.newValueConsumer = consumer;
- }
+ public void onNewValue(Consumer<Object> consumer) {
+ this.newValueConsumer = consumer;
+ }
- public void removeValueConsumer() {
- this.newValueConsumer = null;
- }
+ public void removeValueConsumer() {
+ this.newValueConsumer = null;
+ }
}
p.
diff --git a/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_basic.html b/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_basic.html
index 8558c7ee00..aebe5acda5 100644
--- a/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_basic.html
+++ b/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_basic.html
@@ -114,7 +114,6 @@ public class TableLifecycleManagerProvider implements IEEFLifecycleManagerProvid
import java.util.function.Consumer;
-import com.example.awesomeproject.eef.core.ext.widgets.table.TableController;
import org.eclipse.eef.EEFCustomWidgetDescription;
import org.eclipse.eef.EEFWidgetDescription;
import org.eclipse.eef.common.ui.api.IEEFFormContainer;
@@ -136,104 +135,110 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Table;
-public class TableLifecycleManager extends AbstractEEFWidgetLifecycleManager {
-
- private EEFCustomWidgetDescription description;
-
- private TableViewer tableViewer;
-
- private ComposedAdapterFactory composedAdapterFactory;
-
- private SelectionListener onClickListener;
-
- private TableController controller;
-
- private Consumer&lt;Object&gt; newValueConsumer;
-
- public TableLifecycleManager(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
- EditingContextAdapter contextAdapter) {
- super(variableManager, interpreter, contextAdapter);
- this.description = description;
- }
-
- @Override
- protected void createMainControl(Composite parent, IEEFFormContainer formContainer) {
- Table table = formContainer.getWidgetFactory().createTable(parent,
- SWT.READ_ONLY | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.SINGLE);
- this.tableViewer = new TableViewer(table);
- this.composedAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
-
- this.tableViewer.setContentProvider(ArrayContentProvider.getInstance());
- this.tableViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(new AdapterFactoryLabelProvider.StyledLabelProvider(
- this.composedAdapterFactory, this.tableViewer)));
-
- this.controller = new TableController(description, variableManager, interpreter, contextAdapter);
- }
-
- @Override
- public void aboutToBeShown() {
- super.aboutToBeShown();
-
- this.newValueConsumer = (newValue) -&gt; this.tableViewer.setInput(newValue);
- this.controller.onNewValue(this.newValueConsumer);
-
- this.onClickListener = new SelectionListener() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
- TableLifecycleManager.this.controller.handleClick(selection);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent event) {
- Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
- TableLifecycleManager.this.controller.handleClick(selection);
- }
- };
- this.tableViewer.getTable().addSelectionListener(this.onClickListener);
- }
-
- @Override
- public void refresh() {
- super.refresh();
-
- this.controller.refresh();
- }
-
- @Override
- public void aboutToBeHidden() {
- super.aboutToBeHidden();
- this.controller.removeValueConsumer();
- this.newValueConsumer = null;
-
- this.tableViewer.getTable().removeSelectionListener(this.onClickListener);
- this.onClickListener = null;
- }
-
- @Override
- protected IEEFWidgetController getController() {
- return this.controller;
- }
-
- @Override
- protected EEFWidgetDescription getWidgetDescription() {
- return this.description;
- }
-
- @Override
- protected Control getValidationControl() {
- return this.tableViewer.getTable();
- }
+import com.example.awesomeproject.eef.core.ext.widgets.table.internal.TableController;
- @Override
- public void dispose() {
- super.dispose();
+public class TableLifecycleManager extends AbstractEEFWidgetLifecycleManager {
- this.composedAdapterFactory.dispose();
- }
+ private EEFCustomWidgetDescription description;
+
+ private TableViewer tableViewer;
+
+ private ComposedAdapterFactory composedAdapterFactory;
+
+ private SelectionListener onClickListener;
+
+ private TableController controller;
+
+ private Consumer&lt;Object&gt; newValueConsumer;
+
+ public TableLifecycleManager(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
+ EditingContextAdapter contextAdapter) {
+ super(variableManager, interpreter, contextAdapter);
+ this.description = description;
+ }
+
+ @Override
+ protected void createMainControl(Composite parent, IEEFFormContainer formContainer) {
+ Table table = formContainer.getWidgetFactory().createTable(parent,
+ SWT.READ_ONLY | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.SINGLE);
+ this.tableViewer = new TableViewer(table);
+ this.composedAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ this.tableViewer.setContentProvider(ArrayContentProvider.getInstance());
+ this.tableViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(new AdapterFactoryLabelProvider.StyledLabelProvider(
+ this.composedAdapterFactory, this.tableViewer)));
+
+ this.controller = new TableController(description, variableManager, interpreter, editingContextAdapter);
+ }
+
+ @Override
+ public void aboutToBeShown() {
+ super.aboutToBeShown();
+
+ this.newValueConsumer = (newValue) -&gt; this.tableViewer.setInput(newValue);
+ this.controller.onNewValue(this.newValueConsumer);
+
+ this.onClickListener = new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
+ TableLifecycleManager.this.controller.handleClick(selection);
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent event) {
+ Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
+ TableLifecycleManager.this.controller.handleClick(selection);
+ }
+ };
+ this.tableViewer.getTable().addSelectionListener(this.onClickListener);
+ }
+
+ @Override
+ public void refresh() {
+ super.refresh();
+
+ this.controller.refresh();
+ }
+
+ @Override
+ public void aboutToBeHidden() {
+ super.aboutToBeHidden();
+ this.controller.removeValueConsumer();
+ this.newValueConsumer = null;
+
+ this.tableViewer.getTable().removeSelectionListener(this.onClickListener);
+ this.onClickListener = null;
+ }
+
+ @Override
+ protected IEEFWidgetController getController() {
+ return this.controller;
+ }
+
+ @Override
+ protected EEFWidgetDescription getWidgetDescription() {
+ return this.description;
+ }
+
+ @Override
+ protected Control getValidationControl() {
+ return this.tableViewer.getTable();
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+
+ this.composedAdapterFactory.dispose();
+ }
+
+ @Override
+ protected void setEnabled(boolean isEnabled) {
+ this.tableViewer.getTable().setEnabled(isEnabled);
+ }
}
-
</pre>
<p>
<br/>The lifecycle manager will first create the controls of the table widget and it will initialized a controller for the table.
@@ -250,62 +255,62 @@ public class TableLifecycleManager extends AbstractEEFWidgetLifecycleManager {
</ul>
<pre>package com.example.awesomeproject.eef.core.ext.widgets.table.internal;
+import java.util.function.Consumer;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.eef.EEFCustomWidgetDescription;
import org.eclipse.eef.core.api.EditingContextAdapter;
import org.eclipse.eef.core.api.controllers.AbstractEEFCustomWidgetController;
-import org.eclipse.eef.core.api.controllers.IConsumer;
import org.eclipse.eef.core.api.utils.EvalFactory;
import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
public class TableController extends AbstractEEFCustomWidgetController {
- private static final String VALUE_EXPRESSION_ID = "valueExpression"; //$NON-NLS-1$
+ private static final String VALUE_EXPRESSION_ID = "valueExpression"; //$NON-NLS-1$
- private static final String ON_CLICK_EXPRESSION_ID = "onClickExpression"; //$NON-NLS-1$
+ private static final String ON_CLICK_EXPRESSION_ID = "onClickExpression"; //$NON-NLS-1$
- private static final String SELECTION_VARIABLE_NAME = "selection"; //$NON-NLS-1$
+ private static final String SELECTION_VARIABLE_NAME = "selection"; //$NON-NLS-1$
- private IConsumer&lt;Object&gt; newValueConsumer;
+ private Consumer&lt;Object&gt; newValueConsumer;
+
+ public TableController(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
+ EditingContextAdapter contextAdapter) {
+ super(description, variableManager, interpreter, contextAdapter);
+ }
- public TableController(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
- EditingContextAdapter contextAdapter) {
- super(description, variableManager, interpreter, contextAdapter);
- }
-
- @Override
- protected EEFCustomWidgetDescription getDescription() {
- return this.description;
- }
+ @Override
+ protected EEFCustomWidgetDescription getDescription() {
+ return this.description;
+ }
- @Override
- public void refresh() {
- super.refresh();
- this.newEval().call(this.getCustomExpression(VALUE_EXPRESSION_ID), this.newValueConsumer);
- }
+ @Override
+ public void refresh() {
+ super.refresh();
+ this.newEval().call(this.getCustomExpression(VALUE_EXPRESSION_ID).get(), this.newValueConsumer);
+ }
- public void handleClick(Object object) {
- this.contextAdapter.performModelChange(() -&gt; {
- String onClickExpression = this.getCustomExpression(ON_CLICK_EXPRESSION_ID);
+ public void handleClick(Object object) {
+ this.editingContextAdapter.performModelChange(() -&gt; {
+ String onClickExpression = this.getCustomExpression(ON_CLICK_EXPRESSION_ID).get();
- Map&lt;String, Object&gt; variables = new HashMap&lt;String, Object&gt;();
- variables.putAll(this.variableManager.getVariables());
- variables.put(SELECTION_VARIABLE_NAME, object);
+ Map&lt;String, Object&gt; variables = new HashMap&lt;String, Object&gt;();
+ variables.putAll(this.variableManager.getVariables());
+ variables.put(SELECTION_VARIABLE_NAME, object);
- EvalFactory.of(this.interpreter, variables).call(onClickExpression);
- });
- }
+ EvalFactory.of(this.interpreter, variables).call(onClickExpression);
+ });
+ }
- public void onNewValue(IConsumer&lt;Object&gt; consumer) {
- this.newValueConsumer = consumer;
- }
+ public void onNewValue(Consumer&lt;Object&gt; consumer) {
+ this.newValueConsumer = consumer;
+ }
- public void removeValueConsumer() {
- this.newValueConsumer = null;
- }
+ public void removeValueConsumer() {
+ this.newValueConsumer = null;
+ }
}
</pre>
diff --git a/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_basic.textile b/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_basic.textile
index 063810dc6f..cf831c30ce 100644
--- a/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_basic.textile
+++ b/plugins/org.eclipse.sirius.doc/doc/developer/extensions-properties_provide_custom_widget_basic.textile
@@ -112,7 +112,6 @@ package com.example.awesomeproject.eef.ide.ui.ext.widgets.table.internal;
import java.util.function.Consumer;
-import com.example.awesomeproject.eef.core.ext.widgets.table.TableController;
import org.eclipse.eef.EEFCustomWidgetDescription;
import org.eclipse.eef.EEFWidgetDescription;
import org.eclipse.eef.common.ui.api.IEEFFormContainer;
@@ -134,104 +133,110 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Table;
-public class TableLifecycleManager extends AbstractEEFWidgetLifecycleManager {
-
- private EEFCustomWidgetDescription description;
-
- private TableViewer tableViewer;
-
- private ComposedAdapterFactory composedAdapterFactory;
-
- private SelectionListener onClickListener;
-
- private TableController controller;
-
- private Consumer<Object> newValueConsumer;
-
- public TableLifecycleManager(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
- EditingContextAdapter contextAdapter) {
- super(variableManager, interpreter, contextAdapter);
- this.description = description;
- }
-
- @Override
- protected void createMainControl(Composite parent, IEEFFormContainer formContainer) {
- Table table = formContainer.getWidgetFactory().createTable(parent,
- SWT.READ_ONLY | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.SINGLE);
- this.tableViewer = new TableViewer(table);
- this.composedAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
-
- this.tableViewer.setContentProvider(ArrayContentProvider.getInstance());
- this.tableViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(new AdapterFactoryLabelProvider.StyledLabelProvider(
- this.composedAdapterFactory, this.tableViewer)));
-
- this.controller = new TableController(description, variableManager, interpreter, contextAdapter);
- }
-
- @Override
- public void aboutToBeShown() {
- super.aboutToBeShown();
-
- this.newValueConsumer = (newValue) -> this.tableViewer.setInput(newValue);
- this.controller.onNewValue(this.newValueConsumer);
-
- this.onClickListener = new SelectionListener() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
- TableLifecycleManager.this.controller.handleClick(selection);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent event) {
- Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
- TableLifecycleManager.this.controller.handleClick(selection);
- }
- };
- this.tableViewer.getTable().addSelectionListener(this.onClickListener);
- }
-
- @Override
- public void refresh() {
- super.refresh();
-
- this.controller.refresh();
- }
-
- @Override
- public void aboutToBeHidden() {
- super.aboutToBeHidden();
- this.controller.removeValueConsumer();
- this.newValueConsumer = null;
-
- this.tableViewer.getTable().removeSelectionListener(this.onClickListener);
- this.onClickListener = null;
- }
-
- @Override
- protected IEEFWidgetController getController() {
- return this.controller;
- }
-
- @Override
- protected EEFWidgetDescription getWidgetDescription() {
- return this.description;
- }
-
- @Override
- protected Control getValidationControl() {
- return this.tableViewer.getTable();
- }
+import com.example.awesomeproject.eef.core.ext.widgets.table.internal.TableController;
- @Override
- public void dispose() {
- super.dispose();
+public class TableLifecycleManager extends AbstractEEFWidgetLifecycleManager {
- this.composedAdapterFactory.dispose();
- }
+ private EEFCustomWidgetDescription description;
+
+ private TableViewer tableViewer;
+
+ private ComposedAdapterFactory composedAdapterFactory;
+
+ private SelectionListener onClickListener;
+
+ private TableController controller;
+
+ private Consumer<Object> newValueConsumer;
+
+ public TableLifecycleManager(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
+ EditingContextAdapter contextAdapter) {
+ super(variableManager, interpreter, contextAdapter);
+ this.description = description;
+ }
+
+ @Override
+ protected void createMainControl(Composite parent, IEEFFormContainer formContainer) {
+ Table table = formContainer.getWidgetFactory().createTable(parent,
+ SWT.READ_ONLY | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.SINGLE);
+ this.tableViewer = new TableViewer(table);
+ this.composedAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ this.tableViewer.setContentProvider(ArrayContentProvider.getInstance());
+ this.tableViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(new AdapterFactoryLabelProvider.StyledLabelProvider(
+ this.composedAdapterFactory, this.tableViewer)));
+
+ this.controller = new TableController(description, variableManager, interpreter, editingContextAdapter);
+ }
+
+ @Override
+ public void aboutToBeShown() {
+ super.aboutToBeShown();
+
+ this.newValueConsumer = (newValue) -> this.tableViewer.setInput(newValue);
+ this.controller.onNewValue(this.newValueConsumer);
+
+ this.onClickListener = new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
+ TableLifecycleManager.this.controller.handleClick(selection);
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent event) {
+ Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
+ TableLifecycleManager.this.controller.handleClick(selection);
+ }
+ };
+ this.tableViewer.getTable().addSelectionListener(this.onClickListener);
+ }
+
+ @Override
+ public void refresh() {
+ super.refresh();
+
+ this.controller.refresh();
+ }
+
+ @Override
+ public void aboutToBeHidden() {
+ super.aboutToBeHidden();
+ this.controller.removeValueConsumer();
+ this.newValueConsumer = null;
+
+ this.tableViewer.getTable().removeSelectionListener(this.onClickListener);
+ this.onClickListener = null;
+ }
+
+ @Override
+ protected IEEFWidgetController getController() {
+ return this.controller;
+ }
+
+ @Override
+ protected EEFWidgetDescription getWidgetDescription() {
+ return this.description;
+ }
+
+ @Override
+ protected Control getValidationControl() {
+ return this.tableViewer.getTable();
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+
+ this.composedAdapterFactory.dispose();
+ }
+
+ @Override
+ protected void setEnabled(boolean isEnabled) {
+ this.tableViewer.getTable().setEnabled(isEnabled);
+ }
}
-
p.
The lifecycle manager will first create the controls of the table widget and it will initialized a controller for the table.
@@ -247,62 +252,62 @@ The controller is not required but it will handle several keys problems for us,
pre..
package com.example.awesomeproject.eef.core.ext.widgets.table.internal;
+import java.util.function.Consumer;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.eef.EEFCustomWidgetDescription;
import org.eclipse.eef.core.api.EditingContextAdapter;
import org.eclipse.eef.core.api.controllers.AbstractEEFCustomWidgetController;
-import org.eclipse.eef.core.api.controllers.IConsumer;
import org.eclipse.eef.core.api.utils.EvalFactory;
import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
public class TableController extends AbstractEEFCustomWidgetController {
- private static final String VALUE_EXPRESSION_ID = "valueExpression"; //$NON-NLS-1$
+ private static final String VALUE_EXPRESSION_ID = "valueExpression"; //$NON-NLS-1$
- private static final String ON_CLICK_EXPRESSION_ID = "onClickExpression"; //$NON-NLS-1$
+ private static final String ON_CLICK_EXPRESSION_ID = "onClickExpression"; //$NON-NLS-1$
- private static final String SELECTION_VARIABLE_NAME = "selection"; //$NON-NLS-1$
+ private static final String SELECTION_VARIABLE_NAME = "selection"; //$NON-NLS-1$
- private IConsumer<Object> newValueConsumer;
+ private Consumer<Object> newValueConsumer;
+
+ public TableController(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
+ EditingContextAdapter contextAdapter) {
+ super(description, variableManager, interpreter, contextAdapter);
+ }
- public TableController(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
- EditingContextAdapter contextAdapter) {
- super(description, variableManager, interpreter, contextAdapter);
- }
-
- @Override
- protected EEFCustomWidgetDescription getDescription() {
- return this.description;
- }
+ @Override
+ protected EEFCustomWidgetDescription getDescription() {
+ return this.description;
+ }
- @Override
- public void refresh() {
- super.refresh();
- this.newEval().call(this.getCustomExpression(VALUE_EXPRESSION_ID), this.newValueConsumer);
- }
+ @Override
+ public void refresh() {
+ super.refresh();
+ this.newEval().call(this.getCustomExpression(VALUE_EXPRESSION_ID).get(), this.newValueConsumer);
+ }
- public void handleClick(Object object) {
- this.contextAdapter.performModelChange(() -> {
- String onClickExpression = this.getCustomExpression(ON_CLICK_EXPRESSION_ID);
+ public void handleClick(Object object) {
+ this.editingContextAdapter.performModelChange(() -> {
+ String onClickExpression = this.getCustomExpression(ON_CLICK_EXPRESSION_ID).get();
- Map<String, Object> variables = new HashMap<String, Object>();
- variables.putAll(this.variableManager.getVariables());
- variables.put(SELECTION_VARIABLE_NAME, object);
+ Map<String, Object> variables = new HashMap<String, Object>();
+ variables.putAll(this.variableManager.getVariables());
+ variables.put(SELECTION_VARIABLE_NAME, object);
- EvalFactory.of(this.interpreter, variables).call(onClickExpression);
- });
- }
+ EvalFactory.of(this.interpreter, variables).call(onClickExpression);
+ });
+ }
- public void onNewValue(IConsumer<Object> consumer) {
- this.newValueConsumer = consumer;
- }
+ public void onNewValue(Consumer<Object> consumer) {
+ this.newValueConsumer = consumer;
+ }
- public void removeValueConsumer() {
- this.newValueConsumer = null;
- }
+ public void removeValueConsumer() {
+ this.newValueConsumer = null;
+ }
}
p.

Back to the top