Merge branch 'sprint101'
diff --git a/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessage.java b/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessage.java
index 0ebdf09..2f6233d 100644
--- a/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessage.java
+++ b/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessage.java
@@ -31,6 +31,10 @@
       setMemSource(OteByteMessageType.OTE_BYTE_MESSAGE);
    }
    
+   public OteByteMessage(String name, String topic, int defaultByteSize) {
+      this(name, topic, 1, defaultByteSize);
+   }
+   
    public OteByteMessage(byte[] bytedata) {
 	  super("holder", 0, 0, false, 0, 0);
 	  data = new OteByteMessageData(this, bytedata.length);
diff --git a/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessageListener.java b/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessageListener.java
new file mode 100644
index 0000000..66e2f14
--- /dev/null
+++ b/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessageListener.java
@@ -0,0 +1,7 @@
+package org.eclipse.ote.bytemessage;
+
+public interface OteByteMessageListener<T extends OteByteMessage> {
+   
+   void onDataAvailable(T message);
+
+}
diff --git a/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessageUtil.java b/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessageUtil.java
index 7c90250..48e1806 100644
--- a/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessageUtil.java
+++ b/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessageUtil.java
@@ -138,5 +138,37 @@
       props.put("event.topics", signal.getHeader().TOPIC.getValue());
       return context.registerService(EventHandler.class, eventHandler, props);
    }
+   
+   public static <T extends OteByteMessage> ServiceRegistration<EventHandler> subscribe(T signal, OteByteMessageListener<T> eventHandler) {
+      BundleContext context = ServiceUtility.getContext();
+      if (context == null) {
+         return null;
+      }
+      Hashtable<String, Object> props = new Hashtable<String, Object>();
+      props.put("event.topics", signal.getHeader().TOPIC.getValue());
+      return context.registerService(EventHandler.class, new EventHandlerForOteByteMessage<T>(signal, eventHandler), props);
+   }
+   
+   private static class EventHandlerForOteByteMessage<T extends OteByteMessage> implements EventHandler {
+
+      private final T message;
+      private OteByteMessageListener<T> listener;
+      
+      public EventHandlerForOteByteMessage(T message, OteByteMessageListener<T> listener){
+         this.message = message;
+         this.listener = listener;
+      }
+      
+      @Override
+      public void handleEvent(Event arg0) {
+         try{
+            message.getActiveDataSource().getMem().setData(OteByteMessageUtil.getBytes(arg0));
+            listener.onDataAvailable(message);
+         } catch (Throwable th){
+            th.printStackTrace();
+         }
+      }
+      
+   }
 
 }
