package graphics.draw2d;
import ip.gui.frames.ShortCutFrame;
import ip.graphics.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import graphics.ImageUtils;
public class DrawTest extends ShortCutFrame
implements MouseListener, MouseMotionListener {
Font font
= new Font("Times", Font.PLAIN, 12);
MenuBar mb = new MenuBar();
Menu fileMenu = new Menu("File");
MenuItem saveAsPict_mi =
addMenuItem(fileMenu, "[E-s]ave as pict");
MenuItem line_mi =
addMenuItem(fileMenu, "[l]ine");
MenuItem circle_mi =
addMenuItem(fileMenu, "[c]ircle");
MenuItem oval_mi =
addMenuItem(fileMenu, "[o]val");
MenuItem rect_mi =
addMenuItem(fileMenu, "[r]ect");
MenuItem string_mi =
addMenuItem(fileMenu, "[s]tring");
MenuItem lens_mi =
addMenuItem(fileMenu, "[L]ens");
MenuItem ray_mi =
addMenuItem(fileMenu, "[R]ay shoot");
MenuItem erase_mi =
addMenuItem(fileMenu, "[e]rase");
MenuItem lastSelected = line_mi;
Shapes shapeList = new Shapes();
int x1,y1;
int x2,y2;
int xl,yl;
DrawTest(String title) {
super(title);
mb.add(fileMenu);
setMenuBar(mb);
setBackground(Color.white);
addMouseMotionListener(this);
addMouseListener(this);
}
private void save() {
ImageUtils.print(this);
}
public void actionPerformed(ActionEvent e) {
if (match(e, erase_mi)) {
shapeList = new Shapes();
repaint();
return;
}
if (match(e, ray_mi)) {
shapeList.addLineToLastCircle();
repaint();
return;
}
if (match(e, lens_mi)) {
lastSelected = lens_mi;
return;
}
if (match(e, string_mi)) {
lastSelected = string_mi;
return;
}
if (match(e, rect_mi)) {
lastSelected = rect_mi;
return;
}
if (match(e, saveAsPict_mi)) {
save();
return;
}
if (match(e, line_mi)) {
lastSelected = line_mi;
return;
}
if (match(e, circle_mi)) {
lastSelected = circle_mi;
return;
}
if (match(e, oval_mi)) {
lastSelected = oval_mi;
return;
}
}
public static void main(String args[]) {
DrawTest drawTest = new DrawTest("DrawTest");
drawTest.setSize(300, 300);
drawTest.show();
}
public void mouseDragged(MouseEvent e) {
e.consume();
xl = x2;
yl = y2;
x2 = e.getX();
y2 = e.getY();
repaint();
}
public void mouseMoved(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
e.consume();
x1 = e.getX();
y1 = e.getY();
x2 = -1;
}
public void mouseReleased(MouseEvent e) {
e.consume();
if (lastSelected == lens_mi)
shapeList.add(
new Arc2d(x1, y1, e.getX(), e.getY()));
if (lastSelected == string_mi)
shapeList.add(
new String2d(e.getX(), e.getY(), "String me!"));
if (lastSelected == line_mi)
shapeList.add(
new Line2d(x1, y1, e.getX(), e.getY()));
if (lastSelected == rect_mi)
shapeList.add(
new Rect2d(x1, y1, e.getX(), e.getY()));
if (lastSelected == circle_mi)
shapeList.add(
new Circle2d(x1, y1, e.getX(), e.getY()));
if (lastSelected == oval_mi)
shapeList.add(
new Oval2d(x1, y1, e.getX(), e.getY()));
x2 = xl = -1;
repaint();
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
public void drawRubberBand(Graphics g) {
if (x2 == -1) return;
g.setXORMode(getBackground());
if (lastSelected == lens_mi) {
Arc2d a =
new Arc2d(x1, y1, x2, y2);
a.paint(g);
return;
}
if (lastSelected == string_mi) {
String2d s =
new String2d(x2, y2, "String me!");
s.paint(g);
return;
}
if (lastSelected == line_mi) {
g.drawLine(x1, y1, x2, y2);
return;
}
if (lastSelected == circle_mi) {
Circle2d c = new Circle2d(x1, y1, x2, y2);
c.paint(g);
return;
}
if (lastSelected == oval_mi) {
Oval2d o = new Oval2d(x1, y1, x2, y2);
o.paint(g);
return;
}
if (lastSelected == rect_mi) {
Rect2d r = new Rect2d(x1, y1, x2, y2);
r.paint(g);
return;
}
}
public void paint(Graphics g) {
g.setFont(font);
shapeList.paint(g);
drawRubberBand(g);
}
}