feature[ats_K4H1K]: add ability to save amd restore data type
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 c88ee79..4392b96 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
@@ -100,15 +100,19 @@
       }
    }
 
-   public WatchedMessageNode createElements(String message, Collection<ElementPath> elements, MessageMode mode) throws ClassNotFoundException, InstantiationException, IllegalAccessException, Exception {
-	   return createElements(message, elements, mode, null);
+   public WatchedMessageNode createElements(String message, MessageMode mode, Collection<ElementPath> elements) throws ClassNotFoundException, InstantiationException, IllegalAccessException, Exception {
+	   return createElements(message, null, mode, elements, null);
    }
 
-   public WatchedMessageNode createElements(String message, Collection<ElementPath> elements, MessageMode mode, Map<ElementPath, String> valueMap) throws ClassNotFoundException, InstantiationException, IllegalAccessException, Exception {
+   public WatchedMessageNode createElements(String message, String dataType, MessageMode mode, Collection<ElementPath> elements, Map<ElementPath, String> valueMap) throws ClassNotFoundException, InstantiationException, IllegalAccessException, Exception {
       boolean needToRegisterListener = false;
       WatchedMessageNode messageNode = (WatchedMessageNode) rootNode.getMessageByName(message);
       if (messageNode == null) {
-         messageNode = createMessageNode(message, mode);
+    	 if (dataType == null) {
+    		 messageNode = createMessageNode(message, mode);
+    	 } else {
+    		 messageNode = createMessageNode(message, mode, dataType);
+    	 }
          messageNode.setRequestedValueMap(valueMap);
          needToRegisterListener = true;
       }
@@ -217,7 +221,15 @@
    }
 
    private WatchedMessageNode createMessageNode(String message, MessageMode mode) throws Exception {
-      IMessageSubscription subscription = service.subscribe(message, mode);
+	   IMessageSubscription subscription = service.subscribe(message, mode);
+	   WatchedMessageNode node = new WatchedMessageNode(subscription);
+	   rootNode.addChild(node);
+	   return node;
+   }
+   
+
+   private WatchedMessageNode createMessageNode(String message, MessageMode mode, String dataType) throws Exception {
+      IMessageSubscription subscription = service.subscribe(message, dataType, mode);
       WatchedMessageNode node = new WatchedMessageNode(subscription);
       rootNode.addChild(node);
       return node;
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/AddWatchParameter.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/AddWatchParameter.java
index 33db6e0..996fe0d 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/AddWatchParameter.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/AddWatchParameter.java
@@ -98,6 +98,15 @@
 		parameter.setIsWriter(isWriter);
 	}
 	
+	public void setDataType(String messageName, String type) {
+		MessageParameter parameter = watchMap.get(messageName);
+		if (parameter == null) {
+			parameter = new MessageParameter(messageName);
+			watchMap.put(messageName, parameter);
+		}
+		parameter.setDataType(type);
+	}
+	
 	public void setValue(ElementPath path, String value) {
 		String messageName = path.getMessageName();
 		MessageParameter parameter = watchMap.get(messageName);
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 9488c73..7a23d42 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
@@ -140,6 +140,13 @@
 				} catch (NumberFormatException e) {
 					e.printStackTrace();
 				}				
+			} else if (line.startsWith("data type=")) {
+				try {
+					String type = line.substring(10);
+					watchListConfiguration.setDataType(message, type);
+				} catch (NumberFormatException e) {
+					e.printStackTrace();
+				}				
 			} else {
 				break;
 			}
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/MessageInfoSelectionHandler.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/MessageInfoSelectionHandler.java
index 3b60a57..9977590 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/MessageInfoSelectionHandler.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/MessageInfoSelectionHandler.java
@@ -27,7 +27,7 @@
             try {
                WatchedMessageNode node = view.getWatchList().getMessageNode(className);
                if (node == null) {
-                  node = (WatchedMessageNode) view.getWatchList().createElements(className, new ArrayList<ElementPath>(), MessageMode.READER);
+                  node = (WatchedMessageNode) view.getWatchList().createElements(className, MessageMode.READER, new ArrayList<ElementPath>());
                }
                new WatchElementAction(view, node).run();
             } catch (Throwable th) {
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/MessageParameter.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/MessageParameter.java
index 41db3e1..22bee65 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/MessageParameter.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/MessageParameter.java
@@ -10,10 +10,12 @@
 	private final HashMap<ElementPath, String> valueMap = new HashMap<ElementPath, String>();
 	private final String messageName;
 	private boolean isWriter;
+	private String dataType;
 	
 	MessageParameter(String messageName) {
 		this.messageName = messageName;
 		this.isWriter = false;
+		dataType = null;
 	}
 	
 	public void addAll(Collection<ElementPath> paths) {
@@ -49,6 +51,14 @@
 	public HashMap<ElementPath, String> getValueMap() {
 		return valueMap;
 	}
+
+	public String getDataType() {
+		return dataType;
+	}
+
+	public void setDataType(String dataType) {
+		this.dataType = dataType;
+	}
 	
 	
 }
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchListConfiguration.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchListConfiguration.java
index 861af34..f21c9fb 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchListConfiguration.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchListConfiguration.java
@@ -11,7 +11,7 @@
 	private final List<ElementPath> recHeaderElementsToAdd;
 	private final Set<String> recHeaderHex;
 	private final Set<String> recBodyHex;
-
+	
 	public WatchListConfiguration() {
 		recBodyElementsToAdd = new ArrayList<ElementPath>();
 		recHeaderElementsToAdd = new ArrayList<ElementPath>();
@@ -32,6 +32,10 @@
 		addWatchParameter.setIsWriter(message, isWriter);
 	}
 
+	public void setDataType(String message, String type) {
+		addWatchParameter.setDataType(message, type);
+	}
+
 	public List<ElementPath> getRecBodyElementsToAdd() {
 		return recBodyElementsToAdd;
 	}
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 bd64686..56b6b50 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
@@ -637,7 +637,7 @@
 					elements = new ArrayList<ElementPath>();
 				}
 				MessageMode mode = message.isWriter() ? MessageMode.WRITER : MessageMode.READER;
-				watchList.createElements(message.getMessageName(), elements, mode, message.getValueMap());
+				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;
@@ -737,11 +737,15 @@
 				fw.write(msg.getMessageClassName());
 				fw.write('\n');
 				fw.write("isWriter=");
-				descendants.clear();
-				
 				boolean isWriter = msg.getSubscription().getMessageMode() == MessageMode.WRITER;
 				fw.write(Boolean.toString(isWriter));
 				fw.write('\n');
+				
+				fw.write("data type=");
+				fw.write(msg.getSubscription().getMemType().name());
+				fw.write('\n');
+				
+				descendants.clear();
 				msg.collectDescendants(descendants);
 				Map<ElementPath, String> map = msg.getRequestedValueMap();