diff --git a/org.eclipse.ote.event.bridge.jms/.classpath b/org.eclipse.ote.event.bridge.jms/.classpath
deleted file mode 100644
index ad32c83..0000000
--- a/org.eclipse.ote.event.bridge.jms/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.ote.event.bridge.jms/.project b/org.eclipse.ote.event.bridge.jms/.project
deleted file mode 100644
index 250ac9a..0000000
--- a/org.eclipse.ote.event.bridge.jms/.project
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ote.event.bridge.jms</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ds.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.ote.event.bridge.jms/META-INF/MANIFEST.MF b/org.eclipse.ote.event.bridge.jms/META-INF/MANIFEST.MF
deleted file mode 100644
index 9d5e35a..0000000
--- a/org.eclipse.ote.event.bridge.jms/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,17 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: OTE Jms Event Bridge  (Incubation)
-Bundle-SymbolicName: org.eclipse.ote.event.bridge.jms;singleton:=true
-Bundle-Version: 0.11.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.core.runtime;version="3.4.0",
- org.eclipse.osee.framework.core.data,
- org.eclipse.osee.framework.core.exception,
- org.eclipse.osee.framework.jdk.core.type,
- org.eclipse.osee.framework.logging,
- org.eclipse.osee.framework.messaging,
- org.eclipse.osee.ote.message,
- org.eclipse.osee.ote.message.elements,
- org.eclipse.ote.bytemessage,
- org.eclipse.ote.jms.node,
- org.osgi.service.event;version="1.3.0"
diff --git a/org.eclipse.ote.event.bridge.jms/OSGI-INF/EventToJmsComponent.xml b/org.eclipse.ote.event.bridge.jms/OSGI-INF/EventToJmsComponent.xml
deleted file mode 100644
index 46f0f20..0000000
--- a/org.eclipse.ote.event.bridge.jms/OSGI-INF/EventToJmsComponent.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop" enabled="true" immediate="true" name="org.eclipse.ote.event.bridge.jms.EventToJms">
-   <implementation class="org.eclipse.ote.event.bridge.jms.EventToJmsComponent"/>
-   <property name="event.topics" type="String" value="ote/*"/>
-   <reference bind="bindConnectionNode" cardinality="1..1" interface="org.eclipse.ote.jms.node.JmsConnectionNodeProvider" name="JmsConnectionNodeProvider" policy="static" unbind="unbindConnectionNode"/>
-   <reference bind="bindEventAdmin" cardinality="1..1" interface="org.osgi.service.event.EventAdmin" name="EventAdmin" policy="static" unbind="unbindEventAdmin"/>
-   <service>
-      <provide interface="org.osgi.service.event.EventHandler"/>
-   </service>
-</scr:component>
diff --git a/org.eclipse.ote.event.bridge.jms/build.properties b/org.eclipse.ote.event.bridge.jms/build.properties
deleted file mode 100644
index 6210e84..0000000
--- a/org.eclipse.ote.event.bridge.jms/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               OSGI-INF/
-source.. = src/
diff --git a/org.eclipse.ote.event.bridge.jms/pom.xml b/org.eclipse.ote.event.bridge.jms/pom.xml
deleted file mode 100644
index aba57b9..0000000
--- a/org.eclipse.ote.event.bridge.jms/pom.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-	<modelVersion>4.0.0</modelVersion>
-
-
-	<parent>
-		<groupId>org.eclipse.ote</groupId>
-		<artifactId>org.eclipse.ote.parent</artifactId>
-		<version>0.11.0-SNAPSHOT</version>
-		<relativePath>../org.eclipse.ote.parent</relativePath>
-	</parent>
-
-	<artifactId>org.eclipse.ote.event.bridge.jms</artifactId>
-	<packaging>eclipse-plugin</packaging>
-	<name>Eclipse OTE Event Bridge (Incubation)</name>
-
-</project>
diff --git a/org.eclipse.ote.event.bridge.jms/src/org/eclipse/ote/event/bridge/jms/BridgeMessages.java b/org.eclipse.ote.event.bridge.jms/src/org/eclipse/ote/event/bridge/jms/BridgeMessages.java
deleted file mode 100644
index 772596b..0000000
--- a/org.eclipse.ote.event.bridge.jms/src/org/eclipse/ote/event/bridge/jms/BridgeMessages.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 Boeing.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Boeing - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ote.event.bridge.jms;
-
-import org.eclipse.osee.framework.messaging.MessageID;
-
-public enum BridgeMessages implements MessageID {
-	
-	BYTE_MESSAGE("OTE_BYTE_MESSAGE");
-	
-	private String id;
-
-	BridgeMessages(String id){
-		this.id = id;
-	}
-	
-	@Override
-	public Class<?> getSerializationClass() {
-		return null;
-	}
-
-	@Override
-	public boolean isReplyRequired() {
-		return false;
-	}
-
-	@Override
-	public boolean isTopic() {
-		return true;
-	}
-
-	@Override
-	public String getId() {
-		return id;
-	}
-
-	@Override
-	public String getName() {
-		return id;
-	}
-
-}
diff --git a/org.eclipse.ote.event.bridge.jms/src/org/eclipse/ote/event/bridge/jms/EventToJmsComponent.java b/org.eclipse.ote.event.bridge.jms/src/org/eclipse/ote/event/bridge/jms/EventToJmsComponent.java
deleted file mode 100644
index 03a0e2a..0000000
--- a/org.eclipse.ote.event.bridge.jms/src/org/eclipse/ote/event/bridge/jms/EventToJmsComponent.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 Boeing.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Boeing - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ote.event.bridge.jms;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.logging.Level;
-
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.messaging.OseeMessagingListener;
-import org.eclipse.osee.framework.messaging.ReplyConnection;
-import org.eclipse.ote.bytemessage.OteByteMessage;
-import org.eclipse.ote.bytemessage.OteByteMessageUtil;
-import org.eclipse.ote.jms.node.JmsConnectionNodeProvider;
-import org.osgi.service.event.Event;
-import org.osgi.service.event.EventAdmin;
-import org.osgi.service.event.EventHandler;
-
-public class EventToJmsComponent extends OseeMessagingListener implements EventHandler {
-
-   private JmsConnectionNodeProvider connecitonNode;
-   private EventAdmin eventAdmin;
-   private final List<Event> eventQueue;
-   private final UUID MYID;
-
-   public EventToJmsComponent(){
-      eventQueue = new CopyOnWriteArrayList<Event>();
-      MYID = UUID.randomUUID();
-   }
-
-   void start(){
-   }
-
-   void stop(){
-   }
-
-   public synchronized void bindConnectionNode(JmsConnectionNodeProvider connectionNode){
-      this.connecitonNode = connectionNode;
-      connecitonNode.getConnectionNode().subscribe(BridgeMessages.BYTE_MESSAGE, this);
-      for(Event event:eventQueue){
-         sendEvent(event);
-      }
-      eventQueue.clear();
-   }
-
-   public synchronized void unbindConnectionNode(JmsConnectionNodeProvider connectionNode){
-      connecitonNode.getConnectionNode().unsubscribe(BridgeMessages.BYTE_MESSAGE, this);
-      this.connecitonNode = null;
-   }
-
-   public void bindEventAdmin(EventAdmin eventAdmin){
-      this.eventAdmin = eventAdmin;
-   }
-
-   public void unbindEventAdmin(EventAdmin eventAdmin){
-      this.eventAdmin = null;
-   }
-
-   @Override
-   public synchronized void handleEvent(Event event) {
-      if(connecitonNode != null){
-         sendEvent(event);
-      } else {
-         eventQueue.add(event);
-      }
-   }
-
-   private void sendEvent(Event event){
-      Object obj = event.getProperty("bytes");
-      if(obj != null && obj instanceof byte[]){
-         try {
-            UUID id = OteByteMessageUtil.getUUID((byte[])obj);
-            if(!id.equals(MYID)){
-               OteByteMessage msg = new OteByteMessage((byte[])obj);
-               OteByteMessageUtil.setUUID(msg, MYID);
-               connecitonNode.getConnectionNode().send(BridgeMessages.BYTE_MESSAGE, obj);
-            }
-         } catch (Exception e) {
-            e.printStackTrace();
-         }
-      }
-   }
-
-   @Override
-   public void process(Object message, Map<String, Object> headers, ReplyConnection replyConnection) {
-      if(message instanceof byte[]){
-         UUID id = OteByteMessageUtil.getUUID((byte[])message);
-         if(!id.equals(MYID)){
-            OteByteMessage msg = new OteByteMessage((byte[])message);
-            OteByteMessageUtil.setUUID(msg, MYID);
-            Map<String, Object> data = new HashMap<String, Object>();
-            data.put("bytes", msg.getData());
-            Event newevent = new Event(msg.getHeader().TOPIC.getValue(), data);
-            eventAdmin.sendEvent(newevent);
-         }
-      } else {
-         OseeLog.log(EventToJmsComponent.class, Level.SEVERE, "not a recognized message" + message.getClass());
-      }
-   }
-}
diff --git a/org.eclipse.ote.jms.node/.classpath b/org.eclipse.ote.jms.node/.classpath
deleted file mode 100644
index ad32c83..0000000
--- a/org.eclipse.ote.jms.node/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.ote.jms.node/.project b/org.eclipse.ote.jms.node/.project
deleted file mode 100644
index 9c2b6a5..0000000
--- a/org.eclipse.ote.jms.node/.project
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ote.jms.node</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ds.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.ote.jms.node/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.ote.jms.node/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index c537b63..0000000
--- a/org.eclipse.ote.jms.node/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
diff --git a/org.eclipse.ote.jms.node/META-INF/MANIFEST.MF b/org.eclipse.ote.jms.node/META-INF/MANIFEST.MF
deleted file mode 100644
index 2b50b7e..0000000
--- a/org.eclipse.ote.jms.node/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,20 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Ote JMS Node  (Incubation)
-Bundle-SymbolicName: org.eclipse.ote.jms.node;singleton:=true
-Bundle-Version: 0.11.0.qualifier
-Bundle-Vendor: The Boeing Company
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.osee.connection.service,
- org.eclipse.osee.framework.core.exception,
- org.eclipse.osee.framework.jdk.core.type,
- org.eclipse.osee.framework.jdk.core.util;resolution:=optional,
- org.eclipse.osee.framework.logging,
- org.eclipse.osee.framework.messaging,
- org.eclipse.osee.ote.core.environment,
- org.eclipse.osee.ote.core.environment.interfaces,
- org.eclipse.osee.ote.service;resolution:=optional
-Export-Package: org.eclipse.ote.jms.node
-Require-Bundle: org.eclipse.core.runtime
-Service-Component: OSGI-INF/*.xml
-Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.ote.jms.node/OSGI-INF/ClientSideConnectionNodeLifecycleController.xml b/org.eclipse.ote.jms.node/OSGI-INF/ClientSideConnectionNodeLifecycleController.xml
deleted file mode 100644
index 33dd499..0000000
--- a/org.eclipse.ote.jms.node/OSGI-INF/ClientSideConnectionNodeLifecycleController.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop" name="org.eclipse.ote.jms.node.ClientSideConnectionNodeLifecycleController">
-   <implementation class="org.eclipse.ote.jms.node.internal.ClientSideConnectionNodeLifecycleController"/>
-      <reference bind="setClientService"
-			  cardinality="1..1"
-			  interface="org.eclipse.osee.ote.service.IOteClientService"
-			  name="IOteClientService"
-			  policy="dynamic"/>
-   <reference bind="setMessageService"
-			  cardinality="1..1"
-			  interface="org.eclipse.osee.framework.messaging.MessageService"
-			  name="MessageService"
-			  policy="dynamic"/>
-</scr:component>
diff --git a/org.eclipse.ote.jms.node/OSGI-INF/ServerSideConnectionNodeProvider.xml b/org.eclipse.ote.jms.node/OSGI-INF/ServerSideConnectionNodeProvider.xml
deleted file mode 100644
index 1e967db..0000000
--- a/org.eclipse.ote.jms.node/OSGI-INF/ServerSideConnectionNodeProvider.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop" enabled="true" immediate="true" name="org.eclipse.ote.jms.node.ServerSideConnectionNodeProvider">
-   <implementation class="org.eclipse.ote.jms.node.internal.ServerSideConnectionNodeProviderImpl"/>
-   <reference
-              cardinality="1..1"
-              interface="org.eclipse.osee.framework.messaging.MessageService"
-              name="MessageService"
-              policy="static"
-              bind="setMessageService"
-              unbind="unsetMessageService"/>
-   <service>
-      <provide interface="org.eclipse.ote.jms.node.JmsConnectionNodeProvider"/>
-   </service>
-   <reference bind="bindHostTestEnvironment" cardinality="1..1" interface="org.eclipse.osee.ote.core.environment.interfaces.IHostTestEnvironment" name="IHostTestEnvironment" policy="static" unbind="unbindHostTestEnvironment"/>
-</scr:component>
diff --git a/org.eclipse.ote.jms.node/build.properties b/org.eclipse.ote.jms.node/build.properties
deleted file mode 100644
index 6210e84..0000000
--- a/org.eclipse.ote.jms.node/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               OSGI-INF/
-source.. = src/
diff --git a/org.eclipse.ote.jms.node/pom.xml b/org.eclipse.ote.jms.node/pom.xml
deleted file mode 100644
index e26ebba..0000000
--- a/org.eclipse.ote.jms.node/pom.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-	<modelVersion>4.0.0</modelVersion>
-
-	<parent>
-		<groupId>org.eclipse.ote</groupId>
-		<artifactId>org.eclipse.ote.parent</artifactId>
-		<version>0.11.0-SNAPSHOT</version>
-		<relativePath>../org.eclipse.ote.parent</relativePath>
-	</parent>
-
-	<artifactId>org.eclipse.ote.jms.node</artifactId>
-	<packaging>eclipse-plugin</packaging>
-	<name>Eclipse OTE JMS Node Connection  (Incubation)</name>
-
-
- 
-
-</project>
\ No newline at end of file
diff --git a/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/JmsConnectionNodeProvider.java b/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/JmsConnectionNodeProvider.java
deleted file mode 100644
index ba5edb2..0000000
--- a/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/JmsConnectionNodeProvider.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 Boeing.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Boeing - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ote.jms.node;
-
-import org.eclipse.osee.framework.messaging.ConnectionNode;
-
-public interface JmsConnectionNodeProvider {
-	ConnectionNode getConnectionNode();
-}
diff --git a/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ClientSideConnectionNodeLifecycleController.java b/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ClientSideConnectionNodeLifecycleController.java
deleted file mode 100644
index dd9bef6..0000000
--- a/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ClientSideConnectionNodeLifecycleController.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 Boeing.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Boeing - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ote.jms.node.internal;
-
-import java.io.Serializable;
-import java.util.Map.Entry;
-import java.util.logging.Level;
-
-import org.eclipse.osee.connection.service.IServiceConnector;
-import org.eclipse.osee.framework.jdk.core.util.EnhancedProperties;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.messaging.ConnectionNode;
-import org.eclipse.osee.framework.messaging.MessageService;
-import org.eclipse.osee.framework.messaging.NodeInfo;
-import org.eclipse.osee.ote.service.ConnectionEvent;
-import org.eclipse.osee.ote.service.IOteClientService;
-import org.eclipse.osee.ote.service.ITestConnectionListener;
-import org.eclipse.ote.jms.node.JmsConnectionNodeProvider;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceRegistration;
-
-
-
-/**
- * @author Michael P. Masterson
- */
-public final class ClientSideConnectionNodeLifecycleController implements ITestConnectionListener {
-
-   private MessageService messageService;
-   private IOteClientService clientService;
-   private BundleContext context;
-   private ServiceRegistration<?> registration;
-
-   public void start(BundleContext context) {
-      this.context = context;
-      clientService.addConnectionListener(this);
-
-   }
-
-   public void stop() {
-      clientService.removeConnectionListener(this);
-      unregisterConnectionNode();
-      this.messageService = null;
-      this.clientService = null;
-      this.context = null;
-
-   }
-
-   public void setMessageService(MessageService messageService) {
-      this.messageService = messageService;
-   }
-
-   public void setClientService(IOteClientService clientService) {
-      this.clientService = clientService;
-   }
-
-   @Override
-   public void onPostConnect(ConnectionEvent event) {
-      if (context == null) {
-         OseeLog.log(getClass(), Level.SEVERE, "Received a onPostConnect event with a null context.");
-         return;
-      }
-      IServiceConnector connector = event.getConnector();
-      registerConnectionNode(connector);
-   }
-
-   /**
-    * @param connector
-    */
-   private void registerConnectionNode(IServiceConnector connector) {
-      Object obj = connector.getProperty("OTEEmbeddedBroker", null);
-      if (obj != null && obj instanceof NodeInfo) {
-         debug("Registering client connection service");
-         NodeInfo nodeInfo = (NodeInfo) obj;
-         registerConnectionNode(nodeInfo);
-      } else {
-         debug(String.format("Problem using connector...%s:%s", obj.getClass(), obj));
-         EnhancedProperties properties = connector.getProperties();
-         for( Entry<String, Serializable> entry : properties.entrySet() ) {
-            debug(String.format("\t%s = %s", entry.getKey(), entry.getValue()));
-         }
-      }
-   }
-
-   /**
-    * @param nodeInfo
-    */
-   private void registerConnectionNode(NodeInfo nodeInfo) {
-      try {
-         ConnectionNode node = messageService.get(nodeInfo);
-         registration =
-               context.registerService(JmsConnectionNodeProvider.class.getName(), new ClientSideConnectionNodeProviderImpl(node), null);
-      } catch (Exception ex) {
-         OseeLog.log(getClass(), Level.SEVERE, ex);
-      }
-   }
-
-   @Override
-   public void onConnectionLost(IServiceConnector connector) {
-      unregisterConnectionNode();
-   }
-
-
-
-   private void unregisterConnectionNode() {
-      if (registration != null) {
-         registration.unregister();
-         registration = null;
-      }
-   }
-
-   @Override
-   public void onPreDisconnect(ConnectionEvent event) {
-      unregisterConnectionNode();
-   }
-
-   private void debug(String msg ) {
-      if( System.getProperty("ote.jms.node.debug") != null )
-         System.out.println(msg);
-   }
-}
diff --git a/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ClientSideConnectionNodeProviderImpl.java b/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ClientSideConnectionNodeProviderImpl.java
deleted file mode 100644
index 60ad781..0000000
--- a/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ClientSideConnectionNodeProviderImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 Boeing.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Boeing - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ote.jms.node.internal;
-
-import org.eclipse.osee.framework.messaging.ConnectionNode;
-import org.eclipse.ote.jms.node.JmsConnectionNodeProvider;
-
-
-public final class ClientSideConnectionNodeProviderImpl implements JmsConnectionNodeProvider{
-
-	private final ConnectionNode node;
-
-	ClientSideConnectionNodeProviderImpl(ConnectionNode node) {
-		this.node = node;
-	}
-
-	@Override
-	public ConnectionNode getConnectionNode() {
-		return node;
-	}
-}
diff --git a/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ServerSideConnectionNodeProviderImpl.java b/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ServerSideConnectionNodeProviderImpl.java
deleted file mode 100644
index 5de9eb1..0000000
--- a/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ServerSideConnectionNodeProviderImpl.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 Boeing.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Boeing - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ote.jms.node.internal;
-
-import java.util.logging.Level;
-
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.messaging.ConnectionNode;
-import org.eclipse.osee.framework.messaging.MessageService;
-import org.eclipse.osee.framework.messaging.NodeInfo;
-import org.eclipse.osee.ote.core.environment.interfaces.IHostTestEnvironment;
-import org.eclipse.ote.jms.node.JmsConnectionNodeProvider;
-
-
-
-/**
- * @author Michael P. Masterson
- */
-public final class ServerSideConnectionNodeProviderImpl implements JmsConnectionNodeProvider {
-   private IHostTestEnvironment testEnv;
-   private MessageService messageService;
-
-   private static JmsConnectionNodeProvider instance;
-
-   public void start() {
-      instance = this;
-   }
-
-   public void stop() {
-   }
-
-   public synchronized void bindHostTestEnvironment(IHostTestEnvironment testEnv) {
-      this.testEnv = testEnv;
-   }
-
-   public synchronized void unbindHostTestEnvironment(IHostTestEnvironment testEnv) {
-      this.testEnv = null;
-   }
-
-   public synchronized void setMessageService(MessageService messageService) {
-      this.messageService = messageService;
-   }
-
-   public synchronized void unsetMessageService(MessageService messageService) {
-      this.messageService = null;
-   }
-
-   public static JmsConnectionNodeProvider getInstance() {
-      return instance;
-   }
-
-   @Override
-   public synchronized ConnectionNode getConnectionNode() {
-      try {
-         NodeInfo info = testEnv.getBroker();
-         ConnectionNode connection = messageService.get(info);
-         return connection;
-      } catch (Exception ex) {
-         OseeLog.log(this.getClass(), Level.SEVERE, ex);
-      }
-      return null;
-   }
-}
diff --git a/org.eclipse.ote.parent/pom.xml b/org.eclipse.ote.parent/pom.xml
index ddaf563..2ae8a50 100644
--- a/org.eclipse.ote.parent/pom.xml
+++ b/org.eclipse.ote.parent/pom.xml
@@ -18,11 +18,10 @@
 	<modules>
 	   <module>../org.eclipse.ote.bytemessage</module>
 	   <module>../org.eclipse.ote.bytemessage.test</module>
