/** Creates a new panel */ public GraphPanel() { setLayout(null); canvas = createCanvas(); canvas.setLayout(null); canvas.setBackground(Color.WHITE); canvas.setOpaque(true); canvas.setFocusable(true); overlay = createOverlay(); overlay.setOpaque(false); overlay.setFocusable(false); add(overlay); add(canvas); graphListener = graphListener(); capabilityController = new CapabilityController(this); capabilityController.register(CapabilityName.MOVEABLE, new MoveableCapabilityHandler()); capabilityController.register(CapabilityName.SELECTABLE, new SelectableCapabilityHandler()); capabilityController.register(CapabilityName.CONTEXT_MENU, new ContextCapabilityHandler()); addComponentListener( new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { regraph(); } public void componentShown(ComponentEvent e) { regraph(); } }); }
/** * Adds a new capability to this graph. * * @param name the name of the capability * @param handler the new handler, may be <code>null</code> to remove an existing handler */ public <T> void setCapability(CapabilityName<T> name, CapabilityHandler<T> handler) { capabilityController.register(name, handler); }