/** refreshDiagram void */ private void refreshDiagram() { Object obj = getSelectedObjects().get(0); RootEditPart root = null; if (!(obj instanceof EditPart)) { return; } root = ((EditPart) obj).getRoot(); root.refresh(); List<EditPart> editparts = root.getChildren(); for (EditPart editpart : editparts) { editpart.refresh(); List<EditPart> nodeEditParts = editpart.getChildren(); for (EditPart nodeEditPart : nodeEditParts) { if (nodeEditPart instanceof GraphicalEditPart) { List<EditPart> sConnectionList = ((GraphicalEditPart) nodeEditPart).getSourceConnections(); List<EditPart> tConnectionList = ((GraphicalEditPart) nodeEditPart).getTargetConnections(); for (EditPart sConnectionEditPart : sConnectionList) { sConnectionEditPart.refresh(); } for (EditPart tConnectionEditPart : tConnectionList) { tConnectionEditPart.refresh(); } if (nodeEditPart.getModel() instanceof LifeLineNode) { List<EditPart> childrenEditPart = nodeEditPart.getChildren(); for (EditPart child : childrenEditPart) { List<EditPart> csConnectionList = ((GraphicalEditPart) child).getSourceConnections(); List<EditPart> ctConnectionList = ((GraphicalEditPart) child).getTargetConnections(); for (EditPart sConnectionEditPart : csConnectionList) { sConnectionEditPart.refresh(); } for (EditPart tConnectionEditPart : ctConnectionList) { tConnectionEditPart.refresh(); } } } } } } }
/* * (non-Javadoc) * * @see * org.eclipse.gef.EditPartFactory#createEditPart(org.eclipse.gef.EditPart, * java.lang.Object) */ public EditPart createEditPart(EditPart context, Object model) { EditPart ret = null; if (model instanceof Diagram) { ret = new DiagramTreeEditPart(id, (Diagram) model); } else if (context instanceof AbstractGraphicsTreeEditPart) { EditPart root = context; while (root.getParent() != null) root = root.getParent(); DiagramTreeEditPart dep = (DiagramTreeEditPart) root.getChildren().get(0); if (model instanceof RootElement) { ret = new RootElementTreeEditPart(dep, (RootElement) model); } else if (model instanceof FlowElement) { ret = new FlowElementTreeEditPart(dep, (FlowElement) model); } else if (model instanceof BaseElement) { ret = new BaseElementTreeEditPart(dep, (BaseElement) model); } else if (model instanceof BPMNDiagram) { ret = new Bpmn2DiagramTreeEditPart(dep, (BPMNDiagram) model); } else if (model instanceof BPMNShape) { ret = new Bpmn2ShapeTreeEditPart(dep, (BPMNShape) model); } else if (model instanceof BPMNEdge) { ret = new Bpmn2EdgeTreeEditPart(dep, (BPMNEdge) model); } } return ret; }
public EditPart getMyRoot() { EditPart root = getRoot(); Iterator iter = root.getChildren().iterator(); EditPart part = null; while (iter.hasNext() && !(part instanceof SQLRootEditPart)) { part = (EditPart) iter.next(); } // end of while () return part; }
public void setEnabled(boolean enabled) { EditPart root = getContents(); List v = root.getChildren(); if (v != null) { int max = v.size(); for (int i = 0; i < max; i++) { setCategoryEnabled((EditPart) v.get(i), enabled); } } }
private void describe(EditPart part, int indent, StringBuffer buffer) { indent(indent, buffer); describePartTo(part, buffer); List children = part.getChildren(); if (children.size() > 0) newline(buffer); for (Iterator iter = children.iterator(); iter.hasNext(); ) { EditPart childPart = (EditPart) iter.next(); describe(childPart, indent + getIndent(), buffer); newline(buffer); } }
@Override public void setSelected(int value) { final EditPart parent = this.getParent(); final NormalColumnFigure figure = (NormalColumnFigure) this.getFigure(); Color backgroundColor = null; Color foregroundColor = null; boolean isSelected = false; if (value != 0 && parent != null && parent.getParent() != null) { List selectedEditParts = this.getViewer().getSelectedEditParts(); if (selectedEditParts == null || selectedEditParts.size() != 1) { return; } backgroundColor = ColorConstants.titleBackground; foregroundColor = ColorConstants.titleForeground; isSelected = true; } final NormalColumn normalColumn = (NormalColumn) this.getModel(); final ColumnHolder columnHolder = normalColumn.getColumnHolder(); if (columnHolder instanceof ColumnGroup) { if (parent != null) { for (Object child : parent.getChildren()) { final GraphicalEditPart childEditPart = (GraphicalEditPart) child; if (childEditPart.getModel() instanceof NormalColumn) { final NormalColumn column = (NormalColumn) childEditPart.getModel(); if (column.getColumnHolder() == columnHolder) { setGroupColumnFigureColor( (TableViewEditPart) parent, (ColumnGroup) columnHolder, isSelected); } } } } } else { figure.setBackgroundColor(backgroundColor); figure.setForegroundColor(foregroundColor); selected = isSelected; } super.setSelected(value); }
private void setCategoryEnabled(EditPart part, boolean enabled) { List v = part.getChildren(); if (v != null) { int max = v.size(); for (int i = 0; i < max; i++) { Object obj = v.get(i); if (obj instanceof GraphicalEditPart) { IFigure fig = ((GraphicalEditPart) obj).getFigure(); if (fig instanceof Clickable) { ((Clickable) fig).setEnabled(enabled); } } } } }
/** * Set all part specify and its descendant to "Moving State" * * @param targetedEditPart */ protected void stopMovingParts(Iterable<IGraphicalEditPart> targetedEditPart) { if (targetedEditPart != null) { for (EditPart part : targetedEditPart) { EditPolicy editPolicy = part.getEditPolicy(IGroupEditPolicies.GROUP_FRAMEWORK_NOTIFYING_ON_MOVE_EDIT_POLICY); if (editPolicy instanceof GroupNotifyingOnMoveEditPolicy) { GroupNotifyingOnMoveEditPolicy editPolicy2 = (GroupNotifyingOnMoveEditPolicy) editPolicy; if (DebugUtils.isDebugging()) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(Utils.getCorrectLabel(editPolicy2.getEObject())); stringBuilder.append(" is stoping to move"); DebugUtils.getLog().debug(stringBuilder.toString()); } editPolicy2.stopMoving(); } stopMovingParts(part.getChildren()); } } }
protected EditPart getEditPart(EditPart parent, Object object) { EditPart result = null; for (Iterator i = parent.getChildren().iterator(); i.hasNext(); ) { EditPart editPart = (EditPart) i.next(); if (editPart.getModel() == object && !(editPart instanceof IHolderEditPart) && !(editPart instanceof RootContentEditPart)) { result = editPart; break; } } if (result == null) { for (Iterator i = parent.getChildren().iterator(); i.hasNext(); ) { EditPart editPart = getEditPart((EditPart) i.next(), object); if (editPart != null) { // First check to see if there is a selection ISelection currentSelection = getSelection(); // If there is a selection then we will try to select // the target edit part that is one of its children // This is handy when you add an element to a structured edit part // then you want to select the element immediately and put it in // direct edit mode if (currentSelection != null) { if (currentSelection instanceof StructuredSelection) { EditPart targetStructureEditPart = (EditPart) ((StructuredSelection) currentSelection).getFirstElement(); if (targetStructureEditPart != null) { while (targetStructureEditPart != null) { if (targetStructureEditPart instanceof StructureEditPart) { break; } targetStructureEditPart = targetStructureEditPart.getParent(); } } EditPart potentialEditPartToSelect = editPart; while (potentialEditPartToSelect != null) { if (potentialEditPartToSelect instanceof StructureEditPart) { break; } potentialEditPartToSelect = potentialEditPartToSelect.getParent(); } // If we found a potential edit part to select then return it // OR, if there is no target found, then we should just return // the edit part we found if (potentialEditPartToSelect == targetStructureEditPart || potentialEditPartToSelect == null || targetStructureEditPart == null) { result = editPart; break; } } } else // Otherwise just find the first one and return { result = editPart; break; } } } } return result; }
/** * transform binary association to n-ary association. * * @param createConnectionViewAndElementRequest the create connection view and element request * @param command the command * @return the command in charge of this job */ private Command getAssociationToMultiAssociationCommand( CreateConnectionViewAndElementRequest createConnectionViewAndElementRequest, Command command) { // 0. creation of variables command = new CompoundCommand(); Point sourceLocation = null; Point targetLocation = null; Point nodeLocation = null; NamedElement newSemanticElement = null; // element that will be added as // client ou supplier of the // association EStructuralFeature feature = null; // role client or supplier EditPart sourceEditPart = createConnectionViewAndElementRequest.getSourceEditPart(); EditPart targetEditPart = createConnectionViewAndElementRequest.getTargetEditPart(); View associationView = null; Association association = null; View parentView = null; Property sourceEnd = null; Property targetEnd = null; // --------------------------------------------------------- // help to debug // System.err.println("\n+ 0. creation of variables"); // System.err.println("+-> editting domain"+ getEditingDomain()); // System.err.println("+-> sourceEditpart:" + sourceEditPart); // System.err.println("+-> targetEditPart:" + targetEditPart); // --------------------------------------------------------- // 1. initialization ICommandProxy startcommand = ((ICommandProxy) createConnectionViewAndElementRequest.getStartCommand()); if (startcommand == null) { return null; } Iterator<?> ite = ((CompositeCommand) startcommand.getICommand()).iterator(); while (ite.hasNext()) { ICommand currentCommand = (ICommand) ite.next(); if (currentCommand instanceof SetConnectionBendpointsCommand) { sourceLocation = ((SetConnectionBendpointsCommand) currentCommand).getSourceRefPoint(); targetLocation = ((SetConnectionBendpointsCommand) currentCommand).getTargetRefPoint(); } } if (targetEditPart != null) { // the source or the target must be a association // look for the edit part that represent the editpart if (((View) sourceEditPart.getModel()).getElement() != null && ((View) sourceEditPart.getModel()).getElement() instanceof Association) { associationView = ((View) sourceEditPart.getModel()); association = (Association) ((View) sourceEditPart.getModel()).getElement(); nodeLocation = sourceLocation; newSemanticElement = (NamedElement) ((View) targetEditPart.getModel()).getElement(); feature = UMLPackage.eINSTANCE.getTypedElement_Type(); sourceEnd = AssociationEndSourceLabelHelper.getInstance() .getUMLElement( (org.eclipse.gef.GraphicalEditPart) sourceEditPart.getChildren().get(0)); targetEnd = AssociationEndTargetLabelHelper.getInstance() .getUMLElement( (org.eclipse.gef.GraphicalEditPart) sourceEditPart.getChildren().get(1)); } if (((View) targetEditPart.getModel()).getElement() != null && ((View) targetEditPart.getModel()).getElement() instanceof Association) { associationView = ((View) targetEditPart.getModel()); association = (Association) ((View) targetEditPart.getModel()).getElement(); nodeLocation = targetLocation; newSemanticElement = (NamedElement) ((View) sourceEditPart.getModel()).getElement(); feature = UMLPackage.eINSTANCE.getTypedElement_Type(); sourceEnd = AssociationEndSourceLabelHelper.getInstance() .getUMLElement( (org.eclipse.gef.GraphicalEditPart) targetEditPart.getChildren().get(0)); targetEnd = AssociationEndTargetLabelHelper.getInstance() .getUMLElement( (org.eclipse.gef.GraphicalEditPart) targetEditPart.getChildren().get(1)); } if (associationView == null || (targetEditPart.getModel() instanceof Edge)) { return null; } parentView = (View) associationView.eContainer(); // --------------------------------------------------------- // help to debug // System.err.println("+ 1. initialization"); // System.err.println("+-> sourceLocation:" + sourceLocation); // System.err.println("+-> targetLocation:" + targetLocation); // System.err.println("+-> AssociationView:" + associationView); // System.err.println("+-> association:" + association); // System.err.println("+-> nodeLocation:" + nodeLocation); // System.err.println("+-> newSemanticElement:" + newSemanticElement); // System.err.println("+-> feature:" + feature); // System.err.println("+-> parentView:" + parentView); // --------------------------------------------------------- // 8 Ensure that all member ends belong to the association ArrayList<Property> ownedProperty = new ArrayList<Property>(); ownedProperty.addAll(association.getMemberEnds()); IElementEditService provider = ElementEditServiceUtils.getCommandProvider(association); if (provider != null) { SetRequest setRequest = new SetRequest( association, UMLPackage.eINSTANCE.getAssociation_OwnedEnd(), ownedProperty); ICommand iCommand = provider.getEditCommand(setRequest); ((CompoundCommand) command).add(new ICommandProxy(iCommand)); } // 2. Remove the view of the association DeleteCommand deleteCommand = new DeleteLinkDuringCreationCommand( getEditingDomain(), (Edge) associationView, sourceEditPart.getViewer()); deleteCommand.setReuseParentTransaction(true); Command removecommand = new ICommandProxy(deleteCommand); // to execute ((CompoundCommand) command).add(removecommand); // ((CompoundCommand)command).add(removecommand); // --------------------------------------------------------- // help to debug // System.err.println("+ 2. Remove the view of the association"); // System.err.println("+-> command:" + command.canExecute()); // --------------------------------------------------------- // 3. set a new end association in the UML model // 3.1 creation of the property CreateElementRequest request = new CreateElementRequest( getEditingDomain(), association, UMLElementTypes.Property_3005, UMLPackage.eINSTANCE.getAssociation_OwnedEnd()); request.setParameter("type", newSemanticElement); EditElementCommand propertyCreateCommand = new PropertyCommandForAssociation(request); propertyCreateCommand.setReuseParentTransaction(true); ((CompoundCommand) command).add(new ICommandProxy(propertyCreateCommand)); // 3. Node creation at this position View associationViewSource = ((Edge) associationView).getSource(); View associationViewTarget = ((Edge) associationView).getTarget(); AssociationDiamonViewCreateCommand nodeCreation = new AssociationDiamonViewCreateCommand( getEditingDomain(), parentView, sourceEditPart.getViewer(), ((IGraphicalEditPart) sourceEditPart).getDiagramPreferencesHint(), nodeLocation, new SemanticAdapter(association, null)); nodeCreation.setReuseParentTransaction(true); ((CompoundCommand) command).add(new ICommandProxy(nodeCreation)); // 4. reconstruction of the old link by taking in account the old // connection ConnectionViewDescriptor viewDescriptor = new ConnectionViewDescriptor( UMLElementTypes.Association_4019, ((IHintedType) UMLElementTypes.Association_4019).getSemanticHint(), ((IGraphicalEditPart) sourceEditPart).getDiagramPreferencesHint()); // 5. reconstruction of the first branch between old source to node ICommand firstBranchCommand = new GraphicalAssociationBranchViewCommand( getEditingDomain(), (IAdaptable) nodeCreation.getCommandResult().getReturnValue(), new SemanticAdapter(null, associationViewSource), sourceEditPart.getViewer(), ((IGraphicalEditPart) sourceEditPart).getDiagramPreferencesHint(), viewDescriptor, sourceEnd); // ICommand firstBranchCommand = new // CustomDeferredCreateConnectionViewCommand(getEditingDomain(), // ((IHintedType)UMLElementTypes.Association_4019).getSemanticHint(), // (IAdaptable)nodeCreation.getCommandResult().getReturnValue(), new SemanticAdapter(null, // associationViewSource), sourceEditPart.getViewer(), // ((IGraphicalEditPart)sourceEditPart).getDiagramPreferencesHint(), viewDescriptor, null); ((GraphicalAssociationBranchViewCommand) firstBranchCommand).setElement(association); ((CompoundCommand) command).add(new ICommandProxy(firstBranchCommand)); // 6. reconstruction of the second branch between node to old target ICommand secondBranchCommand = new GraphicalAssociationBranchViewCommand( getEditingDomain(), (IAdaptable) nodeCreation.getCommandResult().getReturnValue(), new SemanticAdapter(null, associationViewTarget), sourceEditPart.getViewer(), ((IGraphicalEditPart) sourceEditPart).getDiagramPreferencesHint(), viewDescriptor, targetEnd); // ICommand secondBranchCommand = new // CustomDeferredCreateConnectionViewCommand(getEditingDomain(), // ((IHintedType)UMLElementTypes.Association_4019).getSemanticHint(), // (IAdaptable)nodeCreation.getCommandResult().getReturnValue(), new SemanticAdapter(null, // associationViewTarget), sourceEditPart.getViewer(), // ((IGraphicalEditPart)sourceEditPart).getDiagramPreferencesHint(), viewDescriptor, null); ((GraphicalAssociationBranchViewCommand) secondBranchCommand).setElement(association); ((CompoundCommand) command).add(new ICommandProxy(secondBranchCommand)); // 7. Create of the third branch between node and target our source. ICommand thirdBranchCommand = null; if (associationView.equals((sourceEditPart.getModel()))) { // third branch node and target thirdBranchCommand = new GraphicalAssociationBranchViewCommand( getEditingDomain(), (IAdaptable) nodeCreation.getCommandResult().getReturnValue(), new SemanticAdapter(null, targetEditPart.getModel()), sourceEditPart.getViewer(), ((IGraphicalEditPart) sourceEditPart).getDiagramPreferencesHint(), viewDescriptor, request); // thirdBranchCommand = new CustomDeferredCreateConnectionViewCommand(getEditingDomain(), // ((IHintedType)UMLElementTypes.Association_4019).getSemanticHint(), // (IAdaptable)nodeCreation.getCommandResult().getReturnValue(), new SemanticAdapter(null, // targetEditPart.getModel()), sourceEditPart.getViewer(), // ((IGraphicalEditPart)sourceEditPart).getDiagramPreferencesHint(), viewDescriptor, null); } else { // third branch source and node thirdBranchCommand = new GraphicalAssociationBranchViewCommand( getEditingDomain(), new SemanticAdapter(null, sourceEditPart.getModel()), (IAdaptable) nodeCreation.getCommandResult().getReturnValue(), sourceEditPart.getViewer(), ((IGraphicalEditPart) sourceEditPart).getDiagramPreferencesHint(), viewDescriptor, request); // thirdBranchCommand = new CustomDeferredCreateConnectionViewCommand(getEditingDomain(), // ((IHintedType)UMLElementTypes.Association_4019).getSemanticHint(), new // SemanticAdapter(null, sourceEditPart.getModel()), // (IAdaptable)nodeCreation.getCommandResult().getReturnValue(), sourceEditPart.getViewer(), // ((IGraphicalEditPart)sourceEditPart).getDiagramPreferencesHint(), viewDescriptor, null); } ((GraphicalAssociationBranchViewCommand) thirdBranchCommand).setElement(association); ((CompoundCommand) command).add(new ICommandProxy(thirdBranchCommand)); } return command; }