From 2a3edc9136fd5fa163704107ae473eb04dd23c55 Mon Sep 17 00:00:00 2001 From: Joakim Eriksson Date: Sun, 11 Dec 2016 16:55:29 +0100 Subject: [PATCH] Fixed so that COOJA sends in isVisible instead of quick as visibility parameter to plugins to get compile info back into COOJA - and fixed CoreComm to use MessageList text if no UI --- .../org/contikios/cooja/mspmote/CC430MoteType.java | 2 +- .../org/contikios/cooja/mspmote/ESBMoteType.java | 2 +- .../contikios/cooja/mspmote/Eth1120MoteType.java | 2 +- .../contikios/cooja/mspmote/Exp1101MoteType.java | 2 +- .../contikios/cooja/mspmote/Exp1120MoteType.java | 2 +- .../contikios/cooja/mspmote/Exp2420MoteType.java | 2 +- .../contikios/cooja/mspmote/Exp5438MoteType.java | 2 +- .../org/contikios/cooja/mspmote/SkyMoteType.java | 4 +--- .../contikios/cooja/mspmote/Trxeb1120MoteType.java | 2 +- .../contikios/cooja/mspmote/Trxeb2520MoteType.java | 2 +- .../contikios/cooja/mspmote/TyndallMoteType.java | 2 +- tools/cooja/java/org/contikios/cooja/Cooja.java | 7 ++++--- tools/cooja/java/org/contikios/cooja/CoreComm.java | 8 +++++--- .../cooja/contikimote/ContikiMoteType.java | 4 ++-- .../contikios/cooja/dialogs/MessageContainer.java | 14 ++++++++++++++ .../org/contikios/cooja/dialogs/MessageList.java | 4 ++++ .../contikios/cooja/dialogs/MessageListText.java | 13 +++++++++++++ .../org/contikios/cooja/dialogs/MessageListUI.java | 4 ++++ 18 files changed, 57 insertions(+), 21 deletions(-) diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/CC430MoteType.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/CC430MoteType.java index 3a5144197..3e5a67970 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/CC430MoteType.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/CC430MoteType.java @@ -115,7 +115,7 @@ public class CC430MoteType extends MspMoteType { throw new MoteTypeCreationException("No identifier"); } - final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText(); + final MessageList compilationOutput = MessageContainer.createMessageList(visAvailable); if (getCompileCommands() != null) { /* Handle multiple compilation commands one by one */ diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/ESBMoteType.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/ESBMoteType.java index 13ad2025a..4c05e3532 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/ESBMoteType.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/ESBMoteType.java @@ -151,7 +151,7 @@ public class ESBMoteType extends MspMoteType { throw new MoteTypeCreationException("No identifier"); } - final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText(); + final MessageList compilationOutput = MessageContainer.createMessageList(visAvailable); if (getCompileCommands() != null) { /* Handle multiple compilation commands one by one */ diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Eth1120MoteType.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Eth1120MoteType.java index c51c29384..017a46167 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Eth1120MoteType.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Eth1120MoteType.java @@ -73,7 +73,7 @@ public class Eth1120MoteType extends Exp5438MoteType { throw new MoteTypeCreationException("No identifier"); } - final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText(); + final MessageList compilationOutput = MessageContainer.createMessageList(visAvailable); if (getCompileCommands() != null) { /* Handle multiple compilation commands one by one */ diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp1101MoteType.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp1101MoteType.java index b36fb30e9..e49b7ce39 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp1101MoteType.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp1101MoteType.java @@ -73,7 +73,7 @@ public class Exp1101MoteType extends Exp5438MoteType { throw new MoteTypeCreationException("No identifier"); } - final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText(); + final MessageList compilationOutput = MessageContainer.createMessageList(visAvailable); if (getCompileCommands() != null) { /* Handle multiple compilation commands one by one */ diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp1120MoteType.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp1120MoteType.java index 46ad50713..742a11952 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp1120MoteType.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp1120MoteType.java @@ -74,7 +74,7 @@ public class Exp1120MoteType extends Exp5438MoteType { throw new MoteTypeCreationException("No identifier"); } - final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText(); + final MessageList compilationOutput = MessageContainer.createMessageList(visAvailable); if (getCompileCommands() != null) { /* Handle multiple compilation commands one by one */ diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp2420MoteType.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp2420MoteType.java index 8a63bf527..89b42f541 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp2420MoteType.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp2420MoteType.java @@ -74,7 +74,7 @@ public class Exp2420MoteType extends Exp5438MoteType { throw new MoteTypeCreationException("No identifier"); } - final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText(); + final MessageList compilationOutput = MessageContainer.createMessageList(visAvailable); if (getCompileCommands() != null) { /* Handle multiple compilation commands one by one */ diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp5438MoteType.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp5438MoteType.java index c5b9b8436..77cbef7ea 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp5438MoteType.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Exp5438MoteType.java @@ -115,7 +115,7 @@ public class Exp5438MoteType extends MspMoteType { throw new MoteTypeCreationException("No identifier"); } - final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText(); + final MessageList compilationOutput = MessageContainer.createMessageList(visAvailable); if (getCompileCommands() != null) { /* Handle multiple compilation commands one by one */ diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/SkyMoteType.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/SkyMoteType.java index 3ab5854b3..5f743316b 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/SkyMoteType.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/SkyMoteType.java @@ -51,8 +51,6 @@ import org.contikios.cooja.MoteType; import org.contikios.cooja.Simulation; import org.contikios.cooja.dialogs.CompileContiki; import org.contikios.cooja.dialogs.MessageList; -import org.contikios.cooja.dialogs.MessageListText; -import org.contikios.cooja.dialogs.MessageListUI; import org.contikios.cooja.dialogs.MessageContainer; import org.contikios.cooja.interfaces.IPAddress; import org.contikios.cooja.interfaces.Mote2MoteRelations; @@ -137,7 +135,7 @@ public class SkyMoteType extends MspMoteType { throw new MoteTypeCreationException("No identifier"); } - final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText(); + final MessageList compilationOutput = MessageContainer.createMessageList(visAvailable); if (getCompileCommands() != null) { /* Handle multiple compilation commands one by one */ diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Trxeb1120MoteType.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Trxeb1120MoteType.java index eac27e122..b54d808c6 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Trxeb1120MoteType.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Trxeb1120MoteType.java @@ -73,7 +73,7 @@ public class Trxeb1120MoteType extends Exp5438MoteType { throw new MoteTypeCreationException("No identifier"); } - final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText(); + final MessageList compilationOutput = MessageContainer.createMessageList(visAvailable); if (getCompileCommands() != null) { /* Handle multiple compilation commands one by one */ diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Trxeb2520MoteType.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Trxeb2520MoteType.java index 939e60fcd..c1a17926e 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Trxeb2520MoteType.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/Trxeb2520MoteType.java @@ -73,7 +73,7 @@ public class Trxeb2520MoteType extends Exp5438MoteType { throw new MoteTypeCreationException("No identifier"); } - final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText(); + final MessageList compilationOutput = MessageContainer.createMessageList(visAvailable); if (getCompileCommands() != null) { /* Handle multiple compilation commands one by one */ diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/TyndallMoteType.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/TyndallMoteType.java index 4e6472b11..c48ff556e 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/TyndallMoteType.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/TyndallMoteType.java @@ -114,7 +114,7 @@ public class TyndallMoteType extends MspMoteType { throw new MoteTypeCreationException("No identifier"); } - final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText(); + final MessageList compilationOutput = MessageContainer.createMessageList(visAvailable); if (getCompileCommands() != null) { /* Handle multiple compilation commands one by one */ diff --git a/tools/cooja/java/org/contikios/cooja/Cooja.java b/tools/cooja/java/org/contikios/cooja/Cooja.java index 4f0814249..36f4008d3 100644 --- a/tools/cooja/java/org/contikios/cooja/Cooja.java +++ b/tools/cooja/java/org/contikios/cooja/Cooja.java @@ -3378,7 +3378,7 @@ public class Cooja extends Observable { } /* Verify extension directories */ - boolean projectsOk = verifyProjects(root.getChildren(), !quick); + boolean projectsOk = verifyProjects(root.getChildren(), isVisualized()); /* GENERATE UNIQUE MOTE TYPE IDENTIFIERS */ root.detach(); @@ -3428,7 +3428,8 @@ public class Cooja extends Observable { Collection config = ((Element) element).getChildren(); newSim = new Simulation(this); System.gc(); - boolean createdOK = newSim.setConfigXML(config, !quick, manualRandomSeed); + + boolean createdOK = newSim.setConfigXML(config, isVisualized(), manualRandomSeed); if (!createdOK) { logger.info("Simulation not loaded"); return null; @@ -3437,7 +3438,7 @@ public class Cooja extends Observable { } // Restart plugins from config - setPluginsConfigXML(root.getChildren(), newSim, !quick); + setPluginsConfigXML(root.getChildren(), newSim, isVisualized()); } catch (JDOMException e) { throw (SimulationCreationException) new SimulationCreationException( diff --git a/tools/cooja/java/org/contikios/cooja/CoreComm.java b/tools/cooja/java/org/contikios/cooja/CoreComm.java index a714eac23..63f6a18ae 100644 --- a/tools/cooja/java/org/contikios/cooja/CoreComm.java +++ b/tools/cooja/java/org/contikios/cooja/CoreComm.java @@ -35,8 +35,9 @@ import java.util.Vector; import org.contikios.cooja.MoteType.MoteTypeCreationException; import org.contikios.cooja.contikimote.ContikiMoteType; +import org.contikios.cooja.dialogs.MessageContainer; import org.contikios.cooja.dialogs.MessageList; -import org.contikios.cooja.dialogs.MessageListUI; + /** * The purpose of corecomm's is communicating with a compiled Contiki system @@ -204,9 +205,10 @@ public abstract class CoreComm { */ public static void compileSourceFile(String className) throws MoteTypeCreationException { - MessageListUI compilationOutput = new MessageListUI(); + /* Try to create a message list with support for GUI - will give not UI if headless */ + MessageList compilationOutput = MessageContainer.createMessageList(true); OutputStream compilationStandardStream = compilationOutput - .getInputStream(MessageListUI.NORMAL); + .getInputStream(MessageList.NORMAL); OutputStream compilationErrorStream = compilationOutput .getInputStream(MessageList.ERROR); diff --git a/tools/cooja/java/org/contikios/cooja/contikimote/ContikiMoteType.java b/tools/cooja/java/org/contikios/cooja/contikimote/ContikiMoteType.java index 42205b94f..31f9c3b30 100644 --- a/tools/cooja/java/org/contikios/cooja/contikimote/ContikiMoteType.java +++ b/tools/cooja/java/org/contikios/cooja/contikimote/ContikiMoteType.java @@ -66,7 +66,7 @@ import org.contikios.cooja.mote.memory.SectionMoteMemory; import org.contikios.cooja.Simulation; import org.contikios.cooja.dialogs.CompileContiki; import org.contikios.cooja.dialogs.ContikiMoteCompileDialog; -import org.contikios.cooja.dialogs.MessageListUI; +import org.contikios.cooja.dialogs.MessageList; import org.contikios.cooja.dialogs.MessageContainer; import org.contikios.cooja.mote.memory.ArrayMemory; import org.contikios.cooja.mote.memory.MemoryInterface; @@ -317,7 +317,7 @@ public class ContikiMoteType implements MoteType { if (getCompileCommands() == null) { throw new MoteTypeCreationException("No compile commands specified"); } - final MessageListUI compilationOutput = new MessageListUI(); + final MessageList compilationOutput = MessageContainer.createMessageList(visAvailable); String[] arr = getCompileCommands().split("\n"); for (String cmd : arr) { if (cmd.trim().isEmpty()) { diff --git a/tools/cooja/java/org/contikios/cooja/dialogs/MessageContainer.java b/tools/cooja/java/org/contikios/cooja/dialogs/MessageContainer.java index 89fea5593..4a9297fe2 100644 --- a/tools/cooja/java/org/contikios/cooja/dialogs/MessageContainer.java +++ b/tools/cooja/java/org/contikios/cooja/dialogs/MessageContainer.java @@ -1,4 +1,7 @@ package org.contikios.cooja.dialogs; +import java.awt.GraphicsEnvironment; + +import org.contikios.cooja.Cooja; public class MessageContainer { @@ -14,4 +17,15 @@ public class MessageContainer { public String toString() { return message; } + + /* This will select UI based or not UI based depending on withUI in combination with + * headless info. + */ + public static MessageList createMessageList(boolean withUI) { + if (withUI && !GraphicsEnvironment.isHeadless() && Cooja.isVisualized()) { + return new MessageListUI(); + } else { + return new MessageListText(); + } + } } diff --git a/tools/cooja/java/org/contikios/cooja/dialogs/MessageList.java b/tools/cooja/java/org/contikios/cooja/dialogs/MessageList.java index f0af5f405..91a55ee7a 100644 --- a/tools/cooja/java/org/contikios/cooja/dialogs/MessageList.java +++ b/tools/cooja/java/org/contikios/cooja/dialogs/MessageList.java @@ -1,5 +1,7 @@ package org.contikios.cooja.dialogs; +import java.io.OutputStream; + public interface MessageList { public static final int NORMAL = 0; @@ -14,4 +16,6 @@ public interface MessageList { public void addMessage(String string); + public OutputStream getInputStream(int type); + } diff --git a/tools/cooja/java/org/contikios/cooja/dialogs/MessageListText.java b/tools/cooja/java/org/contikios/cooja/dialogs/MessageListText.java index bd24c3485..fc6a51042 100644 --- a/tools/cooja/java/org/contikios/cooja/dialogs/MessageListText.java +++ b/tools/cooja/java/org/contikios/cooja/dialogs/MessageListText.java @@ -1,7 +1,12 @@ package org.contikios.cooja.dialogs; +import java.io.OutputStream; + public class MessageListText implements MessageList { + public MessageListText() { + } + @Override public void addMessage(String string, int type) { System.out.println("Message:" + string); @@ -24,4 +29,12 @@ public class MessageListText implements MessageList { addMessage(string, MessageList.NORMAL); } + @Override + public OutputStream getInputStream(int type) { + // TODO Auto-generated method stub + return System.out; + } + + + } diff --git a/tools/cooja/java/org/contikios/cooja/dialogs/MessageListUI.java b/tools/cooja/java/org/contikios/cooja/dialogs/MessageListUI.java index 11449b7ef..84b3c5767 100644 --- a/tools/cooja/java/org/contikios/cooja/dialogs/MessageListUI.java +++ b/tools/cooja/java/org/contikios/cooja/dialogs/MessageListUI.java @@ -33,6 +33,7 @@ package org.contikios.cooja.dialogs; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; +import java.awt.GraphicsEnvironment; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; @@ -81,6 +82,9 @@ public class MessageListUI extends JList implements MessageList { private int max = -1; public MessageListUI() { + if (GraphicsEnvironment.isHeadless()) { + throw new RuntimeException("Can not use UI version of message list in Headless mode"); + } super.setModel(new MessageModel()); setCellRenderer(new MessageRenderer()); setSelectionMode(ListSelectionModel.SINGLE_SELECTION);