Merge branch 'sprint56'
diff --git a/org.eclipse.ote.mavenbuild/pom.xml b/org.eclipse.ote.mavenbuild/pom.xml
index efaff84..b217592 100644
--- a/org.eclipse.ote.mavenbuild/pom.xml
+++ b/org.eclipse.ote.mavenbuild/pom.xml
@@ -11,8 +11,8 @@
 
 	<properties>
 		<build-alias>-DEV</build-alias>
-		<tycho-version>0.18.0</tycho-version>
-		<tychoExtrasVersion>0.18.0</tychoExtrasVersion>
+		<tycho-version>0.19.0</tycho-version>
+		<tychoExtrasVersion>0.19.0</tychoExtrasVersion>
 		<platform-version-name>kepler</platform-version-name>
 		<orbit-version>R20130517111416</orbit-version>
 		<orbit-site>http://download.eclipse.org/tools/orbit/downloads/drops/${orbit-version}/repository</orbit-site>
diff --git a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/jobs/CopyToClipboardJob.java b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/jobs/CopyToClipboardJob.java
index 0529027..3f95502 100644
--- a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/jobs/CopyToClipboardJob.java
+++ b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/jobs/CopyToClipboardJob.java
@@ -17,7 +17,7 @@
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
 import org.eclipse.ote.ui.eviewer.view.ViewerColumn;
-import org.eclipse.ote.ui.eviewer.view.ElementUpdate;
+import org.eclipse.ote.ui.eviewer.view.RowUpdate;
 import org.eclipse.swt.dnd.Clipboard;
 import org.eclipse.swt.dnd.TextTransfer;
 import org.eclipse.swt.dnd.Transfer;
