public Diagram(DiagramAxis xAxis, DiagramAxis yAxis, DiagramGraph graph) { this(); setXAxis(xAxis); setYAxis(yAxis); addGraph(graph); resetMinMaxAccumulatorsFromAxes(); }
public void actionPerformed(ActionEvent e) { int index = selectedEndmemberIndex; if (index >= 0) { setSelectedEndmemberIndex(-1); endmemberListModel.removeElementAt(index); endmemberDiagram.removeGraph(endmemberDiagram.getGraph(index)); endmemberDiagram.adjustAxes(true); } } }
public void removeAllGraphs() { if (getGraphCount() > 0) { for (DiagramGraph graph : graphs) { graph.setDiagram(null); } graphs.clear(); invalidate(); } }
public void adjustAxes(boolean reset) { if (reset) { resetMinMaxAccumulators(); } for (DiagramGraph graph : graphs) { adjustAxes(graph); } }
public EndmemberFormModel(AppContext appContext) { this.appContext = appContext; endmemberListModel = new DefaultListModel<>(); endmemberListSelectionModel = new DefaultListSelectionModel(); endmemberListSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); endmemberListModel.addListDataListener(new EndmemberListDataListener()); endmemberListSelectionModel.addListSelectionListener(new EndmemberListSelectionListener()); endmemberDiagram = new Diagram(); endmemberDiagram.setXAxis(new DiagramAxis("Wavelength", "")); endmemberDiagram.setYAxis(new DiagramAxis("Radiation", "")); endmemberDiagram.setDrawGrid(false); propertyChangeSupport = new PropertyChangeSupport(this); }
private void invalidate() { if (diagram != null) { diagram.invalidate(); } } }
@Override public void setUp() { Diagram diagram = new Diagram(); diagramAxis = new DiagramAxis(); diagram.setXAxis(diagramAxis); eventCounter = new EventCounter(); diagram.addChangeListener(eventCounter); }
public void setSelectedEndmemberIndex(int index) { int oldIndex = selectedEndmemberIndex; if (oldIndex == index) { return; } if (oldIndex >= 0 && endmemberDiagram.getGraphCount() > 0) { final DiagramGraph endmemberGraph = endmemberDiagram.getGraph(oldIndex); ((DefaultDiagramGraphStyle) endmemberGraph.getStyle()).setOutlineStroke(new BasicStroke(1.0f)); } selectedEndmemberIndex = index; if (selectedEndmemberIndex >= 0 && endmemberDiagram.getGraphCount() > 0) { final DiagramGraph endmemberGraph = endmemberDiagram.getGraph(selectedEndmemberIndex); ((DefaultDiagramGraphStyle) endmemberGraph.getStyle()).setOutlineStroke(new BasicStroke(2.0f)); } endmemberDiagram.invalidate(); propertyChangeSupport.firePropertyChange("selectedEndmemberIndex", oldIndex, selectedEndmemberIndex); }
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)); }
private void addEndmember(Endmember endmember) { endmemberListModel.addElement(endmember); EndmemberGraph endmemberGraph = new EndmemberGraph(endmember); Color color = defaultColors[endmemberListModel.getSize() % defaultColors.length]; DefaultDiagramGraphStyle style = ((DefaultDiagramGraphStyle) endmemberGraph.getStyle()); style.setOutlineColor(color); style.setOutlineStroke(new BasicStroke(1.0f)); style.setShowingPoints(false); endmemberDiagram.addGraph(endmemberGraph); endmemberDiagram.adjustAxes(true); }
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(); } }
public void actionPerformed(ActionEvent e) { ensureDefaultDirSet(); DiagramGraphIO.writeGraphs(null, "Export Endmembers", new SnapFileFilter[]{DiagramGraphIO.SPECTRA_CSV_FILE_FILTER}, appContext.getPreferences(), endmemberDiagram.getGraphs()); } }
public void dispose() { // first disable listening to what will happen next! changeListeners.clear(); // remove main components removeAllGraphs(); if (xAxis != null) { xAxis.setDiagram(null); xAxis = null; } if (yAxis != null) { yAxis.setDiagram(null); yAxis = null; } } }
private void drawLegend(final Graphics2D g2d) { final Rectangle graphArea = getDiagram().getGraphArea(); int x0 = graphArea.x + 10, y0 = 20; g2d.setStroke(new BasicStroke(2.0f)); final java.util.List<GraphData> graphDataList = settings.getGraphDataList(); for (GraphData graphData : graphDataList) { if (graphData.getProducts() != null) { final Rectangle2D rect = getTextBox(g2d, graphData.getTitle(), x0, y0); drawTextBox(g2d, rect, graphData.getTitle(), x0, y0, graphData.getColor()); x0 = (int) rect.getMaxX() + 10; if (x0 > getWidth() - 50) { x0 = graphArea.x + 10; y0 += 20; } } } }
/** * Invoked when the component's size changes. */ @Override public void componentResized(ComponentEvent e) { if (diagram != null) { diagram.invalidate(); } } });
public DiagramGraph getClosestGraph(int x, int y) { double minDist = Double.MAX_VALUE; Point2D.Double a = new Point2D.Double(); Point2D.Double b1 = new Point2D.Double(); Point2D.Double b2 = new Point2D.Double(); DiagramGraph closestGraph = null; for (DiagramGraph graph : getGraphs()) { double minDistGraph = Double.MAX_VALUE; int n = graph.getNumValues(); for (int i = 0; i < n; i++) { a.setLocation(graph.getXValueAt(i), graph.getYValueAt(i)); b1.setLocation(b2); transform.transformA2B(a, b2); if (i > 0) { Line2D.Double segment = new Line2D.Double(b1, b2); double v = segment.ptSegDist(x, y); if (v < minDistGraph) { minDistGraph = v; } } } if (minDistGraph < minDist) { minDist = minDistGraph; closestGraph = graph; } } return closestGraph; }
public void actionPerformed(ActionEvent e) { setSelectedEndmemberIndex(-1); endmemberListModel.removeAllElements(); endmemberDiagram.removeAllGraphs(); } }
protected void invalidate() { if (diagram != null) { diagram.invalidate(); } }
Point2D.Double b1; Point2D.Double b2; DiagramGraph[] graphs = getGraphs(); for (DiagramGraph graph : graphs) { a = new Point2D.Double();
public void disableChangeEventMerging() { final boolean changeEventsMerged = numMergedChangeEvents > 0; numMergedChangeEvents = -1; if (changeEventsMerged) { invalidate(); } }