From 43f371e35a884b198ad2f86db3cdd663baf3dedc Mon Sep 17 00:00:00 2001 From: fros4943 Date: Tue, 9 Jan 2007 10:14:21 +0000 Subject: [PATCH] separated visplugin from plugins (plugins may now also exist without visualizers) --- tools/cooja/java/se/sics/cooja/Plugin.java | 94 +++++++++++++++++++ tools/cooja/java/se/sics/cooja/VisPlugin.java | 54 ++++------- 2 files changed, 112 insertions(+), 36 deletions(-) create mode 100644 tools/cooja/java/se/sics/cooja/Plugin.java diff --git a/tools/cooja/java/se/sics/cooja/Plugin.java b/tools/cooja/java/se/sics/cooja/Plugin.java new file mode 100644 index 000000000..506b57406 --- /dev/null +++ b/tools/cooja/java/se/sics/cooja/Plugin.java @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id: Plugin.java,v 1.1 2007/01/09 10:15:42 fros4943 Exp $ + */ + +package se.sics.cooja; + +import java.util.Collection; + +import org.jdom.Element; + +/** + * Interface for a COOJA interaction plugin. The typical interaction plugin + * is a visualization plugin, see abstract VisPlugin for more information. + * + * @author Fredrik Osterlind + */ +public interface Plugin { + + /** + * This method is called when an opened plugin is about to close. + * It should release any resources such as registered observers or + * opened interface visualizers. + */ + public void closePlugin(); + + /** + * This method is used by the simulator for book-keeping purposes, and should + * normally not be called by the plugin itself. + * + * @param tag + * Object + */ + public void tagWithObject(Object tag); + + /** + * This method is used by the simulator for book-keeping purposes, and should + * normally not be called by the plugin itself. + * + * @return Object + */ + public Object getTag(); + + + /** + * Returns XML elements representing the current config of this plugin. This + * is fetched by the simulator for example when saving a simulation + * configuration file. For example a plugin may return the current size and + * position. This method should however not return state specific information + * such as the value of a mote LED, or total number of motes. (All nodes are + * restarted when loading a simulation.) + * + * @see #setConfigXML(Collection) + * @return XML elements representing the current radio medium config + */ + public Collection getConfigXML(); + + /** + * Sets the current plugin config depending on the given XML elements. + * + * @see #getConfigXML() + * @param configXML + * Config XML elements + * @return True if config was set successfully, false otherwise + */ + public boolean setConfigXML(Collection configXML, boolean visAvailable); + +} diff --git a/tools/cooja/java/se/sics/cooja/VisPlugin.java b/tools/cooja/java/se/sics/cooja/VisPlugin.java index ba448b885..822ff3840 100644 --- a/tools/cooja/java/se/sics/cooja/VisPlugin.java +++ b/tools/cooja/java/se/sics/cooja/VisPlugin.java @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: VisPlugin.java,v 1.2 2006/11/06 17:59:34 fros4943 Exp $ + * $Id: VisPlugin.java,v 1.3 2007/01/09 10:14:21 fros4943 Exp $ */ package se.sics.cooja; @@ -48,13 +48,14 @@ import org.jdom.Element; * * @author Fredrik Osterlind */ -public abstract class VisPlugin extends JInternalFrame { - +public abstract class VisPlugin extends JInternalFrame implements Plugin { + private Object tag = null; + /** * Sets frame title * @param title Frame title */ - public VisPlugin(String title) { + public VisPlugin(String title, final GUI gui) { super(title, true, true, true, true); final VisPlugin thisPlugin = this; @@ -63,7 +64,7 @@ public abstract class VisPlugin extends JInternalFrame { // Detect frame events addInternalFrameListener(new InternalFrameListener() { public void internalFrameClosing(InternalFrameEvent e) { - GUI.currentGUI.removePlugin(thisPlugin, true); + gui.removePlugin(thisPlugin, true); } public void internalFrameClosed(InternalFrameEvent e) { // NOP @@ -86,41 +87,22 @@ public abstract class VisPlugin extends JInternalFrame { } ); } - - /** - * This method is called when an opened plugin is about to close. - * It should release any resources such as registered observers or - * opened interface visualizers. - */ - public abstract void closePlugin(); - - /** - * EXPERIMENTAL. - * Returns XML elements representing the current config of this plugin. This - * is fetched by the simulator for example when saving a simulation - * configuration file. For example a plugin may return the current size and - * position. This method should however not return state specific information - * such as the value of a mote LED, or total number of motes. (All nodes are - * restarted when loading a simulation.) - * - * @see #setConfigXML(Collection) - * @return XML elements representing the current radio medium config - */ + public Collection getConfigXML() { return null; } - - /** - * EXPERIMENTAL. - * Sets the current plugin config depending on the given XML elements. - * - * @see #getConfigXML() - * @param configXML - * Config XML elements - * @return True if config was set successfully, false otherwise - */ - public boolean setConfigXML(Collection configXML) { + + public boolean setConfigXML(Collection configXML, boolean visAvailable) { return false; } + public void tagWithObject(Object tag) { + this.tag = tag; + } + + public Object getTag() { + return tag; + } + + }