Implement setPinned for Resources View
authorJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Mon, 7 Nov 2016 21:38:36 +0000 (16:38 -0500)
committerJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Fri, 11 Nov 2016 15:44:16 +0000 (10:44 -0500)
When pinned the resource view does not scroll/seek on position change, trace
change, and its filters do not change.

Also:
    - Ignores all outbound and inbound signalling.
    - Disables all modifiers of the visible time range windows.
    - Disables time based scrolling/seeking (horizontal scrolling).
    - Hides the thread presentation menu.
    - Changes the tab label to enhance visibility of the pinned state.
    - Allows vertical scrolling and expand/collapse operation.

Change-Id: I844098aa1d3259daed9fb92a1faac75592ad465b
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/resources/ResourcesView.java
lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/ResourcesViewTest.java

index c8ac12f1fd8ba116364129dabbfa1cfcc65b007a..cc6621ab858b23d559bf2c659118f9013884498e 100644 (file)
@@ -28,6 +28,7 @@ import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Composite;
 import org.eclipse.tracecompass.analysis.os.linux.core.kernel.KernelAnalysisModule;
 import org.eclipse.tracecompass.analysis.os.linux.core.signals.TmfCpuSelectedSignal;
 import org.eclipse.tracecompass.internal.analysis.os.linux.core.kernel.Attributes;
@@ -37,11 +38,14 @@ import org.eclipse.tracecompass.internal.analysis.os.linux.ui.actions.UnfollowCp
 import org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.resources.ResourcesEntry.Type;
 import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
 import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval;
+import org.eclipse.tracecompass.tmf.core.signal.TmfSignal;
 import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
+import org.eclipse.tracecompass.tmf.core.signal.TmfSignalManager;
 import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
 import org.eclipse.tracecompass.tmf.core.trace.TmfTraceContext;
 import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
+import org.eclipse.tracecompass.tmf.core.trace.experiment.TmfExperiment;
 import org.eclipse.tracecompass.tmf.ui.views.timegraph.AbstractStateSystemTimeGraphView;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeEvent;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeGraphEntry;
@@ -69,6 +73,12 @@ public class ResourcesView extends AbstractStateSystemTimeGraphView {
     // Timeout between updates in the build thread in ms
     private static final long BUILD_UPDATE_TIMEOUT = 500;
 
+    /** The tab label */
+    private String fOriginalTabLabel;
+
+    /** Pin state related toggle switch */
+    private boolean fShowFollowCpuActions = true;
+
     // ------------------------------------------------------------------------
     // Constructors
     // ------------------------------------------------------------------------
@@ -98,7 +108,6 @@ public class ResourcesView extends AbstractStateSystemTimeGraphView {
         }
     }
 
-
     /**
      * @since 2.0
      */
@@ -113,10 +122,12 @@ public class ResourcesView extends AbstractStateSystemTimeGraphView {
                     TmfTraceContext ctx = TmfTraceManager.getInstance().getCurrentTraceContext();
                     Integer data = (Integer) ctx.getData(RESOURCES_FOLLOW_CPU);
                     int cpu = data != null ? data.intValue() : -1;
-                    if (cpu >= 0) {
-                        menuManager.add(new UnfollowCpuAction(ResourcesView.this, resourcesEntry.getId(), resourcesEntry.getTrace()));
-                    } else {
-                        menuManager.add(new FollowCpuAction(ResourcesView.this, resourcesEntry.getId(), resourcesEntry.getTrace()));
+                    if (fShowFollowCpuActions) {
+                        if (cpu >= 0) {
+                            menuManager.add(new UnfollowCpuAction(ResourcesView.this, resourcesEntry.getId(), resourcesEntry.getTrace()));
+                        } else {
+                            menuManager.add(new FollowCpuAction(ResourcesView.this, resourcesEntry.getId(), resourcesEntry.getTrace()));
+                        }
                     }
                 }
             }
@@ -135,6 +146,12 @@ public class ResourcesView extends AbstractStateSystemTimeGraphView {
 
     }
 
+    @Override
+    public void createPartControl(Composite parent) {
+        super.createPartControl(parent);
+        fOriginalTabLabel = getPartName();
+    }
+
     // ------------------------------------------------------------------------
     // Internal
     // ------------------------------------------------------------------------
@@ -219,7 +236,10 @@ public class ResourcesView extends AbstractStateSystemTimeGraphView {
                     }
                     List<ITimeEvent> eventList = getEventList(entry, ssq, fullStates, prevFullState, monitor);
                     if (eventList != null) {
-                        /* Start a new event list on first iteration, then append to it */
+                        /*
+                         * Start a new event list on first iteration, then
+                         * append to it
+                         */
                         if (prevFullState == null) {
                             entry.setEventList(eventList);
                         } else {
@@ -442,7 +462,42 @@ public class ResourcesView extends AbstractStateSystemTimeGraphView {
 
     @Override
     protected boolean canBePinned() {
-        //TODO: actionPin is not defined
-        return false;
+        return true;
+    }
+
+    @Override
+    protected synchronized void setPinned(boolean pinned) {
+
+        /* Is pinned */
+        if (pinned) {
+            /* Ignore all outbound and inbound signals */
+            TmfSignalManager.addIgnoredOutboundSignal(this, TmfSignal.class);
+            TmfSignalManager.addIgnoredInboundSignal(this, TmfSignal.class);
+
+            String objectType = Messages.ControlFlowView_TraceLabel;
+            if (getTrace() instanceof TmfExperiment) {
+                objectType = Messages.ControlFlowView_ExperimentLabel;
+            }
+            setPartName(String.format("%s [%s][%s:%s]", fOriginalTabLabel, Messages.ControlFlowView_PinnedLabel, objectType, getTrace().getName())); //$NON-NLS-1$
+        } else {
+            TmfSignalManager.clearIgnoredInboundSignalList(this);
+            TmfSignalManager.clearIgnoredOutboundSignalList(this);
+
+            setPartName(fOriginalTabLabel);
+
+            loadTrace(TmfTraceManager.getInstance().getActiveTrace());
+        }
+
+        fShowFollowCpuActions = !pinned;
+
+        /* Propagate pin state to viewer */
+        if (getTimeGraphCombo() != null) {
+            getTimeGraphCombo().setPinned(pinned);
+        } else {
+            getTimeGraphViewer().setPinned(pinned);
+        }
+
+        redraw();
     }
+
 }
index fdfb05c7ff03dd87952edb90c452b495bf833b48..e2e5d7455d491370fa3dc91c8765742b7e1a7731 100644 (file)
@@ -95,7 +95,8 @@ public class ResourcesViewTest extends KernelTimeGraphViewTestBase {
 
     @Override
     protected List<String> getToolbarTooltips() {
-        return Arrays.asList("Align Views", "Show View Filters", "Show Legend", SEPARATOR,
+        return Arrays.asList("Pin View", SEPARATOR,
+                "Align Views", "Show View Filters", "Show Legend", SEPARATOR,
                 "Reset the Time Scale to Default", "Select Previous State Change", "Select Next State Change", SEPARATOR,
                 "Add Bookmark...", "Previous Marker", "Next Marker", SEPARATOR,
                 "Select Previous Resource", "Select Next Resource", "Zoom In", "Zoom Out" );
This page took 0.026646 seconds and 5 git commands to generate.