1 package fr.ove.palette.swing;
2
3 import javax.swing.*;
4 import java.awt.*;
5 import java.awt.event.*;
6 import java.util.*;
7 import fr.ove.palette.*;
8 import fr.ove.palette.swing.*;
9 import fr.ove.palette.events.*;
10
11 public class JPaletteEditorFrame extends JFrame implements PaletteListener {
12
13
14
15
16
17
18 /***
19 * The list of listeners of the palette
20 */
21 private Vector listeners = new Vector();
22
23 /***
24 * The constructor.
25 */
26 public JPaletteEditorFrame() {
27 super("Palette Editor");
28 setVisible(false);
29
30 addWindowListener(
31 new WindowAdapter() {
32 public void windowClosing(WindowEvent we) {
33 setVisible(false);
34 }
35 }
36 );
37
38 JTabbedPane tabbedPane = new JTabbedPane();
39 PaletteContainer paletteContainer = new FunctionsPalette();
40 paletteContainer.addPaletteListener(this);
41 tabbedPane.addTab("Functions", paletteContainer);
42
43 paletteContainer = new CalculusPalette();
44 paletteContainer.addPaletteListener(this);
45 tabbedPane.addTab("Calculus", paletteContainer);
46
47 paletteContainer = new OperatorPalette();
48 paletteContainer.addPaletteListener(this);
49 tabbedPane.addTab("Operators", paletteContainer);
50
51
52 Container contentPane = getContentPane();
53 contentPane.setLayout(new BorderLayout());
54 contentPane.add(tabbedPane, BorderLayout.CENTER);
55 pack();
56 }
57
58 /***
59 * Registers another listener to be informed of changes of the palette.
60 * @param paletteListener a listener to add.
61 */
62 public void addPaletteListener(PaletteListener paletteListener) {
63 listeners.addElement(paletteListener);
64 }
65
66 /***
67 * Removes a listener.
68 * @param paletteListener the listener to remove.
69 */
70 public void removePaletteListener(PaletteListener paletteListener) {
71 listeners.removeElement(paletteListener);
72 }
73
74 /***
75 * Fires a PaletteEvent event to registered listeners.
76 * @param paletteEvent event encapsulating relevant information.
77 */
78 public void firePaletteEvent(PaletteEvent paletteEvent) {
79 for (int i = 0; i < listeners.size(); i++)
80 ((PaletteListener) listeners.elementAt(i)).consumePaletteEvent(paletteEvent);
81 }
82
83 /***
84 * Consumes (i.e. treats) the event received.
85 * @param paletteEvent the event to consume.
86 */
87 public void consumePaletteEvent(PaletteEvent paletteEvent) {
88 PaletteEvent evt = new PaletteEvent(this);
89 evt.setPaletteInfo(paletteEvent.getPaletteInfo());
90 firePaletteEvent(evt);
91 }
92
93 }