View Javadoc

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      // We implement the PaletteListener because we want the JPaletteEditor to be
13      // the source of the PaletteEvent generated following an action on a palette it
14      // contains. So, The instance intercept the event generated by a palette it contains
15      // and fires a PaletteEvent event with the same parameters, but with the instance
16      // a source.
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  }