public class TwoEndsShapeTool extends AbstractTool
1:
2: package draw2;
3:
4: import java.awt.*;
5: import scribble3.*;
6: import draw1.*;
7:
8: public class TwoEndsShapeTool extends AbstractTool {
9:
10: public TwoEndsShapeTool(ScribbleCanvas canvas, String name, TwoEndsShape prototype) {
11: super(canvas, name);
12: this.prototype = prototype;
13: }
14:
15: public void startShape(Point p) {
16: if (prototype != null) {
17: canvas.mouseButtonDown = true;
18: xStart = canvas.x = p.x;
19: yStart = canvas.y = p.y;
20: Graphics g = canvas.getGraphics();
21: g.setXORMode(Color.darkGray);
22: g.setColor(Color.lightGray);
23: prototype.drawOutline(g, xStart, yStart, xStart, yStart);
24: }
25: }
26:
27: public void addPointToShape(Point p) {
28: if (prototype != null &&
29: canvas.mouseButtonDown) {
30: Graphics g = canvas.getGraphics();
31: g.setXORMode(Color.darkGray);
32: g.setColor(Color.lightGray);
33: prototype.drawOutline(g, xStart, yStart, canvas.x, canvas.y);
34: prototype.drawOutline(g, xStart, yStart, p.x, p.y);
35: }
36: }
37:
38: public void endShape(Point p) {
39: canvas.mouseButtonDown = false;
40: if (prototype != null) {
41: try {
42: TwoEndsShape newShape = (TwoEndsShape) prototype.clone();
43: newShape.setColor(canvas.getCurColor());
44: newShape.setEnds(xStart, yStart, p.x, p.y);
45: canvas.addShape(newShape);
46: } catch (CloneNotSupportedException e) {}
47: Graphics g = canvas.getGraphics();
48: g.setPaintMode();
49: canvas.repaint();
50: }
51: }
52:
53: protected int xStart, yStart;
54: protected TwoEndsShape prototype;
55:
56: }