-	   <module>../org.eclipse.ote.event.bridge.jms</module>
+	   
 		<module>../org.eclipse.ote.io</module>
 		<module>../org.eclipse.ote.io.test</module>
-	   <module>../org.eclipse.ote.jms.node</module>
-		<module>../org.eclipse.ote.services.core</module>
+	   <module>../org.eclipse.ote.services.core</module>
 		<module>../org.eclipse.ote.statemachine</module>
 		<module>../org.eclipse.ote.statemachine.test</module>
 	
diff --git a/org.eclipse.ote.serverclient.feature/feature.xml b/org.eclipse.ote.serverclient.feature/feature.xml
index 8fc56de..2a389c5 100644
--- a/org.eclipse.ote.serverclient.feature/feature.xml
+++ b/org.eclipse.ote.serverclient.feature/feature.xml
@@ -30,19 +30,6 @@
          version="0.0.0"
          unpack="false"/>
 
-   <plugin
-         id="org.eclipse.ote.event.bridge.jms"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ote.jms.node"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
 
    <plugin
          id="org.eclipse.ote.services.core"
diff --git a/org.eclipse.ote.ui.message.util/META-INF/MANIFEST.MF b/org.eclipse.ote.ui.message.util/META-INF/MANIFEST.MF
index 39d86a9..9ac3415 100644
--- a/org.eclipse.ote.ui.message.util/META-INF/MANIFEST.MF
+++ b/org.eclipse.ote.ui.message.util/META-INF/MANIFEST.MF
@@ -15,6 +15,7 @@
 Export-Package: org.eclipse.ote.ui.message.util
 Import-Package: org.eclipse.osee.framework.jdk.core.persistence,
  org.eclipse.osee.framework.plugin.core.util,
