made a text-based version of the MessageList for headless execution
This commit is contained in:
parent
5b5f07ba52
commit
19120788c0
@ -63,7 +63,9 @@ import org.contikios.cooja.avrmote.interfaces.MicaZLED;
|
|||||||
import org.contikios.cooja.avrmote.interfaces.MicaZRadio;
|
import org.contikios.cooja.avrmote.interfaces.MicaZRadio;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
import org.contikios.cooja.dialogs.MessageListText;
|
||||||
|
import org.contikios.cooja.dialogs.MessageListUI;
|
||||||
|
import org.contikios.cooja.dialogs.MessageContainer;
|
||||||
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
||||||
import org.contikios.cooja.interfaces.MoteAttributes;
|
import org.contikios.cooja.interfaces.MoteAttributes;
|
||||||
import org.contikios.cooja.interfaces.Position;
|
import org.contikios.cooja.interfaces.Position;
|
||||||
@ -364,7 +366,7 @@ public class MicaZMoteType implements MoteType {
|
|||||||
throw new MoteTypeCreationException("No identifier");
|
throw new MoteTypeCreationException("No identifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText();
|
||||||
|
|
||||||
if (getCompileCommands() != null) {
|
if (getCompileCommands() != null) {
|
||||||
/* Handle multiple compilation commands one by one */
|
/* Handle multiple compilation commands one by one */
|
||||||
|
@ -45,7 +45,6 @@ import org.apache.log4j.Logger;
|
|||||||
|
|
||||||
import org.contikios.cooja.*;
|
import org.contikios.cooja.*;
|
||||||
import org.contikios.cooja.dialogs.*;
|
import org.contikios.cooja.dialogs.*;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -119,7 +118,7 @@ public abstract class AbstractMspMoteType extends MspMoteType {
|
|||||||
throw new MoteTypeCreationException("No identifier");
|
throw new MoteTypeCreationException("No identifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText();
|
||||||
|
|
||||||
if (getCompileCommands() != null) {
|
if (getCompileCommands() != null) {
|
||||||
/* Handle multiple compilation commands one by one */
|
/* Handle multiple compilation commands one by one */
|
||||||
|
@ -50,8 +50,10 @@ import org.contikios.cooja.MoteInterface;
|
|||||||
import org.contikios.cooja.MoteType;
|
import org.contikios.cooja.MoteType;
|
||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
|
import org.contikios.cooja.dialogs.MessageContainer;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
import org.contikios.cooja.dialogs.MessageListText;
|
||||||
|
import org.contikios.cooja.dialogs.MessageListUI;
|
||||||
import org.contikios.cooja.interfaces.IPAddress;
|
import org.contikios.cooja.interfaces.IPAddress;
|
||||||
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
||||||
import org.contikios.cooja.interfaces.MoteAttributes;
|
import org.contikios.cooja.interfaces.MoteAttributes;
|
||||||
@ -113,7 +115,7 @@ public class CC430MoteType extends MspMoteType {
|
|||||||
throw new MoteTypeCreationException("No identifier");
|
throw new MoteTypeCreationException("No identifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText();
|
||||||
|
|
||||||
if (getCompileCommands() != null) {
|
if (getCompileCommands() != null) {
|
||||||
/* Handle multiple compilation commands one by one */
|
/* Handle multiple compilation commands one by one */
|
||||||
|
@ -51,7 +51,9 @@ import org.contikios.cooja.MoteType;
|
|||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
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.IPAddress;
|
||||||
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
||||||
import org.contikios.cooja.interfaces.MoteAttributes;
|
import org.contikios.cooja.interfaces.MoteAttributes;
|
||||||
@ -149,7 +151,7 @@ public class ESBMoteType extends MspMoteType {
|
|||||||
throw new MoteTypeCreationException("No identifier");
|
throw new MoteTypeCreationException("No identifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText();
|
||||||
|
|
||||||
if (getCompileCommands() != null) {
|
if (getCompileCommands() != null) {
|
||||||
/* Handle multiple compilation commands one by one */
|
/* Handle multiple compilation commands one by one */
|
||||||
|
@ -11,7 +11,9 @@ import org.contikios.cooja.MoteType;
|
|||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
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.IPAddress;
|
||||||
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
||||||
import org.contikios.cooja.interfaces.MoteAttributes;
|
import org.contikios.cooja.interfaces.MoteAttributes;
|
||||||
@ -71,7 +73,7 @@ public class Eth1120MoteType extends Exp5438MoteType {
|
|||||||
throw new MoteTypeCreationException("No identifier");
|
throw new MoteTypeCreationException("No identifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText();
|
||||||
|
|
||||||
if (getCompileCommands() != null) {
|
if (getCompileCommands() != null) {
|
||||||
/* Handle multiple compilation commands one by one */
|
/* Handle multiple compilation commands one by one */
|
||||||
|
@ -11,7 +11,9 @@ import org.contikios.cooja.MoteType;
|
|||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
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.IPAddress;
|
||||||
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
||||||
import org.contikios.cooja.interfaces.MoteAttributes;
|
import org.contikios.cooja.interfaces.MoteAttributes;
|
||||||
@ -71,7 +73,7 @@ public class Exp1101MoteType extends Exp5438MoteType {
|
|||||||
throw new MoteTypeCreationException("No identifier");
|
throw new MoteTypeCreationException("No identifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText();
|
||||||
|
|
||||||
if (getCompileCommands() != null) {
|
if (getCompileCommands() != null) {
|
||||||
/* Handle multiple compilation commands one by one */
|
/* Handle multiple compilation commands one by one */
|
||||||
|
@ -11,7 +11,9 @@ import org.contikios.cooja.MoteType;
|
|||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
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.IPAddress;
|
||||||
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
||||||
import org.contikios.cooja.interfaces.MoteAttributes;
|
import org.contikios.cooja.interfaces.MoteAttributes;
|
||||||
@ -72,7 +74,7 @@ public class Exp1120MoteType extends Exp5438MoteType {
|
|||||||
throw new MoteTypeCreationException("No identifier");
|
throw new MoteTypeCreationException("No identifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText();
|
||||||
|
|
||||||
if (getCompileCommands() != null) {
|
if (getCompileCommands() != null) {
|
||||||
/* Handle multiple compilation commands one by one */
|
/* Handle multiple compilation commands one by one */
|
||||||
|
@ -11,7 +11,9 @@ import org.contikios.cooja.MoteType;
|
|||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
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.IPAddress;
|
||||||
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
||||||
import org.contikios.cooja.interfaces.MoteAttributes;
|
import org.contikios.cooja.interfaces.MoteAttributes;
|
||||||
@ -72,7 +74,7 @@ public class Exp2420MoteType extends Exp5438MoteType {
|
|||||||
throw new MoteTypeCreationException("No identifier");
|
throw new MoteTypeCreationException("No identifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText();
|
||||||
|
|
||||||
if (getCompileCommands() != null) {
|
if (getCompileCommands() != null) {
|
||||||
/* Handle multiple compilation commands one by one */
|
/* Handle multiple compilation commands one by one */
|
||||||
|
@ -48,7 +48,9 @@ import org.contikios.cooja.MoteType;
|
|||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
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.IPAddress;
|
||||||
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
||||||
import org.contikios.cooja.interfaces.MoteAttributes;
|
import org.contikios.cooja.interfaces.MoteAttributes;
|
||||||
@ -113,7 +115,7 @@ public class Exp5438MoteType extends MspMoteType {
|
|||||||
throw new MoteTypeCreationException("No identifier");
|
throw new MoteTypeCreationException("No identifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText();
|
||||||
|
|
||||||
if (getCompileCommands() != null) {
|
if (getCompileCommands() != null) {
|
||||||
/* Handle multiple compilation commands one by one */
|
/* Handle multiple compilation commands one by one */
|
||||||
|
@ -51,7 +51,9 @@ import org.contikios.cooja.MoteType;
|
|||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
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.IPAddress;
|
||||||
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
||||||
import org.contikios.cooja.interfaces.MoteAttributes;
|
import org.contikios.cooja.interfaces.MoteAttributes;
|
||||||
@ -135,7 +137,7 @@ public class SkyMoteType extends MspMoteType {
|
|||||||
throw new MoteTypeCreationException("No identifier");
|
throw new MoteTypeCreationException("No identifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText();
|
||||||
|
|
||||||
if (getCompileCommands() != null) {
|
if (getCompileCommands() != null) {
|
||||||
/* Handle multiple compilation commands one by one */
|
/* Handle multiple compilation commands one by one */
|
||||||
|
@ -11,7 +11,9 @@ import org.contikios.cooja.MoteType;
|
|||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
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.IPAddress;
|
||||||
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
||||||
import org.contikios.cooja.interfaces.MoteAttributes;
|
import org.contikios.cooja.interfaces.MoteAttributes;
|
||||||
@ -71,7 +73,7 @@ public class Trxeb1120MoteType extends Exp5438MoteType {
|
|||||||
throw new MoteTypeCreationException("No identifier");
|
throw new MoteTypeCreationException("No identifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText();
|
||||||
|
|
||||||
if (getCompileCommands() != null) {
|
if (getCompileCommands() != null) {
|
||||||
/* Handle multiple compilation commands one by one */
|
/* Handle multiple compilation commands one by one */
|
||||||
|
@ -11,7 +11,9 @@ import org.contikios.cooja.MoteType;
|
|||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
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.IPAddress;
|
||||||
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
||||||
import org.contikios.cooja.interfaces.MoteAttributes;
|
import org.contikios.cooja.interfaces.MoteAttributes;
|
||||||
@ -71,7 +73,7 @@ public class Trxeb2520MoteType extends Exp5438MoteType {
|
|||||||
throw new MoteTypeCreationException("No identifier");
|
throw new MoteTypeCreationException("No identifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText();
|
||||||
|
|
||||||
if (getCompileCommands() != null) {
|
if (getCompileCommands() != null) {
|
||||||
/* Handle multiple compilation commands one by one */
|
/* Handle multiple compilation commands one by one */
|
||||||
|
@ -49,7 +49,9 @@ import org.contikios.cooja.MoteType;
|
|||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
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.IPAddress;
|
||||||
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
import org.contikios.cooja.interfaces.Mote2MoteRelations;
|
||||||
import org.contikios.cooja.interfaces.MoteAttributes;
|
import org.contikios.cooja.interfaces.MoteAttributes;
|
||||||
@ -112,7 +114,7 @@ public class TyndallMoteType extends MspMoteType {
|
|||||||
throw new MoteTypeCreationException("No identifier");
|
throw new MoteTypeCreationException("No identifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageList compilationOutput = visAvailable ? new MessageListUI() : new MessageListText();
|
||||||
|
|
||||||
if (getCompileCommands() != null) {
|
if (getCompileCommands() != null) {
|
||||||
/* Handle multiple compilation commands one by one */
|
/* Handle multiple compilation commands one by one */
|
||||||
|
@ -77,6 +77,7 @@ import org.contikios.cooja.Watchpoint;
|
|||||||
import org.contikios.cooja.WatchpointMote;
|
import org.contikios.cooja.WatchpointMote;
|
||||||
import org.contikios.cooja.WatchpointMote.WatchpointListener;
|
import org.contikios.cooja.WatchpointMote.WatchpointListener;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
|
import org.contikios.cooja.dialogs.MessageListUI;
|
||||||
import org.contikios.cooja.mspmote.MspMote;
|
import org.contikios.cooja.mspmote.MspMote;
|
||||||
import org.contikios.cooja.mspmote.MspMoteType;
|
import org.contikios.cooja.mspmote.MspMoteType;
|
||||||
import se.sics.mspsim.core.EmulationException;
|
import se.sics.mspsim.core.EmulationException;
|
||||||
@ -468,7 +469,7 @@ public class MspCodeWatcher extends VisPlugin implements MotePlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private MessageList rulesDebuggingOutput = new MessageList();
|
private MessageListUI rulesDebuggingOutput = new MessageListUI();
|
||||||
private boolean rulesWithDebuggingOutput = false;
|
private boolean rulesWithDebuggingOutput = false;
|
||||||
private int[] rulesMatched = null;
|
private int[] rulesMatched = null;
|
||||||
private int[] rulesOK = null;
|
private int[] rulesOK = null;
|
||||||
|
@ -133,6 +133,7 @@ import org.contikios.cooja.dialogs.ConfigurationWizard;
|
|||||||
import org.contikios.cooja.dialogs.CreateSimDialog;
|
import org.contikios.cooja.dialogs.CreateSimDialog;
|
||||||
import org.contikios.cooja.dialogs.ExternalToolsDialog;
|
import org.contikios.cooja.dialogs.ExternalToolsDialog;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
|
import org.contikios.cooja.dialogs.MessageListUI;
|
||||||
import org.contikios.cooja.dialogs.ProjectDirectoriesDialog;
|
import org.contikios.cooja.dialogs.ProjectDirectoriesDialog;
|
||||||
import org.contikios.cooja.plugins.MoteTypeInformation;
|
import org.contikios.cooja.plugins.MoteTypeInformation;
|
||||||
import org.contikios.cooja.plugins.ScriptRunner;
|
import org.contikios.cooja.plugins.ScriptRunner;
|
||||||
@ -3834,7 +3835,7 @@ public class Cooja extends Observable {
|
|||||||
/* Contiki error */
|
/* Contiki error */
|
||||||
if (exception instanceof ContikiError) {
|
if (exception instanceof ContikiError) {
|
||||||
String contikiError = ((ContikiError) exception).getContikiError();
|
String contikiError = ((ContikiError) exception).getContikiError();
|
||||||
MessageList list = new MessageList();
|
MessageListUI list = new MessageListUI();
|
||||||
for (String l: contikiError.split("\n")) {
|
for (String l: contikiError.split("\n")) {
|
||||||
list.addMessage(l);
|
list.addMessage(l);
|
||||||
}
|
}
|
||||||
@ -3843,14 +3844,14 @@ public class Cooja extends Observable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Compilation output */
|
/* Compilation output */
|
||||||
MessageList compilationOutput = null;
|
MessageListUI compilationOutput = null;
|
||||||
if (exception instanceof MoteTypeCreationException
|
if (exception instanceof MoteTypeCreationException
|
||||||
&& ((MoteTypeCreationException) exception).hasCompilationOutput()) {
|
&& ((MoteTypeCreationException) exception).hasCompilationOutput()) {
|
||||||
compilationOutput = ((MoteTypeCreationException) exception).getCompilationOutput();
|
compilationOutput = (MessageListUI) ((MoteTypeCreationException) exception).getCompilationOutput();
|
||||||
} else if (exception.getCause() != null
|
} else if (exception.getCause() != null
|
||||||
&& exception.getCause() instanceof MoteTypeCreationException
|
&& exception.getCause() instanceof MoteTypeCreationException
|
||||||
&& ((MoteTypeCreationException) exception.getCause()).hasCompilationOutput()) {
|
&& ((MoteTypeCreationException) exception.getCause()).hasCompilationOutput()) {
|
||||||
compilationOutput = ((MoteTypeCreationException) exception.getCause()).getCompilationOutput();
|
compilationOutput = (MessageListUI) ((MoteTypeCreationException) exception.getCause()).getCompilationOutput();
|
||||||
}
|
}
|
||||||
if (compilationOutput != null) {
|
if (compilationOutput != null) {
|
||||||
compilationOutput.addPopupMenuItem(null, true);
|
compilationOutput.addPopupMenuItem(null, true);
|
||||||
@ -3858,8 +3859,8 @@ public class Cooja extends Observable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Stack trace */
|
/* Stack trace */
|
||||||
MessageList stackTrace = new MessageList();
|
MessageListUI stackTrace = new MessageListUI();
|
||||||
PrintStream printStream = stackTrace.getInputStream(MessageList.NORMAL);
|
PrintStream printStream = stackTrace.getInputStream(MessageListUI.NORMAL);
|
||||||
exception.printStackTrace(printStream);
|
exception.printStackTrace(printStream);
|
||||||
stackTrace.addPopupMenuItem(null, true);
|
stackTrace.addPopupMenuItem(null, true);
|
||||||
tabbedPane.addTab("Java stack trace", new JScrollPane(stackTrace));
|
tabbedPane.addTab("Java stack trace", new JScrollPane(stackTrace));
|
||||||
@ -3931,7 +3932,7 @@ public class Cooja extends Observable {
|
|||||||
Box buttonBox = Box.createHorizontalBox();
|
Box buttonBox = Box.createHorizontalBox();
|
||||||
|
|
||||||
/* Warnings message list */
|
/* Warnings message list */
|
||||||
MessageList compilationOutput = new MessageList();
|
MessageListUI compilationOutput = new MessageListUI();
|
||||||
for (String w: warnings) {
|
for (String w: warnings) {
|
||||||
compilationOutput.addMessage(w, MessageList.ERROR);
|
compilationOutput.addMessage(w, MessageList.ERROR);
|
||||||
}
|
}
|
||||||
@ -4354,14 +4355,14 @@ public class Cooja extends Observable {
|
|||||||
private static JProgressBar PROGRESS_BAR = null;
|
private static JProgressBar PROGRESS_BAR = null;
|
||||||
private static ArrayList<String> PROGRESS_WARNINGS = new ArrayList<String>();
|
private static ArrayList<String> PROGRESS_WARNINGS = new ArrayList<String>();
|
||||||
public static void setProgressMessage(String msg) {
|
public static void setProgressMessage(String msg) {
|
||||||
setProgressMessage(msg, MessageList.NORMAL);
|
setProgressMessage(msg, MessageListUI.NORMAL);
|
||||||
}
|
}
|
||||||
public static void setProgressMessage(String msg, int type) {
|
public static void setProgressMessage(String msg, int type) {
|
||||||
if (PROGRESS_BAR != null && PROGRESS_BAR.isShowing()) {
|
if (PROGRESS_BAR != null && PROGRESS_BAR.isShowing()) {
|
||||||
PROGRESS_BAR.setString(msg);
|
PROGRESS_BAR.setString(msg);
|
||||||
PROGRESS_BAR.setStringPainted(true);
|
PROGRESS_BAR.setStringPainted(true);
|
||||||
}
|
}
|
||||||
if (type != MessageList.NORMAL) {
|
if (type != MessageListUI.NORMAL) {
|
||||||
PROGRESS_WARNINGS.add(msg);
|
PROGRESS_WARNINGS.add(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,7 @@ import java.util.Vector;
|
|||||||
import org.contikios.cooja.MoteType.MoteTypeCreationException;
|
import org.contikios.cooja.MoteType.MoteTypeCreationException;
|
||||||
import org.contikios.cooja.contikimote.ContikiMoteType;
|
import org.contikios.cooja.contikimote.ContikiMoteType;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
|
import org.contikios.cooja.dialogs.MessageListUI;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The purpose of corecomm's is communicating with a compiled Contiki system
|
* The purpose of corecomm's is communicating with a compiled Contiki system
|
||||||
@ -203,9 +204,9 @@ public abstract class CoreComm {
|
|||||||
*/
|
*/
|
||||||
public static void compileSourceFile(String className)
|
public static void compileSourceFile(String className)
|
||||||
throws MoteTypeCreationException {
|
throws MoteTypeCreationException {
|
||||||
MessageList compilationOutput = new MessageList();
|
MessageListUI compilationOutput = new MessageListUI();
|
||||||
OutputStream compilationStandardStream = compilationOutput
|
OutputStream compilationStandardStream = compilationOutput
|
||||||
.getInputStream(MessageList.NORMAL);
|
.getInputStream(MessageListUI.NORMAL);
|
||||||
OutputStream compilationErrorStream = compilationOutput
|
OutputStream compilationErrorStream = compilationOutput
|
||||||
.getInputStream(MessageList.ERROR);
|
.getInputStream(MessageList.ERROR);
|
||||||
|
|
||||||
|
@ -37,6 +37,7 @@ import org.jdom.Element;
|
|||||||
|
|
||||||
import org.contikios.cooja.contikimote.ContikiMoteType;
|
import org.contikios.cooja.contikimote.ContikiMoteType;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
|
import org.contikios.cooja.dialogs.MessageListUI;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The mote type defines properties common for several motes. These properties
|
* The mote type defines properties common for several motes. These properties
|
||||||
|
@ -45,13 +45,11 @@ import java.util.Collection;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Vector;
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import org.apache.log4j.Level;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
@ -68,8 +66,8 @@ import org.contikios.cooja.mote.memory.SectionMoteMemory;
|
|||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
import org.contikios.cooja.dialogs.ContikiMoteCompileDialog;
|
import org.contikios.cooja.dialogs.ContikiMoteCompileDialog;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageListUI;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
import org.contikios.cooja.dialogs.MessageContainer;
|
||||||
import org.contikios.cooja.mote.memory.ArrayMemory;
|
import org.contikios.cooja.mote.memory.ArrayMemory;
|
||||||
import org.contikios.cooja.mote.memory.MemoryInterface;
|
import org.contikios.cooja.mote.memory.MemoryInterface;
|
||||||
import org.contikios.cooja.mote.memory.MemoryInterface.Symbol;
|
import org.contikios.cooja.mote.memory.MemoryInterface.Symbol;
|
||||||
@ -319,7 +317,7 @@ public class ContikiMoteType implements MoteType {
|
|||||||
if (getCompileCommands() == null) {
|
if (getCompileCommands() == null) {
|
||||||
throw new MoteTypeCreationException("No compile commands specified");
|
throw new MoteTypeCreationException("No compile commands specified");
|
||||||
}
|
}
|
||||||
final MessageList compilationOutput = new MessageList();
|
final MessageListUI compilationOutput = new MessageListUI();
|
||||||
String[] arr = getCompileCommands().split("\n");
|
String[] arr = getCompileCommands().split("\n");
|
||||||
for (String cmd : arr) {
|
for (String cmd : arr) {
|
||||||
if (cmd.trim().isEmpty()) {
|
if (cmd.trim().isEmpty()) {
|
||||||
|
@ -468,7 +468,7 @@ public abstract class AbstractCompileDialog extends JDialog {
|
|||||||
|
|
||||||
protected String[] compilationEnvironment = null; /* Default environment: inherit from current process */
|
protected String[] compilationEnvironment = null; /* Default environment: inherit from current process */
|
||||||
public void compileContiki() throws Exception {
|
public void compileContiki() throws Exception {
|
||||||
final MessageList taskOutput = new MessageList();
|
final MessageListUI taskOutput = new MessageListUI();
|
||||||
|
|
||||||
if (contikiFirmware.exists()) {
|
if (contikiFirmware.exists()) {
|
||||||
contikiFirmware.delete();
|
contikiFirmware.delete();
|
||||||
@ -861,7 +861,7 @@ public abstract class AbstractCompileDialog extends JDialog {
|
|||||||
currentCompilationProcess = null;
|
currentCompilationProcess = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean createNewCompilationTab(MessageList output) {
|
private boolean createNewCompilationTab(MessageListUI output) {
|
||||||
abortAnyCompilation();
|
abortAnyCompilation();
|
||||||
tabbedPane.remove(currentCompilationOutput);
|
tabbedPane.remove(currentCompilationOutput);
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ public class CompileContiki {
|
|||||||
/* TODO Fix me */
|
/* TODO Fix me */
|
||||||
final MessageList messageDialog;
|
final MessageList messageDialog;
|
||||||
if (compilationOutput == null) {
|
if (compilationOutput == null) {
|
||||||
messageDialog = new MessageList();
|
messageDialog = new MessageListUI();
|
||||||
} else {
|
} else {
|
||||||
messageDialog = compilationOutput;
|
messageDialog = compilationOutput;
|
||||||
}
|
}
|
||||||
@ -138,8 +138,8 @@ public class CompileContiki {
|
|||||||
cmd += c + " ";
|
cmd += c + " ";
|
||||||
}
|
}
|
||||||
logger.info("> " + cmd);
|
logger.info("> " + cmd);
|
||||||
messageDialog.addMessage("", MessageList.NORMAL);
|
messageDialog.addMessage("", MessageListUI.NORMAL);
|
||||||
messageDialog.addMessage("> " + cmd, MessageList.NORMAL);
|
messageDialog.addMessage("> " + cmd, MessageListUI.NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
final Process compileProcess;
|
final Process compileProcess;
|
||||||
@ -170,7 +170,7 @@ public class CompileContiki {
|
|||||||
String readLine;
|
String readLine;
|
||||||
while ((readLine = processNormal.readLine()) != null) {
|
while ((readLine = processNormal.readLine()) != null) {
|
||||||
if (messageDialog != null) {
|
if (messageDialog != null) {
|
||||||
messageDialog.addMessage(readLine, MessageList.NORMAL);
|
messageDialog.addMessage(readLine, MessageListUI.NORMAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@ -203,7 +203,7 @@ public class CompileContiki {
|
|||||||
compileProcess.waitFor();
|
compileProcess.waitFor();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
messageDialog.addMessage(e.getMessage(), MessageList.ERROR);
|
messageDialog.addMessage(e.getMessage(), MessageList.ERROR);
|
||||||
syncException.setCompilationOutput(new MessageList());
|
syncException.setCompilationOutput(new MessageListUI());
|
||||||
syncException.fillInStackTrace();
|
syncException.fillInStackTrace();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -214,7 +214,7 @@ public class CompileContiki {
|
|||||||
if (onFailure != null) {
|
if (onFailure != null) {
|
||||||
onFailure.actionPerformed(null);
|
onFailure.actionPerformed(null);
|
||||||
}
|
}
|
||||||
syncException.setCompilationOutput(new MessageList());
|
syncException.setCompilationOutput(new MessageListUI());
|
||||||
syncException.fillInStackTrace();
|
syncException.fillInStackTrace();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -232,13 +232,13 @@ public class CompileContiki {
|
|||||||
if (onFailure != null) {
|
if (onFailure != null) {
|
||||||
onFailure.actionPerformed(null);
|
onFailure.actionPerformed(null);
|
||||||
}
|
}
|
||||||
syncException.setCompilationOutput(new MessageList());
|
syncException.setCompilationOutput(new MessageListUI());
|
||||||
syncException.fillInStackTrace();
|
syncException.fillInStackTrace();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
messageDialog.addMessage("", MessageList.NORMAL);
|
messageDialog.addMessage("", MessageListUI.NORMAL);
|
||||||
messageDialog.addMessage("Compilation succeded", MessageList.NORMAL);
|
messageDialog.addMessage("Compilation succeded", MessageListUI.NORMAL);
|
||||||
if (onSuccess != null) {
|
if (onSuccess != null) {
|
||||||
onSuccess.actionPerformed(null);
|
onSuccess.actionPerformed(null);
|
||||||
}
|
}
|
||||||
|
@ -150,7 +150,7 @@ public class ConfigurationWizard extends JDialog {
|
|||||||
private static int relBssSectionAddr;
|
private static int relBssSectionAddr;
|
||||||
private static int bssSectionSize;
|
private static int bssSectionSize;
|
||||||
|
|
||||||
private static MessageList output;
|
private static MessageListUI output;
|
||||||
private static JDialog progressDialog;
|
private static JDialog progressDialog;
|
||||||
private static JButton button;
|
private static JButton button;
|
||||||
private static JProgressBar progressBar;
|
private static JProgressBar progressBar;
|
||||||
@ -430,7 +430,7 @@ public class ConfigurationWizard extends JDialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void prepareShowTestProgress(JFrame parent, String desc) {
|
private static void prepareShowTestProgress(JFrame parent, String desc) {
|
||||||
output = new MessageList();
|
output = new MessageListUI();
|
||||||
output.addPopupMenuItem(null, true);
|
output.addPopupMenuItem(null, true);
|
||||||
progressDialog = new JDialog(parent, desc);
|
progressDialog = new JDialog(parent, desc);
|
||||||
button = new JButton("Close");
|
button = new JButton("Close");
|
||||||
@ -542,7 +542,7 @@ public class ConfigurationWizard extends JDialog {
|
|||||||
return (String) optionPane.getValue();
|
return (String) optionPane.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean performCompileCTest(MessageList testOutput, PrintStream normalStream, PrintStream errorStream) {
|
public static boolean performCompileCTest(MessageListUI testOutput, PrintStream normalStream, PrintStream errorStream) {
|
||||||
javaLibraryName = "LibTest" + testCounter;
|
javaLibraryName = "LibTest" + testCounter;
|
||||||
cLibraryName = "libtest" + testCounter;
|
cLibraryName = "libtest" + testCounter;
|
||||||
cLibrarySourceFile = new File(ContikiMoteType.tempOutputDirectory, cLibraryName + ".c");
|
cLibrarySourceFile = new File(ContikiMoteType.tempOutputDirectory, cLibraryName + ".c");
|
||||||
@ -642,8 +642,8 @@ public class ConfigurationWizard extends JDialog {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean performLoadTest(MessageList testOutput, PrintStream normalStream, PrintStream errorStream) {
|
public static boolean performLoadTest(MessageListUI testOutput, PrintStream normalStream, PrintStream errorStream) {
|
||||||
MessageList dummy = new MessageList();
|
MessageListUI dummy = new MessageListUI();
|
||||||
PrintStream dummyStream = dummy.getInputStream(MessageList.NORMAL);
|
PrintStream dummyStream = dummy.getInputStream(MessageList.NORMAL);
|
||||||
if (!performCompileCTest(dummy, dummyStream, errorStream)) {
|
if (!performCompileCTest(dummy, dummyStream, errorStream)) {
|
||||||
return false;
|
return false;
|
||||||
@ -696,8 +696,8 @@ public class ConfigurationWizard extends JDialog {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean performAddressTest(MessageList testOutput, PrintStream normalStream, PrintStream errorStream) {
|
public static boolean performAddressTest(MessageListUI testOutput, PrintStream normalStream, PrintStream errorStream) {
|
||||||
MessageList dummy = new MessageList();
|
MessageListUI dummy = new MessageListUI();
|
||||||
PrintStream dummyStream = dummy.getInputStream(MessageList.NORMAL);
|
PrintStream dummyStream = dummy.getInputStream(MessageList.NORMAL);
|
||||||
if (!performCompileCTest(dummy, dummyStream, errorStream)) {
|
if (!performCompileCTest(dummy, dummyStream, errorStream)) {
|
||||||
return false;
|
return false;
|
||||||
@ -743,7 +743,7 @@ public class ConfigurationWizard extends JDialog {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean performMapAddressTest(MessageList testOutput, PrintStream normalStream, PrintStream errorStream) {
|
private static boolean performMapAddressTest(MessageListUI testOutput, PrintStream normalStream, PrintStream errorStream) {
|
||||||
testOutput.addMessage("### Testing map file based address parsing");
|
testOutput.addMessage("### Testing map file based address parsing");
|
||||||
|
|
||||||
File mapFile = new File(ContikiMoteType.tempOutputDirectory, cLibraryName + ContikiMoteType.mapSuffix);
|
File mapFile = new File(ContikiMoteType.tempOutputDirectory, cLibraryName + ContikiMoteType.mapSuffix);
|
||||||
@ -839,7 +839,7 @@ public class ConfigurationWizard extends JDialog {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean performCommandAddressTest(MessageList testOutput, PrintStream normalStream, PrintStream errorStream) {
|
private static boolean performCommandAddressTest(MessageListUI testOutput, PrintStream normalStream, PrintStream errorStream) {
|
||||||
testOutput.addMessage("### Testing command based address parsing");
|
testOutput.addMessage("### Testing command based address parsing");
|
||||||
|
|
||||||
testOutput.addMessage("### Executing command");
|
testOutput.addMessage("### Executing command");
|
||||||
@ -933,8 +933,8 @@ public class ConfigurationWizard extends JDialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static boolean performMemoryReplacementTest(MessageList testOutput, PrintStream normalStream, PrintStream errorStream) {
|
public static boolean performMemoryReplacementTest(MessageListUI testOutput, PrintStream normalStream, PrintStream errorStream) {
|
||||||
MessageList dummy = new MessageList();
|
MessageListUI dummy = new MessageListUI();
|
||||||
PrintStream dummyStream = dummy.getInputStream(MessageList.NORMAL);
|
PrintStream dummyStream = dummy.getInputStream(MessageList.NORMAL);
|
||||||
if (!performCompileCTest(dummy, dummyStream, errorStream)) {
|
if (!performCompileCTest(dummy, dummyStream, errorStream)) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
package org.contikios.cooja.dialogs;
|
||||||
|
|
||||||
|
public class MessageContainer {
|
||||||
|
|
||||||
|
public final int type;
|
||||||
|
public final String message;
|
||||||
|
|
||||||
|
public MessageContainer(String message, int type) {
|
||||||
|
this.message = message;
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
}
|
@ -1,359 +1,17 @@
|
|||||||
/*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.contikios.cooja.dialogs;
|
package org.contikios.cooja.dialogs;
|
||||||
|
|
||||||
import java.awt.Color;
|
public interface MessageList {
|
||||||
import java.awt.Component;
|
|
||||||
import java.awt.Dimension;
|
|
||||||
import java.awt.Toolkit;
|
|
||||||
import java.awt.datatransfer.Clipboard;
|
|
||||||
import java.awt.datatransfer.StringSelection;
|
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
import java.awt.event.MouseAdapter;
|
|
||||||
import java.awt.event.MouseEvent;
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.io.PipedInputStream;
|
|
||||||
import java.io.PipedOutputStream;
|
|
||||||
import java.io.PrintStream;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
import javax.swing.DefaultListCellRenderer;
|
|
||||||
import javax.swing.DefaultListModel;
|
|
||||||
import javax.swing.JCheckBoxMenuItem;
|
|
||||||
import javax.swing.JList;
|
|
||||||
import javax.swing.JMenuItem;
|
|
||||||
import javax.swing.JPopupMenu;
|
|
||||||
import javax.swing.JSeparator;
|
|
||||||
import javax.swing.ListModel;
|
|
||||||
import javax.swing.ListSelectionModel;
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import org.contikios.cooja.Cooja;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author Adam Dunkels
|
|
||||||
* @author Joakim Eriksson
|
|
||||||
* @author Niclas Finne
|
|
||||||
* @author Fredrik Osterlind
|
|
||||||
*/
|
|
||||||
public class MessageList extends JList {
|
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(MessageList.class);
|
|
||||||
|
|
||||||
public static final int NORMAL = 0;
|
public static final int NORMAL = 0;
|
||||||
public static final int WARNING = 1;
|
public static final int WARNING = 1;
|
||||||
public static final int ERROR = 2;
|
public static final int ERROR = 2;
|
||||||
|
|
||||||
private Color[] foregrounds = new Color[] { null, Color.red };
|
public void addMessage(String string, int normal);
|
||||||
private Color[] backgrounds = new Color[] { null, null };
|
|
||||||
|
|
||||||
private JPopupMenu popup = null;
|
public MessageContainer[] getMessages();
|
||||||
private boolean hideNormal = false;
|
|
||||||
|
|
||||||
private int max = -1;
|
public void clearMessages();
|
||||||
|
|
||||||
public MessageList() {
|
public void addMessage(String string);
|
||||||
super.setModel(new MessageModel());
|
|
||||||
setCellRenderer(new MessageRenderer());
|
|
||||||
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
}
|
||||||
* @param max Maximum number of messages
|
|
||||||
*/
|
|
||||||
public MessageList(int max) {
|
|
||||||
this();
|
|
||||||
this.max = max;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Color getForeground(int type) {
|
|
||||||
Color c = type > 0 && type <= foregrounds.length
|
|
||||||
? foregrounds[type - 1] : null;
|
|
||||||
return c == null ? getForeground() : c;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setForeground(int type, Color color) {
|
|
||||||
if (type > 0 && type <= foregrounds.length) {
|
|
||||||
foregrounds[type - 1] = color;
|
|
||||||
} else if (type == NORMAL) {
|
|
||||||
setForeground(color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Color getBackground(int type) {
|
|
||||||
Color c = type > 0 && type <= backgrounds.length
|
|
||||||
? backgrounds[type - 1] : null;
|
|
||||||
return c == null ? getBackground() : c;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBackground(int type, Color color) {
|
|
||||||
if (type > 0 && type <= backgrounds.length) {
|
|
||||||
backgrounds[type - 1] = color;
|
|
||||||
} else if (type == NORMAL) {
|
|
||||||
setBackground(color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public PrintStream getInputStream(final int type) {
|
|
||||||
try {
|
|
||||||
PipedInputStream input = new PipedInputStream();
|
|
||||||
PipedOutputStream output = new PipedOutputStream(input);
|
|
||||||
final BufferedReader stringInput = new BufferedReader(new InputStreamReader(input));
|
|
||||||
|
|
||||||
Thread readThread = new Thread(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
String readLine;
|
|
||||||
try {
|
|
||||||
while ((readLine = stringInput.readLine()) != null) {
|
|
||||||
addMessage(readLine, type);
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
// Occurs when write end closes pipe - die quietly
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
readThread.start();
|
|
||||||
|
|
||||||
return new PrintStream(output);
|
|
||||||
} catch (IOException e) {
|
|
||||||
logger.error(messages);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addMessage(String message) {
|
|
||||||
addMessage(message, NORMAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
private ArrayList<MessageContainer> messages = new ArrayList<MessageContainer>();
|
|
||||||
|
|
||||||
public MessageContainer[] getMessages() {
|
|
||||||
return messages.toArray(new MessageContainer[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateModel() {
|
|
||||||
boolean scroll = getLastVisibleIndex() >= getModel().getSize() - 2;
|
|
||||||
|
|
||||||
while (messages.size() > getModel().getSize()) {
|
|
||||||
((DefaultListModel) getModel()).addElement(messages.get(getModel().getSize()));
|
|
||||||
}
|
|
||||||
while (max > 0 && getModel().getSize() > max) {
|
|
||||||
((DefaultListModel) getModel()).removeElementAt(0);
|
|
||||||
messages.remove(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (scroll) {
|
|
||||||
ensureIndexIsVisible(getModel().getSize() - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addMessage(final String message, final int type) {
|
|
||||||
Cooja.setProgressMessage(message, type);
|
|
||||||
|
|
||||||
MessageContainer msg = new MessageContainer(message, type);
|
|
||||||
messages.add(msg);
|
|
||||||
|
|
||||||
java.awt.EventQueue.invokeLater(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
updateModel();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void clearMessages() {
|
|
||||||
messages.clear();
|
|
||||||
((DefaultListModel) getModel()).clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setModel(ListModel model) {
|
|
||||||
throw new IllegalArgumentException("changing model not permitted");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addPopupMenuItem(JMenuItem item, boolean withDefaults) {
|
|
||||||
if (popup == null) {
|
|
||||||
popup = new JPopupMenu();
|
|
||||||
addMouseListener(new MouseAdapter() {
|
|
||||||
@Override
|
|
||||||
public void mouseClicked(MouseEvent e) {
|
|
||||||
if (e.isPopupTrigger()) {
|
|
||||||
popup.show(MessageList.this, e.getX(), e.getY());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void mousePressed(MouseEvent e) {
|
|
||||||
if (e.isPopupTrigger()) {
|
|
||||||
popup.show(MessageList.this, e.getX(), e.getY());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void mouseReleased(MouseEvent e) {
|
|
||||||
if (e.isPopupTrigger()) {
|
|
||||||
popup.show(MessageList.this, e.getX(), e.getY());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
JMenuItem headerMenuItem = new JMenuItem("Output:");
|
|
||||||
headerMenuItem.setEnabled(false);
|
|
||||||
popup.add(headerMenuItem);
|
|
||||||
popup.add(new JSeparator());
|
|
||||||
|
|
||||||
if (withDefaults) {
|
|
||||||
/* Create default menu items */
|
|
||||||
final JMenuItem hideNormalMenuItem = new JCheckBoxMenuItem("Hide normal output");
|
|
||||||
hideNormalMenuItem.setEnabled(true);
|
|
||||||
hideNormalMenuItem.addActionListener(new ActionListener() {
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
MessageList.this.hideNormal = hideNormalMenuItem.isSelected();
|
|
||||||
((MessageModel)getModel()).updateList();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
popup.add(hideNormalMenuItem);
|
|
||||||
|
|
||||||
JMenuItem consoleOutputMenuItem = new JMenuItem("Output to console");
|
|
||||||
consoleOutputMenuItem.setEnabled(true);
|
|
||||||
consoleOutputMenuItem.addActionListener(new ActionListener() {
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
MessageContainer[] messages = getMessages();
|
|
||||||
logger.info("\nCOMPILATION OUTPUT:\n");
|
|
||||||
for (MessageContainer msg: messages) {
|
|
||||||
if (hideNormal && msg.type == NORMAL) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
logger.info(msg);
|
|
||||||
}
|
|
||||||
logger.info("\n");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
popup.add(consoleOutputMenuItem);
|
|
||||||
|
|
||||||
JMenuItem clipboardMenuItem = new JMenuItem("Copy to clipboard");
|
|
||||||
clipboardMenuItem.setEnabled(true);
|
|
||||||
clipboardMenuItem.addActionListener(new ActionListener() {
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
|
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
MessageContainer[] messages = getMessages();
|
|
||||||
for (MessageContainer msg: messages) {
|
|
||||||
if (hideNormal && msg.type == NORMAL) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
sb.append(msg + "\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
StringSelection stringSelection = new StringSelection(sb.toString());
|
|
||||||
clipboard.setContents(stringSelection, null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
popup.add(clipboardMenuItem);
|
|
||||||
|
|
||||||
popup.add(new JSeparator());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
popup.add(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------
|
|
||||||
// MessageContainer
|
|
||||||
// -------------------------------------------------------------------
|
|
||||||
|
|
||||||
public static class MessageContainer {
|
|
||||||
public final int type;
|
|
||||||
public final String message;
|
|
||||||
|
|
||||||
public MessageContainer(String message, int type) {
|
|
||||||
this.message = message;
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // end of inner class MessageContainer
|
|
||||||
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------
|
|
||||||
// Renderer for messages
|
|
||||||
// -------------------------------------------------------------------
|
|
||||||
|
|
||||||
private class MessageModel extends DefaultListModel {
|
|
||||||
public void updateList() {
|
|
||||||
fireContentsChanged(this, 0, getSize());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class MessageRenderer extends DefaultListCellRenderer {
|
|
||||||
private Dimension nullDimension = new Dimension(0,0);
|
|
||||||
@Override
|
|
||||||
public Component getListCellRendererComponent(
|
|
||||||
JList list,
|
|
||||||
Object value,
|
|
||||||
int index,
|
|
||||||
boolean isSelected,
|
|
||||||
boolean cellHasFocus)
|
|
||||||
{
|
|
||||||
super.getListCellRendererComponent(list, value, index, isSelected,
|
|
||||||
cellHasFocus);
|
|
||||||
MessageContainer msg = (MessageContainer) value;
|
|
||||||
|
|
||||||
if (hideNormal && msg.type == NORMAL && index != MessageList.this.getModel().getSize()-1) {
|
|
||||||
setPreferredSize(nullDimension);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
setPreferredSize(null);
|
|
||||||
setForeground(((MessageList) list).getForeground(msg.type));
|
|
||||||
setBackground(((MessageList) list).getBackground(msg.type));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // end of inner class MessageRenderer
|
|
||||||
|
|
||||||
} // end of MessagList
|
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
package org.contikios.cooja.dialogs;
|
||||||
|
|
||||||
|
public class MessageListText implements MessageList {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addMessage(String string, int type) {
|
||||||
|
System.out.println("Message:" + string);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MessageContainer[] getMessages() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return new MessageContainer[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearMessages() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addMessage(String string) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
addMessage(string, MessageList.NORMAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
334
tools/cooja/java/org/contikios/cooja/dialogs/MessageListUI.java
Normal file
334
tools/cooja/java/org/contikios/cooja/dialogs/MessageListUI.java
Normal file
@ -0,0 +1,334 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.contikios.cooja.dialogs;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Component;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.Toolkit;
|
||||||
|
import java.awt.datatransfer.Clipboard;
|
||||||
|
import java.awt.datatransfer.StringSelection;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.awt.event.MouseAdapter;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.PipedInputStream;
|
||||||
|
import java.io.PipedOutputStream;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import javax.swing.DefaultListCellRenderer;
|
||||||
|
import javax.swing.DefaultListModel;
|
||||||
|
import javax.swing.JCheckBoxMenuItem;
|
||||||
|
import javax.swing.JList;
|
||||||
|
import javax.swing.JMenuItem;
|
||||||
|
import javax.swing.JPopupMenu;
|
||||||
|
import javax.swing.JSeparator;
|
||||||
|
import javax.swing.ListModel;
|
||||||
|
import javax.swing.ListSelectionModel;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import org.contikios.cooja.Cooja;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Adam Dunkels
|
||||||
|
* @author Joakim Eriksson
|
||||||
|
* @author Niclas Finne
|
||||||
|
* @author Fredrik Osterlind
|
||||||
|
*/
|
||||||
|
public class MessageListUI extends JList implements MessageList {
|
||||||
|
|
||||||
|
private static final Logger logger = Logger.getLogger(MessageListUI.class);
|
||||||
|
|
||||||
|
private Color[] foregrounds = new Color[] { null, Color.red };
|
||||||
|
private Color[] backgrounds = new Color[] { null, null };
|
||||||
|
|
||||||
|
private JPopupMenu popup = null;
|
||||||
|
private boolean hideNormal = false;
|
||||||
|
|
||||||
|
private int max = -1;
|
||||||
|
|
||||||
|
public MessageListUI() {
|
||||||
|
super.setModel(new MessageModel());
|
||||||
|
setCellRenderer(new MessageRenderer());
|
||||||
|
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param max Maximum number of messages
|
||||||
|
*/
|
||||||
|
public MessageListUI(int max) {
|
||||||
|
this();
|
||||||
|
this.max = max;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Color getForeground(int type) {
|
||||||
|
Color c = type > 0 && type <= foregrounds.length
|
||||||
|
? foregrounds[type - 1] : null;
|
||||||
|
return c == null ? getForeground() : c;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setForeground(int type, Color color) {
|
||||||
|
if (type > 0 && type <= foregrounds.length) {
|
||||||
|
foregrounds[type - 1] = color;
|
||||||
|
} else if (type == NORMAL) {
|
||||||
|
setForeground(color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Color getBackground(int type) {
|
||||||
|
Color c = type > 0 && type <= backgrounds.length
|
||||||
|
? backgrounds[type - 1] : null;
|
||||||
|
return c == null ? getBackground() : c;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBackground(int type, Color color) {
|
||||||
|
if (type > 0 && type <= backgrounds.length) {
|
||||||
|
backgrounds[type - 1] = color;
|
||||||
|
} else if (type == NORMAL) {
|
||||||
|
setBackground(color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public PrintStream getInputStream(final int type) {
|
||||||
|
try {
|
||||||
|
PipedInputStream input = new PipedInputStream();
|
||||||
|
PipedOutputStream output = new PipedOutputStream(input);
|
||||||
|
final BufferedReader stringInput = new BufferedReader(new InputStreamReader(input));
|
||||||
|
|
||||||
|
Thread readThread = new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
String readLine;
|
||||||
|
try {
|
||||||
|
while ((readLine = stringInput.readLine()) != null) {
|
||||||
|
addMessage(readLine, type);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
// Occurs when write end closes pipe - die quietly
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
readThread.start();
|
||||||
|
|
||||||
|
return new PrintStream(output);
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error(messages);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addMessage(String message) {
|
||||||
|
addMessage(message, NORMAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ArrayList<MessageContainer> messages = new ArrayList<MessageContainer>();
|
||||||
|
|
||||||
|
public MessageContainer[] getMessages() {
|
||||||
|
return messages.toArray(new MessageContainer[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateModel() {
|
||||||
|
boolean scroll = getLastVisibleIndex() >= getModel().getSize() - 2;
|
||||||
|
|
||||||
|
while (messages.size() > getModel().getSize()) {
|
||||||
|
((DefaultListModel<MessageContainer>) getModel()).addElement(messages.get(getModel().getSize()));
|
||||||
|
}
|
||||||
|
while (max > 0 && getModel().getSize() > max) {
|
||||||
|
((DefaultListModel) getModel()).removeElementAt(0);
|
||||||
|
messages.remove(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (scroll) {
|
||||||
|
ensureIndexIsVisible(getModel().getSize() - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addMessage(final String message, final int type) {
|
||||||
|
Cooja.setProgressMessage(message, type);
|
||||||
|
|
||||||
|
MessageContainer msg = new MessageContainer(message, type);
|
||||||
|
messages.add(msg);
|
||||||
|
|
||||||
|
java.awt.EventQueue.invokeLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
updateModel();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearMessages() {
|
||||||
|
messages.clear();
|
||||||
|
((DefaultListModel) getModel()).clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setModel(ListModel model) {
|
||||||
|
throw new IllegalArgumentException("changing model not permitted");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addPopupMenuItem(JMenuItem item, boolean withDefaults) {
|
||||||
|
if (popup == null) {
|
||||||
|
popup = new JPopupMenu();
|
||||||
|
addMouseListener(new MouseAdapter() {
|
||||||
|
@Override
|
||||||
|
public void mouseClicked(MouseEvent e) {
|
||||||
|
if (e.isPopupTrigger()) {
|
||||||
|
popup.show(MessageListUI.this, e.getX(), e.getY());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void mousePressed(MouseEvent e) {
|
||||||
|
if (e.isPopupTrigger()) {
|
||||||
|
popup.show(MessageListUI.this, e.getX(), e.getY());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void mouseReleased(MouseEvent e) {
|
||||||
|
if (e.isPopupTrigger()) {
|
||||||
|
popup.show(MessageListUI.this, e.getX(), e.getY());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
JMenuItem headerMenuItem = new JMenuItem("Output:");
|
||||||
|
headerMenuItem.setEnabled(false);
|
||||||
|
popup.add(headerMenuItem);
|
||||||
|
popup.add(new JSeparator());
|
||||||
|
|
||||||
|
if (withDefaults) {
|
||||||
|
/* Create default menu items */
|
||||||
|
final JMenuItem hideNormalMenuItem = new JCheckBoxMenuItem("Hide normal output");
|
||||||
|
hideNormalMenuItem.setEnabled(true);
|
||||||
|
hideNormalMenuItem.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
MessageListUI.this.hideNormal = hideNormalMenuItem.isSelected();
|
||||||
|
((MessageModel)getModel()).updateList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
popup.add(hideNormalMenuItem);
|
||||||
|
|
||||||
|
JMenuItem consoleOutputMenuItem = new JMenuItem("Output to console");
|
||||||
|
consoleOutputMenuItem.setEnabled(true);
|
||||||
|
consoleOutputMenuItem.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
MessageContainer[] messages = getMessages();
|
||||||
|
logger.info("\nCOMPILATION OUTPUT:\n");
|
||||||
|
for (MessageContainer msg: messages) {
|
||||||
|
if (hideNormal && msg.type == NORMAL) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
logger.info(msg);
|
||||||
|
}
|
||||||
|
logger.info("\n");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
popup.add(consoleOutputMenuItem);
|
||||||
|
|
||||||
|
JMenuItem clipboardMenuItem = new JMenuItem("Copy to clipboard");
|
||||||
|
clipboardMenuItem.setEnabled(true);
|
||||||
|
clipboardMenuItem.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
|
||||||
|
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
MessageContainer[] messages = getMessages();
|
||||||
|
for (MessageContainer msg: messages) {
|
||||||
|
if (hideNormal && msg.type == NORMAL) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
sb.append(msg + "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
StringSelection stringSelection = new StringSelection(sb.toString());
|
||||||
|
clipboard.setContents(stringSelection, null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
popup.add(clipboardMenuItem);
|
||||||
|
|
||||||
|
popup.add(new JSeparator());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
popup.add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
// Renderer for messages
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
|
||||||
|
private class MessageModel extends DefaultListModel {
|
||||||
|
public void updateList() {
|
||||||
|
fireContentsChanged(this, 0, getSize());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class MessageRenderer extends DefaultListCellRenderer {
|
||||||
|
private Dimension nullDimension = new Dimension(0,0);
|
||||||
|
@Override
|
||||||
|
public Component getListCellRendererComponent(
|
||||||
|
JList list,
|
||||||
|
Object value,
|
||||||
|
int index,
|
||||||
|
boolean isSelected,
|
||||||
|
boolean cellHasFocus)
|
||||||
|
{
|
||||||
|
super.getListCellRendererComponent(list, value, index, isSelected,
|
||||||
|
cellHasFocus);
|
||||||
|
MessageContainer msg = (MessageContainer) value;
|
||||||
|
|
||||||
|
if (hideNormal && msg.type == NORMAL && index != MessageListUI.this.getModel().getSize()-1) {
|
||||||
|
setPreferredSize(nullDimension);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
setPreferredSize(null);
|
||||||
|
setForeground(((MessageListUI) list).getForeground(msg.type));
|
||||||
|
setBackground(((MessageListUI) list).getBackground(msg.type));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // end of inner class MessageRenderer
|
||||||
|
|
||||||
|
} // end of MessagList
|
@ -85,6 +85,7 @@ import org.contikios.cooja.PluginType;
|
|||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.VisPlugin;
|
import org.contikios.cooja.VisPlugin;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageList;
|
||||||
|
import org.contikios.cooja.dialogs.MessageListUI;
|
||||||
import org.contikios.cooja.util.StringUtils;
|
import org.contikios.cooja.util.StringUtils;
|
||||||
|
|
||||||
@ClassDescription("Simulation script editor")
|
@ClassDescription("Simulation script editor")
|
||||||
@ -503,7 +504,7 @@ public class ScriptRunner extends VisPlugin {
|
|||||||
final BufferedReader err = new BufferedReader(new InputStreamReader(process.getErrorStream()));
|
final BufferedReader err = new BufferedReader(new InputStreamReader(process.getErrorStream()));
|
||||||
|
|
||||||
/* GUI components */
|
/* GUI components */
|
||||||
final MessageList testOutput = new MessageList();
|
final MessageListUI testOutput = new MessageListUI();
|
||||||
final AbstractAction abort = new AbstractAction() {
|
final AbstractAction abort = new AbstractAction() {
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
process.destroy();
|
process.destroy();
|
||||||
@ -538,14 +539,14 @@ public class ScriptRunner extends VisPlugin {
|
|||||||
String line;
|
String line;
|
||||||
try {
|
try {
|
||||||
while ((line = input.readLine()) != null) {
|
while ((line = input.readLine()) != null) {
|
||||||
testOutput.addMessage(line, MessageList.NORMAL);
|
testOutput.addMessage(line, MessageListUI.NORMAL);
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
testOutput.addMessage("", MessageList.NORMAL);
|
testOutput.addMessage("", MessageListUI.NORMAL);
|
||||||
testOutput.addMessage("", MessageList.NORMAL);
|
testOutput.addMessage("", MessageListUI.NORMAL);
|
||||||
testOutput.addMessage("", MessageList.NORMAL);
|
testOutput.addMessage("", MessageListUI.NORMAL);
|
||||||
|
|
||||||
/* Parse log file, check if test succeeded */
|
/* Parse log file, check if test succeeded */
|
||||||
try {
|
try {
|
||||||
@ -559,7 +560,7 @@ public class ScriptRunner extends VisPlugin {
|
|||||||
if (l == null) {
|
if (l == null) {
|
||||||
line = "";
|
line = "";
|
||||||
}
|
}
|
||||||
testOutput.addMessage(l, MessageList.NORMAL);
|
testOutput.addMessage(l, MessageListUI.NORMAL);
|
||||||
if (l.contains("TEST OK")) {
|
if (l.contains("TEST OK")) {
|
||||||
testSucceeded = true;
|
testSucceeded = true;
|
||||||
break;
|
break;
|
||||||
|
@ -46,7 +46,6 @@ import org.contikios.cooja.ClassDescription;
|
|||||||
import org.contikios.cooja.Mote;
|
import org.contikios.cooja.Mote;
|
||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.SimEventCentral.MoteCountListener;
|
import org.contikios.cooja.SimEventCentral.MoteCountListener;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
|
||||||
import org.contikios.cooja.interfaces.IPAddress;
|
import org.contikios.cooja.interfaces.IPAddress;
|
||||||
import org.contikios.cooja.interfaces.Position;
|
import org.contikios.cooja.interfaces.Position;
|
||||||
import org.contikios.cooja.interfaces.RimeAddress;
|
import org.contikios.cooja.interfaces.RimeAddress;
|
||||||
|
@ -54,8 +54,8 @@ import org.contikios.cooja.Plugin;
|
|||||||
import org.contikios.cooja.ProjectConfig;
|
import org.contikios.cooja.ProjectConfig;
|
||||||
import org.contikios.cooja.Simulation;
|
import org.contikios.cooja.Simulation;
|
||||||
import org.contikios.cooja.dialogs.CompileContiki;
|
import org.contikios.cooja.dialogs.CompileContiki;
|
||||||
import org.contikios.cooja.dialogs.MessageList;
|
import org.contikios.cooja.dialogs.MessageContainer;
|
||||||
import org.contikios.cooja.dialogs.MessageList.MessageContainer;
|
import org.contikios.cooja.dialogs.MessageListUI;
|
||||||
import org.contikios.cooja.plugins.ScriptRunner;
|
import org.contikios.cooja.plugins.ScriptRunner;
|
||||||
import org.contikios.cooja.PluginType;
|
import org.contikios.cooja.PluginType;
|
||||||
|
|
||||||
@ -415,7 +415,7 @@ public class ExecuteJAR {
|
|||||||
}
|
}
|
||||||
|
|
||||||
logger.info("Building executable JAR: " + outputFile);
|
logger.info("Building executable JAR: " + outputFile);
|
||||||
MessageList errors = new MessageList();
|
MessageListUI errors = new MessageListUI();
|
||||||
try {
|
try {
|
||||||
CompileContiki.compile(
|
CompileContiki.compile(
|
||||||
"jar cfm " + outputFile.getAbsolutePath() + " manifest.tmp .",
|
"jar cfm " + outputFile.getAbsolutePath() + " manifest.tmp .",
|
||||||
|
Loading…
Reference in New Issue
Block a user