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 JPaletteEditor extends JTabbedPane 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 JPaletteEditor() {
27 PaletteContainer paletteContainer = new FunctionsPalette();
28 paletteContainer.addPaletteListener(this);
29 addTab("Functions", paletteContainer);
30
31 paletteContainer = new CalculusPalette();
32 paletteContainer.addPaletteListener(this);
33 addTab("Calculus", paletteContainer);
34
35 paletteContainer = new OperatorPalette();
36 paletteContainer.addPaletteListener(this);
37 addTab("Operators", paletteContainer);
38 }
39
40 /***
41 * Registers another listener to be informed of changes of the palette.
42 * @param paletteListener a listener to add.
43 */
44 public void addPaletteListener(PaletteListener paletteListener) {
45 listeners.addElement(paletteListener);
46 }
47
48 /***
49 * Removes a listener.
50 * @param paletteListener the listener to remove.
51 */
52 public void removePaletteListener(PaletteListener paletteListener) {
53 listeners.removeElement(paletteListener);
54 }
55
56 /***
57 * Fires a PaletteEvent event to registered listeners.
58 * @param paletteEvent event encapsulating relevant information.
59 */
60 public void firePaletteEvent(PaletteEvent paletteEvent) {
61 for (int i = 0; i < listeners.size(); i++)
62 ((PaletteListener) listeners.elementAt(i)).consumePaletteEvent(paletteEvent);
63 }
64
65 /***
66 * Consumes (i.e. treats) the event received.
67 * @param paletteEvent the event to consume.
68 */
69 public void consumePaletteEvent(PaletteEvent paletteEvent) {
70 PaletteEvent evt = new PaletteEvent(this);
71 evt.setPaletteInfo(paletteEvent.getPaletteInfo());
72 firePaletteEvent(evt);
73 }
74 }