+ org.eclipse.osee.framework.ui.swt,
  org.eclipse.osee.ote.messaging.dds.service,
  org.eclipse.ote.message.lookup
 Bundle-Vendor: Eclipse Open System Engineering Environment
diff --git a/org.eclipse.ote.ui.message.util/build.properties b/org.eclipse.ote.ui.message.util/build.properties
index 34d2e4d..c6baffa 100644
--- a/org.eclipse.ote.ui.message.util/build.properties
+++ b/org.eclipse.ote.ui.message.util/build.properties
@@ -1,4 +1,5 @@
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
-               .
+               .,\
+               icons/
diff --git a/org.eclipse.ote.ui.message.util/icons/add.png b/org.eclipse.ote.ui.message.util/icons/add.png
new file mode 100644
index 0000000..5b051f6
--- /dev/null
+++ b/org.eclipse.ote.ui.message.util/icons/add.png
Binary files differ
diff --git a/org.eclipse.ote.ui.message.util/icons/deleteAll.gif b/org.eclipse.ote.ui.message.util/icons/deleteAll.gif
new file mode 100644
index 0000000..28a3785
--- /dev/null
+++ b/org.eclipse.ote.ui.message.util/icons/deleteAll.gif
Binary files differ
diff --git a/org.eclipse.ote.ui.message.util/icons/remove.png b/org.eclipse.ote.ui.message.util/icons/remove.png
new file mode 100644
index 0000000..7fb4e90
--- /dev/null
+++ b/org.eclipse.ote.ui.message.util/icons/remove.png
Binary files differ
diff --git a/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/AddMessagesAction.java b/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/AddMessagesAction.java
new file mode 100644
index 0000000..4f53bf3
--- /dev/null
+++ b/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/AddMessagesAction.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2013 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ote.ui.message.util;
+
+import java.util.ArrayList;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.window.Window;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.ote.message.lookup.MessageLookupResult;
+import org.eclipse.ote.ui.message.util.MessageSelectionDialog;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * @author Ken J. Aguilar
+ */
+public class AddMessagesAction extends Action {
+
+
+	private final MessageSelectComposite composite;
+	
+   public AddMessagesAction(MessageSelectComposite composite) {
+      super("Select Messages", IAction.AS_PUSH_BUTTON);
+      setToolTipText("Select messages to append to the list of messages that will be recorded");
+      this.composite = composite;
+      setImageDescriptor(Images.ADD.getImageDescriptor());
+      
+   }
+
+   @Override
+   public void run() {
+      Shell shell = Displays.getActiveShell();
+      MessageSelectionDialog msgSelectionDialog = new MessageSelectionDialog(shell);
+      msgSelectionDialog.setMultipleSelection(true);
+      if (msgSelectionDialog.open() == Window.OK) {
+         Object[] result = (Object[])msgSelectionDialog.getResult();
+         ArrayList<MessageLookupResult> list = new ArrayList<MessageLookupResult>(result.length);
+         for (Object item : result) {
+        	 MessageLookupResult lookupResult = (MessageLookupResult) item;
+        	 list.add(lookupResult);
+         }
+         composite.addMessages(list);
+      }
+
+   }
+
+}
diff --git a/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/DeleteAllMessagesAction.java b/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/DeleteAllMessagesAction.java
new file mode 100644
index 0000000..b13a3a1
--- /dev/null
+++ b/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/DeleteAllMessagesAction.java
@@ -0,0 +1,20 @@
+package org.eclipse.ote.ui.message.util;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+
+public class DeleteAllMessagesAction extends Action{
+	private final MessageSelectComposite composite;
+
+	public DeleteAllMessagesAction(MessageSelectComposite composite) {
+		super("Delete All Messages", IAction.AS_PUSH_BUTTON);
+		setToolTipText("Delete all messages from the recording list");
+		this.composite = composite;
+		setImageDescriptor(Images.DELETE_ALL.getImageDescriptor());
+
+	}
+
+	public void run() {
+		composite.deleteAll();
+	}
+}
diff --git a/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/DeleteMessagesAction.java b/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/DeleteMessagesAction.java
new file mode 100644
index 0000000..a61f5d9
--- /dev/null
+++ b/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/DeleteMessagesAction.java
@@ -0,0 +1,19 @@
+package org.eclipse.ote.ui.message.util;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+
+public class DeleteMessagesAction extends Action{
+	private final MessageSelectComposite composite;
+	
+	public DeleteMessagesAction(MessageSelectComposite composite) {
+		super("Delete Selected Messages", IAction.AS_PUSH_BUTTON);
+		setToolTipText("Delete all selected from the recording list");
+		setImageDescriptor(Images.DELETE.getImageDescriptor());
+		this.composite = composite;
+	}
+
+	public void run() {
+		composite.deleteSelection();
+	}
+}
diff --git a/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/Images.java b/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/Images.java
new file mode 100644
index 0000000..7904a3b
--- /dev/null
+++ b/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/Images.java
@@ -0,0 +1,64 @@
+package org.eclipse.ote.ui.message.util;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.graphics.Image;
+import org.osgi.framework.FrameworkUtil;
+
+public enum Images {
+	ADD("icons/add.png"),
+	DELETE_ALL("icons/deleteAll.gif"),
+	DELETE("icons/remove.png"),
+	RECORD("icons/record_action.png");
+	
+	private final String path;
+
+	private static ImageRegistry ir = new ImageRegistry();
+	/**
+	 * @param path
+	 */
+	private Images(String path) {
+		this.path = path;
+	}
+
+	/**
+	 * @return the path
+	 */
+	public String getPath() {
+		return path;
+	}
+	
+	public Image getImage() {
+		Image image = ir.get(path);
+		if (image == null) {
+			image = ImageDescriptor.createFromURL(getFile(path)).createImage();
+			ir.put(path, image);
+		}
+		return image;
+	}
+	
+	public ImageDescriptor getImageDescriptor() {
+		ImageDescriptor descriptor = ir.getDescriptor(path);
+		if (descriptor == null) {
+			descriptor = ImageDescriptor.createFromURL(getFile(path));
+			ir.put(path, descriptor);
+		}
+		return descriptor;
+	}
+	
+	private static URL getFile(String path) {
+		URL url = FrameworkUtil.getBundle(Images.class).getEntry(path);
+		if (url == null) {
+			return null;
+		}
+		try {
+			return FileLocator.resolve(url);
+		} catch (IOException e) {
+			throw new RuntimeException("could not resolve URL from path: " + path, e);
+		}
+	}
+}
diff --git a/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/MessageSelectComposite.java b/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/MessageSelectComposite.java
new file mode 100644
index 0000000..5abf523
--- /dev/null
+++ b/org.eclipse.ote.ui.message.util/src/org/eclipse/ote/ui/message/util/MessageSelectComposite.java
@@ -0,0 +1,224 @@
+package org.eclipse.ote.ui.message.util;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.osee.framework.ui.swt.Widgets;
+import org.eclipse.ote.message.lookup.MessageLookupResult;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+
+public class MessageSelectComposite extends Composite{
+
+	
+	private final TableViewer viewer;
+
+	private final HashSet<MessageLookupResult> items = new HashSet<MessageLookupResult>();
+
+	private final AddMessagesAction addMessageAction;
+	private final DeleteMessagesAction deleteMessageAction;
+	private final DeleteAllMessagesAction deleteAllMessagesAction;
+	
+//	private Button browseBtn;
+
+	public MessageSelectComposite(Composite parent, int style) {
+		super(parent, style);
+		Widgets.setFormLayout(this, 5, 5);
+//		Label label = new Label(this, SWT.RIGHT);
+//		label.setText("Output File:");
+		
+//		outputFilePathTxt = new Text(this, SWT.SINGLE | SWT.BORDER);
+//		outputFilePathTxt.addModifyListener(new ModifyListener() {
+//			
+//			@Override
+//			public void modifyText(ModifyEvent e) {
+////				updateUiStatus();
+//			}
+//		});
+//		browseBtn = new Button(this, SWT.PUSH);
+//		browseBtn.setText("Browse");
+//		browseBtn.addSelectionListener(new SelectionAdapter() {
+//
+//			@Override
+//			public void widgetSelected(SelectionEvent e) {
+//				doBrowseForFile();
+//			}
+//		});
+		addMessageAction = new AddMessagesAction(this);
+      deleteMessageAction = new DeleteMessagesAction(this);
+      deleteAllMessagesAction = new DeleteAllMessagesAction(this);
+      
+		Label titleLabel = new Label(this, SWT.LEFT);
+		titleLabel.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT));
+		titleLabel.setText("Selected Messages");		
+		titleLabel.setBackground(getBackground());
+		viewer = new TableViewer(this, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
+		viewer.setContentProvider(new ArrayContentProvider());
+		viewer.setLabelProvider(new LabelProvider() {
+			
+			@Override
+			public String getText(Object element) {
+			   MessageLookupResult item = (MessageLookupResult) element;
+				return String.format("%s [%s]", item.getMessageName(), item.getMessageType());
+			}
+			
+			
+		});
+		
+		
+		ActionContributionItem addItem = new ActionContributionItem(addMessageAction);
+		addItem.fill(this);
+		Button addButton = (Button)addItem.getWidget();
+		
+		ActionContributionItem delItem = new ActionContributionItem(deleteMessageAction);
+		delItem.fill(this);
+      Button delButton = (Button)delItem.getWidget();
+      
+      ActionContributionItem delAllItem = new ActionContributionItem(deleteAllMessagesAction);
+      delAllItem.fill(this);
+      Button delAllButton = (Button)delAllItem.getWidget();
+		
+		
+//		Label statusLabel = new Label(this, SWT.RIGHT);
+//		statusLabel.setText("Status:");
+//		
+//		statusValueLabel = new Label(this, SWT.LEFT);
+//		statusValueLabel.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT));
+		
+//		Widgets.attachToParent(outputFilePathTxt, SWT.TOP, 0, 5);
+//		Widgets.attachToControl(label, outputFilePathTxt, SWT.TOP, SWT.CENTER, 0);
+//		Widgets.attachToControl(browseBtn, outputFilePathTxt, SWT.TOP, SWT.CENTER, 0);
+//		
+//		Widgets.attachToParent(label, SWT.LEFT, 0, 0);
+//		Widgets.attachToControl(outputFilePathTxt, label, SWT.LEFT, SWT.RIGHT, 5);
+//		Widgets.attachToControl(outputFilePathTxt, browseBtn, SWT.RIGHT, SWT.LEFT, -5);
+
+//		Widgets.attachToParent(browseBtn, SWT.RIGHT, 100, 0);
+//
+//		Widgets.attachToControl(titleLabel, browseBtn, SWT.TOP, SWT.BOTTOM, 5);
+		Widgets.attachToParent(titleLabel, SWT.LEFT, 0, 0);
+		Widgets.attachToParent(titleLabel, SWT.RIGHT, 100, 0);
+
+		Widgets.attachToControl(viewer.getControl(), titleLabel, SWT.TOP, SWT.BOTTOM, 0);
+		Widgets.attachToParent(viewer.getControl(), SWT.LEFT, 0, 0, 400, 600);
+//		final Object ld = viewer.getControl().getLayoutData();
+//		final FormData fd = ld != null ? (FormData) ld : new FormData();
+//      fd.bottom = new FormAttachment(100, 100, 0);
+      
+      Widgets.attachToParent(viewer.getControl(), SWT.BOTTOM, 100, 0);
+		
+		Widgets.attachToParent(addButton, SWT.RIGHT, 100, 0, 400, 600);
+		Widgets.attachToParent(delButton, SWT.RIGHT, 100, 0, 400, 600);
+		Widgets.attachToParent(delAllButton, SWT.RIGHT, 100, 0, 400, 600);
+		
+		Widgets.attachToControl(viewer.getControl(), addButton, SWT.RIGHT, SWT.LEFT, 0);
+		Widgets.attachToControl(viewer.getControl(), delButton, SWT.RIGHT, SWT.LEFT, 0);
+		Widgets.attachToControl(viewer.getControl(), delAllButton, SWT.RIGHT, SWT.LEFT, 0);
+
+		Widgets.attachToControl(addButton, titleLabel, SWT.TOP, SWT.BOTTOM, 0);
+		Widgets.attachToControl(delButton, addButton, SWT.TOP, SWT.BOTTOM, 0);
+		Widgets.attachToControl(delAllButton, delButton, SWT.TOP, SWT.BOTTOM, 0);
+		
+		hookContextMenu();
+	}
+	
+	private void hookContextMenu() {
+      MenuManager menuMgr = new MenuManager("#PopupMenu");
+      menuMgr.setRemoveAllWhenShown(true);
+      menuMgr.addMenuListener(new IMenuListener() {
+         @Override
+         public void menuAboutToShow(IMenuManager manager) {
+            manager.add(addMessageAction);
+            manager.add(deleteMessageAction);
+            manager.add(deleteAllMessagesAction);
+         }
+      });
+      Menu menu = menuMgr.createContextMenu(this.getViewer().getControl());
+      this.getViewer().getControl().setMenu(menu);
+   }
+
+	
+//	private void doBrowseForFile() {
+//		FileDialog dialog = new FileDialog(Display.getDefault().getActiveShell(), SWT.SAVE);
+//		dialog.setFilterExtensions(new String[]{"*.bmr"});
+//		dialog.setFilterIndex(0);
+//		dialog.setOverwrite(false);
+//		String path = dialog.open();
+//		if (path != null) {
+//			outputFilePathTxt.setText(path);
+//		}
+//	}
+	
+	TableViewer getViewer() {
+		return viewer;
+	}
+
+	void addMessages(Collection<MessageLookupResult> messages) {
+		items.addAll(messages);
+		setInput();
+	}
+	
+	void deleteAll() {
+		items.clear();
+		setInput();
+	}
+	
+	void deleteSelection() {
+		items.removeAll(Arrays.asList(((IStructuredSelection)viewer.getSelection()).toArray()));
+		setInput();
+	}
+	
+	private void setInput() {
+		viewer.setInput(items.toArray());
+	}
+	
+//	private static boolean isValidPath(String string) {
+//		if (string == null || string.isEmpty()) {
+//			return false;
+//		}
+//		File file = new File(string);
+//		// check parent directory
+//		File dir = file.getParentFile();
+//		return dir != null && dir.isDirectory() && dir.exists();
+//	}
+	
+	public AddMessagesAction getAddMessageAction() {
+		return addMessageAction;
+	}
+
+	public DeleteMessagesAction getDeleteMessageAction() {
+		return deleteMessageAction;
+	}
+
+	public DeleteAllMessagesAction getDeleteAllMessagesAction() {
+		return deleteAllMessagesAction;
+	}
+
+   public HashSet<MessageLookupResult> getMessages() {
+      return items;
+   }
+
+   public void setMessages(HashSet<MessageLookupResult> messages) {
+      if(messages != null){
+         items.addAll(messages);
+         setInput();
+      }
+   }
+
+}
diff --git a/org.eclipse.ote.ui.message/META-INF/MANIFEST.MF b/org.eclipse.ote.ui.message/META-INF/MANIFEST.MF
index 58c0e35..41c1b4b 100644
--- a/org.eclipse.ote.ui.message/META-INF/MANIFEST.MF
+++ b/org.eclipse.ote.ui.message/META-INF/MANIFEST.MF
@@ -25,7 +25,8 @@
  org.eclipse.ote.ui.message.tree,
  org.eclipse.ote.ui.message.watch
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.osee.framework.core.exception,
+Import-Package: org.eclipse.nebula.widgets.xviewer.core.model,
+ org.eclipse.osee.framework.core.exception,
  org.eclipse.osee.framework.core.operation,
  org.eclipse.osee.framework.jdk.core.type,
  org.eclipse.ote.bytemessage,
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/MessageInputComponent.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/MessageInputComponent.java
index f9ce31b..f026eba 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/MessageInputComponent.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/MessageInputComponent.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.ote.ui.message;
 import java.util.List;
