Re-structure LTTng sub-project as per the Linux Tools guidelines
[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
3 * \r
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
8 * \r
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
6c13869b
FC
31import org.eclipse.linuxtools.tmf.core.filter.model.ITmfFilterTreeNode;\r
32import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterNode;\r
33import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterRootNode;\r
34import org.eclipse.linuxtools.tmf.core.filter.xml.TmfFilterXMLParser;\r
35import org.eclipse.linuxtools.tmf.core.filter.xml.TmfFilterXMLWriter;\r
90e2b925
FC
36import org.eclipse.linuxtools.tmf.ui.TmfUiPlugin;\r
37import org.eclipse.linuxtools.tmf.ui.internal.Messages;\r
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
48 * <b><u>FilterView</u></b>\r
49 * <p>\r
50 * View that contain UI to the TMF filter.\r
51 */\r
52public class FilterView extends TmfView {\r
53\r
54 public static final String ID = "org.eclipse.linuxtools.tmf.ui.views.filter"; //$NON-NLS-1$\r
55\r
56 private static final Image SAVE_IMAGE = TmfUiPlugin.getDefault().getImageFromPath("/icons/elcl16/save_button.gif"); //$NON-NLS-1$\r
57 private static final Image ADD_IMAGE = TmfUiPlugin.getDefault().getImageFromPath("/icons/elcl16/add_button.gif"); //$NON-NLS-1$\r
58 private static final Image DELETE_IMAGE = TmfUiPlugin.getDefault().getImageFromPath("/icons/elcl16/delete_button.gif"); //$NON-NLS-1$\r
59 private static final Image IMPORT_IMAGE = TmfUiPlugin.getDefault().getImageFromPath("/icons/elcl16/import_button.gif"); //$NON-NLS-1$\r
60 private static final Image EXPORT_IMAGE = TmfUiPlugin.getDefault().getImageFromPath("/icons/elcl16/export_button.gif"); //$NON-NLS-1$\r
61 \r
62 // ------------------------------------------------------------------------\r
63 // Main data structures\r
64 // ------------------------------------------------------------------------\r
65\r
66 private FilterViewer fViewer;\r
67 private ITmfFilterTreeNode fRoot;\r
68\r
69 private IWorkspace fWorkspace;\r
70\r
71 private SaveAction fSaveAction;\r
72 private AddAction fAddAction;\r
73 private DeleteAction fDeleteAction;\r
74 private ExportAction fExportAction;\r
75 private ImportAction fImportAction;\r
76\r
77 /**\r
78 * Getter for the Filter Tree Root\r
79 * \r
80 * @return The root of builded tree\r
81 */\r
82 public ITmfFilterTreeNode getFilterRoot() {\r
83 return fRoot;\r
84 }\r
85\r
86 \r
87 // ------------------------------------------------------------------------\r
88 // Constructor\r
89 // ------------------------------------------------------------------------\r
90\r
91 /**\r
92 * Default Constructor\r
93 */\r
94 public FilterView() {\r
95 super("Filter"); //$NON-NLS-1$\r
96 \r
97 fWorkspace = ResourcesPlugin.getWorkspace();\r
98 try {\r
99 fWorkspace.getRoot().refreshLocal(IResource.DEPTH_INFINITE, null);\r
100 } catch (CoreException e) {\r
101 e.printStackTrace();\r
102 }\r
103 \r
104 fRoot = new TmfFilterRootNode();\r
105 for (ITmfFilterTreeNode node : FilterManager.getSavedFilters()) {\r
106 fRoot.addChild(node);\r
107 }\r
108 }\r
109\r
110 \r
111 /**\r
112 * Refresh the tree widget\r
113 */\r
114 public void refresh() {\r
115 fViewer.refresh();\r
116 }\r
117 \r
118 /**\r
119 * Setter for selection\r
120 * \r
121 * @param node The node to select\r
122 */\r
123 public void setSelection(ITmfFilterTreeNode node) {\r
124 fViewer.setSelection(node, true);\r
125 }\r
126\r
127 /*\r
128 * (non-Javadoc)\r
129 * @see org.eclipse.linuxtools.tmf.ui.views.TmfView#createPartControl(org.eclipse.swt.widgets.Composite)\r
130 */\r
131 @Override\r
132 public void createPartControl(Composite parent) {\r
133\r
134 fViewer = new FilterViewer(parent, SWT.NONE);\r
135 fViewer.setInput(fRoot);\r
136 \r
137 contributeToActionBars();\r
138 \r
139 fViewer.addSelectionChangedListener(new ISelectionChangedListener() {\r
140 @Override\r
141 public void selectionChanged(SelectionChangedEvent event) {\r
142 if (!(event.getSelection().isEmpty()) && event.getSelection() instanceof IStructuredSelection) {\r
143 fDeleteAction.setEnabled(true);\r
144 fExportAction.setEnabled(true);\r
145 } else {\r
146 fDeleteAction.setEnabled(false);\r
147 fExportAction.setEnabled(false);\r
148 }\r
149 }\r
150 });\r
151 }\r
152\r
153 \r
154 // ------------------------------------------------------------------------\r
155 // ViewPart\r
156 // ------------------------------------------------------------------------\r
157 \r
158 /*\r
159 * (non-Javadoc)\r
160 * @see java.lang.Object#toString()\r
161 */\r
162 @Override\r
163 public String toString() {\r
164 return "[FilterView]"; //$NON-NLS-1$\r
165 } \r
166\r
167 \r
168 /**\r
169 * Builds the menu toolbar\r
170 */\r
171 private void contributeToActionBars() {\r
172 IActionBars bars = getViewSite().getActionBars();\r
173 //fillLocalPullDown(bars.getMenuManager());\r
174 fillLocalToolBar(bars.getToolBarManager());\r
175 }\r
176\r
177 \r
178 /**\r
179 * Build the popup menu\r
180 * \r
181 * @param manager The manager to build\r
182 */\r
183 private void fillLocalToolBar(IToolBarManager manager) {\r
184 \r
185 fSaveAction = new SaveAction();\r
186 fSaveAction.setImageDescriptor(ImageDescriptor.createFromImage(SAVE_IMAGE));\r
187 fSaveAction.setToolTipText(Messages.FilterView_SaveActionToolTipText);\r
188 \r
189 fAddAction = new AddAction();\r
190 fAddAction.setImageDescriptor(ImageDescriptor.createFromImage(ADD_IMAGE));\r
191 fAddAction.setToolTipText(Messages.FilterView_AddActionToolTipText); \r
192\r
193 fDeleteAction = new DeleteAction();\r
194 fDeleteAction.setImageDescriptor(ImageDescriptor.createFromImage(DELETE_IMAGE));\r
195 fDeleteAction.setToolTipText(Messages.FilterView_DeleteActionToolTipText);\r
196 fDeleteAction.setEnabled(false);\r
197\r
198 fExportAction = new ExportAction();\r
199 fExportAction.setImageDescriptor(ImageDescriptor.createFromImage(EXPORT_IMAGE));\r
200 fExportAction.setToolTipText(Messages.FilterView_ExportActionToolTipText);\r
201\r
202 fImportAction = new ImportAction();\r
203 fImportAction.setImageDescriptor(ImageDescriptor.createFromImage(IMPORT_IMAGE));\r
204 fImportAction.setToolTipText(Messages.FilterView_ImportActionToolTipText);\r
205\r
206 manager.add(fSaveAction);\r
207 manager.add(new Separator());\r
208 manager.add(fAddAction);\r
209 manager.add(fDeleteAction);\r
210 manager.add(new Separator());\r
211 manager.add(fExportAction);\r
212 manager.add(fImportAction);\r
213 }\r
214\r
215 private class SaveAction extends Action {\r
216 @Override\r
217 public void run() {\r
218 FilterManager.setSavedFilters(fRoot.getChildren());\r
219 }\r
220 }\r
221 \r
222 private class AddAction extends Action {\r
223 @Override\r
224 public void run() {\r
225 \r
226 TmfFilterNode newNode = new TmfFilterNode(fRoot, ""); //$NON-NLS-1$\r
227 refresh();\r
228 setSelection(newNode);\r
229 }\r
230 }\r
231 \r
232 private class DeleteAction extends Action {\r
233 @Override\r
234 public void run() {\r
235 ITmfFilterTreeNode node = fViewer.getSelection();\r
236 if (node != null) {\r
237 node.remove();\r
238 }\r
239 refresh();\r
240 }\r
241 }\r
242 \r
243 private class ExportAction extends Action {\r
244 @Override\r
245 public void run() {\r
246 try {\r
247 FileDialog dlg = new FileDialog(new Shell(), SWT.SAVE);\r
248 dlg.setFilterNames(new String[] {Messages.FilterView_FileDialogFilterName + " (*.filter.xml)"}); //$NON-NLS-1$\r
249 dlg.setFilterExtensions(new String[] {"*.filter.xml"}); //$NON-NLS-1$\r
250 \r
251 String fn = dlg.open();\r
252 if (fn != null) {\r
253 TmfFilterXMLWriter writerXML = new TmfFilterXMLWriter(fRoot);\r
254 writerXML.saveTree(fn);\r
255 }\r
256 \r
257 } catch (ParserConfigurationException e) {\r
258 e.printStackTrace();\r
259 } catch (IOException e) {\r
260 e.printStackTrace();\r
261 }\r
262 }\r
263 }\r
264 \r
265 private class ImportAction extends Action {\r
266 @Override\r
267 public void run() {\r
268 if (fViewer != null) {\r
269 ITmfFilterTreeNode root = null;\r
270 try {\r
271 FileDialog dlg = new FileDialog(new Shell(), SWT.OPEN);\r
272 dlg.setFilterNames(new String[] {Messages.FilterView_FileDialogFilterName + " (*.filter.xml)"}); //$NON-NLS-1$\r
273 dlg.setFilterExtensions(new String[] {"*.filter.xml"}); //$NON-NLS-1$\r
274 \r
275 TmfFilterXMLParser parserXML = null;\r
276 String fn = dlg.open();\r
277 if (fn != null) {\r
278 parserXML = new TmfFilterXMLParser(fn);\r
279 root = parserXML.getTree();\r
280 }\r
281 \r
282 } catch (SAXException e) {\r
283 e.printStackTrace();\r
284 } catch (IOException e) {\r
285 e.printStackTrace();\r
286 }\r
287\r
288 if (root != null) {\r
289 for (ITmfFilterTreeNode node : root.getChildren()) {\r
290 if (node instanceof TmfFilterNode) {\r
291 fRoot.addChild(node);\r
292 refresh();\r
293 fViewer.setSelection(node);\r
294 }\r
295 }\r
296 }\r
297 }\r
298 }\r
299 }\r
300 \r
301}
This page took 0.035155 seconds and 5 git commands to generate.