tmf: Update some Javadoc in tmf.ui
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / views / filter / FilterView.java
CommitLineData
90e2b925
FC
1/*******************************************************************************\r
2 * Copyright (c) 2010 Ericsson\r
013a5f1c 3 *\r
90e2b925
FC
4 * All rights reserved. This program and the accompanying materials are\r
5 * made available under the terms of the Eclipse Public License v1.0 which\r
6 * accompanies this distribution, and is available at\r
7 * http://www.eclipse.org/legal/epl-v10.html\r
013a5f1c 8 *\r
90e2b925
FC
9 * Contributors:\r
10 * Yuriy Vashchuk - Initial API and implementation\r
11 * based on Francois Chouinard ProjectView code.\r
12 */\r
13\r
14package org.eclipse.linuxtools.tmf.ui.views.filter;\r
15\r
16import java.io.IOException;\r
17\r
18import javax.xml.parsers.ParserConfigurationException;\r
19\r
20import org.eclipse.core.resources.IResource;\r
21import org.eclipse.core.resources.IWorkspace;\r
22import org.eclipse.core.resources.ResourcesPlugin;\r
23import org.eclipse.core.runtime.CoreException;\r
24import org.eclipse.jface.action.Action;\r
25import org.eclipse.jface.action.IToolBarManager;\r
26import org.eclipse.jface.action.Separator;\r
27import org.eclipse.jface.resource.ImageDescriptor;\r
28import org.eclipse.jface.viewers.ISelectionChangedListener;\r
29import org.eclipse.jface.viewers.IStructuredSelection;\r
30import org.eclipse.jface.viewers.SelectionChangedEvent;\r
8fd82db5 31import org.eclipse.linuxtools.internal.tmf.ui.Activator;\r
013a5f1c 32import org.eclipse.linuxtools.internal.tmf.ui.Messages;\r
6c13869b
FC
33import org.eclipse.linuxtools.tmf.core.filter.model.ITmfFilterTreeNode;\r
34import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterNode;\r
35import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterRootNode;\r
36import org.eclipse.linuxtools.tmf.core.filter.xml.TmfFilterXMLParser;\r
37import org.eclipse.linuxtools.tmf.core.filter.xml.TmfFilterXMLWriter;\r
90e2b925
FC
38import org.eclipse.linuxtools.tmf.ui.views.TmfView;\r
39import org.eclipse.swt.SWT;\r
40import org.eclipse.swt.graphics.Image;\r
41import org.eclipse.swt.widgets.Composite;\r
42import org.eclipse.swt.widgets.FileDialog;\r
43import org.eclipse.swt.widgets.Shell;\r
44import org.eclipse.ui.IActionBars;\r
45import org.xml.sax.SAXException;\r
46\r
47/**\r
90e2b925 48 * View that contain UI to the TMF filter.\r
013a5f1c
AM
49 *\r
50 * @version 1.0\r
51 * @author Yuriy Vashchuk\r
90e2b925
FC
52 */\r
53public class FilterView extends TmfView {\r
54\r
20ff3b75
AM
55 /** ID for the Filter view */\r
56 public static final String ID = "org.eclipse.linuxtools.tmf.ui.views.filter"; //$NON-NLS-1$\r
90e2b925 57\r
20ff3b75 58 private static final Image SAVE_IMAGE = Activator.getDefault().getImageFromPath("/icons/elcl16/save_button.gif"); //$NON-NLS-1$\r
8fd82db5
FC
59 private static final Image ADD_IMAGE = Activator.getDefault().getImageFromPath("/icons/elcl16/add_button.gif"); //$NON-NLS-1$\r
60 private static final Image DELETE_IMAGE = Activator.getDefault().getImageFromPath("/icons/elcl16/delete_button.gif"); //$NON-NLS-1$\r
61 private static final Image IMPORT_IMAGE = Activator.getDefault().getImageFromPath("/icons/elcl16/import_button.gif"); //$NON-NLS-1$\r
62 private static final Image EXPORT_IMAGE = Activator.getDefault().getImageFromPath("/icons/elcl16/export_button.gif"); //$NON-NLS-1$\r
013a5f1c 63\r
90e2b925
FC
64 // ------------------------------------------------------------------------\r
65 // Main data structures\r
66 // ------------------------------------------------------------------------\r
67\r
20ff3b75 68 private FilterViewer fViewer;\r
013a5f1c 69 private final ITmfFilterTreeNode fRoot;\r
90e2b925 70\r
013a5f1c 71 private final IWorkspace fWorkspace;\r
90e2b925
FC
72\r
73 private SaveAction fSaveAction;\r
20ff3b75
AM
74 private AddAction fAddAction;\r
75 private DeleteAction fDeleteAction;\r
76 private ExportAction fExportAction;\r
77 private ImportAction fImportAction;\r
90e2b925
FC
78\r
79 /**\r
80 * Getter for the Filter Tree Root\r
013a5f1c 81 *\r
90e2b925
FC
82 * @return The root of builded tree\r
83 */\r
84 public ITmfFilterTreeNode getFilterRoot() {\r
85 return fRoot;\r
86 }\r
87\r
013a5f1c 88\r
90e2b925
FC
89 // ------------------------------------------------------------------------\r
90 // Constructor\r
91 // ------------------------------------------------------------------------\r
92\r
93 /**\r
20ff3b75 94 * Default Constructor\r
90e2b925 95 */\r
20ff3b75
AM
96 public FilterView() {\r
97 super("Filter"); //$NON-NLS-1$\r
013a5f1c 98\r
20ff3b75
AM
99 fWorkspace = ResourcesPlugin.getWorkspace();\r
100 try {\r
90e2b925
FC
101 fWorkspace.getRoot().refreshLocal(IResource.DEPTH_INFINITE, null);\r
102 } catch (CoreException e) {\r
8fd82db5 103 Activator.getDefault().logError("Error refreshing workspace", e); //$NON-NLS-1$\r
90e2b925 104 }\r
013a5f1c 105\r
90e2b925
FC
106 fRoot = new TmfFilterRootNode();\r
107 for (ITmfFilterTreeNode node : FilterManager.getSavedFilters()) {\r
108 fRoot.addChild(node);\r
109 }\r
110 }\r
111\r
013a5f1c 112\r
90e2b925
FC
113 /**\r
114 * Refresh the tree widget\r
115 */\r
116 public void refresh() {\r
117 fViewer.refresh();\r
118 }\r
013a5f1c 119\r
90e2b925
FC
120 /**\r
121 * Setter for selection\r
013a5f1c 122 *\r
90e2b925
FC
123 * @param node The node to select\r
124 */\r
125 public void setSelection(ITmfFilterTreeNode node) {\r
126 fViewer.setSelection(node, true);\r
127 }\r
128\r
fb5cad3d
PT
129 // ------------------------------------------------------------------------\r
130 // ViewPart\r
131 // ------------------------------------------------------------------------\r
132\r
133 /* (non-Javadoc)\r
134 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(Composite)\r
135 */\r
90e2b925
FC
136 @Override\r
137 public void createPartControl(Composite parent) {\r
138\r
139 fViewer = new FilterViewer(parent, SWT.NONE);\r
140 fViewer.setInput(fRoot);\r
013a5f1c 141\r
90e2b925 142 contributeToActionBars();\r
013a5f1c 143\r
90e2b925
FC
144 fViewer.addSelectionChangedListener(new ISelectionChangedListener() {\r
145 @Override\r
146 public void selectionChanged(SelectionChangedEvent event) {\r
147 if (!(event.getSelection().isEmpty()) && event.getSelection() instanceof IStructuredSelection) {\r
148 fDeleteAction.setEnabled(true);\r
149 fExportAction.setEnabled(true);\r
150 } else {\r
151 fDeleteAction.setEnabled(false);\r
152 fExportAction.setEnabled(false);\r
153 }\r
154 }\r
155 });\r
156 }\r
157\r
fb5cad3d
PT
158 /* (non-Javadoc)\r
159 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()\r
160 */\r
161 @Override\r
162 public void setFocus() {\r
163 fViewer.setFocus();\r
164 }\r
165\r
90e2b925
FC
166 /*\r
167 * (non-Javadoc)\r
168 * @see java.lang.Object#toString()\r
169 */\r
170 @Override\r
171 public String toString() {\r
172 return "[FilterView]"; //$NON-NLS-1$\r
013a5f1c
AM
173 }\r
174\r
90e2b925 175\r
90e2b925
FC
176 /**\r
177 * Builds the menu toolbar\r
178 */\r
179 private void contributeToActionBars() {\r
180 IActionBars bars = getViewSite().getActionBars();\r
181 //fillLocalPullDown(bars.getMenuManager());\r
182 fillLocalToolBar(bars.getToolBarManager());\r
183 }\r
184\r
013a5f1c 185\r
90e2b925
FC
186 /**\r
187 * Build the popup menu\r
013a5f1c 188 *\r
90e2b925
FC
189 * @param manager The manager to build\r
190 */\r
191 private void fillLocalToolBar(IToolBarManager manager) {\r
013a5f1c 192\r
90e2b925
FC
193 fSaveAction = new SaveAction();\r
194 fSaveAction.setImageDescriptor(ImageDescriptor.createFromImage(SAVE_IMAGE));\r
195 fSaveAction.setToolTipText(Messages.FilterView_SaveActionToolTipText);\r
013a5f1c 196\r
90e2b925
FC
197 fAddAction = new AddAction();\r
198 fAddAction.setImageDescriptor(ImageDescriptor.createFromImage(ADD_IMAGE));\r
013a5f1c 199 fAddAction.setToolTipText(Messages.FilterView_AddActionToolTipText);\r
90e2b925
FC
200\r
201 fDeleteAction = new DeleteAction();\r
202 fDeleteAction.setImageDescriptor(ImageDescriptor.createFromImage(DELETE_IMAGE));\r
203 fDeleteAction.setToolTipText(Messages.FilterView_DeleteActionToolTipText);\r
204 fDeleteAction.setEnabled(false);\r
205\r
206 fExportAction = new ExportAction();\r
207 fExportAction.setImageDescriptor(ImageDescriptor.createFromImage(EXPORT_IMAGE));\r
208 fExportAction.setToolTipText(Messages.FilterView_ExportActionToolTipText);\r
209\r
210 fImportAction = new ImportAction();\r
211 fImportAction.setImageDescriptor(ImageDescriptor.createFromImage(IMPORT_IMAGE));\r
212 fImportAction.setToolTipText(Messages.FilterView_ImportActionToolTipText);\r
213\r
214 manager.add(fSaveAction);\r
215 manager.add(new Separator());\r
216 manager.add(fAddAction);\r
217 manager.add(fDeleteAction);\r
218 manager.add(new Separator());\r
219 manager.add(fExportAction);\r
220 manager.add(fImportAction);\r
221 }\r
222\r
223 private class SaveAction extends Action {\r
224 @Override\r
225 public void run() {\r
226 FilterManager.setSavedFilters(fRoot.getChildren());\r
227 }\r
228 }\r
013a5f1c 229\r
90e2b925
FC
230 private class AddAction extends Action {\r
231 @Override\r
232 public void run() {\r
013a5f1c 233\r
90e2b925
FC
234 TmfFilterNode newNode = new TmfFilterNode(fRoot, ""); //$NON-NLS-1$\r
235 refresh();\r
236 setSelection(newNode);\r
237 }\r
238 }\r
013a5f1c 239\r
90e2b925
FC
240 private class DeleteAction extends Action {\r
241 @Override\r
242 public void run() {\r
243 ITmfFilterTreeNode node = fViewer.getSelection();\r
244 if (node != null) {\r
245 node.remove();\r
246 }\r
247 refresh();\r
248 }\r
249 }\r
013a5f1c 250\r
90e2b925
FC
251 private class ExportAction extends Action {\r
252 @Override\r
253 public void run() {\r
254 try {\r
255 FileDialog dlg = new FileDialog(new Shell(), SWT.SAVE);\r
256 dlg.setFilterNames(new String[] {Messages.FilterView_FileDialogFilterName + " (*.filter.xml)"}); //$NON-NLS-1$\r
257 dlg.setFilterExtensions(new String[] {"*.filter.xml"}); //$NON-NLS-1$\r
013a5f1c 258\r
90e2b925
FC
259 String fn = dlg.open();\r
260 if (fn != null) {\r
261 TmfFilterXMLWriter writerXML = new TmfFilterXMLWriter(fRoot);\r
262 writerXML.saveTree(fn);\r
263 }\r
013a5f1c 264\r
90e2b925 265 } catch (ParserConfigurationException e) {\r
8fd82db5 266 Activator.getDefault().logError("Error parsing filter xml file", e); //$NON-NLS-1$\r
90e2b925 267 } catch (IOException e) {\r
8fd82db5 268 Activator.getDefault().logError("Error parsing filter xml file", e); //$NON-NLS-1$\r
90e2b925
FC
269 }\r
270 }\r
271 }\r
013a5f1c 272\r
90e2b925
FC
273 private class ImportAction extends Action {\r
274 @Override\r
275 public void run() {\r
276 if (fViewer != null) {\r
277 ITmfFilterTreeNode root = null;\r
278 try {\r
279 FileDialog dlg = new FileDialog(new Shell(), SWT.OPEN);\r
280 dlg.setFilterNames(new String[] {Messages.FilterView_FileDialogFilterName + " (*.filter.xml)"}); //$NON-NLS-1$\r
281 dlg.setFilterExtensions(new String[] {"*.filter.xml"}); //$NON-NLS-1$\r
013a5f1c 282\r
90e2b925
FC
283 TmfFilterXMLParser parserXML = null;\r
284 String fn = dlg.open();\r
285 if (fn != null) {\r
286 parserXML = new TmfFilterXMLParser(fn);\r
287 root = parserXML.getTree();\r
288 }\r
013a5f1c 289\r
90e2b925 290 } catch (SAXException e) {\r
8fd82db5 291 Activator.getDefault().logError("Error importing filter xml file", e); //$NON-NLS-1$\r
90e2b925 292 } catch (IOException e) {\r
8fd82db5 293 Activator.getDefault().logError("Error importing filter xml file", e); //$NON-NLS-1$\r
90e2b925
FC
294 }\r
295\r
296 if (root != null) {\r
297 for (ITmfFilterTreeNode node : root.getChildren()) {\r
298 if (node instanceof TmfFilterNode) {\r
299 fRoot.addChild(node);\r
300 refresh();\r
301 fViewer.setSelection(node);\r
302 }\r
303 }\r
304 }\r
305 }\r
306 }\r
307 }\r
013a5f1c 308\r
90e2b925 309}
This page took 0.04611 seconds and 5 git commands to generate.