Source of DrawingPad.java


  1: 
  2: package draw1; 
  3: 
  4: import java.awt.*;
  5: import java.awt.event.*;
  6: import java.io.*;
  7: import javax.swing.*; 
  8: import scribble3.*;
  9: 
 10: public class DrawingPad extends Scribble { 
 11: 
 12:   public DrawingPad(String title) {
 13:     super(title); 
 14:     initTools();
 15:     ActionListener toolListener = new ActionListener() { 
 16:         public void actionPerformed(ActionEvent event) { 
 17:           Object source = event.getSource();
 18:           if (source instanceof AbstractButton) {
 19:             AbstractButton button = (AbstractButton) source; 
 20:             Tool tool = toolkit.setSelectedTool(button.getText());
 21:             drawingCanvas.setTool(tool);
 22:           }
 23:         }
 24:       };
 25:     JComponent toolbar = createToolBar(toolListener); 
 26:     getContentPane().add(toolbar, BorderLayout.WEST);
 27:     JMenu menu = createToolMenu(toolListener); 
 28:     menuBar.add(menu, 1); // insert at index position 1 
 29:   }
 30: 
 31:   public Tool getSelectedTool() { 
 32:     return toolkit.getSelectedTool(); 
 33:   }
 34: 
 35:   protected void initTools() { 
 36:     toolkit = new ToolKit(); 
 37:     toolkit.addTool(new ScribbleTool(canvas, "Scribble")); 
 38:     toolkit.addTool(new TwoEndsTool(canvas, "Line", TwoEndsTool.LINE)); 
 39:     toolkit.addTool(new TwoEndsTool(canvas, "Oval", TwoEndsTool.OVAL)); 
 40:     toolkit.addTool(new TwoEndsTool(canvas, "Rectangle", TwoEndsTool.RECT)); 
 41:     drawingCanvas.setTool(toolkit.getTool(0));
 42:   }
 43: 
 44:   // factory method 
 45:   protected ScribbleCanvas makeCanvas() {
 46:     return (drawingCanvas = new DrawingCanvas()); 
 47:   }
 48: 
 49:   protected JComponent createToolBar(ActionListener toolListener) { 
 50:     JPanel toolbar = new JPanel(new GridLayout(0, 1));
 51:     int n = toolkit.getToolCount(); 
 52:     for (int i = 0; i < n; i++) {
 53:       Tool tool = toolkit.getTool(i); 
 54:       if (tool != null) { 
 55:         JButton button = new JButton(tool.getName()); 
 56:         button.addActionListener(toolListener); 
 57:         toolbar.add(button); 
 58:       }
 59:     }    
 60:     return toolbar; 
 61:   }
 62: 
 63:   protected JMenu createToolMenu(ActionListener toolListener) { 
 64:     JMenu menu = new JMenu("Tools"); 
 65:     int n = toolkit.getToolCount(); 
 66:     for (int i = 0; i < n; i++) {
 67:       Tool tool = toolkit.getTool(i); 
 68:       if (tool != null) { 
 69:         JMenuItem menuitem = new JMenuItem(tool.getName());
 70:         menuitem.addActionListener(toolListener); 
 71:         menu.add(menuitem);
 72:       }
 73:     }
 74:     return menu; 
 75:   }
 76: 
 77:   protected ToolKit toolkit;
 78:   protected DrawingCanvas drawingCanvas;
 79: 
 80:   public static void main(String[] args) {
 81:     JFrame frame = new DrawingPad("Drawing Pad");
 82:     frame.setSize(width, height);
 83:     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
 84:     frame.setLocation(screenSize.width/2 - width/2,
 85:                       screenSize.height/2 - height/2);
 86:     frame.show();
 87:   }
 88: 
 89: }