/*****************************************************************************
* Copyright (c) 2009 CEA LIST.
*
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Yann Tanguy (CEA LIST) yann.tanguy@cea.fr - Initial API and implementation
*
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.composite.custom.edit.parts;
import org.eclipse.draw2d.Graphics;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.papyrus.uml.diagram.common.editparts.NamedElementEditPart;
import org.eclipse.uml2.uml.AggregationKind;
import org.eclipse.uml2.uml.Property;
import org.eclipse.uml2.uml.UMLPackage;
/**
* <pre>
* This class will be inherited by the GMF generated {@link org.eclipse.papyrus.uml.diagram.composite.edit.parts.PropertyPartEditPartCN}
* in order to refresh the related figure when when the Property::aggregation eAttribute value
* changes.
* </pre>
*/
public abstract class PropertyPartEditPartCN extends NamedElementEditPart {
/**
* Constructor
*
* @param view
*/
public PropertyPartEditPartCN(View view) {
super(view);
}
/**
* <pre>
* Calls the figure refresh when a change event is detected on
* UMLPackage.eINSTANCE.getProperty_Aggregation().
*
* {@inheritDoc}
* </pre>
*/
@Override
protected void handleNotificationEvent(Notification event) {
if((resolveSemanticElement() != null) && (resolveSemanticElement().equals(event.getNotifier()))) {
if(UMLPackage.eINSTANCE.getProperty_Aggregation().equals(event.getFeature())) {
refreshVisuals();
}
}
super.handleNotificationEvent(event);
}
/**
* <pre>
* Refresh the figure with dashed border when Property aggregation value is SHARED.
* Else set the border style to solid line.
*
* {@inheritDoc}
* </pre>
*/
@Override
protected void refreshVisuals() {
super.refreshVisuals();
if((resolveSemanticElement() != null) && (resolveSemanticElement() instanceof Property)) {
if(((Property)resolveSemanticElement()).getAggregation().equals(AggregationKind.SHARED_LITERAL)) {
getPrimaryShape().setLineStyle(Graphics.LINE_CUSTOM);
} else {
getPrimaryShape().setLineStyle(Graphics.LINE_SOLID);
}
}
}
}