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 JPaletteEditorFrame extends JFrame implements PaletteListener {
12      // We implement the PaletteListener because we want the JPaletteEditorFrame 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 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  }