package org.eclipse.papyrus.uml.diagram.statemachine.custom.edit.part;
import org.eclipse.draw2d.IFigure;
import org.eclipse.gef.DragTracker;
import org.eclipse.gef.Request;
import org.eclipse.gef.requests.SelectionRequest;
import org.eclipse.gef.tools.DeselectAllTracker;
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
import org.eclipse.gmf.runtime.diagram.ui.internal.tools.RubberbandDragTracker;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.papyrus.uml.diagram.statemachine.custom.figures.CustomShapeCompartmentFigure;
import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.RegionCompartmentEditPart;
import org.eclipse.uml2.uml.Region;
public class CustomRegionCompartmentEditPart extends RegionCompartmentEditPart {
public CustomRegionCompartmentEditPart(View view) {
super(view);
// TODO Auto-generated constructor stub
}
@Override
protected void createDefaultEditPolicies() {
// TODO Auto-generated method stub
super.createDefaultEditPolicies();
removeEditPolicy(EditPolicyRoles.CONNECTION_HANDLES_ROLE);
removeEditPolicy(EditPolicyRoles.POPUPBAR_ROLE);
}
public IFigure createFigure() {
CustomShapeCompartmentFigure result = new CustomShapeCompartmentFigure(getCompartmentName(), getMapMode());
result.setBorder(null);
return result;
}
@Override
public DragTracker getDragTracker(Request req) {
if(!supportsDragSelection())
return super.getDragTracker(req);
if(req instanceof SelectionRequest && ((SelectionRequest)req).getLastButtonPressed() == 3)
return new DeselectAllTracker(this) {
protected boolean handleButtonDown(int button) {
getCurrentViewer().select(getParent());
return true;
}
};
return new RubberbandDragTracker() {
protected void handleFinished() {
if(getViewer().getSelectedEditParts().isEmpty())
getViewer().select(getParent());
}
};
}
@Override
protected void refreshVisuals() {
// TODO Auto-generated method stub
super.refreshVisuals();
View regionView = (View)((View)getModel()).eContainer();
Region region = (Region)regionView.getElement();
((CustomShapeCompartmentFigure)getFigure()).setToolTip(region.getName());
}
}