feature[ats_AMS1190]: Fixed element viewer not saving columns correctly

Signed-off-by: Jonathon Fidiam <Jonathon.Fidiam@boeing.com>
Change-Id: I7167a46ae97331bc6b068a44f0b9da8eb73091ee
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 acbd372..2b8aa5c 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
@@ -24,7 +24,6 @@
 import java.util.Map;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.logging.Level;
-
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.Viewer;
@@ -213,10 +212,10 @@
          streamWriteLock.lock();
          if (streamToFileWriter != null) {
             int i;
-//            streamToFileWriter.append(Long.toString(timeColumn.getLong()));
-//            streamToFileWriter.append(',');
-//            streamToFileWriter.append(Long.toString(timeDeltaColumn.getLong()));
-//            streamToFileWriter.append(',');
+            //            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) {
@@ -343,14 +342,14 @@
       viewer.getTable().setRedraw(true);
       updateInternalFile();
    }
-   
+
    public void setEnumOutputNumber(boolean isNumber){
       for(ViewerColumnElement col:elementColumns){
          col.setEnumOutputNumber(isNumber);
       }
       this.showEnumAsNumber  = isNumber;
    }
-   
+
    public boolean updateInternalFile() {
       try {
          saveColumnsToFile(OseeData.getFile(Constants.INTERNAL_FILE_NAME));
@@ -366,9 +365,11 @@
          if (viewerColumns.isEmpty()) {
             return;
          }
-         int i;
-         for (i = 0; i < elementColumns.size(); i++) {
-            ViewerColumnElement column = elementColumns.get(i);
+         int[] ordering = viewer.getTable().getColumnOrder();
+         for (int i = 0; i < elementColumns.size(); i++) {
+            // the indices for the actual ordering are 2 over from where you would expect (think 2-indexed instead of 0)
+            // but the elementColumns is a 0-indexed data structure.
+            ViewerColumnElement column = elementColumns.get((ordering[i+2] - 2));
             writer.write(column.getColumnElement().getElementPath().encode());
             writer.write('=');
             writer.write(column.isActive() ? "active" : "inactive");
@@ -378,10 +379,13 @@
                writer.write('\n');
             }
          }
+
          writer.flush();
+
       } finally {
          writer.close();
       }
+
    }
 
    public void loadColumns(List<ColumnEntry> columnEntries) {
@@ -407,7 +411,7 @@
    }
 
    public synchronized void removeAll() {
-	  refresher.clearUpdates();
+      refresher.clearUpdates();
       disposeAllColumns();
       updateInternalFile();
    }
@@ -419,9 +423,9 @@
          details.dispose();
       }
       subscriptions.clear();
-      
+
       elementColumns.clear();
-      
+
       viewerColumns.clear();
       viewerColumns.add(timeColumn);
       viewerColumns.add(timeDeltaColumn);
@@ -455,16 +459,16 @@
 
          streamToFileWriter = new PrintWriter(new FileOutputStream(file));
          int i;
-//         streamToFileWriter.write(timeColumn.getName());
-//         streamToFileWriter.write(',');
-//         streamToFileWriter.write(timeDeltaColumn.getName());
-//         streamToFileWriter.write(',');
+         //         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).getVerboseName());
             streamToFileWriter.write(',');
          }
          if (viewerColumns.size() > 0) {
-        	
+
             streamToFileWriter.write(viewerColumns.get(i).getVerboseName());
             streamToFileWriter.write('\n');
          }