Source of TwoEndsShapeTool.java


  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: }