diff options
author | Stéphane Bégaudeau | 2016-09-12 08:47:37 +0000 |
---|---|---|
committer | Stéphane Bégaudeau | 2016-09-19 12:19:20 +0000 |
commit | 0ebb6c5272c3e7e01818b0783917242fd8824b50 (patch) | |
tree | a97aa7690efbe4e5ecff52742b1d2e5fba5e1101 | |
parent | 986f7c67a844e42245be06dddc8914b1d82c2abb (diff) | |
download | org.eclipse.eef-v1.6.x.tar.gz org.eclipse.eef-v1.6.x.tar.xz org.eclipse.eef-v1.6.x.zip |
Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=498748
Change-Id: Idbdc7fd537b7e6272eb69442ebd0defc1dffb4e2
Signed-off-by: Stéphane Bégaudeau <stephane.begaudeau@obeo.fr>
2 files changed, 21 insertions, 41 deletions
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFTextController.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFTextController.java index ffd968896..12011c4c8 100644 --- a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFTextController.java +++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFTextController.java @@ -12,10 +12,6 @@ package org.eclipse.eef.core.internal.controllers; import java.util.HashMap; import java.util.Map; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; import org.eclipse.eef.EEFTextDescription; import org.eclipse.eef.EEFWidgetDescription; @@ -52,16 +48,6 @@ public class EEFTextController extends AbstractEEFWidgetController implements IE private IConsumer<Object> newValueConsumer; /** - * Executor service used to run the update of the text field. - */ - private ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); - - /** - * This future contains the update to be performed. - */ - private ScheduledFuture<?> currentUpdatedValueFuture; - - /** * The constructor. * * @param description @@ -82,30 +68,19 @@ public class EEFTextController extends AbstractEEFWidgetController implements IE @Override public void updateValue(final String text) { - if (this.currentUpdatedValueFuture != null && !this.currentUpdatedValueFuture.isDone()) { - this.currentUpdatedValueFuture.cancel(true); - } - - Runnable runnable = new Runnable() { + this.contextAdapter.performModelChange(new Runnable() { @Override public void run() { - EEFTextController.this.contextAdapter.performModelChange(new Runnable() { - @Override - public void run() { - String editExpression = EEFTextController.this.description.getEditExpression(); - EAttribute eAttribute = EefPackage.Literals.EEF_TEXT_DESCRIPTION__EDIT_EXPRESSION; + String editExpression = EEFTextController.this.description.getEditExpression(); + EAttribute eAttribute = EefPackage.Literals.EEF_TEXT_DESCRIPTION__EDIT_EXPRESSION; - Map<String, Object> variables = new HashMap<String, Object>(); - variables.putAll(EEFTextController.this.variableManager.getVariables()); - variables.put(EEFExpressionUtils.EEFText.NEW_VALUE, text); + Map<String, Object> variables = new HashMap<String, Object>(); + variables.putAll(EEFTextController.this.variableManager.getVariables()); + variables.put(EEFExpressionUtils.EEFText.NEW_VALUE, text); - EvalFactory.of(EEFTextController.this.interpreter, variables).logIfBlank(eAttribute).call(editExpression); - } - }); + EvalFactory.of(EEFTextController.this.interpreter, variables).logIfBlank(eAttribute).call(editExpression); } - }; - final long scheduleTime = 500L; - this.currentUpdatedValueFuture = this.executor.schedule(runnable, scheduleTime, TimeUnit.MILLISECONDS); + }); } /** 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 8d64fb13d..c52a550a5 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 @@ -29,8 +29,8 @@ import org.eclipse.sirius.common.interpreter.api.IInterpreter; import org.eclipse.sirius.common.interpreter.api.IVariableManager; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyledText; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.FocusEvent; +import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; @@ -67,9 +67,9 @@ public class EEFTextLifecycleManager extends AbstractEEFWidgetLifecycleManager { private IEEFTextController controller; /** - * The listener on the text. + * The listener on the text field. */ - private ModifyListener modifyListener; + private FocusListener focusListener; /** * The widget factory. @@ -177,16 +177,21 @@ public class EEFTextLifecycleManager extends AbstractEEFWidgetLifecycleManager { public void aboutToBeShown() { super.aboutToBeShown(); - this.modifyListener = new ModifyListener() { + this.focusListener = new FocusListener() { @Override - public void modifyText(ModifyEvent event) { + public void focusLost(FocusEvent e) { if (!EEFTextLifecycleManager.this.container.isRenderingInProgress()) { controller.updateValue(text.getText()); EEFTextLifecycleManager.this.setStyle(); } } + + @Override + public void focusGained(FocusEvent e) { + // do nothing + } }; - this.text.addModifyListener(this.modifyListener); + this.text.addFocusListener(this.focusListener); this.controller.onNewValue(new IConsumer<Object>() { @Override @@ -239,7 +244,7 @@ public class EEFTextLifecycleManager extends AbstractEEFWidgetLifecycleManager { super.aboutToBeHidden(); if (!text.isDisposed()) { - this.text.removeModifyListener(this.modifyListener); + this.text.removeFocusListener(this.focusListener); } this.controller.removeNewValueConsumer(); } |