Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre-Charles David2016-10-28 07:37:22 +0000
committerMelanie Bats2016-11-24 13:40:39 +0000
commit7e0a1e0fa3d33672dd50a596a988f194df80b00b (patch)
tree3a04e0cabd6c142228ef91db2e7dfee486c3d970
parent0dcc9b430de1602d054611634947cd0b981fafc5 (diff)
downloadorg.eclipse.eef-7e0a1e0fa3d33672dd50a596a988f194df80b00b.tar.gz
org.eclipse.eef-7e0a1e0fa3d33672dd50a596a988f194df80b00b.tar.xz
org.eclipse.eef-7e0a1e0fa3d33672dd50a596a988f194df80b00b.zip
[506621] Always synchronize widgets' UI state after callback execution
Bug: 506621 Change-Id: I4aaf82fff88fbf2e8f00d76557a9fba3ea8fa164 Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr> Signed-off-by: Mélanie Bats <melanie.bats@obeo.fr>
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFButtonController.java6
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFHyperlinkController.java7
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFLabelController.java4
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFListController.java4
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFButtonController.java5
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFHyperlinkController.java11
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFLabelController.java5
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFListController.java5
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFButtonLifecycleManager.java11
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFCheckboxLifecycleManager.java15
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkLifecycleManager.java13
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkListener.java23
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFLabelLifecycleManager.java11
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFListLifecycleManager.java19
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFRadioLifecycleManager.java6
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFSelectLifecycleManager.java6
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFTextLifecycleManager.java5
17 files changed, 117 insertions, 39 deletions
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFButtonController.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFButtonController.java
index 6241acad2..6b71c1c24 100644
--- a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFButtonController.java
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFButtonController.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.eef.core.api.controllers;
+import org.eclipse.core.runtime.IStatus;
+
/**
* The IEEFButtonController is responsible of supporting all the interactions with the widgets created for an
* EEFButtonDescription.
@@ -32,7 +34,9 @@ public interface IEEFButtonController extends IEEFWidgetController {
/**
* Invoked when the user pushes the button.
+ *
+ * @return the status of the pushed execution.
*/
- void pushed();
+ IStatus pushed();
}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFHyperlinkController.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFHyperlinkController.java
index 1c1954de6..13b55c8d8 100644
--- a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFHyperlinkController.java
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFHyperlinkController.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.eef.core.api.controllers;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.eef.EEFWidgetAction;
/**
@@ -25,8 +26,9 @@ public interface IEEFHyperlinkController extends IEEFWidgetController {
*
* @param element
* Semantic element
+ * @return the status of the onclick execution.
*/
- void onClick(Object element);
+ IStatus onClick(Object element);
/**
* Register a consumer which will be called with the new value of the hyperlink when it will change.
@@ -46,8 +48,9 @@ public interface IEEFHyperlinkController extends IEEFWidgetController {
*
* @param action
* Widget action
+ * @return the status of the action execution
*/
- void action(EEFWidgetAction action);
+ IStatus action(EEFWidgetAction action);
/**
* Compute the display value.
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFLabelController.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFLabelController.java
index 6eb917517..4b647f972 100644
--- a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFLabelController.java
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFLabelController.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.eef.core.api.controllers;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.eef.EEFWidgetAction;
/**
@@ -37,6 +38,7 @@ public interface IEEFLabelController extends IEEFWidgetController {
*
* @param action
* Widget action
+ * @return the status of the action execution
*/
- void action(EEFWidgetAction action);
+ IStatus action(EEFWidgetAction action);
}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFListController.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFListController.java
index a7a9725eb..34663ce98 100644
--- a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFListController.java
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IEEFListController.java
@@ -12,6 +12,7 @@ package org.eclipse.eef.core.api.controllers;
import java.util.List;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.eef.EEFWidgetAction;
/**
@@ -50,7 +51,8 @@ public interface IEEFListController extends IEEFWidgetController {
* Widget action
* @param selection
* The selected elements
+ * @return the status of the action execution
*/
- void action(EEFWidgetAction action, List<Object> selection);
+ IStatus action(EEFWidgetAction action, List<Object> selection);
}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFButtonController.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFButtonController.java
index 8927c5768..12d65dd25 100644
--- a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFButtonController.java
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFButtonController.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.eef.core.internal.controllers;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.eef.EEFButtonDescription;
import org.eclipse.eef.EEFWidgetDescription;
import org.eclipse.eef.EefPackage;
@@ -85,8 +86,8 @@ public class EEFButtonController extends AbstractEEFWidgetController implements
}
@Override
- public void pushed() {
- contextAdapter.performModelChange(new Runnable() {
+ public IStatus pushed() {
+ return contextAdapter.performModelChange(new Runnable() {
@Override
public void run() {
String pushExpression = EEFButtonController.this.description.getPushExpression();
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFHyperlinkController.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFHyperlinkController.java
index 1677d1bdf..467e83587 100644
--- a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFHyperlinkController.java
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFHyperlinkController.java
@@ -15,6 +15,7 @@ import com.google.common.base.Objects;
import java.util.HashMap;
import java.util.Map;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.eef.EEFHyperlinkDescription;
import org.eclipse.eef.EEFWidgetAction;
import org.eclipse.eef.EEFWidgetDescription;
@@ -111,8 +112,8 @@ public class EEFHyperlinkController extends AbstractEEFWidgetController implemen
* @see org.eclipse.eef.core.api.controllers.IEEFHyperlinkController#onClick(java.lang.Object)
*/
@Override
- public void onClick(final Object element) {
- contextAdapter.performModelChange(new Runnable() {
+ public IStatus onClick(final Object element) {
+ return contextAdapter.performModelChange(new Runnable() {
@Override
public void run() {
String expression = EEFHyperlinkController.this.description.getOnClickExpression();
@@ -159,12 +160,12 @@ public class EEFHyperlinkController extends AbstractEEFWidgetController implemen
/**
* {@inheritDoc}
- *
+ *
* @see org.eclipse.eef.core.api.controllers.IEEFHyperlinkController#action(EEFWidgetAction)
*/
@Override
- public void action(final EEFWidgetAction action) {
- this.contextAdapter.performModelChange(new Runnable() {
+ public IStatus action(final EEFWidgetAction action) {
+ return this.contextAdapter.performModelChange(new Runnable() {
@Override
public void run() {
String expression = action.getActionExpression();
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFLabelController.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFLabelController.java
index 5dd4cf8b3..080c48fd1 100644
--- a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFLabelController.java
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFLabelController.java
@@ -13,6 +13,7 @@ package org.eclipse.eef.core.internal.controllers;
import java.util.HashMap;
import java.util.Map;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.eef.EEFLabelDescription;
import org.eclipse.eef.EEFWidgetAction;
import org.eclipse.eef.EEFWidgetDescription;
@@ -128,8 +129,8 @@ public class EEFLabelController extends AbstractEEFWidgetController implements I
* @see org.eclipse.eef.core.api.controllers.IEEFLabelController#action(EEFWidgetAction)
*/
@Override
- public void action(final EEFWidgetAction action) {
- this.contextAdapter.performModelChange(new Runnable() {
+ public IStatus action(final EEFWidgetAction action) {
+ return this.contextAdapter.performModelChange(new Runnable() {
@Override
public void run() {
String expression = action.getActionExpression();
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFListController.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFListController.java
index 0e7c3e818..69f5ce5c0 100644
--- a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFListController.java
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFListController.java
@@ -14,6 +14,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.eef.EEFListDescription;
import org.eclipse.eef.EEFWidgetAction;
import org.eclipse.eef.EEFWidgetDescription;
@@ -140,8 +141,8 @@ public class EEFListController extends AbstractEEFWidgetController implements IE
* java.util.List)
*/
@Override
- public void action(final EEFWidgetAction action, final List<Object> elements) {
- contextAdapter.performModelChange(new Runnable() {
+ public IStatus action(final EEFWidgetAction action, final List<Object> elements) {
+ return contextAdapter.performModelChange(new Runnable() {
@Override
public void run() {
String expression = action.getActionExpression();
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFButtonLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFButtonLifecycleManager.java
index 9a8c76931..993406530 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFButtonLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFButtonLifecycleManager.java
@@ -12,6 +12,7 @@ package org.eclipse.eef.ide.ui.internal.widgets;
import com.google.common.base.Objects;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.eef.EEFButtonDescription;
import org.eclipse.eef.EEFWidgetDescription;
import org.eclipse.eef.common.ui.api.EEFWidgetFactory;
@@ -22,6 +23,7 @@ import org.eclipse.eef.core.api.controllers.IConsumer;
import org.eclipse.eef.core.api.controllers.IEEFButtonController;
import org.eclipse.eef.core.api.controllers.IEEFWidgetController;
import org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager;
+import org.eclipse.eef.ide.ui.internal.EEFIdeUiPlugin;
import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
import org.eclipse.swt.SWT;
@@ -143,7 +145,14 @@ public class EEFButtonLifecycleManager extends AbstractEEFWidgetLifecycleManager
this.selectionListener = new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- controller.pushed();
+ if (!EEFButtonLifecycleManager.this.container.isRenderingInProgress()) {
+ IStatus result = controller.pushed();
+ if (result != null && result.getSeverity() == IStatus.ERROR) {
+ EEFIdeUiPlugin.INSTANCE.log(result);
+ } else {
+ refresh();
+ }
+ }
}
};
this.button.addSelectionListener(this.selectionListener);
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFCheckboxLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFCheckboxLifecycleManager.java
index 2cafa6583..1ab1959df 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFCheckboxLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFCheckboxLifecycleManager.java
@@ -24,10 +24,10 @@ import org.eclipse.eef.core.api.controllers.EEFControllersFactory;
import org.eclipse.eef.core.api.controllers.IConsumer;
import org.eclipse.eef.core.api.controllers.IEEFCheckboxController;
import org.eclipse.eef.core.api.controllers.IEEFWidgetController;
-import org.eclipse.eef.ide.internal.EEFIdePlugin;
import org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager;
import org.eclipse.eef.ide.ui.api.widgets.EEFStyleHelper;
import org.eclipse.eef.ide.ui.api.widgets.EEFStyleHelper.IEEFTextStyleCallback;
+import org.eclipse.eef.ide.ui.internal.EEFIdeUiPlugin;
import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
import org.eclipse.swt.SWT;
@@ -65,6 +65,11 @@ public class EEFCheckboxLifecycleManager extends AbstractEEFWidgetLifecycleManag
private SelectionListener selectionListener;
/**
+ * The reference value of the checkbox, as last rendered from the state of the actual model.
+ */
+ private boolean referenceValue;
+
+ /**
* The constructor.
*
* @param description
@@ -163,11 +168,10 @@ public class EEFCheckboxLifecycleManager extends AbstractEEFWidgetLifecycleManag
public void widgetSelected(SelectionEvent event) {
IStatus result = controller.updateValue(checkbox.getSelection());
if (result != null && result.getSeverity() == IStatus.ERROR) {
- EEFIdePlugin.INSTANCE.log(result);
- // The checkbox widget is a special case with only two possible states, so we can deduce the
- // reference state to revert to without storing anything.
- boolean referenceValue = !checkbox.getSelection();
+ EEFIdeUiPlugin.INSTANCE.log(result);
checkbox.setSelection(referenceValue);
+ } else {
+ refresh();
}
}
@@ -185,6 +189,7 @@ public class EEFCheckboxLifecycleManager extends AbstractEEFWidgetLifecycleManag
if (!checkbox.isDisposed()) {
if (value != null && checkbox.getSelection() != value.booleanValue()) {
checkbox.setSelection(value.booleanValue());
+ referenceValue = value.booleanValue();
}
}
}
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkLifecycleManager.java
index be91d8269..f4f682701 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkLifecycleManager.java
@@ -13,6 +13,7 @@ package org.eclipse.eef.ide.ui.internal.widgets;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.eef.EEFHyperlinkDescription;
import org.eclipse.eef.EEFHyperlinkStyle;
import org.eclipse.eef.EEFWidgetAction;
@@ -28,6 +29,7 @@ import org.eclipse.eef.core.api.controllers.IEEFWidgetController;
import org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager;
import org.eclipse.eef.ide.ui.api.widgets.EEFStyleHelper;
import org.eclipse.eef.ide.ui.api.widgets.EEFStyleHelper.IEEFTextStyleCallback;
+import org.eclipse.eef.ide.ui.internal.EEFIdeUiPlugin;
import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
import org.eclipse.swt.SWT;
@@ -199,7 +201,7 @@ public class EEFHyperlinkLifecycleManager extends AbstractEEFWidgetLifecycleMana
public void aboutToBeShown() {
super.aboutToBeShown();
- this.hyperlinkListener = new EEFHyperlinkListener(this.hyperlink, this.container, this.controller);
+ this.hyperlinkListener = new EEFHyperlinkListener(this, this.hyperlink, this.container, this.controller);
hyperlink.addMouseListener(hyperlinkListener);
this.controller.onNewValue(new IConsumer<Object>() {
@@ -223,7 +225,14 @@ public class EEFHyperlinkLifecycleManager extends AbstractEEFWidgetLifecycleMana
SelectionAdapter selectionListener = new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- controller.action(actionButton.getAction());
+ if (!EEFHyperlinkLifecycleManager.this.container.isRenderingInProgress()) {
+ IStatus result = controller.action(actionButton.getAction());
+ if (result != null && result.getSeverity() == IStatus.ERROR) {
+ EEFIdeUiPlugin.INSTANCE.log(result);
+ } else {
+ refresh();
+ }
+ }
}
};
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkListener.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkListener.java
index 5552206db..eeb28150a 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkListener.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkListener.java
@@ -10,8 +10,10 @@
*******************************************************************************/
package org.eclipse.eef.ide.ui.internal.widgets;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.eef.common.ui.api.IEEFFormContainer;
import org.eclipse.eef.core.api.controllers.IEEFHyperlinkController;
+import org.eclipse.eef.ide.ui.internal.EEFIdeUiPlugin;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.MouseEvent;
@@ -24,6 +26,12 @@ import org.eclipse.swt.graphics.Point;
* @author sbegaudeau
*/
public class EEFHyperlinkListener implements MouseListener {
+
+ /**
+ * The life cycle manager.
+ */
+ private EEFHyperlinkLifecycleManager lifecycleManager;
+
/**
* The hyperlink.
*/
@@ -41,7 +49,9 @@ public class EEFHyperlinkListener implements MouseListener {
/**
* The constructor.
- *
+ *
+ * @param lifecycleManager
+ * The life cycle manager
* @param hyperlink
* The hyperlink
* @param container
@@ -49,7 +59,9 @@ public class EEFHyperlinkListener implements MouseListener {
* @param controller
* The controller
*/
- public EEFHyperlinkListener(StyledText hyperlink, IEEFFormContainer container, IEEFHyperlinkController controller) {
+ public EEFHyperlinkListener(EEFHyperlinkLifecycleManager lifecycleManager, StyledText hyperlink, IEEFFormContainer container,
+ IEEFHyperlinkController controller) {
+ this.lifecycleManager = lifecycleManager;
this.hyperlink = hyperlink;
this.container = container;
this.controller = controller;
@@ -77,7 +89,12 @@ public class EEFHyperlinkListener implements MouseListener {
StyleRange stylerange = hyperlink.getStyleRangeAtOffset(offset);
if (stylerange != null) {
if (!container.isRenderingInProgress()) {
- controller.onClick(hyperlink.getData());
+ IStatus result = controller.onClick(hyperlink.getData());
+ if (result != null && result.getSeverity() == IStatus.ERROR) {
+ EEFIdeUiPlugin.INSTANCE.log(result);
+ } else {
+ lifecycleManager.refresh();
+ }
}
}
} catch (IllegalArgumentException exception) {
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFLabelLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFLabelLifecycleManager.java
index 6671abce5..8ff889f2b 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFLabelLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFLabelLifecycleManager.java
@@ -15,6 +15,7 @@ import com.google.common.base.Objects;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.eef.EEFLabelDescription;
import org.eclipse.eef.EEFLabelStyle;
import org.eclipse.eef.EEFWidgetAction;
@@ -30,6 +31,7 @@ import org.eclipse.eef.core.api.controllers.IEEFWidgetController;
import org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager;
import org.eclipse.eef.ide.ui.api.widgets.EEFStyleHelper;
import org.eclipse.eef.ide.ui.api.widgets.EEFStyleHelper.IEEFTextStyleCallback;
+import org.eclipse.eef.ide.ui.internal.EEFIdeUiPlugin;
import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
import org.eclipse.swt.SWT;
@@ -201,7 +203,14 @@ public class EEFLabelLifecycleManager extends AbstractEEFWidgetLifecycleManager
SelectionAdapter selectionListener = new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- controller.action(actionButton.getAction());
+ if (!EEFLabelLifecycleManager.this.container.isRenderingInProgress()) {
+ IStatus result = controller.action(actionButton.getAction());
+ if (result != null && result.getSeverity() == IStatus.ERROR) {
+ EEFIdeUiPlugin.INSTANCE.log(result);
+ } else {
+ refresh();
+ }
+ }
}
};
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFListLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFListLifecycleManager.java
index 2dea0fdbb..99b16f94c 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFListLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFListLifecycleManager.java
@@ -13,6 +13,7 @@ package org.eclipse.eef.ide.ui.internal.widgets;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.eef.EEFListDescription;
import org.eclipse.eef.EEFWidgetAction;
import org.eclipse.eef.EEFWidgetDescription;
@@ -24,6 +25,7 @@ import org.eclipse.eef.core.api.controllers.IConsumer;
import org.eclipse.eef.core.api.controllers.IEEFListController;
import org.eclipse.eef.core.api.controllers.IEEFWidgetController;
import org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager;
+import org.eclipse.eef.ide.ui.internal.EEFIdeUiPlugin;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
@@ -227,12 +229,19 @@ public class EEFListLifecycleManager extends AbstractEEFWidgetLifecycleManager {
SelectionAdapter selectionListener = new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- List<Object> selections = new ArrayList<Object>();
- IStructuredSelection structuredSelection = (IStructuredSelection) tableViewer.getSelection();
- for (Object selection : structuredSelection.toList()) {
- selections.add(selection);
+ if (!EEFListLifecycleManager.this.container.isRenderingInProgress()) {
+ List<Object> selections = new ArrayList<Object>();
+ IStructuredSelection structuredSelection = (IStructuredSelection) tableViewer.getSelection();
+ for (Object selection : structuredSelection.toList()) {
+ selections.add(selection);
+ }
+ IStatus result = controller.action(actionButton.getAction(), selections);
+ if (result != null && result.getSeverity() == IStatus.ERROR) {
+ EEFIdeUiPlugin.INSTANCE.log(result);
+ } else {
+ refresh();
+ }
}
- controller.action(actionButton.getAction(), selections);
}
};
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFRadioLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFRadioLifecycleManager.java
index d64cbd42a..6f9d657f4 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFRadioLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFRadioLifecycleManager.java
@@ -29,8 +29,8 @@ import org.eclipse.eef.core.api.controllers.IConsumer;
import org.eclipse.eef.core.api.controllers.IEEFRadioController;
import org.eclipse.eef.core.api.controllers.IEEFWidgetController;
import org.eclipse.eef.core.api.utils.EvalFactory;
-import org.eclipse.eef.ide.internal.EEFIdePlugin;
import org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager;
+import org.eclipse.eef.ide.ui.internal.EEFIdeUiPlugin;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ISelection;
@@ -181,8 +181,10 @@ public class EEFRadioLifecycleManager extends AbstractEEFWidgetLifecycleManager
Object newValue = selection.getFirstElement();
IStatus result = controller.updateValue(newValue);
if (result != null && result.getSeverity() == IStatus.ERROR && referenceSelection != null) {
- EEFIdePlugin.INSTANCE.log(result);
+ EEFIdeUiPlugin.INSTANCE.log(result);
radioGroupViewer.setSelection(referenceSelection);
+ } else {
+ refresh();
}
} finally {
updateInProgress.set(false);
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFSelectLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFSelectLifecycleManager.java
index b23f1cdb0..cfdf2363d 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFSelectLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFSelectLifecycleManager.java
@@ -28,8 +28,8 @@ import org.eclipse.eef.core.api.controllers.IConsumer;
import org.eclipse.eef.core.api.controllers.IEEFSelectController;
import org.eclipse.eef.core.api.controllers.IEEFWidgetController;
import org.eclipse.eef.core.api.utils.EvalFactory;
-import org.eclipse.eef.ide.internal.EEFIdePlugin;
import org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager;
+import org.eclipse.eef.ide.ui.internal.EEFIdeUiPlugin;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ComboViewer;
@@ -188,8 +188,10 @@ public class EEFSelectLifecycleManager extends AbstractEEFWidgetLifecycleManager
}
IStatus result = controller.updateValue(newValue);
if (result != null && result.getSeverity() == IStatus.ERROR) {
- EEFIdePlugin.INSTANCE.log(result);
+ EEFIdeUiPlugin.INSTANCE.log(result);
comboViewer.setSelection(referenceValue);
+ } else {
+ refresh();
}
}
}
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFTextLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFTextLifecycleManager.java
index 0d6e01491..4eac0d0c1 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFTextLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFTextLifecycleManager.java
@@ -25,10 +25,10 @@ import org.eclipse.eef.core.api.controllers.EEFControllersFactory;
import org.eclipse.eef.core.api.controllers.IConsumer;
import org.eclipse.eef.core.api.controllers.IEEFTextController;
import org.eclipse.eef.core.api.controllers.IEEFWidgetController;
-import org.eclipse.eef.ide.internal.EEFIdePlugin;
import org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager;
import org.eclipse.eef.ide.ui.api.widgets.EEFStyleHelper;
import org.eclipse.eef.ide.ui.api.widgets.EEFStyleHelper.IEEFTextStyleCallback;
+import org.eclipse.eef.ide.ui.internal.EEFIdeUiPlugin;
import org.eclipse.eef.ide.ui.internal.widgets.styles.EEFColor;
import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
@@ -280,10 +280,11 @@ public class EEFTextLifecycleManager extends AbstractEEFWidgetLifecycleManager {
try {
IStatus result = controller.updateValue(text.getText());
if (result != null && result.getSeverity() == IStatus.ERROR) {
- EEFIdePlugin.INSTANCE.log(result);
+ EEFIdeUiPlugin.INSTANCE.log(result);
text.setText(referenceValue);
} else {
referenceValue = text.getText();
+ refresh();
}
this.isDirty = false;
this.setStyle();

Back to the top