+ @Override
+ protected synchronized void setPinned(boolean pinned) {
+
+ /* Is pinned */
+ if (pinned) {
+ /* Ignore all outbound and inbound signal */
+ 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());
+ }
+
+ boolean enabled = !pinned;
+
+ fFlatAction.setEnabled(enabled);
+ fHierarchicalAction.setEnabled(enabled);
+ fOptimizationAction.setEnabled(enabled);
+ fPreviousEventAction.setEnabled(enabled);
+ fNextEventAction.setEnabled(enabled);
+ fThreadPresentationMenu.setVisible(enabled);
+ fThreadPresentationMenu.markDirty();
+
+ fShowFollowThreadAction = enabled;
+
+ /* Propagate pin state to viewer */
+ if (getTimeGraphCombo() != null) {
+ getTimeGraphCombo().setPinned(pinned);
+ } else {
+ getTimeGraphViewer().setPinned(pinned);
+ }
+
+ redraw();
+ }