package org.eclipse.uml2.diagram.clazz.edit.parts; import java.util.ArrayList; import java.util.List; import org.eclipse.draw2d.IFigure; import org.eclipse.emf.common.notify.Notification; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.gmf.runtime.diagram.ui.editparts.IInsertableEditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; 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.emf.type.core.IElementType; import org.eclipse.gmf.runtime.notation.DrawerStyle; import org.eclipse.gmf.runtime.notation.NotationPackage; import org.eclipse.gmf.runtime.notation.View; import org.eclipse.uml2.diagram.clazz.details.UMLDetailLevelService; import org.eclipse.uml2.diagram.clazz.edit.policies.PackageOtherCanonicalEditPolicy; import org.eclipse.uml2.diagram.clazz.edit.policies.PackageOtherItemSemanticEditPolicy; import org.eclipse.uml2.diagram.clazz.part.Messages; import org.eclipse.uml2.diagram.clazz.part.UMLDiagramUpdater; import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; import org.eclipse.uml2.diagram.common.compartments.U2TCompartmentFigure; import org.eclipse.uml2.diagram.common.compartments.U2TResizableCompartmentEditPolicy; import org.eclipse.uml2.diagram.common.editpolicies.CreationEditPolicyWithCustomReparent; import org.eclipse.uml2.diagram.common.editpolicies.UpdateDescriptionEditPolicy; /** * @generated */ public class PackageOtherEditPart extends ListCompartmentEditPart implements IInsertableEditPart { /** * @generated */ public static final int VISUAL_ID = 7012; /** * @generated */ public PackageOtherEditPart(View view) { super(view); } /** * @generated */ protected boolean hasModelChildrenChanged(Notification evt) { return false; } /** * @generated */ public String getCompartmentName() { return Messages.PackageOtherEditPart_title; } /** * @generated */ @Override public IFigure createFigure() { U2TCompartmentFigure result = new U2TCompartmentFigure(getCompartmentName(), getMapMode()); ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); layout.setStretchMajorAxis(false); layout.setStretchMinorAxis(false); layout.setMinorAlignment(ConstrainedToolbarLayout.ALIGN_TOPLEFT); result.getContentPane().setLayoutManager(layout); return result; } /** * @generated */ protected void createDefaultEditPolicies() { super.createDefaultEditPolicies(); installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new U2TResizableCompartmentEditPolicy()); installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PackageOtherItemSemanticEditPolicy()); installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicyWithCustomReparent(UMLVisualIDRegistry.TYPED_ADAPTER)); installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new PackageOtherCanonicalEditPolicy()); if (UMLVisualIDRegistry.isShortcutDescendant(getNotationView())) { installEditPolicy(UpdateDescriptionEditPolicy.ROLE, new UpdateDescriptionEditPolicy(UMLDiagramUpdater.TYPED_ADAPTER, false)); } } /** * @generated */ protected void setRatio(Double ratio) { if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { super.setRatio(ratio); } } /** * @generated */ public IElementType getElementType() { return UMLElementTypes.InstanceSpecification_3013; } /** * @generated */ @Override protected void refreshVisibility() { boolean visibility = getNotationView().isVisible(); if (visibility) { DrawerStyle style = (DrawerStyle) getNotationView().getStyle(NotationPackage.eINSTANCE.getDrawerStyle()); if (style != null && !style.isCollapsed()) { visibility &= !getChildren().isEmpty(); } } setVisibility(visibility); } /** * @generated */ @Override protected void addChild(EditPart child, int index) { super.addChild(child, index); refreshVisibility(); } /** * @generated */ @Override protected void removeChild(EditPart child) { super.removeChild(child); if (isActive()) { refreshVisibility(); } } /** * @NOT-generated */ @Override protected List getChildrenFilteredBy(List filterKeys) { // XXX: [171240] regenerate with DetailLevelAttributes List result = new ArrayList(super.getChildrenFilteredBy(filterKeys)); if (filterKeys.contains(UMLDetailLevelService.FILTER_BY_VISIBILITY)) { View view = getNotationView(); result.addAll(UMLDetailLevelService.filterChildrenByVisibility(view)); } return result; } }