-
 import org.eclipse.ote.message.lookup.MessageInput;
 import org.eclipse.ote.message.lookup.MessageInputItem;
 
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/MessageInputComponentAll.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/MessageInputComponentAll.java
index e257a33..b72858c 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/MessageInputComponentAll.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/MessageInputComponentAll.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.ote.ui.message;
 import java.util.List;
-
 import org.eclipse.ote.message.lookup.MessageInput;
 import org.eclipse.ote.message.lookup.MessageInputItem;
 
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/MessageInputUtil.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/MessageInputUtil.java
index 775fa39..1d4e955 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/MessageInputUtil.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/MessageInputUtil.java
@@ -2,7 +2,6 @@
 
 import java.util.List;
 import java.util.logging.Level;
-
 import org.eclipse.osee.framework.logging.OseeLog;
 import org.eclipse.ote.message.lookup.MessageInputItem;
 import org.eclipse.ote.ui.message.watch.AddWatchParameter;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/internal/SWTResourceManager.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/internal/SWTResourceManager.java
index 224e5d4..bdf4f81 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/internal/SWTResourceManager.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/internal/SWTResourceManager.java
@@ -4,7 +4,6 @@
 import java.io.InputStream;
 import java.util.HashMap;
 import java.util.Iterator;
-
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Cursor;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/messageXViewer/MessageXViewerFactory.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/messageXViewer/MessageXViewerFactory.java
index 04249bc..5cbdcf6 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/messageXViewer/MessageXViewerFactory.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/messageXViewer/MessageXViewerFactory.java
@@ -12,14 +12,14 @@
 
 import java.io.File;
 import java.util.logging.Level;
