Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'deprecated/org.eclipse.papyrus.uml.diagram.sequence_initial-kepler/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/LifelineLabelEditPolicy.java')
-rw-r--r--deprecated/org.eclipse.papyrus.uml.diagram.sequence_initial-kepler/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/LifelineLabelEditPolicy.java207
1 files changed, 207 insertions, 0 deletions
diff --git a/deprecated/org.eclipse.papyrus.uml.diagram.sequence_initial-kepler/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/LifelineLabelEditPolicy.java b/deprecated/org.eclipse.papyrus.uml.diagram.sequence_initial-kepler/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/LifelineLabelEditPolicy.java
new file mode 100644
index 00000000000..76a3aaf1bb9
--- /dev/null
+++ b/deprecated/org.eclipse.papyrus.uml.diagram.sequence_initial-kepler/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/LifelineLabelEditPolicy.java
@@ -0,0 +1,207 @@
+package org.eclipse.papyrus.uml.diagram.sequence.edit.policies;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.papyrus.infra.emf.appearance.helper.VisualInformationPapyrusConstants;
+import org.eclipse.papyrus.uml.diagram.common.editpolicies.AbstractMaskManagedEditPolicy;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.LifelineEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.LifelineNameEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.part.UMLDiagramEditorPlugin;
+import org.eclipse.papyrus.uml.diagram.sequence.preferences.LifelinePreferencePage;
+import org.eclipse.papyrus.uml.diagram.sequence.util.LifelineLabelHelper;
+import org.eclipse.uml2.uml.ConnectableElement;
+import org.eclipse.uml2.uml.Lifeline;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLPackage;
+
+
+public class LifelineLabelEditPolicy extends AbstractMaskManagedEditPolicy {
+
+ private IPropertyChangeListener preferenceListener;
+
+ @Override
+ public void addAdditionalListeners() {
+ super.addAdditionalListeners();
+
+ if(preferenceListener == null){
+ preferenceListener = new IPropertyChangeListener() {
+
+ public void propertyChange(PropertyChangeEvent event) {
+ handlePreferenceChange(event);
+ }
+ };
+ IPreferenceStore store = UMLDiagramEditorPlugin.getInstance().getPreferenceStore();
+ store.addPropertyChangeListener(this.preferenceListener);
+ }
+
+ Lifeline lifeline = getUMLElement();
+ // check host semantic element is not null
+ if(lifeline == null) {
+ return;
+ }
+ // adds a listener to the element itself, and to linked elements, like Type
+ getDiagramEventBroker().addNotificationListener(lifeline, this);
+
+ ConnectableElement ce = lifeline.getRepresents();
+ if(ce != null){
+ getDiagramEventBroker().addNotificationListener(ce, this);
+ if(ce.getType() != null)
+ getDiagramEventBroker().addNotificationListener(ce.getType(), this);
+ }
+ }
+
+ protected void handlePreferenceChange(PropertyChangeEvent event) {
+ EditPart part = getHost();
+ if(part == null || part.getParent() == null)
+ return;
+
+ String key = event.getProperty();
+ if(key.equals(LifelinePreferencePage.LABEL_DISPLAY_PREFERENCE)){
+ refreshDisplay();
+ }
+ }
+
+ @Override
+ protected void removeAdditionalListeners() {
+ super.removeAdditionalListeners();
+ Lifeline lifeline = getUMLElement();
+ // check host semantic element is not null
+ if(lifeline == null) {
+ return;
+ }
+ getDiagramEventBroker().removeNotificationListener(lifeline, this);
+
+ ConnectableElement ce = lifeline.getRepresents();
+ if(ce != null){
+ getDiagramEventBroker().removeNotificationListener(ce, this);
+ if(ce.getType() != null)
+ getDiagramEventBroker().removeNotificationListener(ce.getType(), this);
+ }
+ }
+
+ public void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+
+ Object object = notification.getNotifier();
+ if(object == null || getUMLElement() == null) {
+ return;
+ }
+
+ if(notification.getFeature().equals(UMLPackage.eINSTANCE.getNamedElement_Name())) {
+ refreshDisplay();
+ } else if(notification.getFeature().equals(UMLPackage.Literals.LIFELINE__REPRESENTS)) {
+ // change represent element
+ if(notification.getNewValue() instanceof ConnectableElement){
+ ConnectableElement ce = (ConnectableElement )notification.getNewValue();
+ getDiagramEventBroker().addNotificationListener(ce, this);
+ if(ce.getType() != null)
+ getDiagramEventBroker().addNotificationListener(ce.getType(), this);
+ }
+
+ if(notification.getOldValue() instanceof ConnectableElement){
+ ConnectableElement ce = (ConnectableElement )notification.getOldValue();
+ getDiagramEventBroker().removeNotificationListener(ce, this);
+
+ if(ce.getType() != null)
+ getDiagramEventBroker().removeNotificationListener(ce.getType(), this);
+ }
+
+ refreshDisplay();
+ }else if(isMaskManagedAnnotation(object) || isRemovedMaskManagedLabelAnnotation(object, notification)) {
+ refreshDisplay();
+ } else if(object.equals(getUMLElement().getRepresents()) ){
+ // change represent type
+ if(notification.getNewValue() instanceof Type && notification.getNewValue() instanceof EObject){
+ getDiagramEventBroker().addNotificationListener((EObject)notification.getNewValue(), this);
+ }
+
+ if(notification.getOldValue() instanceof Type && notification.getOldValue() instanceof EObject){
+ getDiagramEventBroker().removeNotificationListener((EObject)notification.getOldValue(), this);
+ }
+
+ refreshDisplay();
+ }
+ }
+
+
+ public void refreshDisplay() {
+ // calls the helper for this edit Part
+ LifelineEditPart lp = (LifelineEditPart)getHost();
+ List children = lp.getChildren();
+ for(Object p : children)
+ if(p instanceof LifelineNameEditPart)
+ LifelineLabelHelper.getInstance().refreshEditPartDisplay((GraphicalEditPart)p);
+ }
+
+ public int getCurrentDisplayValue() {
+ EAnnotation customeDisplayAnnotation = ((View)getHost().getModel()).getEAnnotation(VisualInformationPapyrusConstants.CUSTOM_APPEARENCE_ANNOTATION);
+ int displayValue = getDefaultDisplayValue();
+ if(customeDisplayAnnotation != null && customeDisplayAnnotation.getDetails().get(VisualInformationPapyrusConstants.CUSTOM_APPEARANCE_MASK_VALUE) != null) {
+ displayValue = Integer.parseInt(customeDisplayAnnotation.getDetails().get(VisualInformationPapyrusConstants.CUSTOM_APPEARANCE_MASK_VALUE));
+ } else {
+ // no specific information => look in preferences
+ IPreferenceStore store = UMLDiagramEditorPlugin.getInstance().getPreferenceStore();
+ int displayValueTemp = store.getInt(LifelinePreferencePage.LABEL_DISPLAY_PREFERENCE);
+ if(displayValueTemp != 0) {
+ displayValue = displayValueTemp;
+ }
+ }
+ return displayValue;
+ }
+
+ public int getDefaultDisplayValue() {
+ return LifelinePreferencePage.DEFAULT_LABEL_DISPLAY;
+ }
+
+ public String getMaskLabel(int value) {
+ return LifelineLabelHelper.getInstance().getMaskLabel(value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Collection<String> getMaskLabels() {
+ return LifelineLabelHelper.getInstance().getMaskLabels();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Map<Integer, String> getMasks() {
+ return LifelineLabelHelper.getInstance().getMasks();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Collection<Integer> getMaskValues() {
+ return LifelineLabelHelper.getInstance().getMaskValues();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getPreferencePageID() {
+ return "org.eclipse.papyrus.uml.diagram.sequence.preferences.LifelinePreferencePage";
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Lifeline getUMLElement() {
+ return (Lifeline)hostSemanticElement;
+ }
+
+}

Back to the top