timing.swtbot: add Generic SegmentTable tests
[deliverable/tracecompass.git] / analysis / org.eclipse.tracecompass.analysis.timing.ui / src / org / eclipse / tracecompass / analysis / timing / ui / views / segmentstore / table / AbstractSegmentStoreTableViewer.java
index 60fb8fb22c28131b4a472d43cbc1752d1e750656..75df3d42dbf15ab1bd1a71854c2d57472cfa0249 100644 (file)
@@ -13,6 +13,9 @@
 
 package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.table;
 
+import java.text.DecimalFormat;
+import java.text.Format;
+
 import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
@@ -27,6 +30,7 @@ import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.tracecompass.analysis.timing.core.segmentstore.IAnalysisProgressListener;
 import org.eclipse.tracecompass.analysis.timing.core.segmentstore.ISegmentStoreProvider;
@@ -45,12 +49,14 @@ import org.eclipse.tracecompass.tmf.core.signal.TmfTraceClosedSignal;
 import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal;
 import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
 import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfNanoTimestamp;
+import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
 import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestampFormat;
 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
 import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
 import org.eclipse.tracecompass.tmf.ui.viewers.table.TmfSimpleTableViewer;
 
+import com.google.common.annotations.VisibleForTesting;
+
 /**
  * Displays the segment store provider data in a column table
  *
@@ -59,6 +65,8 @@ import org.eclipse.tracecompass.tmf.ui.viewers.table.TmfSimpleTableViewer;
  */
 public abstract class AbstractSegmentStoreTableViewer extends TmfSimpleTableViewer {
 
+    private static final Format FORMATTER = new DecimalFormat("###,###.##"); //$NON-NLS-1$
+
     // ------------------------------------------------------------------------
     // Attributes
     // ------------------------------------------------------------------------
@@ -104,8 +112,8 @@ public abstract class AbstractSegmentStoreTableViewer extends TmfSimpleTableView
         @Override
         public void widgetSelected(@Nullable SelectionEvent e) {
             ISegment selectedSegment = ((ISegment) NonNullUtils.checkNotNull(e).item.getData());
-            ITmfTimestamp start = new TmfNanoTimestamp(selectedSegment.getStart());
-            ITmfTimestamp end = new TmfNanoTimestamp(selectedSegment.getEnd());
+            ITmfTimestamp start = TmfTimestamp.fromNanos(selectedSegment.getStart());
+            ITmfTimestamp end = TmfTimestamp.fromNanos(selectedSegment.getEnd());
             TmfSignalManager.dispatchSignal(new TmfSelectionRangeUpdatedSignal(AbstractSegmentStoreTableViewer.this, start, end));
         }
     }
@@ -139,10 +147,6 @@ public abstract class AbstractSegmentStoreTableViewer extends TmfSimpleTableView
         super(tableViewer);
         // Sort order of the content provider is by start time by default
         getTableViewer().setContentProvider(new SegmentStoreContentProvider());
-        ITmfTrace trace = TmfTraceManager.getInstance().getActiveTrace();
-        if (trace != null) {
-            fSegmentProvider = getSegmentStoreProvider(trace);
-        }
         createColumns();
         getTableViewer().getTable().addSelectionListener(new TableSelectionListener());
         addPackListener();
@@ -153,6 +157,32 @@ public abstract class AbstractSegmentStoreTableViewer extends TmfSimpleTableView
     // Operations
     // ------------------------------------------------------------------------
 
+    /**
+     * Sets the segment provider, use only in test, only run in display thread
+     *
+     * @param segmentProvider
+     *            the segment provider
+     * @since 1.2
+     */
+    @VisibleForTesting
+    public void setSegmentProvider(ISegmentStoreProvider segmentProvider) {
+        fSegmentProvider = segmentProvider;
+        // Sort order of the content provider is by start time by default
+        getTableViewer().setContentProvider(new SegmentStoreContentProvider());
+
+        Table table = getTableViewer().getTable();
+        table.setRedraw(false);
+        while (table.getColumnCount() > 0) {
+            table.getColumn(0).dispose();
+        }
+        createColumns();
+        createProviderColumns();
+        getTableViewer().getTable().addSelectionListener(new TableSelectionListener());
+        addPackListener();
+        fListener = new SegmentStoreProviderProgressListener();
+        table.setRedraw(true);
+    }
+
     /**
      * Create default columns for start time, end time and duration
      */
@@ -174,7 +204,7 @@ public abstract class AbstractSegmentStoreTableViewer extends TmfSimpleTableView
         createColumn(Messages.SegmentStoreTableViewer_duration, new SegmentStoreTableColumnLabelProvider() {
             @Override
             public String getTextForSegment(ISegment input) {
-                return NonNullUtils.nullToEmptyString(Long.toString(input.getLength()));
+                return NonNullUtils.nullToEmptyString(FORMATTER.format(input.getLength()));
             }
         }, SegmentComparators.INTERVAL_LENGTH_COMPARATOR);
     }
@@ -279,14 +309,14 @@ public abstract class AbstractSegmentStoreTableViewer extends TmfSimpleTableView
             IAction gotoStartTime = new Action(Messages.SegmentStoreTableViewer_goToStartEvent) {
                 @Override
                 public void run() {
-                    broadcast(new TmfSelectionRangeUpdatedSignal(AbstractSegmentStoreTableViewer.this, new TmfNanoTimestamp(segment.getStart())));
+                    broadcast(new TmfSelectionRangeUpdatedSignal(AbstractSegmentStoreTableViewer.this, TmfTimestamp.fromNanos(segment.getStart())));
                 }
             };
 
             IAction gotoEndTime = new Action(Messages.SegmentStoreTableViewer_goToEndEvent) {
                 @Override
                 public void run() {
-                    broadcast(new TmfSelectionRangeUpdatedSignal(AbstractSegmentStoreTableViewer.this, new TmfNanoTimestamp(segment.getEnd())));
+                    broadcast(new TmfSelectionRangeUpdatedSignal(AbstractSegmentStoreTableViewer.this, TmfTimestamp.fromNanos(segment.getEnd())));
                 }
             };
 
This page took 0.02786 seconds and 5 git commands to generate.