1 /*******************************************************************************
2 * Copyright (c) 2009, 2013 Ericsson
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Francois Chouinard - Initial API and implementation
11 * Bernd Hufmann - Added possibility to pin view
12 *******************************************************************************/
14 package org
.eclipse
.linuxtools
.tmf
.ui
.views
;
16 import org
.eclipse
.jface
.action
.IToolBarManager
;
17 import org
.eclipse
.jface
.action
.Separator
;
18 import org
.eclipse
.linuxtools
.tmf
.core
.component
.ITmfComponent
;
19 import org
.eclipse
.linuxtools
.tmf
.core
.signal
.TmfSignal
;
20 import org
.eclipse
.linuxtools
.tmf
.core
.signal
.TmfSignalManager
;
21 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfTrace
;
22 import org
.eclipse
.linuxtools
.tmf
.ui
.editors
.ITmfTraceEditor
;
23 import org
.eclipse
.ui
.IEditorPart
;
24 import org
.eclipse
.ui
.IWorkbenchActionConstants
;
25 import org
.eclipse
.ui
.part
.ViewPart
;
28 * Basic abstract TMF view class implementation.
30 * It registers any sub class to the signal manager for receiving and sending
34 * @author Francois Chouinard
36 public abstract class TmfView
extends ViewPart
implements ITmfComponent
{
38 private final String fName
;
40 * Action class for pinning of TmfView.
44 protected PinTmfViewAction fPinAction
;
46 // ------------------------------------------------------------------------
48 // ------------------------------------------------------------------------
51 * Constructor. Creates a TMF view and registers to the signal manager.
56 public TmfView(String viewName
) {
59 TmfSignalManager
.register(this);
63 * Disposes this view and de-registers itself from the signal manager
66 public void dispose() {
67 TmfSignalManager
.deregister(this);
71 // ------------------------------------------------------------------------
73 // ------------------------------------------------------------------------
76 public String
getName() {
81 public void broadcast(TmfSignal signal
) {
82 TmfSignalManager
.dispatchSignal(signal
);
85 // ------------------------------------------------------------------------
86 // View pinning support
87 // ------------------------------------------------------------------------
90 * Returns whether the pin flag is set.
91 * For example, this flag can be used to ignore time synchronization signals from other TmfViews.
96 public boolean isPinned() {
97 return ((fPinAction
!= null) && (fPinAction
.isChecked()));
101 * Method adds a pin action to the TmfView. The pin action allows to toggle the <code>fIsPinned</code> flag.
102 * For example, this flag can be used to ignore time synchronization signals from other TmfViews.
106 protected void contributePinActionToToolBar() {
107 if (fPinAction
== null) {
108 fPinAction
= new PinTmfViewAction();
110 IToolBarManager toolBarManager
= getViewSite().getActionBars()
111 .getToolBarManager();
112 toolBarManager
.add(new Separator(IWorkbenchActionConstants
.MB_ADDITIONS
));
113 toolBarManager
.add(fPinAction
);
118 * Get the currently selected trace, or 'null' if the active editor is not a
121 * @return The active trace, or 'null' if not a trace
124 public ITmfTrace
getActiveTrace() {
125 IEditorPart editor
= getSite().getPage().getActiveEditor();
126 if (editor
instanceof ITmfTraceEditor
) {
127 ITmfTrace trace
= ((ITmfTraceEditor
) editor
).getTrace();