package net.sf.openrocket.gui.main;
import java.util.ArrayList;
import java.util.List;
import net.sf.openrocket.document.Simulation;
import net.sf.openrocket.rocketcomponent.RocketComponent;
public final class OpenRocketClipboard {
private static RocketComponent clipboardComponent = null;
private static Simulation[] clipboardSimulations = null;
private static List<ClipboardListener> listeners = new ArrayList<ClipboardListener>();
private OpenRocketClipboard() {
// Disallow instantiation
}
/**
* Return the <code>RocketComponent</code> contained in the clipboard, or
* <code>null</code>. The component is returned verbatim, and must be copied
* before attaching to any rocket design!
*
* @return the rocket component contained in the clipboard, or <code>null</code>
* if the clipboard does not currently contain a rocket component.
*/
public static RocketComponent getClipboardComponent() {
return clipboardComponent;
}
public static void setClipboard(RocketComponent component) {
clipboardComponent = component;
clipboardSimulations = null;
fireClipboardChanged();
}
public static Simulation[] getClipboardSimulations() {
if (clipboardSimulations == null || clipboardSimulations.length == 0)
return null;
return clipboardSimulations.clone();
}
public static void setClipboard(Simulation[] simulations) {
clipboardSimulations = simulations.clone();
clipboardComponent = null;
fireClipboardChanged();
}
public static void addClipboardListener(ClipboardListener listener) {
listeners.add(listener);
}
public static void removeClipboardListener(ClipboardListener listener) {
listeners.remove(listener);
}
private static void fireClipboardChanged() {
ClipboardListener[] array = listeners.toArray(new ClipboardListener[0]);
for (ClipboardListener l: array) {
l.clipboardChanged();
}
}
}