diff options
author | Mickael ADAM | 2015-06-10 08:19:18 +0000 |
---|---|---|
committer | Camille Letavernier | 2015-06-10 08:19:18 +0000 |
commit | 6030e90279aab8cd1d5b92e166065fb3d1144555 (patch) | |
tree | 54ee528e5c82442b7d872a6da4d5e6e68fc045b9 /plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src | |
parent | 0b0763723117d2c15ff1c34953808798145997a5 (diff) | |
download | org.eclipse.papyrus-6030e90279aab8cd1d5b92e166065fb3d1144555.tar.gz org.eclipse.papyrus-6030e90279aab8cd1d5b92e166065fb3d1144555.tar.xz org.eclipse.papyrus-6030e90279aab8cd1d5b92e166065fb3d1144555.zip |
Bug 469630 - Must add named style change listener to Edit Part.
Change-Id: I5af5a9fd44faf8437ed74106d299b8efc44a4e7c
Signed-off-by: Mickael ADAM <mickael.adam@ALL4TEC.net>
Diffstat (limited to 'plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src')
2 files changed, 103 insertions, 4 deletions
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/databinding/custom/AbstractCustomStyleObservableValue.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/databinding/custom/AbstractCustomStyleObservableValue.java index f385593ad2c..52712763b5f 100644 --- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/databinding/custom/AbstractCustomStyleObservableValue.java +++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/databinding/custom/AbstractCustomStyleObservableValue.java @@ -117,9 +117,14 @@ public abstract class AbstractCustomStyleObservableValue extends AbstractObserva @Override
public void dispose() {
- source.eAdapters().remove(listener);
- listener.dispose();
- listener = null;
+ if (isDisposed()) {
+ return;
+ }
+ if (listener != null) {
+ source.eAdapters().remove(listener);
+ listener.dispose();
+ listener = null;
+ }
super.dispose();
}
}
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/editpart/PapyrusLabelEditPart.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/editpart/PapyrusLabelEditPart.java index c814d432191..ad3536eaa08 100644 --- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/editpart/PapyrusLabelEditPart.java +++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/editpart/PapyrusLabelEditPart.java @@ -15,6 +15,9 @@ *****************************************************************************/ package org.eclipse.papyrus.infra.gmfdiag.common.editpart; +import org.eclipse.core.databinding.observable.ChangeEvent; +import org.eclipse.core.databinding.observable.IChangeListener; +import org.eclipse.core.databinding.observable.value.IObservableValue; import org.eclipse.core.resources.IResource; import org.eclipse.draw2d.Connection; import org.eclipse.draw2d.IFigure; @@ -22,6 +25,7 @@ import org.eclipse.draw2d.PositionConstants; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.gef.editparts.AbstractConnectionEditPart; @@ -34,6 +38,10 @@ import org.eclipse.gmf.runtime.diagram.ui.internal.figures.ResizableLabelLocator import org.eclipse.gmf.runtime.notation.NotationPackage; import org.eclipse.gmf.runtime.notation.StringValueStyle; import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.papyrus.infra.emf.utils.EMFHelper; +import org.eclipse.papyrus.infra.gmfdiag.common.databinding.custom.CustomBooleanStyleObservableValue; +import org.eclipse.papyrus.infra.gmfdiag.common.databinding.custom.CustomIntStyleObservableValue; +import org.eclipse.papyrus.infra.gmfdiag.common.databinding.custom.CustomStringStyleObservableValue; import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.BorderDisplayEditPolicy; import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.LabelAlignmentEditPolicy; import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.LabelPrimarySelectionEditPolicy; @@ -60,6 +68,40 @@ public abstract class PapyrusLabelEditPart extends LabelEditPart implements Name /** The affixed label locator. */ protected IPapyrusBorderItemLocator borderLabelLocator = null; + /** The labelConstrained Observable */ + private IObservableValue labelConstrainedObservable; + + /** The namedStyle Listener */ + private IChangeListener namedStyleListener = new IChangeListener() { + + @Override + public void handleChange(ChangeEvent event) { + refresh(); + + } + + }; + + /** The position Observable */ + private IObservableValue positionObservable; + + /** The labelOffsetX Observable */ + private IObservableValue labelOffsetXObservable; + + /** The labelOffsety Observable */ + private IObservableValue labelOffsetYObservable; + + /** The leftMargin Observable */ + private IObservableValue leftMarginObservable; + + /** The rightMargin Observable */ + private IObservableValue rightMarginObservable; + + /** The topMargin Observable */ + private IObservableValue topMarginObservable; + + /** The bottomMargin Observable */ + private IObservableValue bottomMarginObservable; public PapyrusLabelEditPart(View view) { super(view); @@ -280,6 +322,58 @@ public abstract class PapyrusLabelEditPart extends LabelEditPart implements Name } /** + * Adds listener to handle named Style modifications. + */ + @Override + protected void addNotationalListeners() { + super.addNotationalListeners(); + + View view = (View) getModel(); + EditingDomain domain = EMFHelper.resolveEditingDomain(view); + + labelConstrainedObservable = new CustomBooleanStyleObservableValue(view, domain, LABEL_CONSTRAINED); + labelConstrainedObservable.addChangeListener(namedStyleListener); + + positionObservable = new CustomStringStyleObservableValue(view, domain, POSITION); + positionObservable.addChangeListener(namedStyleListener); + + labelOffsetXObservable = new CustomIntStyleObservableValue(view, domain, LABEL_OFFSET_X); + labelOffsetXObservable.addChangeListener(namedStyleListener); + + labelOffsetYObservable = new CustomIntStyleObservableValue(view, domain, LABEL_OFFSET_Y); + labelOffsetYObservable.addChangeListener(namedStyleListener); + + leftMarginObservable = new CustomIntStyleObservableValue(view, domain, LEFT_MARGIN_PROPERTY); + leftMarginObservable.addChangeListener(namedStyleListener); + + rightMarginObservable = new CustomIntStyleObservableValue(view, domain, RIGHT_MARGIN_PROPERTY); + rightMarginObservable.addChangeListener(namedStyleListener); + + topMarginObservable = new CustomIntStyleObservableValue(view, domain, TOP_MARGIN_PROPERTY); + topMarginObservable.addChangeListener(namedStyleListener); + + bottomMarginObservable = new CustomIntStyleObservableValue(view, domain, BOTTOM_MARGIN_PROPERTY); + bottomMarginObservable.addChangeListener(namedStyleListener); + } + + /** + * @see org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart#removeNotationalListeners() + * + */ + @Override + protected void removeNotationalListeners() { + super.removeNotationalListeners(); + labelConstrainedObservable.dispose(); + positionObservable.dispose(); + labelOffsetXObservable.dispose(); + labelOffsetYObservable.dispose(); + leftMarginObservable.dispose(); + rightMarginObservable.dispose(); + topMarginObservable.dispose(); + bottomMarginObservable.dispose(); + } + + /** * Gets the default label offset y. * * @return the default label offset y @@ -355,7 +449,7 @@ public abstract class PapyrusLabelEditPart extends LabelEditPart implements Name } } } - + /** * Workaround for bug #465611, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=465611 */ |