/*
* Title: japlot.jaxodraw
* Description: Graphical user interface for drawing Feynman diagrams
* @author Daniele Binosi
* @author Lukas Theussl
* @author Sergei Chekanov
Copyright (C) 2003-2006, Daniele Binosi, Lukas Theussl, Sergei Chekanov
*/
package japlot.jaxodraw;
import org.freehep.graphics2d.VectorGraphics;
import japlot.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.ResourceBundle;
import java.util.Vector;
import java.text.DecimalFormat;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import jhplot.jadraw.*;
import jplot.LinePars;
/** An instance of the canvas: responsible for all the drawing. */
public class JaxoCanvas extends JPanel implements MouseListener,
MouseMotionListener, ComponentListener {
/**
*
*/
private static final long serialVersionUID = 1L;
//Constants to distinguish among current handle
/** The upper left handle. */
public static final int HANDLE_UL = 0;
/** The lower left handle. */
public static final int HANDLE_LL = 1;
/** The lower right handle. */
public static final int HANDLE_LR = 2;
/** The upper right handle. */
public static final int HANDLE_UR = 3;
/** The background color of the canvas. */
// public static final Color BCKG_COLOR = new Color(250, 250, 240);
public static Color BCKG_COLOR = Color.white;
private ResourceBundle language =
ResourceBundle.getBundle(JaxoPrefs.getPref(JaxoPrefs.PREF_LANGUAGE));
private JaxoMainPanel thePanel; // Instance of the main panel
private JaxoGraph canvasGraph; // Instance of the canvas graph
private String canvasTick =
ResourceBundle.getBundle(JaxoPrefs.getPref(JaxoPrefs.PREF_LANGUAGE))
.getString("Untitled");
private Image offScreenImage; // Image for double buffering
private Image backupImage;
private JaxoGrid grid =
new JaxoGrid(JaxoPrefs.getIntPref(JaxoPrefs.PREF_GRIDSIZE),
JaxoPrefs.getPref(JaxoPrefs.PREF_GRIDTYPE));
private int xin; // For the snap mode
private int yin; // For the snap mode
private int lastX; // Last mouse coordinates
private int lastY; // Last mouse coordinates
private int startX; // Reference coordinates for resizing
private int startY; // Reference coordinates for resizing
private int curDragMode; // Current drag mode: move, resize, or select
private int curHandle; // Current handle: upper or lower left or right
private int fboxX;
private int fboxY;
private boolean fboxON = false;
private boolean isUsed = false;
private DecimalFormat form = new DecimalFormat("#.##");
/** A boolean variable that indicates whether to draw
* the handles of the objects or not.
*/
private boolean withHandles;
/** A boolean variable that indicates whether to draw
* the visual aid on arcs, blobs and vertices.
*/
private boolean withVisualAid;
private double[] oldbb;
private int nofclicks = 0;
private int archand = 0;
private int[] points = new int[6];
private int evX;
private int evY;
private boolean pointsON;
private static boolean start = false;
// uzer zooming
private static double startUSERx=0.0;
private static double startUSERy=0.0;
private static int zoomPADx=-1;
private static int zoomPADy=-1;
private static String padInfo="pad[1,1]";
private static int padX=-1;
private static int padY=-1;
private VectorGraphics g2;
private static JaAxes jaxes=null;
protected JPopupMenu menu;
public JMenuItem m_info, m_data, m_axes, m_refresh, m_clear;
/** Constructs a new canvas within the specified panel.
* @param mainPanel An instance of the main panel.
*/
public JaxoCanvas(JaxoMainPanel mainPanel) {
super();
this.thePanel = mainPanel;
this.setBackground(JaxoColor.WHITE);
int prefSCREENSIZEX = JaxoPrefs.getIntPref(JaxoPrefs.PREF_SCREENSIZEX);
int prefSCREENSIZEY = JaxoPrefs.getIntPref(JaxoPrefs.PREF_SCREENSIZEY);
this.setPreferredSize(new Dimension(prefSCREENSIZEX, prefSCREENSIZEY));
this.addComponentListener(this);
menu = new JPopupMenu();
m_info = new JMenuItem(padInfo);
m_info.setEnabled(false);
m_info.setForeground(Color.blue);
m_axes = new JMenuItem("Edit axes");
m_data = new JMenuItem("Edit data");
m_refresh = new JMenuItem("Refresh");
m_clear = new JMenuItem("Clear");
m_refresh.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(
java.awt.event.ActionEvent evt) {
thePanel.update();
}
});
m_axes.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(
java.awt.event.ActionEvent evt) {
if (jaxes != null) {
boolean ischanged=jaxes.editPanel();
if (ischanged) thePanel.update();
} }
});
m_data.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(
java.awt.event.ActionEvent evt) {
if (jaxes != null) {
DataBrowser db = new DataBrowser(jaxes,thePanel);
db.showIt(true);
}
}
});
m_clear.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(
java.awt.event.ActionEvent evt) {
if (padX>-1 && padY>-1) {
thePanel.clearData(padX,padY);
thePanel.update();
}
}
});
menu.add(m_info);
menu.addSeparator();
menu.add(m_axes);
menu.add(m_data);
menu.add(m_refresh);
menu.add(m_clear);
// this.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
}
/** Sets the current graph.
* @param theGraph The graph to be set.
*/
public final void setCanvasGraph(JaxoGraph theGraph) {
this.canvasGraph = theGraph;
}
/** Returns the current graph.
* @return The current graph.
*/
public final JaxoGraph getCanvasGraph() {
return this.canvasGraph;
}
/** Sets the current tick.
* @param theTick The current tick.
*/
public final void setCanvasTick(String theTick) {
this.canvasTick = theTick;
}
/** Returns the current tick.
* @return The current tick.
*/
public final String getCanvasTick() {
return this.canvasTick;
}
/** Returns the current drag mode.
* @return The current drag mode.
*/
public final int getDragMode() {
return curDragMode;
}
/** Sets the current drag mode.
* @param newDragMode The drag mode to be set.
*/
public final void setDragMode(int newDragMode) {
curDragMode = newDragMode;
}
/** Returns the old bounding box of the object.
* @return The bounding box of the object befor dragging.
*/
public final double[] getOldbb() {
return oldbb;
}
/** Sets the old bounding box of the object.
* @param bb The old bounding box of the object
*/
public final void setOldbb(double[] bb) {
this.oldbb = bb;
}
/** Updates the canvas by just calling paintComponent.
* @param g The specified graphics context.
*/
public final void update(Graphics g) {
paintComponent(g);
}
/** Paints the canvas.
* @param g The specified graphics context.
*/
public final void paintComponent(Graphics g) {
g2 = VectorGraphics.create(g);
createBackground(); // draw backg
createScreen();
g2.clipRect(0, 0, this.getWidth(), this.getHeight());
int mouseMode = getDragMode();
if ((mouseMode == JaxoMainPanel.MOVE)
|| (mouseMode == JaxoMainPanel.RESIZE)) {
JaObject ob = canvasGraph.getSelectedObject();
if (ob != null) {
if (Plot.drawFirst(ob)) ob.jaxoDraw(g2, true);
Plot.drawRest(ob,g2,true);
}
}
if (withVisualAid) {
JaObject selectedOb = canvasGraph.getSelectedObject();
if (selectedOb != null) {
selectedOb.drawVisualAid(g2);
}
}
if (withHandles) {
canvasGraph.drawHandles(g2);
}
if (thePanel.getMode() == JaxoMainPanel.UNGROUP) {
canvasGraph.drawGroupHandles(g2);
}
if (fboxON) {
drawFaintBox(g2);
}
if (pointsON) {
drawPointsAid(g2);
}
g2.setClip(null);
}
/** Returns the current offScreenImage.
* @return The current offScreenImage.
*/
public final Image getOffScreenImage() {
// return offScreenImage;
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
offScreenImage = createImage(d.width, d.height);
return offScreenImage;
}
/** Creates a new offScreenImage. */
private void createOffScreenImage() {
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
// offScreenImage = createImage(d.width, d.height);
if (g2 == null) return;
// Graphics2D g2 = (Graphics2D)offScreenImage.getGraphics();
// VectorGraphics g2 = (VectorGraphics)offScreenImage.getGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
JaxoGraph actCanGraph = getCanvasGraph();
for (int i = 0; i < actCanGraph.listSize(); i++) {
JaObject jaxoOb = (JaObject) actCanGraph.listElementAt(i);
if (Plot.drawFirst(jaxoOb)) jaxoOb.jaxoDraw(g2, true);
Plot.drawRest(jaxoOb,g2,true);
}
// g2.dispose();
// repaint();
// thePanel.reset();
}
/** Plot all. */
private void createScreen() {
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
// offScreenImage = createImage(d.width, d.height);
if (g2 == null) return;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
JaxoGraph actCanGraph = getCanvasGraph();
for (int i = 0; i < actCanGraph.listSize(); i++) {
JaObject jaxoOb = (JaObject) actCanGraph.listElementAt(i);
if (Plot.drawFirst(jaxoOb)) jaxoOb.jaxoDraw(g2, true);
Plot.drawRest(jaxoOb,g2,true);
}
// g2.dispose();
// repaint();
// thePanel.reset();
}
public void setBackgroundBox(Color c) {
BCKG_COLOR=c;
}
public Color getBackgroundBox() {
return BCKG_COLOR;
}
/** Creates a backup of the offScreenImage. */
private void createBackground() {
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
// g2.setColor(BCKG_COLOR);
Rectangle2D rect = new Rectangle2D.Double(0, 0, d.width, d.height);
g2.setPaint(BCKG_COLOR);
g2.fill(rect);
//g2.fillRect(0, 0, d.width, d.height);
g2.setColor(Color.black);
if (JaxoPrefs.getBooleanPref(JaxoPrefs.PREF_GRIDONOFF)) {
grid.jaxoDrawGrid(g2);
}
// g2.dispose();
}
/** Copies the offScreenImage to backupOffScreenImage. */
public final void dispose() {
clearOffScreenImage();
if ( g2 == null) return;
// Graphics2D g2 = (Graphics2D) offScreenImage.getGraphics();
// VectorGraphics g2 = (VectorGraphics) offScreenImage.getGraphics();
// offScreenImage.flush();
g2.dispose();
// offScreenImage=null;
}
/** Copies the offScreenImage to backupOffScreenImage. */
public final void saveBackupImage() {
if (g2 == null) {
createBackground();
}
}
/** Swaps the current offScreenImage with the backupImage. */
public final void swapImages() {
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
Image tmpImage = createImage(d.width, d.height);
tmpImage.getGraphics().drawImage(offScreenImage, 0, 0, null);
offScreenImage.getGraphics().drawImage(backupImage, 0, 0, null);
backupImage.getGraphics().drawImage(tmpImage, 0, 0, null);
tmpImage.flush();
}
/** Clears the offScreenImage. */
public final void clearOffScreenImage() {
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
if (g2 == null) return;
// Graphics2D g2 = (Graphics2D) offScreenImage.getGraphics();
// VectorGraphics g2 = ( VectorGraphics) offScreenImage.getGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(BCKG_COLOR);
g2.fillRect(0, 0, d.width, d.height);
g2.setColor(Color.black);
if (JaxoPrefs.getBooleanPref(JaxoPrefs.PREF_GRIDONOFF)) {
grid.jaxoDrawGrid(g2);
}
g2.dispose();
}
/** Updates the offScreenImage within the current clipping area. */
public final void updateOffScreenImage() {
// Graphics2D g2 = (Graphics2D) offScreenImage.getGraphics();
// VectorGraphics g2 = ( VectorGraphics) offScreenImage.getGraphics();
if (g2==null) return;
if (JaxoPrefs.getBooleanPref(JaxoPrefs.PREF_ANTIALIAS)) {
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
}
g2.setClip((int) oldbb[0] - 5, (int) oldbb[1] - 5,
(int) (oldbb[2] - oldbb[0]) + 10, (int) (oldbb[3] - oldbb[1]) + 10);
g2.setColor(BCKG_COLOR);
g2.fillRect((int) oldbb[0] - 5, (int) oldbb[1] - 5,
(int) (oldbb[2] - oldbb[0]) + 10, (int) (oldbb[3] - oldbb[1]) + 10);
if (JaxoPrefs.getBooleanPref(JaxoPrefs.PREF_GRIDONOFF)) {
grid.jaxoDrawGrid(g2);
}
Rectangle oldrect =
new Rectangle((int) oldbb[0] - 5, (int) oldbb[1] - 5,
(int) (oldbb[2] - oldbb[0]) + 10,
(int) (oldbb[3] - oldbb[1]) + 10);
for (int i = 0; i < canvasGraph.listSize(); i++) {
JaObject jaxoOb = (JaObject) canvasGraph.listElementAt(i);
double[] bb;
bb = jaxoOb.getBoundingBox();
Rectangle rectOb =
new Rectangle((int) bb[0] - 5, (int) bb[1] - 5,
(int) (bb[2] - bb[0]) + 10, (int) (bb[3] - bb[1]) + 10);
if (rectOb.intersects(oldrect)) {
g2.setClip((int) bb[0] - 5, (int) bb[1] - 5,
(int) (bb[2] - bb[0]) + 10, (int) (bb[3] - bb[1]) + 10);
if (Plot.drawFirst(jaxoOb)) jaxoOb.jaxoDraw(g2, true);
Plot.drawRest(jaxoOb, g2, true);
}
}
repaint();
g2.dispose();
// offScreenImage.flush();
}
/** Updates the offScreenImage without drawing selectedOb.
* @param selectedOb The JaObject to be excluded from the update.
*/
public final void updateOffScreenImage(JaObject selectedOb) {
// Graphics2D g2 = (Graphics2D) offScreenImage.getGraphics();
// VectorGraphics g2 = ( VectorGraphics) offScreenImage.getGraphics();
if (g2==null) return;
if (JaxoPrefs.getBooleanPref(JaxoPrefs.PREF_ANTIALIAS)) {
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
}
g2.setClip((int) oldbb[0] - 5, (int) oldbb[1] - 5,
(int) (oldbb[2] - oldbb[0]) + 10, (int) (oldbb[3] - oldbb[1]) + 10);
g2.setColor(BCKG_COLOR);
g2.fillRect((int) oldbb[0] - 5, (int) oldbb[1] - 5,
(int) (oldbb[2] - oldbb[0]) + 10, (int) (oldbb[3] - oldbb[1]) + 10);
if (JaxoPrefs.getBooleanPref(JaxoPrefs.PREF_GRIDONOFF)) {
grid.jaxoDrawGrid(g2);
}
Rectangle oldrect =
new Rectangle((int) oldbb[0] - 5, (int) oldbb[1] - 5,
(int) (oldbb[2] - oldbb[0]) + 10,
(int) (oldbb[3] - oldbb[1]) + 10);
for (int i = 0; i < canvasGraph.listSize(); i++) {
JaObject jaxoOb = (JaObject) canvasGraph.listElementAt(i);
if (jaxoOb != selectedOb) {
double[] bb;
bb = jaxoOb.getBoundingBox();
Rectangle rectOb =
new Rectangle((int) bb[0] - 5, (int) bb[1] - 5,
(int) (bb[2] - bb[0]) + 10, (int) (bb[3] - bb[1]) + 10);
if (rectOb.intersects(oldrect)) {
g2.setClip((int) bb[0] - 5, (int) bb[1] - 5,
(int) (bb[2] - bb[0]) + 10, (int) (bb[3] - bb[1]) + 10);
if (Plot.drawFirst(jaxoOb)) jaxoOb.jaxoDraw(g2, true); // sss
Plot.drawRest(jaxoOb, g2, true);
}
}
}
repaint();
g2.dispose();
}
/** Determines which objects should be selected as belonging to a group (ie, whose
* handles are to be painted gray), when the mouse is dragged withthe middle or
* right button.
* @param e The mouse event
*/
private void selectObjectsToGroup(MouseEvent e) {
lastY = e.getY();
lastX = e.getX();
JaObject newSelectedOb = null;
int i = canvasGraph.listSize();
while ((newSelectedOb == null) && (i >= 1)) {
i--;
JaObject curOb = (JaObject) canvasGraph.listElementAt(i);
if (curOb != null) {
int grabStatus =
curOb.getGrabbedHandle(lastX, lastY, JaxoMainPanel.MOVE);
if (grabStatus != JaObject.SELECT_NONE) {
newSelectedOb = curOb;
newSelectedOb.setAsMarked(!newSelectedOb.isMarked());
repaint();
canvasGraph.setSelectedObject(curOb);
}
setStartCoordinates();
}
}
}
/** Select the object when the mouse is clicked or pressed by comparing
* to see if the coordinates of the mouse is in the rectangular area
* of each object. Loop through the current list of object from the
* end to the beginning. If the mouse is in the rectangle of more
* than one object, then the object created later will be selected.
* @param e the mouse event
* @param editmode The current edit mode
*/
private void selectObject(MouseEvent e, int editmode) {
lastY = e.getY();
lastX = e.getX();
JaObject newSelectedOb = null;
int i = canvasGraph.listSize();
while ((newSelectedOb == null) && (i >= 1)) {
i--;
JaObject curOb = (JaObject) canvasGraph.listElementAt(i);
if (curOb != null) {
int grabStatus =
curOb.getGrabbedHandle(lastX, lastY, editmode);
if (grabStatus != JaObject.SELECT_NONE) {
newSelectedOb = curOb;
canvasGraph.setSelectedObject(curOb);
if (grabStatus == JaObject.SELECT_BODY) {
setDragMode(JaxoMainPanel.MOVE);
} else {
if (grabStatus == JaObject.SELECT_UL) {
setDragMode(JaxoMainPanel.RESIZE);
curHandle = HANDLE_UL;
} else if (grabStatus == JaObject.SELECT_UR) {
setDragMode(JaxoMainPanel.RESIZE);
curHandle = HANDLE_UR;
} else if (grabStatus == JaObject.SELECT_LR) {
setDragMode(JaxoMainPanel.RESIZE);
curHandle = HANDLE_LR;
} else if (grabStatus == JaObject.SELECT_LL) {
setDragMode(JaxoMainPanel.RESIZE);
curHandle = HANDLE_LL;
} else { //SKEL
archand = grabStatus;
setDragMode(JaxoMainPanel.RESIZE);
}
}
setStartCoordinates();
}
}
}
saveBackupImage();
canvasGraph.setBackupList(canvasGraph.copyFrom(
canvasGraph.getObjectList()));
canvasGraph.setBackupSelectedObject(canvasGraph.getSelectedObject());
canvasGraph.setSelectedObject(newSelectedOb);
lastY = e.getY();
lastX = e.getX();
}
/** Set the reference coordinates.
* If the lower right conner is grabbed, the reference coords
* should be the upper left and vice versa;
* if the lower left conner is grabbbed, the reference coords should
* be the upper right and vice versa.
*/
private void setStartCoordinates() {
JaObject selectedOb = canvasGraph.getSelectedObject();
if (selectedOb == null) {
return;
}
Dimension d = selectedOb.getSize();
int handle = curHandle;
// Upper left x and y coords of the rectangle of the object
startY = selectedOb.getY();
startX = selectedOb.getX();
// If the upper left or upper right handle is selected,
// then the reference coords should be the lower right or lower left.
// Therefore, increase the y coords of the reference.
if ((handle == HANDLE_UR) || (handle == HANDLE_UL)) {
startY += d.height;
}
// If the lower left or lower right handle is selected,
// then the reference coords should be the uper right or lower right.
// Therefore, increase the x coords of the reference.
if ((handle == HANDLE_LL) || (handle == HANDLE_UL)) {
startX += d.width;
}
}
/** Show mouse coordinates
* @param e The corresponding mouse event.
*/
public final void showCoordinates(MouseEvent e) {
// show location
evX = e.getX();
evY = e.getY();
padX=-1;
padY=-1;
String ss1 = form.format( Global.toX(evX) );
String ss2 = form.format( Global.toY(evY) );
String ss3=padInfo;
String mess="NDC(" + ss1 + "," + ss2 + ")";
thePanel.setFlagPanelCoordinates(mess);
for (int i = 0; i < canvasGraph.listSize(); i++) {
JaObject jaxoOb = (JaObject) canvasGraph.listElementAt(i);
// mark pads
if (jaxoOb instanceof JaAxes) {
if (evX>jaxoOb.getX() && evXjaxoOb.getY() && evY 1) {
saveBackupImage();
canvasGraph.setBackupList(canvasGraph.copyFrom(
canvasGraph.getObjectList()));
double[] groupBounds = getGroupBounds(groupObjects);
JaxoGroup newGroup = new JaxoGroup();
newGroup.setObList(groupObjects);
newGroup.setX((int) groupBounds[0]);
newGroup.setY((int) groupBounds[1]);
newGroup.setRelw((int) Math.round((groupBounds[2]
- groupBounds[0])));
newGroup.setRelh((int) Math.round((groupBounds[3]
- groupBounds[1])));
newGroup.setAvailableFonts(JaxoStaticCanvasMethods.getSystemFonts());
removeFromGraph(groupObjects);
JaObject newob = (JaObject) newGroup;
canvasGraph.setBackupSelectedObject(newob);
canvasGraph.addObject(newob);
canvasGraph.setSelectedObject(newob);
setDragMode(JaxoMainPanel.STANDBY);
withHandles = true;
withVisualAid = false;
repaint();
curHandle = HANDLE_LR;
setStartCoordinates();
oldbb = newGroup.getBoundingBox();
lastY = e.getY();
lastX = e.getX();
}
setDefaultAction();
}
if ((((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0) && fboxON)
|| (
((e.getModifiers() & InputEvent.BUTTON3_MASK) != 0)
&& fboxON
)) {
fboxON = false;
thePanel.getClipboard().clear();
canvasGraph.setAsMarked(false);
}
if (((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0) && !fboxON) {
if (currentMode == JaxoMainPanel.STANDBY) {
return;
} else if (currentMode == JaxoMainPanel.GROUP) {
selectObjectsToGroup(e);
setDragMode(JaxoMainPanel.STANDBY);
} else if (currentMode == JaxoMainPanel.UNGROUP) {
selectObject(e, JaxoMainPanel.MOVE);
JaObject ob = canvasGraph.getSelectedObject();
if ((ob != null) && ob instanceof JaxoGroup) {
JaxoGroup tempg = (JaxoGroup) ob;
for (int i = 0; i < tempg.groupObListSize(); i++) {
JaObject tempob =
(JaObject) tempg.getObList().elementAt(i);
tempob.setAsMarked(false);
canvasGraph.addObject(tempob);
}
canvasGraph.delete(tempg);
}
for (int j = 0; j < canvasGraph.listSize(); j++) {
JaObject jaxoOb =
(JaObject) canvasGraph.listElementAt(j);
if (jaxoOb instanceof JaLatexText) {
((JaLatexText) jaxoOb).createLatexPanel();
this.add(((JaLatexText) jaxoOb).getLatexPanel());
((JaLatexText) jaxoOb).getLatexPanel().setVisible(false);
}
}
withHandles = false;
unsavedCanvas();
setDefaultAction();
repaint();
} else if (currentMode == JaxoMainPanel.MOVE) {
JaObject selectedOb = canvasGraph.getSelectedObject();
if (selectedOb != null) {
oldbb = selectedOb.getBoundingBox();
}
} else if (currentMode == JaxoMainPanel.RESIZE) {
selectObject(e, JaxoMainPanel.MOVE);
JaObject ob = canvasGraph.getSelectedObject();
if ((ob != null) && ob instanceof JaxoGroup) {
JaxoRescalePanel rescalep =
new JaxoRescalePanel((JaxoGroup) ob);
oldbb = ((JaxoGroup) ob).getBoundingBox();
updateOffScreenImage();
oldbb = ((JaxoGroup) ob).getBoundingBox();
updateOffScreenImage();
if (rescalep.hasChanged()) {
unsavedCanvas();
}
}
} else if (currentMode == JaxoMainPanel.COPY) {
selectObject(e, currentMode);
} else if (currentMode == JaxoMainPanel.COLOR) {
selectObject(e, JaxoMainPanel.COPY);
JaObject selectedOb = canvasGraph.getSelectedObject();
if (selectedOb != null) {
showColorChooser(selectedOb);
}
} else if (currentMode == JaxoMainPanel.DELETE) {
selectObject(e, JaxoMainPanel.MOVE);
JaObject ob = canvasGraph.getSelectedObject();
saveBackupImage();
canvasGraph.setBackupSelectedObject(ob);
canvasGraph.setBackupList(canvasGraph.copyFrom(
canvasGraph.getObjectList()));
if (ob != null) {
oldbb = canvasGraph.getSelectedObject().getBoundingBox();
canvasGraph.delete(ob);
updateOffScreenImage();
if (ob instanceof JaLatexText) {
((JaLatexText) ob).getLatexPanel().setVisible(false);
}
}
unsavedCanvas();
setDefaultAction();
setDragMode(JaxoMainPanel.STANDBY);
} else if (currentMode == JaxoMainPanel.BACKGROUND) {
selectObject(e, JaxoMainPanel.MOVE);
saveBackupImage();
canvasGraph.setBackupSelectedObject(canvasGraph
.getSelectedObject());
canvasGraph.setBackupList(canvasGraph.copyFrom(
canvasGraph.getObjectList()));
if (canvasGraph.getSelectedObject() != null) {
canvasGraph.background(canvasGraph.getSelectedObject());
oldbb = canvasGraph.getBoundingBox();
updateOffScreenImage();
}
setDefaultAction();
setDragMode(JaxoMainPanel.STANDBY);
} else if (currentMode == JaxoMainPanel.FOREGROUND) {
selectObject(e, JaxoMainPanel.MOVE);
saveBackupImage();
canvasGraph.setBackupSelectedObject(canvasGraph
.getSelectedObject());
canvasGraph.setBackupList(canvasGraph.copyFrom(
canvasGraph.getObjectList()));
if (canvasGraph.getSelectedObject() != null) {
canvasGraph.foreground(canvasGraph.getSelectedObject());
oldbb = canvasGraph.getBoundingBox();
updateOffScreenImage();
}
setDefaultAction();
setDragMode(JaxoMainPanel.STANDBY);
} else if (thePanel.getMode() == JaxoMainPanel.EDIT) {
selectObject(e, JaxoMainPanel.MOVE);
JaObject selectedOb = canvasGraph.getSelectedObject();
// System.out.println("Debug= select");
if (selectedOb != null) {
oldbb = selectedOb.getBoundingBox();
saveBackupImage();
canvasGraph.setBackupSelectedObject(selectedOb);
canvasGraph.setBackupList(canvasGraph.copyFrom(
canvasGraph.getObjectList()));
boolean hasChanged = selectedOb.editPanel();
updateOffScreenImage();
oldbb = selectedOb.getBoundingBox();
updateOffScreenImage();
if (selectedOb instanceof JaLatexText) {
((JaLatexText) selectedOb).setLatexLabel(" "
+ ((JaLatexText) selectedOb).getTextString()
+ " ");
}
if (hasChanged) {
unsavedCanvas();
}
}
setDefaultAction();
setDragMode(JaxoMainPanel.STANDBY);
}
}
// System.out.println("Debug: Mouse clicked");
}
/** The action to be taken when the mouse is pressed on the canvas.
* @param e The corresponding mouse event.
*/
public final void mousePressed(MouseEvent e) {
// nofclicks must be implemented only upon a left click!
if((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0) {
nofclicks++;
}
int currentMode = thePanel.getMode(); // JaObject to be created
zoomPADx=-1;
zoomPADy=-1;
// chekanov zoomin
if (((e.getModifiers() & InputEvent.BUTTON2_MASK) != 0) ) {
if (currentMode != JaxoMainPanel.ZOOM &&
currentMode != JaxoMainPanel.MOVE &&
currentMode != JaxoMainPanel.COPY &&
currentMode != JaxoMainPanel.RESIZE &&
currentMode != JaxoMainPanel.GROUP
) {
int evX = e.getX();
int evY = e.getY();
for (int i = 0; i < canvasGraph.listSize(); i++) {
JaObject jaxoOb = (JaObject) canvasGraph.listElementAt(i);
// mark pads
if (jaxoOb instanceof JaAxes) {
if (evX>jaxoOb.getX() && evXjaxoOb.getY() && evY-1 && zoomPADy>-1) {
int evX = e.getX();
int evY = e.getY();
// System.out.println("Debug: Releaze mouse");
for (int i = 0; i < canvasGraph.listSize(); i++) {
JaObject jaxoOb = (JaObject) canvasGraph.listElementAt(i);
// System.out.println(jaxoOb.toString());
// mark pads
if (jaxoOb instanceof JaAxes) {
int n1= ((JaAxes)jaxoOb).getPad(0);
int n2= ((JaAxes)jaxoOb).getPad(1);
// System.out.println(n1);
// System.out.println(n2);
if (n1 == zoomPADx && n2 == zoomPADy) {
if (evX>jaxoOb.getX() && evXjaxoOb.getY() && evYx) ja.setRange(0,x,startUSERx);
if (startUSERyy) ja.setRange(1,y,startUSERy);
if (ja.isContour()==true) {
if (ja.getPlotType()==LinePars.CONTOUR) ja.parseContour();
if (ja.getPlotType()==LinePars.H2D) ja.parseH2D();
}
zoom_done=true;
zoomPADx=-1;
zoomPADy=-1;
}
} }
if (jaxoOb instanceof JaLatexText) {
if (((JaLatexText) jaxoOb).isRolledOver(e.getX(), e.getY())) {
((JaLatexText) jaxoOb).getLatexPanel().setVisible(true);
} else {
((JaLatexText) jaxoOb).getLatexPanel().setVisible(false);
}
}
}
}
} // end start zoomin
// update image
if (zoom_done) update();
if (currentMode == JaxoMainPanel.ZOOM) {
JaxoZoom zoom = thePanel.getZoom();
zoom.eraseZoomWindow();
}
// Remove the faintbox; build the group.
if (((e.getModifiers() & InputEvent.BUTTON2_MASK) != 0) && fboxON) {
fboxON = false;
thePanel.getClipboard().clear();
// Construct the group with the marked objects
Vector groupObjects = buildGroupList();
if (groupObjects.size() > 1) {
saveBackupImage();
canvasGraph.setBackupList(canvasGraph.copyFrom(
canvasGraph.getObjectList()));
double[] groupBounds = getGroupBounds(groupObjects);
JaxoGroup newGroup = new JaxoGroup();
newGroup.setObList(groupObjects);
newGroup.setX((int) groupBounds[0]);
newGroup.setY((int) groupBounds[1]);
newGroup.setRelw((int) Math.round((groupBounds[2]
- groupBounds[0])));
newGroup.setRelh((int) Math.round((groupBounds[3]
- groupBounds[1])));
newGroup.setAvailableFonts(JaxoStaticCanvasMethods.getSystemFonts());
removeFromGraph(groupObjects);
JaObject newob = (JaObject) newGroup;
canvasGraph.setBackupSelectedObject(newob);
canvasGraph.addObject(newob);
canvasGraph.setSelectedObject(newob);
oldbb = newGroup.getBoundingBox();
}
canvasGraph.setAsMarked(false);
repaint();
}
if (((e.getModifiers() & InputEvent.BUTTON3_MASK) != 0) && fboxON) {
fboxON = false;
canvasGraph.setAsMarked(false);
repaint();
}
if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0) {
if (fboxON) {
fboxON = false;
canvasGraph.setAsMarked(false);
repaint();
}
if ((currentMode == JaxoMainPanel.MOVE)
|| (currentMode == JaxoMainPanel.COPY)) {
withHandles = true;
withVisualAid = false;
drawSelectedObject();
setDefaultAction();
} else if ((currentMode == JaxoMainPanel.FLOOP)
|| (currentMode == JaxoMainPanel.PLOOP)
|| (currentMode == JaxoMainPanel.SLOOP)
|| (currentMode == JaxoMainPanel.GLLOOP)
|| (currentMode == JaxoMainPanel.GLOOP)
|| (currentMode == JaxoMainPanel.FLINE)
|| (currentMode == JaxoMainPanel.SLINE)
|| (currentMode == JaxoMainPanel.GLINE)
|| (currentMode == JaxoMainPanel.GLLINE)
|| (currentMode == JaxoMainPanel.PLINE)
|| (
(currentMode == JaxoMainPanel.SARC)
&& ((nofclicks % 3) == 0)
)
|| (
(currentMode == JaxoMainPanel.GARC)
&& ((nofclicks % 3) == 0)
)
|| (
(currentMode == JaxoMainPanel.GLARC)
&& ((nofclicks % 3) == 0)
)
|| (
(currentMode == JaxoMainPanel.PARC)
&& ((nofclicks % 3) == 0)
)
|| (
(currentMode == JaxoMainPanel.FARC)
&& ((nofclicks % 3) == 0)
)
|| (
(currentMode == JaxoMainPanel.VERTEX)
&& (
(
thePanel.getVertexType() == JaxoMainPanel.VERTEXT1
)
|| (
thePanel.getVertexType() == JaxoMainPanel.VERTEXT2
)
|| (
thePanel.getVertexType() == JaxoMainPanel.VERTEXT3
)
|| (
thePanel.getVertexType() == JaxoMainPanel.VERTEXT4
)
|| (
(
thePanel.getVertexType() == JaxoMainPanel.VERTEXT5
) && ((nofclicks % 3) == 0)
)
|| (
thePanel.getVertexType() == JaxoMainPanel.VERTEXT6
)
)
) || (currentMode == JaxoMainPanel.BOX)
|| (currentMode == JaxoMainPanel.BLOB)
|| (currentMode == JaxoMainPanel.ZIGZAG)) {
if (!fboxON) {
withHandles = false;
withVisualAid = false;
drawSelectedObject();
setDefaultAction();
}
} else if (getDragMode() == JaxoMainPanel.RESIZE) {
JaObject ob = canvasGraph.getSelectedObject();
if (ob != null) {
if (ob instanceof JaFLine || ob instanceof JaSLine
|| ob instanceof JaGLine) {
JaLineObject lineObject = (JaLineObject) ob;
if (lineObject.getBack()) {
lineObject.setRelWAndH(-lineObject.getRelw(),
-lineObject.getRelh());
lineObject.setInflip(!lineObject.getInflip());
lineObject.setBack(false);
}
} else if (ob instanceof JaGlLine) {
JaGlLine glLineObject = (JaGlLine) ob;
if (glLineObject.getBack()) {
glLineObject.setRelWAndH(-glLineObject.getRelw(),
-glLineObject.getRelh());
glLineObject.setAngamp(-glLineObject.getAngamp());
glLineObject.setBack(false);
}
} else if (ob instanceof JaArcObject) {
JaArcObject arcOb = (JaArcObject) ob;
arcOb.setIsResizing(false);
}
withVisualAid = false;
withHandles = true;
// chekanov: determin proper coordinates
// ob.updateNDC();
if (Plot.drawFirst(ob)) drawObject(ob);
drawRest(ob);
setDefaultAction();
}
}
}
}
/** The action to be taken when the mouse exits the canvas.
* @param e The corresponding mouse event.
*/
public final void mouseExited(MouseEvent e) {
// return;
}
/** The action to be taken when the mouse enters the canvas.
* @param e The corresponding mouse event.
*/
public final void mouseEntered(MouseEvent e) {
// return;
}
/** The action to be taken when the mouse is moved on the canvas.
* @param e The corresponding mouse event.
*/
public final void mouseMoved(MouseEvent e) {
evX = e.getX();
evY = e.getY();
if (pointsON) {
if (thePanel.getSnap()) {
evY = grid.snapY(evY);
evX = grid.snapX(evX);
}
repaint();
}
}
/**
* Redraw all components
*/
public void update() {
clearOffScreenImage();
updateObjectLocation();
}
/** Sets the size of the grid to the given value.
* @param gs The grid size to be set.
*/
public final void setGridSize(int gs) {
grid.setGridSize(gs);
}
/** Returns the current size of the grid.
* @return The grid size.
*/
public final int getGridSize() {
return grid.getGridSize();
}
/** Sets the type of the grid.
* @param type The type of the grid to be set.
*/
public final void setGridType(boolean type) {
grid.setGridType(type);
}
/** Returns the current type of the grid.
* @return The type of the grid.
*/
public final boolean getGridType() {
return grid.getGridType();
}
/** Draws a light grey box that is used for grouping objects.
* @param g2 The graphics context to draw
*/
private void drawFaintBox(VectorGraphics g2) {
thePanel.getClipboard().clear();
int width = fboxX - lastX;
int height = fboxY - lastY;
Rectangle faintbox;
if (height < 0) {
if (width < 0) {
faintbox = new Rectangle(fboxX, fboxY, -width, -height);
} else {
faintbox = new Rectangle(lastX, fboxY, width, -height);
}
} else {
if (width < 0) {
faintbox = new Rectangle(fboxX, lastY, -width, height);
} else {
faintbox = new Rectangle(lastX, lastY, width, height);
}
}
g2.setColor(JaxoColor.GRAYSCALE150);
g2.setStroke(new BasicStroke(1.f));
g2.draw(faintbox);
double[] bb;
for (int i = 0; i < canvasGraph.listSize(); i++) {
JaObject jaxoOb = (JaObject) canvasGraph.listElementAt(i);
bb = jaxoOb.getBoundingBox();
Rectangle rectOb =
new Rectangle((int) bb[0] - 5, (int) bb[1] - 5,
(int) (bb[2] - bb[0]) + 5, (int) (bb[3] - bb[1]) + 5);
if (faintbox.contains(rectOb)) {
thePanel.getClipboard().addObject(jaxoOb.copy());
jaxoOb.setAsMarked(true);
} else {
thePanel.getClipboard().delete(jaxoOb);
jaxoOb.setAsMarked(false);
}
}
}
/** Returns a group.
* @return A vector of JaxoObjects that have been marked for grouping
*/
private Vector buildGroupList() {
Vector groupObjects = new Vector(5, 5);
for (int i = 0; i < canvasGraph.listSize(); i++) {
JaObject ob = (JaObject) canvasGraph.getObjectList().get(i);
if (ob.isMarked()) {
groupObjects.add(ob);
}
}
return groupObjects;
}
/** Returns the bounding box of a group.
* @param groupObList the list of JaxoObjects in the group
* @return An array containg the bounding box
*/
private double[] getGroupBounds(Vector groupObList) {
double minX = 0.;
double maxX = 1.;
double minY = 0.;
double maxY = 1.;
double[] bBox = {minX, maxX, minY, maxY};
int length = groupObList.size();
for (int i = 0; i < length; i++) {
JaObject ob = (JaObject) groupObList.elementAt(i);
bBox = ob.getBoundingBox();
if (i == 0) {
minX = bBox[0];
minY = bBox[1];
maxX = bBox[2];
maxY = bBox[3];
} else {
if (bBox[0] < minX) {
minX = bBox[0];
}
if (bBox[1] < minY) {
minY = bBox[1];
}
if (bBox[2] > maxX) {
maxX = bBox[2];
}
if (bBox[3] > maxY) {
maxY = bBox[3];
}
}
}
bBox[0] = minX;
bBox[1] = minY;
bBox[2] = maxX;
bBox[3] = maxY;
return bBox;
}
/** Removes the JaxoObjects in the vector obList from the current graph.
* @param obList A vector containg JaxoObjects.
*/
private void removeFromGraph(Vector obList) {
for (int i = 0; i < obList.size(); i++) {
JaObject jaxoOb = (JaObject) obList.elementAt(i);
if (jaxoOb instanceof JaLatexText) {
((JaLatexText) jaxoOb).getLatexPanel().setVisible(false);
}
canvasGraph.delete((JaObject) obList.elementAt(i));
}
}
/** Indicates that the canvas contains a graph that is not saved. */
public final void unsavedCanvas() {
canvasGraph.setSaved(false);
isUsed = true;
thePanel.getCanvasPanel().setModifiedIcon(thePanel.getCanvasPanel()
.indexOfComponent(this));
}
/** Indicates whether the current canvas has been used.
* @return True, if the canvas has been modified, false otherwise.
*/
public final boolean hasBeenUsed() {
return isUsed;
}
/** Indicates whether handles are drawn.
* @return True, if handles are drawn, false otherwise.
*/
public final boolean isWithHandles() {
return withHandles;
}
/** Sets handles to draw or not.
@param draw True, if handles should be drawn, false otherwise.
*/
public final void drawWithHandles(boolean draw) {
this.withHandles = draw;
}
/** Indicates whether the visual aid is drawn.
* @return True, if the visual aid is drawn, false otherwise.
*/
public final boolean isWithVisualAid() {
return withVisualAid;
}
/** Sets the visual aid to draw or not.
@param draw True, if the visual aid should be drawn, false otherwise.
*/
public final void drawVisualAid(boolean draw) {
this.withVisualAid = draw;
}
private void drawText(JaObject newob, boolean drawToScreen) {
// Graphics2D g2 = (Graphics2D) offScreenImage.getGraphics();
VectorGraphics g2 = ( VectorGraphics) offScreenImage.getGraphics();
if (JaxoPrefs.getBooleanPref(JaxoPrefs.PREF_ANTIALIAS)) {
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
}
if (Plot.drawFirst(newob)) newob.jaxoDraw(g2, drawToScreen);
Plot.drawRest(newob, g2, drawToScreen);
}
/** Sets the text in different languages.
* @param languageString A string specifying the language to be set.
*/
public final void setLanguage(String languageString) {
this.language = ResourceBundle.getBundle(languageString);
}
private void reSnap(JaObject ob) {
int cx = 0;
int cy = 0;
int qx = 0;
int qy = 0;
if ((ob.getRelw() >= 0) && (ob.getRelh() > 0)) {
cx = ob.getX();
cy = ob.getY();
} else if ((ob.getRelw() > 0) && (ob.getRelh() <= 0)) {
cx = ob.getX();
cy = ob.getY() + ob.getHeight();
} else if ((ob.getRelw() <= 0) && (ob.getRelh() < 0)) {
cx = ob.getX() + ob.getWidth();
cy = ob.getY() + ob.getHeight();
} else if ((ob.getRelw() < 0) && (ob.getRelh() >= 0)) {
cx = ob.getX() + ob.getWidth();
cy = ob.getY();
}
// Snap first y and then x because the order for an hexagonal grid
// matters
qy = grid.snapY(cy);
qx = grid.snapX(cx);
if (grid.getGridType() && (Math.abs(cx - qx) == grid.getGridSize())) {
qx = cx;
}
ob.moveBy(qx - cx, qy - cy);
}
/** When drawing arc objects: resets the number of clicks to zero. */
public final void resetNOfClicks() {
this.nofclicks = 0;
}
private void drawPointsAid(VectorGraphics g2) {
GeneralPath gp = new GeneralPath();
if ((nofclicks % 3) == 1) {
gp.moveTo((float) points[0], ((float) points[1]));
gp.lineTo(evX, evY);
} else if ((nofclicks % 3) == 2) {
gp.moveTo((float) points[0], (float) points[1]);
gp.lineTo((float) points[2], (float) points[3]);
gp.lineTo(evX, evY);
}
g2.setColor(JaxoColor.RED);
g2.setStroke(new BasicStroke(1.f));
g2.draw(gp);
}
private JaObject createNewObject(int currentMode, int x, int y) {
canvasGraph.setSelectedObject(null);
JaxoStaticCanvasMethods.setNofClicks(nofclicks);
JaxoStaticCanvasMethods.setLanguage(language);
JaxoStaticCanvasMethods.setPoints(points);
JaxoStaticCanvasMethods.setPointsON(pointsON);
JaxoStaticCanvasMethods.setVertexType(thePanel.getVertexType());
JaObject newob =
JaxoStaticCanvasMethods.createNewObject(currentMode, x, y);
this.pointsON = JaxoStaticCanvasMethods.getPointsON();
this.points = JaxoStaticCanvasMethods.getPoints();
if (newob instanceof JaLatexText) {
this.add(((JaLatexText) newob).getLatexPanel());
((JaLatexText) newob).getLatexPanel().setVisible(false);
drawText(newob, true);
setDefaultAction();
} else if (newob instanceof JaText) {
drawText(newob, true);
setDefaultAction();
}
return newob;
}
private void showColorChooser(JaObject ob) {
saveBackupImage();
canvasGraph.setBackupSelectedObject(ob);
canvasGraph.setBackupList(canvasGraph.copyFrom(
canvasGraph.getObjectList()));
Color oldColor = ob.getColor();
Color newColor = oldColor;
JaxoColorChooser colorChooser = new JaxoColorChooser();
if (ob instanceof JaFillObject) {
JaFillObject fillObject = (JaFillObject) ob;
Color oldFillColor = fillObject.getFillColor();
Color newFillColor = oldFillColor;
newFillColor = colorChooser.color(oldFillColor, true);
if (!oldFillColor.equals(newFillColor) && (newFillColor != null)) {
fillObject.setFillColor(newFillColor);
if (JaxoColor.isGrayScale(newFillColor)) {
fillObject.setColor(JaxoColor.BLACK);
}
unsavedCanvas();
}
} else if (ob instanceof JaxoGroup) {
newColor = colorChooser.color(newColor, false);
if (newColor != null) {
((JaxoGroup) ob).setGroupColor(newColor);
unsavedCanvas();
}
} else if (ob instanceof JaText) {
newColor = colorChooser.color(ob, true);
if (!oldColor.equals(newColor) && (newColor != null)) {
ob.setColor(newColor);
unsavedCanvas();
}
} else {
newColor = colorChooser.color(ob, false);
if (!oldColor.equals(newColor) && (newColor != null)) {
ob.setColor(newColor);
unsavedCanvas();
}
}
oldbb = ob.getBoundingBox();
updateOffScreenImage();
setDefaultAction();
setDragMode(JaxoMainPanel.STANDBY);
}
private void drawSelectedObject() {
// Graphics2D g2 = (Graphics2D) offScreenImage.getGraphics();
// VectorGraphics g2 = ( VectorGraphics) offScreenImage.getGraphics();
if (g2 == null) return;
if (JaxoPrefs.getBooleanPref(JaxoPrefs.PREF_ANTIALIAS)) {
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
}
JaObject ob = canvasGraph.getSelectedObject();
if (ob != null) {
// ob.updateNDC(); // chekanov
if (Plot.drawFirst(ob)) ob.jaxoDraw(g2, true);
Plot.drawRest(ob, g2, true);
//Remove zero size objects.
if (((int) ob.getSize().getWidth() == 0)
&& ((int) ob.getSize().getHeight() == 0)) {
canvasGraph.delete(ob);
}
}
repaint();
g2.dispose();
}
private void drawObject(JaObject ob) {
if (g2 == null) return;
// Graphics2D g2 = (Graphics2D) offScreenImage.getGraphics();
// VectorGraphics g2 = ( VectorGraphics) offScreenImage.getGraphics();
if (JaxoPrefs.getBooleanPref(JaxoPrefs.PREF_ANTIALIAS)) {
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
}
if (ob != null) {
if (Plot.drawFirst(ob)) ob.jaxoDraw(g2, true);
Plot.drawRest(ob, g2, true);
}
repaint();
g2.dispose();
}
// draw data
private void drawRest(JaObject ob) {
if (g2 == null) return;
// Graphics2D g2 = (Graphics2D) offScreenImage.getGraphics();
// VectorGraphics g2 = ( VectorGraphics) offScreenImage.getGraphics();
if (JaxoPrefs.getBooleanPref(JaxoPrefs.PREF_ANTIALIAS)) {
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
}
if (ob != null) {
Plot.drawRest(ob, g2, true);
}
repaint();
g2.dispose();
}
private void setDefaultAction() {
int def = JaxoPrefs.getIntPref(JaxoPrefs.PREF_DEFAULTACTION);
if (def != 0) {
if ((def < 16) && ((thePanel.getMode() - def - 2) != 0)) {
thePanel.getPbtPanel().clickButton(def - 1);
} else if ((def > 15) && (def < 22)
&& ((thePanel.getMode() - def - 14) != 0)) {
thePanel.getMbtPanel().clickButton(def - 16);
} else if ((def > 21) && ((thePanel.getMode() - def - 28) != 0)) {
thePanel.getEbtPanel().clickButton(def - 22);
}
}
}
// update objects and redraw
public void updateObjectLocation() {
if (canvasGraph == null || canvasGraph.listSize() == 0) return;
// draw all objects
for (int i = 0; i < canvasGraph.listSize(); i++) {
JaObject jaxoOb = (JaObject) canvasGraph.listElementAt(i);
if (jaxoOb != null) {
jaxoOb.updateCoor();
drawObject(jaxoOb );
drawRest(jaxoOb);
}
}
}
// update objects and redraw
public void updateLocations() {
if (canvasGraph == null || canvasGraph.listSize() == 0) return;
for (int i = 0; i < canvasGraph.listSize(); i++) {
JaObject jaxoOb = (JaObject) canvasGraph.listElementAt(i);
if (jaxoOb != null) {
jaxoOb.updateCoor();
}
}
}
//Define the methods of the ComponentListener interface
public void componentResized(ComponentEvent e){
/* chekanov
*/
if (start) {
Dimension d= getSize();
Global.sizeX=(int)d.getWidth();
Global.sizeY=(int)d.getHeight();
clearOffScreenImage();
updateObjectLocation();
}
start=true;
// System.out.println("Resized\n" + e.getSource());
}//end componentResized()
public void componentMoved(ComponentEvent e){
// System.out.println("Moved\n" + e.getSource());
}//end componentMoved()
public void componentShown(ComponentEvent e){
// System.out.println("Shown\n" + e.getSource());
}//end componentShown()
public void componentHidden(ComponentEvent e){
//System.out.println("Hidden\n" + e.getSource());
}//end componentHidden()
}
Ads help maintain this website.