lttng: Fix Javadoc and formatting in lttng2.ui
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.ui / src / org / eclipse / linuxtools / internal / lttng2 / ui / views / control / ControlView.java
1 /*******************************************************************************
2 * Copyright (c) 2009, 2012 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
11 * Bernd Hufmann - Filled with content
12 *******************************************************************************/
13
14 package org.eclipse.linuxtools.internal.lttng2.ui.views.control;
15
16 import org.eclipse.core.runtime.IProgressMonitor;
17 import org.eclipse.core.runtime.IStatus;
18 import org.eclipse.core.runtime.Status;
19 import org.eclipse.jface.action.MenuManager;
20 import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
21 import org.eclipse.jface.viewers.ISelection;
22 import org.eclipse.jface.viewers.StructuredSelection;
23 import org.eclipse.jface.viewers.TreeViewer;
24 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent;
25 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponentChangedListener;
26 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceControlContentProvider;
27 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceControlLabelProvider;
28 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceControlRoot;
29 import org.eclipse.rse.core.RSECorePlugin;
30 import org.eclipse.swt.SWT;
31 import org.eclipse.swt.widgets.Composite;
32 import org.eclipse.swt.widgets.Menu;
33 import org.eclipse.ui.part.ViewPart;
34 import org.eclipse.ui.progress.UIJob;
35
36 /**
37 * <p>
38 * View implementation for Trace Control.
39 * </p>
40 *
41 * @author Bernd Hufmann
42 */
43 public class ControlView extends ViewPart implements ITraceControlComponentChangedListener {
44
45 // ------------------------------------------------------------------------
46 // Constants
47 // ------------------------------------------------------------------------
48 /**
49 * View ID.
50 */
51 public static final String ID = "org.eclipse.linuxtools.internal.lttng2.ui.views.control"; //$NON-NLS-1$
52
53 // ------------------------------------------------------------------------
54 // Attributes
55 // ------------------------------------------------------------------------
56
57 /**
58 * The tree viewer.
59 */
60 private TreeViewer fTreeViewer = null;
61
62 /**
63 * The trace control root node. This provides access to the whole model.
64 */
65 private ITraceControlComponent fRoot = null;
66
67 // ------------------------------------------------------------------------
68 // Constructors
69 // ------------------------------------------------------------------------
70
71 // ------------------------------------------------------------------------
72 // Accessors
73 // ------------------------------------------------------------------------
74
75 /**
76 * Returns the trace control tree node (model)
77 *
78 * @return the trace control tree node (model).
79 */
80 public ITraceControlComponent getTraceControlRoot() {
81 return fRoot;
82 }
83
84 // ------------------------------------------------------------------------
85 // Operations
86 // ------------------------------------------------------------------------
87
88 /*
89 * (non-Javadoc)
90 *
91 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
92 */
93 @Override
94 public void createPartControl(Composite parent) {
95 // Create tree viewer
96 fTreeViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
97 ColumnViewerToolTipSupport.enableFor(fTreeViewer);
98
99 fTreeViewer.setContentProvider(new TraceControlContentProvider());
100 fTreeViewer.setLabelProvider(new TraceControlLabelProvider());
101
102 // Create model root
103 fRoot = new TraceControlRoot();
104 fRoot.addComponentListener(this);
105 fTreeViewer.setInput(fRoot);
106
107 // Create context menu for the tree viewer
108 createContextMenu();
109
110 getSite().setSelectionProvider(fTreeViewer);
111
112 RSECorePlugin.getTheSystemRegistry(); // to load RSE
113 }
114
115 /*
116 * (non-Javadoc)
117 *
118 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
119 */
120 @Override
121 public void setFocus() {
122 fTreeViewer.getControl().setFocus();
123 }
124
125 /*
126 * (non-Javadoc)
127 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponentChangedListener#componentAdded(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent, org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent)
128 */
129 @Override
130 public void componentAdded(ITraceControlComponent parent, ITraceControlComponent component) {
131 componentChanged(parent);
132 }
133
134 /*
135 * (non-Javadoc)
136 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponentChangedListener#componentRemoved(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent, org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent)
137 */
138 @Override
139 public void componentRemoved(ITraceControlComponent parent, ITraceControlComponent component) {
140 componentChanged(parent);
141 }
142
143 /*
144 * (non-Javadoc)
145 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponentChangedListener#componentChanged(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent)
146 */
147 @Override
148 public void componentChanged(final ITraceControlComponent component) {
149 if (fTreeViewer.getTree().isDisposed()) {
150 return;
151 }
152
153 UIJob myJob = new UIJob("Refresh") { //$NON-NLS-1$
154 @Override
155 public IStatus runInUIThread(IProgressMonitor monitor) {
156 if (fTreeViewer.getTree().isDisposed()) {
157 return Status.OK_STATUS;
158 }
159
160 fTreeViewer.refresh(component);
161
162 // Change selection needed
163 final ISelection sel = fTreeViewer.getSelection();
164 fTreeViewer.setSelection(null);
165 fTreeViewer.setSelection(sel);
166
167 // Show component that was changed
168 fTreeViewer.reveal(component);
169
170 return Status.OK_STATUS;
171 }
172 };
173 myJob.setUser(false);
174 myJob.schedule();
175 }
176
177 /**
178 * Sets the selected component in the tree
179 * @param component - component to select
180 */
181 public void setSelection(ITraceControlComponent component) {
182 ITraceControlComponent[] components = new ITraceControlComponent[1];
183 components[0] = component;
184 setSelection(components);
185 }
186
187 /**
188 * Sets the selected components in the tree
189 * @param components - array of components to select
190 */
191 public void setSelection(ITraceControlComponent[] components) {
192 final StructuredSelection selection = new StructuredSelection(components);
193 UIJob myJob = new UIJob("Select") { //$NON-NLS-1$
194 @Override
195 public IStatus runInUIThread(IProgressMonitor monitor) {
196 fTreeViewer.setSelection(selection);
197 return Status.OK_STATUS;
198 }
199 };
200 myJob.setUser(false);
201 myJob.schedule();
202 }
203
204 // ------------------------------------------------------------------------
205 // Helper methods
206 // ------------------------------------------------------------------------
207 /**
208 * Creates the context sensitive menu.
209 */
210 private void createContextMenu() {
211 // First we create a menu Manager
212 final MenuManager menuManager = new MenuManager();
213 final Menu menu = menuManager.createContextMenu(fTreeViewer.getTree());
214 // Set the MenuManager
215 fTreeViewer.getTree().setMenu(menu);
216 getSite().registerContextMenu(menuManager, fTreeViewer);
217 }
218 }
This page took 0.034932 seconds and 5 git commands to generate.