updates
[debian/openrocket] / src / net / sf / openrocket / gui / main / OpenRocketClipboard.java
1 package net.sf.openrocket.gui.main;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import net.sf.openrocket.document.Simulation;
7 import net.sf.openrocket.rocketcomponent.RocketComponent;
8
9 public final class OpenRocketClipboard {
10
11         private static RocketComponent clipboardComponent = null;
12         private static Simulation[] clipboardSimulations = null;
13         
14         private static List<ClipboardListener> listeners = new ArrayList<ClipboardListener>();
15         
16         private OpenRocketClipboard() {
17                 // Disallow instantiation
18         }
19         
20         
21         /**
22          * Return the <code>RocketComponent</code> contained in the clipboard, or
23          * <code>null</code>.  The component is returned verbatim, and must be copied
24          * before attaching to any rocket design!
25          * 
26          * @return      the rocket component contained in the clipboard, or <code>null</code>
27          *                      if the clipboard does not currently contain a rocket component.
28          */
29         public static RocketComponent getClipboardComponent() {
30                 return clipboardComponent;
31         }
32         
33         
34         public static void setClipboard(RocketComponent component) {
35                 clipboardComponent = component;
36                 clipboardSimulations = null;
37                 fireClipboardChanged();
38         }
39         
40         
41         public static Simulation[] getClipboardSimulations() {
42                 if (clipboardSimulations == null || clipboardSimulations.length == 0)
43                         return null;
44                 return clipboardSimulations.clone();
45         }
46         
47         public static void setClipboard(Simulation[] simulations) {
48                 clipboardSimulations = simulations.clone();
49                 clipboardComponent = null;
50                 fireClipboardChanged();
51         }
52         
53         
54         
55         public static void addClipboardListener(ClipboardListener listener) {
56                 listeners.add(listener);
57         }
58         
59         public static void removeClipboardListener(ClipboardListener listener) {
60                 listeners.remove(listener);
61         }
62         
63         private static void fireClipboardChanged() {
64                 ClipboardListener[] array = listeners.toArray(new ClipboardListener[0]);
65                 for (ClipboardListener l: array) {
66                         l.clipboardChanged();
67                 }
68         }
69         
70 }