ss: Move plugins to Trace Compass namespace
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / views / TmfView.java
index 5d9fa8dc32a4e6aa98fe56847c852866d8dfe18c..ace756e65ebb85027f4cdde49c0b4097e38e03ef 100644 (file)
 /*******************************************************************************
- * Copyright (c) 2009, 2010 Ericsson
- * 
+ * Copyright (c) 2009, 2014 Ericsson
+ *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
  * accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *   Francois Chouinard - Initial API and implementation
+ *   Bernd Hufmann - Added possibility to pin view
  *******************************************************************************/
 
 package org.eclipse.linuxtools.tmf.ui.views;
 
-import org.eclipse.linuxtools.tmf.component.ITmfComponent;
-import org.eclipse.linuxtools.tmf.signal.TmfSignal;
-import org.eclipse.linuxtools.tmf.signal.TmfSignalManager;
-import org.eclipse.swt.widgets.Composite;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.linuxtools.tmf.core.component.ITmfComponent;
+import org.eclipse.linuxtools.tmf.core.signal.TmfSignal;
+import org.eclipse.linuxtools.tmf.core.signal.TmfSignalManager;
+import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
+import org.eclipse.linuxtools.tmf.core.trace.TmfTraceManager;
+import org.eclipse.linuxtools.tmf.ui.editors.ITmfTraceEditor;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.part.ViewPart;
 
 /**
- * <b><u>TmfView</u></b>
- * <p>
- * TODO: Implement me. Please.
+ * Basic abstract TMF view class implementation.
+ *
+ * It registers any sub class to the signal manager for receiving and sending
+ * TMF signals.
+ *
+ * @version 1.2
+ * @author Francois Chouinard
  */
 public abstract class TmfView extends ViewPart implements ITmfComponent {
 
-       private final String fName;
-       
-       // ------------------------------------------------------------------------
-       // Constructor
-       // ------------------------------------------------------------------------
-
-       public TmfView(String viewName) {
-               super();
-               fName = viewName;
-               register();
-       }
-
-       @Override
-       public void dispose() {
-               deregister();
-               super.dispose();
-       }
-
-       // ------------------------------------------------------------------------
-       // ITmfComponent
-       // ------------------------------------------------------------------------
-
-       public String getName() {
-               return fName;
-       }
-       
-       public void register() {
-               TmfSignalManager.register(this);
-       }
-
-       public void deregister() {
-               TmfSignalManager.deregister(this);
-       }
-
-       public void broadcast(TmfSignal signal) {
-               TmfSignalManager.dispatchSignal(signal);
-       }
-
-       // ------------------------------------------------------------------------
-       // ViewPart
-       // ------------------------------------------------------------------------
-       
-       @Override
-       public void createPartControl(Composite parent) {
-               // TODO Auto-generated method stub
-       }
-
-       @Override
-       public void setFocus() {
-               // TODO Auto-generated method stub
-       }
-
-}
\ No newline at end of file
+    private final String fName;
+
+    /**
+     * Action class for pinning of TmfView.
+     * @since 2.0
+     */
+    protected PinTmfViewAction fPinAction;
+
+    /**
+     * Reference to the trace manager
+     * @since 2.0
+     */
+    protected final TmfTraceManager fTraceManager;
+
+    // ------------------------------------------------------------------------
+    // Constructor
+    // ------------------------------------------------------------------------
+
+    /**
+     * Constructor. Creates a TMF view and registers to the signal manager.
+     *
+     * @param viewName
+     *            A view name
+     */
+    public TmfView(String viewName) {
+        super();
+        fName = viewName;
+        fTraceManager = TmfTraceManager.getInstance();
+        TmfSignalManager.register(this);
+    }
+
+    /**
+     * Disposes this view and de-registers itself from the signal manager
+     */
+    @Override
+    public void dispose() {
+        TmfSignalManager.deregister(this);
+        super.dispose();
+    }
+
+    // ------------------------------------------------------------------------
+    // ITmfComponent
+    // ------------------------------------------------------------------------
+
+    @Override
+    public String getName() {
+        return fName;
+    }
+
+    @Override
+    public void broadcast(TmfSignal signal) {
+        TmfSignalManager.dispatchSignal(signal);
+    }
+
+    /**
+     * @since 3.0
+     */
+    @Override
+    public void broadcastAsync(TmfSignal signal) {
+        TmfSignalManager.dispatchSignalAsync(signal);
+    }
+
+    // ------------------------------------------------------------------------
+    // View pinning support
+    // ------------------------------------------------------------------------
+
+    /**
+     * Returns whether the pin flag is set.
+     * For example, this flag can be used to ignore time synchronization signals from other TmfViews.
+     *
+     * @return pin flag
+     * @since 2.0
+     */
+    public boolean isPinned() {
+        return ((fPinAction != null) && (fPinAction.isChecked()));
+    }
+
+    /**
+     * Method adds a pin action to the TmfView. The pin action allows to toggle the <code>fIsPinned</code> flag.
+     * For example, this flag can be used to ignore time synchronization signals from other TmfViews.
+     *
+     * @since 2.0
+     */
+    protected void contributePinActionToToolBar() {
+        if (fPinAction == null) {
+            fPinAction = new PinTmfViewAction();
+
+            IToolBarManager toolBarManager = getViewSite().getActionBars()
+                    .getToolBarManager();
+            toolBarManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+            toolBarManager.add(fPinAction);
+        }
+    }
+
+    /**
+     * Get the currently selected trace, or 'null' if the active editor is not a
+     * TMF trace.
+     *
+     * @return The active trace, or 'null' if not a trace
+     * @since 2.0
+     */
+    public ITmfTrace getActiveTrace() {
+        IEditorPart editor = getSite().getPage().getActiveEditor();
+        if (editor instanceof ITmfTraceEditor) {
+            ITmfTrace trace = ((ITmfTraceEditor) editor).getTrace();
+            return trace;
+        }
+        return null;
+    }
+
+}
This page took 0.03069 seconds and 5 git commands to generate.