public class DrawingPad extends Scribble
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: }