@Override public void mouseDragged(MouseEvent e) { if (getDiagram() == null) { return; } if (selectedGraph == null) { selectedGraph = getDiagram().getClosestGraph(e.getX(), e.getY()); } if (selectedGraph != null) { dragPoint = e.getPoint(); } else { dragPoint = null; } repaint(); }
public DiagramCanvas() { setName("diagram"); diagramChangeHandler = new DiagramChangeHandler(); addComponentListener(new ComponentAdapter() { /** * Invoked when the component's size changes. */ @Override public void componentResized(ComponentEvent e) { if (diagram != null) { diagram.invalidate(); } } }); MouseInputAdapter mouseHandler = new IndicatorHandler(); addMouseListener(mouseHandler); addMouseMotionListener(mouseHandler); setPreferredSize(new Dimension(320, 200)); }
@Override protected void paintComponent(Graphics g) { super.paintComponent(g); if (!(g instanceof Graphics2D)) { return; } final Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); insets = getInsets(insets); final int width = getWidth() - (insets.left + insets.right); final int height = getHeight() - (insets.top + insets.bottom); final int x0 = insets.left; final int y0 = insets.top; if (diagram != null) { diagram.render(g2d, x0, y0, width, height); if (dragPoint != null && selectedGraph != null) { drawValueIndicator(g2d); } } if (messageText != null) { drawTextBox(g2d, this.messageText, x0 + width / 2, y0 + height / 2, new Color(255, 192, 102)); } }
public void diagramChanged(Diagram diagram) { repaint(); } }
public void setDiagram(Diagram diagram) { Diagram oldDiagram = this.diagram; if (oldDiagram != diagram) { if (oldDiagram != null) { oldDiagram.removeChangeListener(diagramChangeHandler); } this.diagram = diagram; if (this.diagram != null) { diagram.addChangeListener(diagramChangeHandler); } firePropertyChange("diagram", oldDiagram, diagram); repaint(); } }
private void drawValueIndicator(Graphics2D g2d) { Diagram.RectTransform transform = diagram.getTransform(); Point2D a = transform.transformB2A(dragPoint, null); double x = a.getX(); if (x < selectedGraph.getXMin()) { x = selectedGraph.getXMin(); } if (x > selectedGraph.getXMax()) { x = selectedGraph.getXMax(); } final Stroke oldStroke = g2d.getStroke(); final Color oldColor = g2d.getColor(); double y = getY(selectedGraph, x); Point2D b = transform.transformA2B(new Point2D.Double(x, y), null); g2d.setStroke(new BasicStroke(1.0f)); g2d.setColor(diagram.getForegroundColor()); Ellipse2D.Double marker = new Ellipse2D.Double(b.getX() - 4.0, b.getY() - 4.0, 8.0, 8.0); g2d.draw(marker); g2d.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0, new float[]{6, 6}, 12)); g2d.setColor(diagram.getForegroundColor()); final Rectangle graphArea = diagram.getGraphArea(); g2d.draw(new Line2D.Double(b.getX(), graphArea.y + graphArea.height, b.getX(), b.getY())); g2d.draw(new Line2D.Double(graphArea.x, b.getY(), b.getX(), b.getY())); DecimalFormat decimalFormat = new DecimalFormat("0.#####E0"); String text = selectedGraph.getYName() + ": x = " + decimalFormat.format(x) + ", y = " + decimalFormat.format(y); g2d.setStroke(oldStroke); g2d.setColor(oldColor); drawTextBox(g2d, text, graphArea.x + 6, graphArea.y + 6 + 16, new Color(255, 255, 255, 128)); }
endmemberList.setPreferredSize(new Dimension(80, 160)); diagramCanvas = new DiagramCanvas(); diagramCanvas.setDiagram(formModel.getEndmemberDiagram()); formModel.getPropertyChangeSupport().addPropertyChangeListener("selectedEndmemberIndex", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) {
public boolean contains(int x, int y) { final TimeSeriesDiagram diagram = (TimeSeriesDiagram) getDiagram(); String text = ""; /* if(diagram != null) { final Rectangle graphArea = diagram.getGraphArea(); if (graphArea != null && y > graphArea.height) { final int numTicks = diagram.getXAxis().getNumMajorTicks(); final double dist = (graphArea.width-graphArea.x) / numTicks; final int index = (int)((x - graphArea.x) / dist); final String[] tickText = diagram.getXAxis().createTickmarkTexts(); if(index < tickText.length) { final String refStr = tickText[index]; final Band band = findBand(diagram.getBands(), refStr); final Product product = band.getProduct(); String timeStr = ""; if(product.getStartTime() != null) timeStr = "<b>"+product.getStartTime().format()+"</b><br>"; text = "<html>"+ product.getProductRefString() +' '+ product.getName()+"<br>" +timeStr+ band.getName()+ "</html>"; } } } */ setToolTipText(text); return super.contains(x, y); }
public void propertyChange(PropertyChangeEvent evt) { diagramCanvas.repaint(); } });
@Override public void mouseReleased(MouseEvent e) { selectedGraph = null; dragPoint = null; repaint(); } }
public void setMessageText(String messageText) { String oldValue = this.messageText; if (!ObjectUtils.equalObjects(oldValue, messageText)) { this.messageText = messageText; repaint(); } }