public void unregisterKeyStroke(KeyStroke ks, JComponent c) { // component may have already been removed from the hierarchy, we // need to look up the container using the componentKeyStrokeMap. ComponentKeyStrokePair ckp = new ComponentKeyStrokePair(c, ks); Container topContainer = componentKeyStrokeMap.get(ckp); if (topContainer == null) { // never heard of this pairing, so bail return; } Hashtable keyMap = containerMap.get(topContainer); if (keyMap == null) { // this should never happen, but I'm being safe Thread.dumpStack(); return; } Object tmp = keyMap.get(ks); if (tmp == null) { // this should never happen, but I'm being safe Thread.dumpStack(); return; } if (tmp instanceof JComponent && tmp == c) { keyMap.remove(ks); // remove the KeyStroke from the Map // System.out.println("removed a stroke" + ks); } else if (tmp instanceof Vector) { // this means there is more than one component reg for this key Vector v = (Vector) tmp; v.removeElement(c); if (v.isEmpty()) { keyMap.remove(ks); // remove the KeyStroke from the Map // System.out.println("removed a ks vector"); } } if (keyMap.isEmpty()) { // if no more bindings in this table containerMap.remove(topContainer); // remove table to enable GC // System.out.println("removed a container"); } componentKeyStrokeMap.remove(ckp); // Check for EmbeddedFrame case, they know how to process accelerators even // when focus is not in Java if (topContainer instanceof EmbeddedFrame) { ((EmbeddedFrame) topContainer).unregisterAccelerator(ks); } }
/** Calculate the rectangle occupied by the data */ protected Rectangle getDataRectangle(Graphics g, Rectangle r) { Axis a; int waxis; int x = r.x; int y = r.y; int width = r.width; int height = r.height; for (int i = 0; i < axis.size(); i++) { a = ((Axis) axis.elementAt(i)); waxis = a.getAxisWidth(g); switch (a.getAxisPos()) { case Axis.LEFT: x += waxis; width -= waxis; break; case Axis.RIGHT: width -= waxis; break; case Axis.TOP: y += waxis; height -= waxis; break; case Axis.BOTTOM: height -= waxis; break; } } return new Rectangle(x, y, width, height); }
public void actionPerformed(java.awt.event.ActionEvent arg0) { if (JTable1.getSelectedRowCount() != 1) { Utilities.errorMessage(resourceBundle.getString("Please select a view to delete")); return; } if (JOptionPane.showConfirmDialog( null, resourceBundle.getString("Are you sure you want to delete the selected view "), resourceBundle.getString("Warning!"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null) == JOptionPane.NO_OPTION) return; Vector viewvec = model.getAllViews(); for (int i = 0; i < viewvec.size(); i++) { String viewname = ((AuthViewWithOperations) viewvec.elementAt(i)).getAuthorizedViewName(); if (JTable1.getValueAt(JTable1.getSelectedRow(), 0).toString().equals(viewname)) { AuthViewWithOperations avop = (AuthViewWithOperations) viewvec.elementAt(i); model.delViewOp( avop.getAuthorizedViewName(), avop.getViewProperties(), avop.getOperations()); } } disableButtons(); }
public void actionPerformed(java.awt.event.ActionEvent arg0) { if (JTable1.getSelectedRowCount() != 1) { Utilities.errorMessage(resourceBundle.getString("Please select a view to edit")); return; } views = new ViewsWizard(ViewConfig.this, applet); views.setSecurityModel(model); Point p = JLabel1.getLocationOnScreen(); views.setLocation(p); views.init(); views.setState(false); Vector viewvec = model.getAllViews(); for (int i = 0; i < viewvec.size(); i++) { String viewname = ((AuthViewWithOperations) viewvec.elementAt(i)).getAuthorizedViewName(); if (JTable1.getValueAt(JTable1.getSelectedRow(), 0).toString().equals(viewname)) { views.setValues((AuthViewWithOperations) viewvec.elementAt(i)); } } disableButtons(); views.setVisible(true); }
private Vector readlinesfromfile(String fname) { // trims lines and removes comments Vector v = new Vector(); try { BufferedReader br = new BufferedReader(new FileReader(new File(fname))); while (br.ready()) { String tmp = br.readLine(); // Strip comments while (tmp.indexOf("/*") >= 0) { int i = tmp.indexOf("/*"); v.add(tmp.substring(0, i)); String rest = tmp.substring(i + 2); while (tmp.indexOf("*/") == -1) { tmp = br.readLine(); } tmp = tmp.substring(tmp.indexOf("*/") + 2); } if (tmp.indexOf("//") >= 0) tmp = tmp.substring(0, tmp.indexOf("//")); // Strip spaces tmp = tmp.trim(); v.add(tmp); // System.out.println("Read line "+tmp); } br.close(); } catch (Exception e) { System.out.println("Exception " + e + " occured"); } return v; }
/** * This paints the entire plot. It calls the draw methods of all the attached axis and data sets. * The order of drawing is - Axis first, data legends next, data last. * * @params g Graphics state. */ public void paint(Graphics g) { int i; Graphics lg = g.create(); Rectangle r = bounds(); /* The r.x and r.y returned from bounds is relative to the ** parents space so set them equal to zero. */ r.x = 0; r.y = 0; if (DefaultBackground == null) DefaultBackground = this.getBackground(); if (DataBackground == null) DataBackground = this.getBackground(); // System.out.println("Graph2D paint method called!"); if (!paintAll) return; r.x += borderLeft; r.y += borderTop; r.width -= borderLeft + borderRight; r.height -= borderBottom + borderTop; paintFirst(lg, r); if (!axis.isEmpty()) r = drawAxis(lg, r); else { if (clearAll) { Color c = g.getColor(); g.setColor(DataBackground); g.fillRect(r.x, r.y, r.width, r.height); g.setColor(c); } drawFrame(lg, r.x, r.y, r.width, r.height); } paintBeforeData(lg, r); if (!dataset.isEmpty()) { datarect.x = r.x; datarect.y = r.y; datarect.width = r.width; datarect.height = r.height; for (i = 0; i < dataset.size(); i++) { ((DataSet) dataset.elementAt(i)).draw_data(lg, r); } } paintLast(lg, r); lg.dispose(); }
public DataSet loadDataSet(Vector<Integer> data) { int i; int j; double tempdata[] = new double[2 * data.size()]; for (i = j = 0; i < data.size(); i++, j += 2) { tempdata[j] = i; tempdata[j + 1] = data.get(i); } return loadDataSet(tempdata, data.size()); }
/** Detach All attached Axes. */ public void detachAxes() { int i; if (axis == null | axis.isEmpty()) return; for (i = 0; i < axis.size(); i++) { ((Axis) axis.elementAt(i)).detachAll(); ((Axis) axis.elementAt(i)).g2d = null; } axis.removeAllElements(); }
/** * Get the Minimum Y value of all attached DataSets. * * @return The minimum value */ public double getYmin() { DataSet d; double min = 0.0; if (dataset == null | dataset.isEmpty()) return min; for (int i = 0; i < dataset.size(); i++) { d = ((DataSet) dataset.elementAt(i)); if (i == 0) min = d.getYmin(); else min = Math.min(min, d.getYmin()); } return min; }
/** * Get the Maximum Y value of all attached DataSets. * * @return The maximum value */ public double getYmax() { DataSet d; double max = 0.0; if (dataset == null | dataset.isEmpty()) return max; for (int i = 0; i < dataset.size(); i++) { d = ((DataSet) dataset.elementAt(i)); if (i == 0) max = d.getYmax(); else max = Math.max(max, d.getYmax()); } return max; }
public void jooify() { // To jooify a file, we must include Joo objects precode = "import JooFrame.*;\n\n" + precode; precode = "import Joo.*;\n" + precode; precode = "import Field.*;\n" + precode; // We must add Joo functionality to all classes for (int i = 0; i < classes.size(); i++) { // System.out.println("Jooifying "+(i+1)+" out of "+classes.size()+1); ((Class) classes.get(i)).jooify(); } /* JavaParser tmp=new JavaParser("JooMainAdd.java"); tmp.read(); classes.add((Class)tmp.classes.get(0));*/ }
/** Detach All the DataSets from the class. */ public void detachDataSets() { DataSet d; int i; if (dataset == null | dataset.isEmpty()) return; for (i = 0; i < dataset.size(); i++) { d = ((DataSet) dataset.elementAt(i)); if (d.xaxis != null) d.xaxis.detachDataSet(d); if (d.yaxis != null) d.yaxis.detachDataSet(d); } dataset.removeAllElements(); }
public void write() { filename = "open/" + filename; try { BufferedWriter br = new BufferedWriter(new FileWriter(new File(filename))); br.write(precode); for (int i = 0; i < classes.size(); i++) { System.out.println("Jooifying " + (i + 1) + " out of " + classes.size() + 1); br.write(((Class) classes.get(i)).toString()); } br.close(); System.out.println("Written file " + filename); } catch (Exception e) { System.out.println("Exception " + e + " occured"); } }
public void Draw() { Graphics g; Color cl; int c; int xdiff, ydiff; g = parentarea.screen; if ((Resize) || (ResizeAll)) Calculate_Coors(); c = ((int) activation) * 255 / 100; if (c < 0) c = 0; if (c > 255) c = 255; cl = new Color(c, c, c); if (oldclamp != clamp) { g.setColor(Color.white); g.fillRect(sx1, sy1, 1 + sx2 - sx1, 1 + sy2 - sy1); } g.setColor(cl); g.fillOval(sx1, sy1, sx2 - sx1, sy2 - sy1); g.setColor(Color.black); if (activation == (double) 100.0) g.setColor(Color.red); g.drawOval(sx1, sy1, sx2 - sx1, sy2 - sy1); if (clamp) { xdiff = (sx2 - sx1); ydiff = (sy2 - sy1); g.drawRect(sx1, sy1, xdiff, ydiff); } if ((Resize) || (ResizeAll)) CalculateSize(g); g.setFont(currfont); if (activation > 50.0) g.setColor(Color.black); else g.setColor(Color.white); if (foreground != null) g.setColor(foreground); g.drawString(short_name, sx1 + xoff, sy2 - yoff); Redraw = false; Resize = false; if (oldclamp != clamp) { // draw all bonds - as they will have been erased oldclamp = clamp; for (int x = 0; x < outgoing_links.size(); x++) { slipnet_link s = (slipnet_link) outgoing_links.elementAt(x); s.Draw(); } } }
/** * Attach a DataSet to the graph. By attaching the data set the class can draw the data through * its paint method. */ public void attachDataSet(DataSet d) { if (d != null) { dataset.addElement(d); d.g2d = this; } }
/** * Detach the DataSet from the class. Data associated with the DataSet will nolonger be plotted. * * @param d The DataSet to detach. */ public void detachDataSet(DataSet d) { if (d != null) { if (d.xaxis != null) d.xaxis.detachDataSet(d); if (d.yaxis != null) d.yaxis.detachDataSet(d); dataset.removeElement(d); } }
/** * Detach a previously attached Axis. * * @param the Axis to dettach. */ public void detachAxis(Axis a) { if (a != null) { a.detachAll(); a.g2d = null; axis.removeElement(a); } }
public void setData() { /* if(model.getAllViews() == null) { return; } */ for (int i = JTable1.getRowCount() - 1; i >= 0; i--) { ViewTableModel.removeRow(i); } Vector views = model.getAllViews(); for (int j = 0; j < views.size(); j++) { AuthViewWithOperations view = (AuthViewWithOperations) views.elementAt(j); String viewNa = view.getAuthorizedViewName(); ViewTableModel.addRow(new Object[] {viewNa}); } }
public void unregisterMenuBar(JMenuBar mb) { Container topContainer = getTopAncestor(mb); if (topContainer == null) { return; } Hashtable keyMap = containerMap.get(topContainer); if (keyMap != null) { Vector v = (Vector) keyMap.get(JMenuBar.class); if (v != null) { v.removeElement(mb); if (v.isEmpty()) { keyMap.remove(JMenuBar.class); if (keyMap.isEmpty()) { // remove table to enable GC containerMap.remove(topContainer); } } } } }
/** * Attach a previously created Axis. Only Axes that have been attached will be drawn * * @param the Axis to attach. */ public void attachAxis(Axis a) { if (a == null) return; try { axis.addElement(a); a.g2d = this; } catch (Exception e) { System.out.println("Failed to attach Axis"); e.printStackTrace(); } }
/** * Load and Attach a DataSet from an array. The method loads the data into a DataSet class and * attaches the class to the graph for plotting. * * <p>The data is assumed to be stored in the form x,y,x,y,x,y.... A local copy of the data is * made. * * @param data The data to be loaded in the form x,y,x,y,... * @param n The number of (x,y) data points. This means that the minimum length of the data array * is 2*n. * @return The DataSet constructed containing the data read. */ public DataSet loadDataSet(double data[], int n) { DataSet d; try { d = new DataSet(data, n); dataset.addElement(d); d.g2d = this; } catch (Exception e) { System.out.println("Failed to load Data set "); e.printStackTrace(); return null; } return d; }
public void registerMenuBar(JMenuBar mb) { Container top = getTopAncestor(mb); if (top == null) { return; } Hashtable keyMap = containerMap.get(top); if (keyMap == null) { // lazy evaluate one keyMap = registerNewTopContainer(top); } // use the menubar class as the key Vector menuBars = (Vector) keyMap.get(JMenuBar.class); if (menuBars == null) { // if we don't have a list of menubars, // then make one. menuBars = new Vector(); keyMap.put(JMenuBar.class, menuBars); } if (!menuBars.contains(mb)) { menuBars.addElement(mb); } }
/** * Create and attach an Axis to the graph. The position of the axis is one of Axis.TOP, * Axis.BOTTOM, Axis.LEFT or Axis.RIGHT. * * @param position Position of the axis in the drawing window. */ public Axis createAxis(int position) { Axis a; try { a = new Axis(position); a.g2d = this; axis.addElement(a); } catch (Exception e) { System.out.println("Failed to create Axis"); e.printStackTrace(); return null; } return a; }
/** * register keystrokes here which are for the WHEN_IN_FOCUSED_WINDOW case. Other types of * keystrokes will be handled by walking the hierarchy That simplifies some potentially hairy * stuff. */ public void registerKeyStroke(KeyStroke k, JComponent c) { Container topContainer = getTopAncestor(c); if (topContainer == null) { return; } Hashtable keyMap = containerMap.get(topContainer); if (keyMap == null) { // lazy evaluate one keyMap = registerNewTopContainer(topContainer); } Object tmp = keyMap.get(k); if (tmp == null) { keyMap.put(k, c); } else if (tmp instanceof Vector) { // if there's a Vector there then add to it. Vector v = (Vector) tmp; if (!v.contains(c)) { // only add if this keystroke isn't registered for this component v.addElement(c); } } else if (tmp instanceof JComponent) { // if a JComponent is there then remove it and replace it with a vector // Then add the old compoennt and the new compoent to the vector // then insert the vector in the table if (tmp != c) { // this means this is already registered for this component, no need to dup Vector<JComponent> v = new Vector<JComponent>(); v.addElement((JComponent) tmp); v.addElement(c); keyMap.put(k, v); } } else { System.out.println("Unexpected condition in registerKeyStroke"); Thread.dumpStack(); } componentKeyStrokeMap.put(new ComponentKeyStrokePair(c, k), topContainer); // Check for EmbeddedFrame case, they know how to process accelerators even // when focus is not in Java if (topContainer instanceof EmbeddedFrame) { ((EmbeddedFrame) topContainer).registerAccelerator(k); } }
/** * This method is called when the focused component (and none of its ancestors) want the key * event. This will look up the keystroke to see if any chidren (or subchildren) of the specified * container want a crack at the event. If one of them wants it, then it will "DO-THE-RIGHT-THING" */ public boolean fireKeyboardAction(KeyEvent e, boolean pressed, Container topAncestor) { if (e.isConsumed()) { System.out.println("Acquired pre-used event!"); Thread.dumpStack(); } // There may be two keystrokes associated with a low-level key event; // in this case a keystroke made of an extended key code has a priority. KeyStroke ks; KeyStroke ksE = null; if (e.getID() == KeyEvent.KEY_TYPED) { ks = KeyStroke.getKeyStroke(e.getKeyChar()); } else { if (e.getKeyCode() != e.getExtendedKeyCode()) { ksE = KeyStroke.getKeyStroke(e.getExtendedKeyCode(), e.getModifiers(), !pressed); } ks = KeyStroke.getKeyStroke(e.getKeyCode(), e.getModifiers(), !pressed); } Hashtable keyMap = containerMap.get(topAncestor); if (keyMap != null) { // this container isn't registered, so bail Object tmp = null; // extended code has priority if (ksE != null) { tmp = keyMap.get(ksE); if (tmp != null) { ks = ksE; } } if (tmp == null) { tmp = keyMap.get(ks); } if (tmp == null) { // don't do anything } else if (tmp instanceof JComponent) { JComponent c = (JComponent) tmp; if (c.isShowing() && c.isEnabled()) { // only give it out if enabled and visible fireBinding(c, ks, e, pressed); } } else if (tmp instanceof Vector) { // more than one comp registered for this Vector v = (Vector) tmp; // There is no well defined order for WHEN_IN_FOCUSED_WINDOW // bindings, but we give precedence to those bindings just // added. This is done so that JMenus WHEN_IN_FOCUSED_WINDOW // bindings are accessed before those of the JRootPane (they // both have a WHEN_IN_FOCUSED_WINDOW binding for enter). for (int counter = v.size() - 1; counter >= 0; counter--) { JComponent c = (JComponent) v.elementAt(counter); // System.out.println("Trying collision: " + c + " vector = "+ v.size()); if (c.isShowing() && c.isEnabled()) { // don't want to give these out fireBinding(c, ks, e, pressed); if (e.isConsumed()) return true; } } } else { System.out.println("Unexpected condition in fireKeyboardAction " + tmp); // This means that tmp wasn't null, a JComponent, or a Vector. What is it? Thread.dumpStack(); } } if (e.isConsumed()) { return true; } // if no one else handled it, then give the menus a crack // The're handled differently. The key is to let any JMenuBars // process the event if (keyMap != null) { Vector v = (Vector) keyMap.get(JMenuBar.class); if (v != null) { Enumeration iter = v.elements(); while (iter.hasMoreElements()) { JMenuBar mb = (JMenuBar) iter.nextElement(); if (mb.isShowing() && mb.isEnabled()) { // don't want to give these out boolean extended = (ksE != null) && !ksE.equals(ks); if (extended) { fireBinding(mb, ksE, e, pressed); } if (!extended || !e.isConsumed()) { fireBinding(mb, ks, e, pressed); } if (e.isConsumed()) { return true; } } } } } return e.isConsumed(); }
/** Method declaration */ void showResultInText() { String col[] = gResult.getHead(); int width = col.length; int size[] = new int[width]; Vector data = gResult.getData(); String row[]; int height = data.size(); for (int i = 0; i < width; i++) { size[i] = col[i].length(); } for (int i = 0; i < height; i++) { row = (String[]) data.elementAt(i); for (int j = 0; j < width; j++) { int l = row[j].length(); if (l > size[j]) { size[j] = l; } } } StringBuffer b = new StringBuffer(); for (int i = 0; i < width; i++) { b.append(col[i]); for (int l = col[i].length(); l <= size[i]; l++) { b.append(' '); } } b.append(NL); for (int i = 0; i < width; i++) { for (int l = 0; l < size[i]; l++) { b.append('-'); } b.append(' '); } b.append(NL); for (int i = 0; i < height; i++) { row = (String[]) data.elementAt(i); for (int j = 0; j < width; j++) { b.append(row[j]); for (int l = row[j].length(); l <= size[j]; l++) { b.append(' '); } } b.append(NL); } b.append(NL + height + " row(s) in " + lTime + " ms"); txtResult.setText(b.toString()); }
/** Method declaration */ private void refreshTree() { tTree.removeAll(); try { int color_table = Color.yellow.getRGB(); int color_column = Color.orange.getRGB(); int color_index = Color.red.getRGB(); tTree.addRow("", dMeta.getURL(), "-", 0); String usertables[] = {"TABLE"}; ResultSet result = dMeta.getTables(null, null, null, usertables); Vector tables = new Vector(); // sqlbob@users Added remarks. Vector remarks = new Vector(); while (result.next()) { tables.addElement(result.getString(3)); remarks.addElement(result.getString(5)); } result.close(); for (int i = 0; i < tables.size(); i++) { String name = (String) tables.elementAt(i); String key = "tab-" + name + "-"; tTree.addRow(key, name, "+", color_table); // sqlbob@users Added remarks. String remark = (String) remarks.elementAt(i); if ((remark != null) && !remark.trim().equals("")) { tTree.addRow(key + "r", " " + remark); } ResultSet col = dMeta.getColumns(null, null, name, null); while (col.next()) { String c = col.getString(4); String k1 = key + "col-" + c + "-"; tTree.addRow(k1, c, "+", color_column); String type = col.getString(6); tTree.addRow(k1 + "t", "Type: " + type); boolean nullable = col.getInt(11) != DatabaseMetaData.columnNoNulls; tTree.addRow(k1 + "n", "Nullable: " + nullable); } col.close(); tTree.addRow(key + "ind", "Indices", "+", 0); ResultSet ind = dMeta.getIndexInfo(null, null, name, false, false); String oldiname = null; while (ind.next()) { boolean nonunique = ind.getBoolean(4); String iname = ind.getString(6); String k2 = key + "ind-" + iname + "-"; if ((oldiname == null || !oldiname.equals(iname))) { tTree.addRow(k2, iname, "+", color_index); tTree.addRow(k2 + "u", "Unique: " + !nonunique); oldiname = iname; } String c = ind.getString(9); tTree.addRow(k2 + "c-" + c + "-", c); } ind.close(); } tTree.addRow("p", "Properties", "+", 0); tTree.addRow("pu", "User: "******"pr", "ReadOnly: " + cConn.isReadOnly()); tTree.addRow("pa", "AutoCommit: " + cConn.getAutoCommit()); tTree.addRow("pd", "Driver: " + dMeta.getDriverName()); tTree.addRow("pp", "Product: " + dMeta.getDatabaseProductName()); tTree.addRow("pv", "Version: " + dMeta.getDatabaseProductVersion()); } catch (SQLException e) { tTree.addRow("", "Error getting metadata:", "-", 0); tTree.addRow("-", e.getMessage()); tTree.addRow("-", e.getSQLState()); } tTree.update(); }
public slipnode category() { if (category_links.size() == 0) return null; slipnet_link sl = (slipnet_link) category_links.elementAt(0); return sl.to_node; }
/** * Draw the Axis. As each axis is drawn and aligned less of the canvas is avaliable to plot the * data. The returned Rectangle is the canvas area that the data is plotted in. */ protected Rectangle drawAxis(Graphics g, Rectangle r) { Axis a; int waxis; Rectangle dr; int x; int y; int width; int height; if (square) r = ForceSquare(g, r); dr = getDataRectangle(g, r); x = dr.x; y = dr.y; width = dr.width; height = dr.height; if (clearAll) { Color c = g.getColor(); g.setColor(DataBackground); g.fillRect(x, y, width, height); g.setColor(c); } // Draw a frame around the data area (If requested) if (frame) drawFrame(g, x, y, width, height); // Now draw the axis in the order specified aligning them with the final // data area. for (int i = 0; i < axis.size(); i++) { a = ((Axis) axis.elementAt(i)); a.data_window = new Dimension(width, height); switch (a.getAxisPos()) { case Axis.LEFT: r.x += a.width; r.width -= a.width; a.positionAxis(r.x, r.x, y, y + height); if (r.x == x) { a.gridcolor = gridcolor; a.drawgrid = drawgrid; a.zerocolor = zerocolor; a.drawzero = drawzero; } a.drawAxis(g); a.drawgrid = false; a.drawzero = false; break; case Axis.RIGHT: r.width -= a.width; a.positionAxis(r.x + r.width, r.x + r.width, y, y + height); if (r.x + r.width == x + width) { a.gridcolor = gridcolor; a.drawgrid = drawgrid; a.zerocolor = zerocolor; a.drawzero = drawzero; } a.drawAxis(g); a.drawgrid = false; a.drawzero = false; break; case Axis.TOP: r.y += a.width; r.height -= a.width; a.positionAxis(x, x + width, r.y, r.y); if (r.y == y) { a.gridcolor = gridcolor; a.drawgrid = drawgrid; a.zerocolor = zerocolor; a.drawzero = drawzero; } a.drawAxis(g); a.drawgrid = false; a.drawzero = false; break; case Axis.BOTTOM: r.height -= a.width; a.positionAxis(x, x + width, r.y + r.height, r.y + r.height); if (r.y + r.height == y + height) { a.gridcolor = gridcolor; a.drawgrid = drawgrid; a.zerocolor = zerocolor; a.drawzero = drawzero; } a.drawAxis(g); a.drawgrid = false; a.drawzero = false; break; } } return r; }
/** * Force the plot to have an aspect ratio of 1 by forcing the axes to have the same range. If the * range of the axes are very different some extremely odd things can occur. All axes are forced * to have the same range, so more than 2 axis is pointless. */ protected Rectangle ForceSquare(Graphics g, Rectangle r) { Axis a; Rectangle dr; int x = r.x; int y = r.y; int width = r.width; int height = r.height; double xmin; double xmax; double ymin; double ymax; double xrange = 0.0; double yrange = 0.0; double range; double aspect; if (dataset == null | dataset.isEmpty()) return r; /* ** Force all the axis to have the same range. This of course ** means that anything other than one xaxis and one yaxis ** is a bit pointless. */ for (int i = 0; i < axis.size(); i++) { a = (Axis) axis.elementAt(i); range = a.maximum - a.minimum; if (a.isVertical()) { yrange = Math.max(range, yrange); } else { xrange = Math.max(range, xrange); } } if (xrange <= 0 | yrange <= 0) return r; if (xrange > yrange) range = xrange; else range = yrange; for (int i = 0; i < axis.size(); i++) { a = (Axis) axis.elementAt(i); a.maximum = a.minimum + range; } /* ** Get the new data rectangle */ dr = getDataRectangle(g, r); /* ** Modify the data rectangle so that it is square. */ if (dr.width > dr.height) { x += (dr.width - dr.height) / 2.0; width -= dr.width - dr.height; } else { y += (dr.height - dr.width) / 2.0; height -= dr.height - dr.width; } return new Rectangle(x, y, width, height); }