tmf: Update copyright headers in tmf.ui
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / views / TmfView.java
index ed8101d5203c7e3632d59fec2924dfce186d367a..981753ff29dcf0303a87b2b66e016ceeea23e6d3 100644 (file)
 /*******************************************************************************
- * Copyright (c) 2009 Ericsson
- * 
+ * Copyright (c) 2009, 2012 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.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.part.ViewPart;
 
 /**
- * <b><u>TmfViewer</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
+        * Action class for pinning of TmfView.
+        * @since 2.0
         */
-       public TmfView() {
-               TmfSignalManager.addListener(this);
-       }
+       protected PinTmfViewAction fPinAction;
+
+       // ------------------------------------------------------------------------
+       // Constructor
+       // ------------------------------------------------------------------------
 
        /**
-        * Destructor
+        * Constructor. Creates a TMF view and registers to the signal manager.
+        *
+        * @param viewName A view name
         */
-       @Override
-       public void dispose() {
-               TmfSignalManager.removeListener(this);
+       public TmfView(String viewName) {
+               super();
+               fName = viewName;
+               TmfSignalManager.register(this);
        }
 
        /**
-        * broadcastSignal
+        * Disposes this view and de-registers itself from the signal manager
+        *
+        * @see org.eclipse.ui.part.WorkbenchPart#dispose()
         */
-       public void broadcastSignal(TmfSignal signal) {
-               TmfSignalManager.dispatchSignal(signal);
+       @Override
+       public void dispose() {
+               TmfSignalManager.deregister(this);
+               super.dispose();
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+       // ------------------------------------------------------------------------
+       // ITmfComponent
+       // ------------------------------------------------------------------------
+
+       /*
+        * (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.core.component.ITmfComponent#getName()
         */
        @Override
-       public void createPartControl(Composite parent) {
-               // TODO Auto-generated method stub
+       public String getName() {
+               return fName;
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+       /*
+        * (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.core.component.ITmfComponent#broadcast(org.eclipse.linuxtools.tmf.core.signal.TmfSignal)
         */
        @Override
-       public void setFocus() {
-               // TODO Auto-generated method stub
+       public void broadcast(TmfSignal signal) {
+               TmfSignalManager.dispatchSignal(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);
+        }
+    }
+
 }
This page took 0.025088 seconds and 5 git commands to generate.