@Override protected Widget attachNodeWidget(ConfigNode arg) { IconNodeWidget widget = new IconNodeWidget(this); if (arg.getId().startsWith("L2F")) { widget.setImage(ImageUtilities.loadImage("com/weaved/server/configurator/images/d.png")); } else if (arg.getId().startsWith("L1F")) { widget.setImage(ImageUtilities.loadImage("com/weaved/server/configurator/images/f.png")); } else { widget.setImage(ImageUtilities.loadImage("com/weaved/server/configurator/images/p.png")); } widget .getActions() .addAction( ActionFactory.createExtendedConnectAction(connectionLayer, new MyConnectProvider())); widget .getActions() .addAction( ActionFactory.createAlignWithMoveAction( mainLayer, interactionLayer, ActionFactory.createDefaultAlignWithMoveDecorator())); widget .getActions() .addAction( ActionFactory.createPopupMenuAction( new PopupMenuProvider() { @Override public JPopupMenu getPopupMenu(final Widget widget, Point localLocation) { JPopupMenu popup = new JPopupMenu(); // Properties JMenuItem propsMenu = new JMenuItem("Properties"); propsMenu.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Object object = findObject( widget); // consider a map "string" => ShapeObj at creation // (drop) ConfigNode node = (ConfigNode) object; if (node.getId().startsWith("L0")) { PerceptionConfigPropNode propNode = new PerceptionConfigPropNode((PerceptionConfigNode) node); propNode.setDisplayName("Node Settings"); propNode.setShortDescription( "Click on properties to get a small discription about the property"); NodeOperation.getDefault().showProperties(propNode); } else { ConfigPropNode propNode = new ConfigPropNode(node); propNode.setDisplayName("Node Settings"); propNode.setShortDescription( "Click on properties to get a small discription about the property"); NodeOperation.getDefault().showProperties(propNode); } } }); // Delete JMenuItem deleteMenu = new JMenuItem("Delete"); deleteMenu.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { ConfigNode cn = (ConfigNode) findObject(widget); List<Widget> connections = connectionLayer.getChildren(); for (Widget connection : connections) { ConnectionWidget conn = (ConnectionWidget) connection; if (conn.getSourceAnchor().getRelatedWidget().equals(widget)) { connectionLayer.removeChild(conn); // edgeMap.remove(conn); } if (conn.getTargetAnchor().getRelatedWidget().equals(widget)) { connectionLayer.removeChild(conn); // edgeMap.remove(conn); } } GraphSceneImpl.this.removeNode(cn); nodeMap.remove(cn.getId()); } }); popup.add(propsMenu); popup.add(deleteMenu); return popup; } })); widget.setLabel(arg.getId()); mainLayer.addChild(widget); return widget; }