@@ -27,11 +27,11 @@
  */
 public class CopyToClipboardJob extends Job {
 
-   private final ElementUpdate[] updates;
+   private final RowUpdate[] updates;
    private final Clipboard clipboard;
    private final List<ViewerColumn> elementColumns;
 
-   public CopyToClipboardJob(Clipboard clipboard, List<ViewerColumn> elementColumns, ElementUpdate[] updates) {
+   public CopyToClipboardJob(Clipboard clipboard, List<ViewerColumn> elementColumns, RowUpdate[] updates) {
       super("Element Viewer Copy to Clipboard");
       this.clipboard = clipboard;
       this.elementColumns = elementColumns;
@@ -51,7 +51,7 @@
          buffer.append(elementColumns.get(i).getName());
          buffer.append('\n');
 
-         for (ElementUpdate update : updates) {
+         for (RowUpdate update : updates) {
             if (monitor.isCanceled()) {
                sendToClipboard(buffer.toString());
                return Status.CANCEL_STATUS;
diff --git a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/jobs/CopyToCsvFileJob.java b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/jobs/CopyToCsvFileJob.java
index dcfb157..61d0ab8 100644
--- a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/jobs/CopyToCsvFileJob.java
+++ b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/jobs/CopyToCsvFileJob.java
@@ -20,18 +20,18 @@
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.ote.ui.eviewer.Activator;
 import org.eclipse.ote.ui.eviewer.view.ViewerColumn;
-import org.eclipse.ote.ui.eviewer.view.ElementUpdate;
+import org.eclipse.ote.ui.eviewer.view.RowUpdate;
 
 /**
  * @author b1529404
  */
 public class CopyToCsvFileJob extends Job {
 
-   private final ElementUpdate[] updates;
+   private final RowUpdate[] updates;
    private final File file;
    private final List<ViewerColumn> elementColumns;
 
-   public CopyToCsvFileJob(File file, List<ViewerColumn> elementColumns, ElementUpdate[] updates) {
+   public CopyToCsvFileJob(File file, List<ViewerColumn> elementColumns, RowUpdate[] updates) {
       super("Element Viewer Save to CSV");
       this.file = file;
       this.elementColumns = elementColumns;
@@ -52,7 +52,7 @@
             writer.append(elementColumns.get(i).getName());
             writer.append('\n');
 
-            for (ElementUpdate update : updates) {
+            for (RowUpdate update : updates) {
                if (monitor.isCanceled()) {
                   writer.flush();
                   return Status.CANCEL_STATUS;
diff --git a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ElementContentProvider.java b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ElementContentProvider.java
index 993318a..75e57a4 100644
--- a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ElementContentProvider.java
+++ b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ElementContentProvider.java
@@ -62,7 +62,7 @@
 
    private HashMap<ViewerColumn, Integer> valueMap = new HashMap<ViewerColumn, Integer>();
 
-   private ElementUpdate last = null;
+   private RowUpdate last = null;
    private ReentrantLock streamWriteLock = new ReentrantLock();
    private volatile boolean acceptUpdates = true;
 
@@ -198,9 +198,9 @@
          }
          timeColumn.setLong(envTime);
 
-         final ElementUpdate update;
+         final RowUpdate update;
          if (last == null) {
-            update = new ElementUpdate(valueMap, viewerColumns);
+            update = new RowUpdate(valueMap, viewerColumns);
          } else {
             update = last.next(valueMap, viewerColumns);
          }
@@ -210,11 +210,15 @@
       }
    }
 
-   private void writeToStream(ElementUpdate update) {
+   private void writeToStream(RowUpdate update) {
       try{
          streamWriteLock.lock();
          if (streamToFileWriter != null) {
             int i;
+            streamToFileWriter.append(Long.toString(timeColumn.getLong()));
+            streamToFileWriter.append(',');
+            streamToFileWriter.append(Long.toString(timeDeltaColumn.getLong()));
+            streamToFileWriter.append(',');
             for (i = 0; i < viewerColumns.size() - 1; i++) {
                Object o = update.getValue(viewerColumns.get(i));
                if (o != null) {
@@ -410,9 +414,9 @@
    }
 
    public synchronized void removeAll() {
+	  refresher.clearUpdates();
       disposeAllColumns();
       updateInternalFile();
-      refresher.clearUpdates();
    }
 
    private void disposeAllColumns() {
@@ -422,7 +426,13 @@
          details.dispose();
       }
       subscriptions.clear();
+      
+      elementColumns.clear();
+      
       viewerColumns.clear();
+      viewerColumns.add(timeColumn);
+      viewerColumns.add(timeDeltaColumn);
+      viewer.refresh();
    }
 
    public void toClipboard(Clipboard clipboard) {
@@ -464,6 +474,10 @@
 
          streamToFileWriter = new PrintWriter(new FileOutputStream(file));
          int i;
+         streamToFileWriter.write(timeColumn.getName());
+         streamToFileWriter.write(',');
+         streamToFileWriter.write(timeDeltaColumn.getName());
+         streamToFileWriter.write(',');
          for (i = 0; i < viewerColumns.size() - 1; i++) {
             streamToFileWriter.write(viewerColumns.get(i).getName());
             streamToFileWriter.write(',');
diff --git a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ElementUpdate.java b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/RowUpdate.java
similarity index 85%
rename from org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ElementUpdate.java
rename to org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/RowUpdate.java
index 5612447..f24112f 100644
--- a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ElementUpdate.java
+++ b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/RowUpdate.java
@@ -17,13 +17,13 @@
 /**
  * @author Ken J. Aguilar
  */
-public final class ElementUpdate {
+public final class RowUpdate {
    private final Object[] values;
    private final BitSet deltaSet;
    private final HashMap<ViewerColumn, Integer> valueMap;
    private long envTime;
 
-   ElementUpdate(HashMap<ViewerColumn, Integer> valueMap, List<ViewerColumn> allColumns) {
+   RowUpdate(HashMap<ViewerColumn, Integer> valueMap, List<ViewerColumn> allColumns) {
       this.valueMap = valueMap;
       int size = allColumns.size();
       values = new Object[size];
@@ -35,14 +35,14 @@
       }
    }
 
-   private ElementUpdate(Object[] values, BitSet deltaSet, HashMap<ViewerColumn, Integer> valueMap) {
+   private RowUpdate(Object[] values, BitSet deltaSet, HashMap<ViewerColumn, Integer> valueMap) {
       super();
       this.values = values;
       this.deltaSet = deltaSet;
       this.valueMap = valueMap;
    }
 
-   public ElementUpdate next(HashMap<ViewerColumn, Integer> valueMap, List<ViewerColumn> allColumns) {
+   public RowUpdate next(HashMap<ViewerColumn, Integer> valueMap, List<ViewerColumn> allColumns) {
       int size = allColumns.size();
       // if the value map is not equal then a change in the columns (ordering, adding, etc) has occurred
       if (valueMap == this.valueMap) {
@@ -65,7 +65,7 @@
                newValues[i] = col.getValue();
             }
          }
-         return new ElementUpdate(newValues, newDeltaSet, valueMap);
+         return new RowUpdate(newValues, newDeltaSet, valueMap);
       } else {
          Object[] newValues = new Object[size];
          BitSet newDeltaSet = new BitSet(size);
@@ -77,7 +77,7 @@
                newDeltaSet.set(i);
             }
          }
-         return new ElementUpdate(newValues, newDeltaSet, valueMap);
+         return new RowUpdate(newValues, newDeltaSet, valueMap);
       }
    }
 
@@ -88,6 +88,9 @@
 
    public Object getValue(ViewerColumn column) {
       Integer index = valueMap.get(column);
+      if (index >= values.length) {
+    	  return "invalid index " + index;
+      }
       return index != null ? values[index] : null;
    }
 
diff --git a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ViewRefresher.java b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ViewRefresher.java
index fdaa2d4..2259b30 100644
--- a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ViewRefresher.java
+++ b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ViewRefresher.java
@@ -27,14 +27,14 @@
 public class ViewRefresher extends PeriodicDisplayTask {
 
    private final TableViewer viewer;
-   private ElementUpdate[] incomingUpdates = new ElementUpdate[2048];
+   private RowUpdate[] incomingUpdates = new RowUpdate[2048];
    
    private int incomingCount = 0;
    private boolean autoReveal = true;
    
    private ReentrantLock lock;
    private Condition clearIncomingUpdates;
-   private CircularBuffer<ElementUpdate> updatesNew;
+   private CircularBuffer<RowUpdate> updatesNew;
    private volatile boolean updateView = true;
    
    public ViewRefresher(TableViewer viewer, int limit) {
@@ -42,7 +42,7 @@
       lock = new ReentrantLock();
       clearIncomingUpdates = lock.newCondition();
       
-      updatesNew = new CircularBuffer<ElementUpdate>(limit);
+      updatesNew = new CircularBuffer<RowUpdate>(limit);
       
       this.viewer = viewer;
    }
@@ -55,7 +55,7 @@
          if (incomingCount == 0) {
             return;
          }
-         ElementUpdate[] overWritten = updatesNew.add(incomingUpdates, 0, incomingCount);
+         RowUpdate[] overWritten = updatesNew.add(incomingUpdates, 0, incomingCount);
          
          if(updateView){
             viewer.getTable().setRedraw(false);
@@ -83,7 +83,7 @@
       });
    }
 
-   public void addUpdate(ElementUpdate update) {
+   public void addUpdate(RowUpdate update) {
       try {
          lock.lock();
 
@@ -139,10 +139,10 @@
       }
    }
 
-   public ElementUpdate[] getUpdates() {
+   public RowUpdate[] getUpdates() {
       try{
          lock.lock();
-         return updatesNew.getCopy(ElementUpdate.class);
+         return updatesNew.getCopy(RowUpdate.class);
       }finally{
          lock.unlock();
       }
diff --git a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ViewerColumnElement.java b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ViewerColumnElement.java
index 9385be4..6de26c6 100644
--- a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ViewerColumnElement.java
+++ b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ViewerColumnElement.java
@@ -46,14 +46,14 @@
 
          @Override
          public String getText(Object element) {
-            ElementUpdate update = (ElementUpdate) element;
+            RowUpdate update = (RowUpdate) element;
             Object value = update.getValue(ViewerColumnElement.this);
             return value != null ? value.toString().intern() : "?";
          }
 
          @Override
          public Color getBackground(Object element) {
-            ElementUpdate update = (ElementUpdate) element;
+            RowUpdate update = (RowUpdate) element;
             return update.isChanged(ViewerColumnElement.this) ? Displays.getSystemColor(SWT.COLOR_GREEN) : null;
          }
 
diff --git a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ViewerColumnLong.java b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ViewerColumnLong.java
index a9e0521..aae33b2 100644
--- a/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ViewerColumnLong.java
+++ b/org.eclipse.ote.ui.eviewer/src/org/eclipse/ote/ui/eviewer/view/ViewerColumnLong.java
@@ -47,7 +47,7 @@
          @Override
          public String getText(Object element) {
             try {
-               ElementUpdate update = (ElementUpdate) element;
+               RowUpdate update = (RowUpdate) element;
                Long value = (Long) update.getValue(ViewerColumnLong.this);
                return format.format(value);
             } catch (Exception e) {
diff --git a/org.eclipse.ote.ui.mux/src/org/eclipse/ote/ui/mux/view/MuxView.java b/org.eclipse.ote.ui.mux/src/org/eclipse/ote/ui/mux/view/MuxView.java
index 651142e..4ef5c14 100644
--- a/org.eclipse.ote.ui.mux/src/org/eclipse/ote/ui/mux/view/MuxView.java
+++ b/org.eclipse.ote.ui.mux/src/org/eclipse/ote/ui/mux/view/MuxView.java
@@ -247,6 +247,7 @@
 
    @Override
    public void onConnectionLost(IServiceConnector connector) {
+	  muxProbe = null;
       handleConnectionLostStatus();
    }