public static JToggleButton addSelectionToolTo(JToolBar tb, final DrawingEditor editor, Collection<Action> drawingActions, Collection<Action> selectionActions) { Tool selectionTool = new DelegationSelectionTool( drawingActions, selectionActions); return addSelectionToolTo(tb, editor, selectionTool); }
/** * Hook method which can be overriden by subclasses to provide * specialised behaviour in the event of a popup trigger. */ protected void handlePopupMenu(MouseEvent evt) { Point p = new Point(evt.getX(), evt.getY()); Figure figure = getView().findFigure(p); if (figure != null || drawingActions.size() > 0) { showPopupMenu(figure, p, evt.getComponent()); } else { popupMenu = null; } }
@Override public void mouseClicked(MouseEvent evt) { if (DEBUG) { System.out.println("DelegationSelectionTool.mouseClicked " + evt); } super.mouseClicked(evt); if (!evt.isConsumed()) { if (evt.getClickCount() >= 2 && // evt.getButton() == MouseEvent.BUTTON1) { handleDoubleClick(evt); } else if (evt.getClickCount() == 1 && evt.getModifiersEx() == 0 && lastClickEvent != null && lastClickEvent.getClickCount() == 1 && lastClickEvent.getModifiersEx() == 0 && lastClickEvent.getX() == evt.getX() && lastClickEvent.getY() == evt.getY()) { handleMultiClick(evt); } } lastClickEvent = evt; }
/** * MouseListener method for mousePressed events. If the popup trigger has * been activated, then the appropriate hook method is called. */ @Override public void mousePressed(final MouseEvent evt) { if (popupTimer != null) { popupTimer.stop(); popupTimer = null; } // XXX - When we want to support multiple views, we have to // implement this: //setView((DrawingView)e.getSource()); isMousePressedPopupTrigger = evt.isPopupTrigger(); if (isMousePressedPopupTrigger) { getView().requestFocus(); handlePopupMenu(evt); } else { super.mousePressed(evt); popupTimer = new javax.swing.Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent aevt) { handlePopupMenu(evt); popupTimer = null; } }); popupTimer.setRepeats(false); popupTimer.start(); } }
System.out.println("DelegationSelectionTool.handleDoubleClick " + evt); DrawingView v = getView(); Point pos = new Point(evt.getX(), evt.getY()); Handle handle = v.findHandle(pos); Point2D.Double p = viewToDrawing(pos); if (isSelectBehindEnabled()) { for (Figure f : v.getSelectedFigures()) { if (f.contains(p)) { figure = getDrawing().findFigureInside(p); if (figure != null) { figureTool = figure.getTool(p); setTracker(figureTool); figureTool.mousePressed(evt); } else { if (outerFigure.handleMouseClick(p, evt, getView())) { v.clearSelection(); v.addToSelection(outerFigure);
@Override public void actionPerformed(ActionEvent aevt) { handlePopupMenu(evt); popupTimer = null; } });
@Override public String getToolTipText(DrawingView view, MouseEvent evt) { Handle handle = view.findHandle(evt.getPoint()); if (handle != null) { return handle.getToolTipText(evt.getPoint()); } Figure figure = view.findFigure(evt.getPoint()); if (figure != null) { return figure.getToolTipText(viewToDrawing(evt.getPoint())); } return null; } }
/** * Hook method which can be overriden by subclasses to provide * specialised behaviour in the event of a multi-click. */ protected void handleMultiClick(MouseEvent evt) { if (DEBUG) { System.out.println("DelegationSelectionTool.handleMultiClick " + evt); } DrawingView v = getView(); Point pos = new Point(evt.getX(), evt.getY()); Handle handle = v.findHandle(pos); if (handle == null) { v.setHandleDetailLevel(v.getHandleDetailLevel() + 1); } }
/** * MouseListener method for mouseReleased events. If the popup trigger has * been activated, then the appropriate hook method is called. */ @Override public void mouseReleased(MouseEvent evt) { if (popupTimer != null) { popupTimer.stop(); popupTimer = null; } if (isMousePressedPopupTrigger) { isMousePressedPopupTrigger = false; } else { if (evt.isPopupTrigger()) { handlePopupMenu(evt); } else { super.mouseReleased(evt); } } }
if (figure != null) { LinkedList<Action> figureActions = new LinkedList<Action>( figure.getActions(viewToDrawing(p))); if (popupActions.size() != 0 && figureActions.size() != 0) { popupActions.add(null);
@Override public void run() { // Create a simple drawing consisting of three // text areas and an elbow connection. LabeledEllipseFigure ta = new LabeledEllipseFigure(); ta.setBounds(new Point2D.Double(10, 10), new Point2D.Double(100, 100)); LabeledEllipseFigure tb = new LabeledEllipseFigure(); tb.setBounds(new Point2D.Double(220, 120), new Point2D.Double(310, 210)); LabeledEllipseFigure tc = new LabeledEllipseFigure(); tc.setBounds(new Point2D.Double(220, 10), new Point2D.Double(310, 100)); Drawing drawing = new DefaultDrawing(); drawing.add(ta); drawing.add(tb); drawing.add(tc); // Create a frame with a drawing view and a drawing editor JFrame f = new JFrame("My Drawing"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(400, 300); DrawingView view = new DefaultDrawingView(); view.setDrawing(drawing); f.add(view.getComponent()); f.add(new JLabel("Press space bar to toggle handles."), BorderLayout.SOUTH); DrawingEditor editor = new DefaultDrawingEditor(); editor.add(view); editor.setTool(new DelegationSelectionTool()); f.setVisible(true); } });
f.getContentPane().add(view.getComponent()); DrawingEditor editor = new DefaultDrawingEditor(); editor.setTool(new DelegationSelectionTool()); editor.add(view); editor.setActiveView(view);
editor.setTool(new DelegationSelectionTool());
DrawingEditor editor = new DefaultDrawingEditor(); editor.add(view); editor.setTool(new DelegationSelectionTool()); f.setVisible(true);
@Override public void run() { // Create a graphical composite figure. GraphicalCompositeFigure composite = new GraphicalCompositeFigure(); // Add child figures to the composite figure composite.add(new TextFigure("Above the line")); composite.add(new LineFigure()); composite.add(new TextFigure("Below the line")); // Set a layouter and perform the layout composite.setLayouter(new VerticalLayouter()); composite.layout(); // Add the composite figure to a drawing Drawing drawing = new DefaultDrawing(); drawing.add(composite); // Create a frame with a drawing view and a drawing editor JFrame f = new JFrame("My Drawing"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(400, 300); DrawingView view = new DefaultDrawingView(); view.setDrawing(drawing); f.getContentPane().add(view.getComponent()); DrawingEditor editor = new DefaultDrawingEditor(); editor.add(view); editor.setTool(new DelegationSelectionTool()); f.setVisible(true); } });