| /***************************************************************************** |
| * Copyright (c) 2012 ATOS. |
| * |
| * |
| * 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: |
| * Olivier Mélois (ATOS) - Initial API and implementation |
| * |
| ******************************************************************************/ |
| package org.eclipse.papyrus.sysml.diagram.requirement.edit.part; |
| |
| import org.eclipse.draw2d.geometry.Dimension; |
| import org.eclipse.draw2d.geometry.Point; |
| import org.eclipse.draw2d.geometry.Rectangle; |
| import org.eclipse.emf.common.notify.Notification; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.gef.EditPolicy; |
| import org.eclipse.gef.GraphicalEditPart; |
| import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; |
| import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; |
| import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; |
| import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; |
| import org.eclipse.gmf.runtime.notation.NotationPackage; |
| import org.eclipse.papyrus.infra.gmfdiag.common.editpart.ResizeableListCompartmentEditPart; |
| import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.DefaultCompartmentSemanticEditPolicy; |
| import org.eclipse.papyrus.uml.diagram.common.editpolicies.PasteEditPolicy; |
| |
| /** |
| * Compartment used to display the id and the text of the requirement. |
| * The actual display of these information is performed by |
| * RequirementIdLabelEditPart and RequirementTextLabelEditPart |
| * |
| */ |
| public class CustomRequirementInformationCompartmentEditPart extends ResizeableListCompartmentEditPart { |
| |
| public static final String COMPARTMENT_NAME = "InformationCompartment"; //$NON-NLS-1$ |
| |
| public CustomRequirementInformationCompartmentEditPart(EObject model) { |
| super(model); |
| } |
| |
| @Override |
| protected boolean hasModelChildrenChanged(Notification evt) { |
| return false; |
| } |
| |
| @Override |
| public String getCompartmentName() { |
| return COMPARTMENT_NAME; |
| } |
| |
| @Override |
| protected void createDefaultEditPolicies() { |
| super.createDefaultEditPolicies(); |
| installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); |
| installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new DefaultCompartmentSemanticEditPolicy()); |
| installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); |
| installEditPolicy(PasteEditPolicy.PASTE_ROLE, new PasteEditPolicy()); |
| } |
| |
| @Override |
| protected void setRatio(Double ratio) { |
| if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { |
| super.setRatio(ratio); |
| } |
| } |
| |
| @Override |
| protected void handleNotificationEvent(Notification notification) { |
| Object feature = notification.getFeature(); |
| if (NotationPackage.eINSTANCE.getSize_Width().equals(feature) || NotationPackage.eINSTANCE.getSize_Height().equals(feature) || NotationPackage.eINSTANCE.getLocation_X().equals(feature) || NotationPackage.eINSTANCE.getLocation_Y().equals(feature)) { |
| refreshBounds(); |
| } |
| super.handleNotificationEvent(notification); |
| } |
| |
| @Override |
| protected void refreshBounds() { |
| int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE.getSize_Width())).intValue(); |
| int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE.getSize_Height())).intValue(); |
| Dimension size = new Dimension(width, height); |
| int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE.getLocation_X())).intValue(); |
| int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE.getLocation_Y())).intValue(); |
| Point loc = new Point(x, y); |
| ((GraphicalEditPart) getParent()).setLayoutConstraint(this, getFigure(), new Rectangle(loc, size)); |
| } |
| |
| @Override |
| protected void refreshVisuals() { |
| super.refreshVisuals(); |
| refreshBounds(); |
| } |
| |
| } |