Eclipse-Papyrus在下降时创建节点



我想将某些项目从列表中拖出到模型查看器中。我已经可以这样做,但是节点总是在查看器的左上方创建,我不知道如何在掉落的位置创建节点。

这是创建节点的函数(x和y是下降的坐标)

private View addNode(Node node, View deploymentView) {
    // use the view service to create the types. This is a bit cleaner than
    // using the sequence-diagram view provider directlys
    final String nodeType = UMLVisualIDRegistry
            .getType(org.eclipse.papyrus.uml.diagram.deployment.edit.parts.NodeEditPart.VISUAL_ID);
    org.eclipse.gmf.runtime.notation.Node nodeView = ViewService.createNode(deploymentView.getDiagram(), node,
            nodeType, UMLDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
    Bounds location = NotationFactory.eINSTANCE.createBounds();
    System.out.println("Dropped at x: "+ (int)this.x + " y: "+ (int)this.y);
    location.setX((int)this.x);
    location.setY((int)this.y);
    return nodeView;
}

好的,难点并不难...

private View addNode(Node node, View deploymentView) {

    // use the view service to create the types. This is a bit cleaner than
    // using the sequence-diagram view provider directlys
    final String nodeType = UMLVisualIDRegistry
            .getType(org.eclipse.papyrus.uml.diagram.deployment.edit.parts.NodeEditPart.VISUAL_ID);
    org.eclipse.gmf.runtime.notation.Node nodeView = ViewService.createNode(deploymentView.getDiagram(), node,
            nodeType, UMLDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);

    System.out.println("Dropped at x: "+ (int)this.x + " y: "+ (int)this.y);
    //for(int i=0;i<nodeView.getDiagram().getChildren().size();i++)System.out.println(nodeView.getDiagram().getChildren().get(i).toString());
    nodeView.setLayoutConstraint(NotationFactory.eINSTANCE
            .createLocation());
    Location location = (Location) nodeView.getLayoutConstraint();
    location.setX((int)this.x);
    location.setY((int)this.y);
    return nodeView;
}

最新更新