-import org.eclipse.nebula.widgets.xviewer.XViewerColumn;
-import org.eclipse.nebula.widgets.xviewer.XViewerColumn.SortDataType;
 import org.eclipse.nebula.widgets.xviewer.XViewerFactory;
+import org.eclipse.nebula.widgets.xviewer.core.model.SortDataType;
+import org.eclipse.nebula.widgets.xviewer.core.model.XViewerAlign;
+import org.eclipse.nebula.widgets.xviewer.core.model.XViewerColumn;
 import org.eclipse.nebula.widgets.xviewer.customize.FileStoreCustomizations;
 import org.eclipse.nebula.widgets.xviewer.customize.IXViewerCustomizations;
 import org.eclipse.osee.framework.logging.OseeLog;
 import org.eclipse.osee.framework.plugin.core.util.OseeData;
-import org.eclipse.swt.SWT;
 
 /**
  * @author Andrew M. Finkbeiner
@@ -27,21 +27,21 @@
 public class MessageXViewerFactory extends XViewerFactory {
 
    private static String VIEWER_NAMESPACE = "org.eclipse.osee.ote.message.MessageXViewer";
-   public static XViewerColumn name = new XViewerColumn("osee.message.name", "Name", 200, SWT.LEFT, true,
+   public static XViewerColumn name = new XViewerColumn("osee.message.name", "Name", 200, XViewerAlign.Left, true,
       SortDataType.String, false, null);
-   public static XViewerColumn psUpdateCount = new XViewerColumn("osee.message.udpates", "Updates", 60, SWT.LEFT, true,
+   public static XViewerColumn psUpdateCount = new XViewerColumn("osee.message.udpates", "Updates", 60, XViewerAlign.Left, true,
       SortDataType.Integer, false, null);
-   public static XViewerColumn value = new XViewerColumn("osee.message.value", "Value", 100, SWT.LEFT, true,
+   public static XViewerColumn value = new XViewerColumn("osee.message.value", "Value", 100, XViewerAlign.Left, true,
       SortDataType.String, false, null);
-   public static XViewerColumn byteOffset = new XViewerColumn("osee.message.offset", "Offset", 50, SWT.LEFT, true,
+   public static XViewerColumn byteOffset = new XViewerColumn("osee.message.offset", "Offset", 50, XViewerAlign.Left, true,
       SortDataType.Integer, false, null);
-   public static XViewerColumn msb = new XViewerColumn("osee.message.msb", "MSB", 50, SWT.LEFT, true,
+   public static XViewerColumn msb = new XViewerColumn("osee.message.msb", "MSB", 50, XViewerAlign.Left, true,
       SortDataType.Integer, false, null);
-   public static XViewerColumn lsb = new XViewerColumn("osee.message.lsb", "LSB", 50, SWT.LEFT, true,
+   public static XViewerColumn lsb = new XViewerColumn("osee.message.lsb", "LSB", 50, XViewerAlign.Left, true,
       SortDataType.Integer, false, null);
-   public static XViewerColumn bitSize = new XViewerColumn("osee.message.bitSize", "Bit Size", 60, SWT.LEFT, true,
+   public static XViewerColumn bitSize = new XViewerColumn("osee.message.bitSize", "Bit Size", 60, XViewerAlign.Left, true,
       SortDataType.Integer, false, null);
-   public static XViewerColumn elementType = new XViewerColumn("osee.message.type", "Type", 100, SWT.LEFT, true,
+   public static XViewerColumn elementType = new XViewerColumn("osee.message.type", "Type", 100, XViewerAlign.Left, true,
       SortDataType.String, false, null);
 
    private final FileStoreCustomizations propertyStoreCustomizations;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/navigate/MessageNavigateViewItems.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/navigate/MessageNavigateViewItems.java
index ecd4972..9be4847 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/navigate/MessageNavigateViewItems.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/navigate/MessageNavigateViewItems.java
@@ -12,7 +12,6 @@
 
 import java.util.ArrayList;
 import java.util.List;
-
 import org.eclipse.osee.framework.ui.plugin.xnavigate.IXNavigateContainer;
 import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem;
 import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemAction;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/AbstractTreeNode.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/AbstractTreeNode.java
index 9c57892..304c6a2 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/AbstractTreeNode.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/AbstractTreeNode.java
@@ -12,8 +12,7 @@
 
 import java.util.Collection;
 import java.util.Collections;
-
-import org.eclipse.nebula.widgets.xviewer.XViewerColumn;
+import org.eclipse.nebula.widgets.xviewer.core.model.XViewerColumn;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Image;
 
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/ElementNode.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/ElementNode.java
index c417327..c002b32 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/ElementNode.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/ElementNode.java
@@ -15,9 +15,8 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
 import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.nebula.widgets.xviewer.XViewerColumn;
+import org.eclipse.nebula.widgets.xviewer.core.model.XViewerColumn;
 import org.eclipse.osee.framework.ui.swt.ImageManager;
 import org.eclipse.osee.framework.ui.swt.OverlayImage;
 import org.eclipse.osee.framework.ui.swt.OverlayImage.Location;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageNode.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageNode.java
index 7c08344..70c1d0f 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageNode.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageNode.java
@@ -13,9 +13,8 @@
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
-
 import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.nebula.widgets.xviewer.XViewerColumn;
+import org.eclipse.nebula.widgets.xviewer.core.model.XViewerColumn;
 import org.eclipse.osee.framework.ui.swt.ImageManager;
 import org.eclipse.osee.framework.ui.swt.OverlayImage;
 import org.eclipse.osee.framework.ui.swt.OverlayImage.Location;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageTreeBuilder.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageTreeBuilder.java
index 61e897e..f43830b 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageTreeBuilder.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageTreeBuilder.java
@@ -14,7 +14,6 @@
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
-
 import org.eclipse.osee.ote.message.MessageDefinitionProvider;
 import org.eclipse.osee.ote.message.MessageSink;
 
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageUpdateListener.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageUpdateListener.java
index c9b4b57..cac7c70 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageUpdateListener.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageUpdateListener.java
@@ -14,7 +14,6 @@
 import java.util.LinkedList;
 import java.util.Map.Entry;
 import java.util.logging.Level;
-
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.osee.framework.logging.OseeLog;
 import org.eclipse.osee.framework.ui.swt.Displays;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageWatchLabelProvider.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageWatchLabelProvider.java
index 399bee3..feef5fd 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageWatchLabelProvider.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/MessageWatchLabelProvider.java
@@ -11,8 +11,8 @@
 package org.eclipse.ote.ui.message.tree;
 
 import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.nebula.widgets.xviewer.XViewerColumn;
 import org.eclipse.nebula.widgets.xviewer.XViewerLabelProvider;
+import org.eclipse.nebula.widgets.xviewer.core.model.XViewerColumn;
 import org.eclipse.osee.framework.ui.swt.Displays;
 import org.eclipse.ote.ui.message.messageXViewer.MessageXViewer;
 import org.eclipse.swt.SWT;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchList.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchList.java
index 3fc6305..80ece7e 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchList.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchList.java
@@ -15,7 +15,6 @@
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
-
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.TreeViewer;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchedElementNode.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchedElementNode.java
index 20d06a6..008d2d0 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchedElementNode.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchedElementNode.java
@@ -12,8 +12,7 @@
 
 import java.util.Collection;
 import java.util.HashMap;
-
-import org.eclipse.nebula.widgets.xviewer.XViewerColumn;
+import org.eclipse.nebula.widgets.xviewer.core.model.XViewerColumn;
 import org.eclipse.osee.ote.client.msg.core.IMessageSubscription;
 import org.eclipse.osee.ote.message.Message;
 import org.eclipse.osee.ote.message.data.MessageData;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchedMessageNode.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchedMessageNode.java
index c2b30b2..6fc7647 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchedMessageNode.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchedMessageNode.java
@@ -19,8 +19,7 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
-
-import org.eclipse.nebula.widgets.xviewer.XViewerColumn;
+import org.eclipse.nebula.widgets.xviewer.core.model.XViewerColumn;
 import org.eclipse.osee.ote.client.msg.core.IMessageSubscription;
 import org.eclipse.osee.ote.message.commands.RecordCommand.MessageRecordDetails;
 import org.eclipse.osee.ote.message.enums.DataType;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/LoadWatchListJob.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/LoadWatchListJob.java
index 7a23d42..fc04173 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/LoadWatchListJob.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/LoadWatchListJob.java
@@ -8,7 +8,6 @@
 import java.util.logging.Level;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.jobs.Job;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/SignalStripper.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/SignalStripper.java
index 7d06976..2af0d9e 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/SignalStripper.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/SignalStripper.java
@@ -25,7 +25,6 @@
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-
 import org.eclipse.osee.framework.jdk.core.type.HashCollection;
 import org.eclipse.osee.framework.jdk.core.util.Lib;
 
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/ViewRefresher.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/ViewRefresher.java
index 7c3ddf1..7975a3c 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/ViewRefresher.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/ViewRefresher.java
@@ -15,7 +15,6 @@
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
-
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchView.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchView.java
index f68264e..de0f963 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchView.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchView.java
@@ -17,8 +17,10 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Map;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.logging.Level;
-
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IMenuListener;
@@ -169,6 +171,8 @@
    private IOteMessageService messageService = null;
 
    private final SelectionListener recBtnHandler = new SelectionListener() {
+      
+      ExecutorService executor = Executors.newSingleThreadExecutor();
 
       @Override
       public void widgetDefaultSelected(SelectionEvent e) {
@@ -179,35 +183,58 @@
       public void widgetSelected(SelectionEvent e) {
          if (recordButton.getSelection()) {
 
-            RecordingWizard recordingWizard = new RecordingWizard(watchList);
+            final RecordingWizard recordingWizard = new RecordingWizard(watchList);
             final WizardDialog recdialog = new WizardDialog(Displays.getActiveShell(), recordingWizard);
             int recResult = recdialog.open();
             if (Window.OK == recResult) {
-               try {
-                  saveWatchFile();
-                  messageService.startRecording(recordingWizard.getFileName(),
-                                                recordingWizard.getFilteredMessageRecordDetails()).addListener(recBtnListener);
-               } catch (FileNotFoundException ex) {
-                  MessageDialog.openError(Displays.getActiveShell(), "Recording Error",
-                                          "Failed to open file for writing. " + "Make sure its not being used by another application");
-                  recordButton.setSelection(false);
-               } catch (Throwable ex) {
-                  OseeLog.log(Activator.class, Level.SEVERE, "Failed to start message recording", ex);
-                  MessageDialog.openError(Displays.getActiveShell(), "Recording Error",
-                        "Exception ocurred while recording. see error log");
-                  recordButton.setSelection(false);
-               }
+               executor.submit(new Runnable() {
+
+                  @Override
+                  public void run() {
+                     try {
+                        saveWatchFile();
+                        messageService.startRecording(recordingWizard.getFileName(),
+                              recordingWizard.getFilteredMessageRecordDetails()).addListener(recBtnListener);
+                     } catch (FileNotFoundException ex) {
+                        Display.getCurrent().asyncExec(new Runnable() {
+                           @Override
+                           public void run() {
+                              MessageDialog.openError(Displays.getActiveShell(), "Recording Error",
+                                    "Failed to open file for writing. " + "Make sure its not being used by another application");
+                              recordButton.setSelection(false);
+                           }
+                        });
+                     } catch (Throwable ex) {
+                        OseeLog.log(Activator.class, Level.SEVERE, "Failed to start message recording", ex);
+                        Display.getCurrent().asyncExec(new Runnable() {
+                           
+                           @Override
+                           public void run() {
+                              MessageDialog.openError(Displays.getActiveShell(), "Recording Error",
+                                    "Exception ocurred while recording. see error log");
+                              recordButton.setSelection(false);
+                           }
+                        });
+                     }
+                  }
+               });
             } else {
                recordButton.setSelection(false);
             }
          } else {
-            try {
-               messageService.stopRecording();
-            } catch (IOException ioe) {
-               OseeLog.log(Activator.class, Level.WARNING, "problem when attempting to stop recording", ioe);
-            } catch (Throwable t) {
-               OseeLog.log(Activator.class, Level.SEVERE, "problem when attempting to stop recording", t);
-            }
+            executor.submit(new Runnable() {
+
+               @Override
+               public void run() {
+                  try {
+                     messageService.stopRecording();
+                  } catch (IOException ioe) {
+                     OseeLog.log(Activator.class, Level.WARNING, "problem when attempting to stop recording", ioe);
+                  } catch (Throwable t) {
+                     OseeLog.log(Activator.class, Level.SEVERE, "problem when attempting to stop recording", t);
+                  }
+               }
+            });
          }
       }
    };
@@ -696,37 +723,48 @@
    }
 
    public void addWatchMessage(final AddWatchParameter parameter) {
-      for (MessageParameter message : parameter.getMessageParameters()) {
-         Collection<ElementPath> elements = parameter.getMessageElements(message.getMessageName());
-         OseeLog.logf(Activator.class, Level.FINEST, "Watch request for message %s", message);
-         try {
-            if (elements == null) {
-               elements = new ArrayList<ElementPath>();
+      new Thread(new Runnable(){
+         @Override
+         public void run() {
+            for (MessageParameter message : parameter.getMessageParameters()) {
+               Collection<ElementPath> elements = parameter.getMessageElements(message.getMessageName());
+               OseeLog.logf(Activator.class, Level.FINEST, "Watch request for message %s", message);
+               try {
+                  if (elements == null) {
+                     elements = new ArrayList<ElementPath>();
+                  }
+                  MessageMode mode = message.isWriter() ? MessageMode.WRITER : MessageMode.READER;
+                  watchList.createElements(message.getMessageName(),message.getDataType(), mode, elements, message.getValueMap());
+               } catch (ClassNotFoundException ex1) {
+                  if (openProceedWithProcessing("Could not find a class definition for " + message + "\n Do you wish to continue")) {
+                     continue;
+                  } else {
+                     return;
+                  }
+               } catch (InstantiationException ex1) {
+                  if (openProceedWithProcessing("failed to instantiate " + message + "\n Do you wish to continue")) {
+                     continue;
+                  } else {
+                     return;
+                  }
+               } catch (Exception ex1) {
+                  OseeLog.log(Activator.class, Level.SEVERE, "failed to create message node", ex1);
+                  if (openProceedWithProcessing("Error processing " + message + ". See Error Log for details.\n Do you wish to continue")) {
+                     continue;
+                  } else {
+                     return;
+                  }
+               }
             }
-            MessageMode mode = message.isWriter() ? MessageMode.WRITER : MessageMode.READER;
-            watchList.createElements(message.getMessageName(),message.getDataType(), mode, elements, message.getValueMap());
-         } catch (ClassNotFoundException ex1) {
-            if (openProceedWithProcessing("Could not find a class definition for " + message + "\n Do you wish to continue")) {
-               continue;
-            } else {
-               return;
-            }
-         } catch (InstantiationException ex1) {
-            if (openProceedWithProcessing("failed to instantiate " + message + "\n Do you wish to continue")) {
-               continue;
-            } else {
-               return;
-            }
-         } catch (Exception ex1) {
-            OseeLog.log(Activator.class, Level.SEVERE, "failed to create message node", ex1);
-            if (openProceedWithProcessing("Error processing " + message + ". See Error Log for details.\n Do you wish to continue")) {
-               continue;
-            } else {
-               return;
-            }
+
+            Display.getDefault().asyncExec(new Runnable(){
+               @Override
+               public void run() {
+                  refresh();            
+               }
+            });
          }
-      }
-      refresh();
+      }).start();
    }
 
    public void refresh() {
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchViewDropAdapter.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchViewDropAdapter.java
index b5dd183..6d5a00a 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchViewDropAdapter.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchViewDropAdapter.java
@@ -12,7 +12,6 @@
 
 import java.io.IOException;
 import java.util.logging.Level;
-
 import org.eclipse.osee.framework.jdk.core.util.Lib;
 import org.eclipse.osee.framework.logging.OseeLog;
 import org.eclipse.swt.dnd.DropTargetEvent;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/action/ConvertWritersToReadersAction.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/action/ConvertWritersToReadersAction.java
index d714640..aebc5e8 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/action/ConvertWritersToReadersAction.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/action/ConvertWritersToReadersAction.java
@@ -11,7 +11,6 @@
 package org.eclipse.ote.ui.message.watch.action;
 
 import java.util.Collection;
-
 import org.eclipse.jface.action.Action;
 import org.eclipse.osee.ote.message.tool.MessageMode;
 import org.eclipse.ote.ui.message.tree.MessageNode;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/action/SetValueAction.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/action/SetValueAction.java
index 22b8542..1322f96 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/action/SetValueAction.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/action/SetValueAction.java
@@ -12,7 +12,6 @@
 
 import java.util.List;
 import java.util.logging.Level;
-
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.dialogs.IInputValidator;
 import org.eclipse.jface.dialogs.InputDialog;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/action/WatchElementAction.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/action/WatchElementAction.java
index 71189e3..42651bf 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/action/WatchElementAction.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/action/WatchElementAction.java
@@ -12,7 +12,6 @@
 
 import java.util.Collection;
 import java.util.LinkedList;
-
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.window.Window;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/recording/RecordingFilter.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/recording/RecordingFilter.java
index e792030..83d2dcf 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/recording/RecordingFilter.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/recording/RecordingFilter.java
@@ -14,7 +14,6 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-
 import org.eclipse.jface.viewers.CheckStateChangedEvent;
 import org.eclipse.jface.viewers.CheckboxTreeViewer;
 import org.eclipse.jface.viewers.ICheckStateListener;