tmf: Bug 490372: Hide PieCharts when trace has only 1 event type
authorBernd Hufmann <Bernd.Hufmann@ericsson.com>
Thu, 24 Mar 2016 13:52:13 +0000 (09:52 -0400)
committerBernd Hufmann <bernd.hufmann@ericsson.com>
Tue, 5 Apr 2016 10:20:20 +0000 (06:20 -0400)
Change-Id: Ie5a2587fd45ccc004910421fd2ca0e23911eac7f
Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/69247
Reviewed-by: Hudson CI
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/viewers/statistics/TmfStatisticsViewer.java

index cf09bea21f2be65a6d8f0a5e918463b322349463..34c9718ab23d7b84d41c59c57aeb12849e317f14 100644 (file)
@@ -19,6 +19,7 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.viewers.StructuredSelection;
@@ -37,6 +38,15 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
+import org.eclipse.tracecompass.internal.tmf.ui.viewers.piecharts.TmfPieChartViewer;
+import org.eclipse.tracecompass.internal.tmf.ui.viewers.piecharts.model.TmfPieChartStatisticsModel;
+import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfBaseColumnData;
+import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfBaseColumnDataProvider;
+import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfStatisticsFormatter;
+import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfStatisticsTree;
+import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfStatisticsTreeManager;
+import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfStatisticsTreeNode;
+import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfTreeContentProvider;
 import org.eclipse.tracecompass.tmf.core.component.TmfComponent;
 import org.eclipse.tracecompass.tmf.core.request.ITmfEventRequest;
 import org.eclipse.tracecompass.tmf.core.signal.TmfSelectionRangeUpdatedSignal;
@@ -50,16 +60,8 @@ import org.eclipse.tracecompass.tmf.core.trace.TmfTraceContext;
 import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
 import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils;
 import org.eclipse.tracecompass.tmf.core.trace.experiment.TmfExperiment;
+import org.eclipse.tracecompass.tmf.ui.TmfUiRefreshHandler;
 import org.eclipse.tracecompass.tmf.ui.viewers.TmfViewer;
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.piecharts.TmfPieChartViewer;
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.piecharts.model.TmfPieChartStatisticsModel;
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfBaseColumnData;
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfBaseColumnDataProvider;
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfStatisticsFormatter;
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfStatisticsTree;
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfStatisticsTreeManager;
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfStatisticsTreeNode;
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfTreeContentProvider;
 
 /**
  * A basic viewer to display statistics in the statistics view.
@@ -327,6 +329,21 @@ public class TmfStatisticsViewer extends TmfViewer {
             return;
         }
 
+        TmfPieChartStatisticsModel pieChartModel = getPieChartModel();
+        if (pieChartModel == null || pieChartModel.getPieChartGlobalModel() == null) {
+            return;
+        }
+        /* If there's only one event type, don't show any piechart */
+        boolean moreThanOne = false;
+        for (Entry<ITmfTrace, Map<String, Long>> entry : pieChartModel.getPieChartGlobalModel().entrySet()) {
+            if(entry.getValue() != null && entry.getValue().size() > 1) {
+                moreThanOne = true;
+                break;
+            }
+        }
+
+        setPieChartsVisible(moreThanOne);
+
         Display.getDefault().asyncExec(new Runnable() {
             @Override
             public void run() {
@@ -708,6 +725,21 @@ public class TmfStatisticsViewer extends TmfViewer {
         }
     }
 
+    private void setPieChartsVisible(final boolean visible) {
+        if (fPieChartViewer.isDisposed()) {
+            return;
+        }
+        TmfUiRefreshHandler.getInstance().queueUpdate(fPieChartViewer, new Runnable() {
+            @Override
+            public void run() {
+                if (!fPieChartViewer.isDisposed()) {
+                    fPieChartViewer.setVisible(visible);
+                    fPieChartViewer.getParent().layout();
+                }
+            }
+        });
+    }
+
     /**
      * Resets the number of events within the time range
      */
This page took 0.027369 seconds and 5 git commands to generate.