2010-10-26 Francois Chouinard <fchouinard@gmail.com> Contribution for Bug309042
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / editors / TmfEventsEditor.java
CommitLineData
abfad0aa
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 * Patrick Tasse - Initial API and implementation\r
11 *******************************************************************************/\r
12\r
13package org.eclipse.linuxtools.tmf.ui.editors;\r
14\r
15import org.eclipse.core.resources.IResource;\r
16import org.eclipse.core.runtime.CoreException;\r
17import org.eclipse.core.runtime.IProgressMonitor;\r
18import org.eclipse.linuxtools.tmf.signal.TmfSignalHandler;\r
19import org.eclipse.linuxtools.tmf.signal.TmfTraceClosedSignal;\r
20import org.eclipse.linuxtools.tmf.signal.TmfTraceOpenedSignal;\r
21import org.eclipse.linuxtools.tmf.signal.TmfTraceParserUpdatedSignal;\r
22import org.eclipse.linuxtools.tmf.signal.TmfTraceSelectedSignal;\r
23import org.eclipse.linuxtools.tmf.trace.ITmfTrace;\r
24import org.eclipse.linuxtools.tmf.ui.parsers.ParserProviderManager;\r
25import org.eclipse.linuxtools.tmf.ui.viewers.events.TmfEventsTable;\r
26import org.eclipse.linuxtools.tmf.ui.views.project.ProjectView;\r
27import org.eclipse.swt.widgets.Composite;\r
28import org.eclipse.ui.IEditorInput;\r
29import org.eclipse.ui.IEditorPart;\r
30import org.eclipse.ui.IEditorSite;\r
31import org.eclipse.ui.IFileEditorInput;\r
32import org.eclipse.ui.IPropertyListener;\r
33import org.eclipse.ui.IReusableEditor;\r
34import org.eclipse.ui.PartInitException;\r
35import org.eclipse.ui.ide.FileStoreEditorInput;\r
36\r
37/**\r
38 * <b><u>TmfEventsEditor</u></b>\r
39 */\r
40public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReusableEditor, IPropertyListener {\r
41\r
42 public static final String ID = "org.eclipse.linuxtools.tmf.ui.editors.events";\r
43 \r
44 private TmfEventsTable fEventsTable;\r
45 private IResource fResource;\r
46 private ITmfTrace fTrace;\r
47 private Composite fParent;\r
48\r
49 @Override\r
50 public void doSave(IProgressMonitor monitor) {\r
51 }\r
52\r
53 @Override\r
54 public void doSaveAs() {\r
55 }\r
56\r
57 @Override\r
58 public void init(IEditorSite site, IEditorInput input) throws PartInitException {\r
59 if (input instanceof TmfEditorInput) {\r
60 fResource = ((TmfEditorInput) input).getResource();\r
61 fTrace = ((TmfEditorInput) input).getTrace();\r
62 } else if (input instanceof IFileEditorInput) {\r
63 fResource = ((IFileEditorInput) input).getFile();\r
64 fTrace = ParserProviderManager.getTrace(fResource);\r
65 input = new TmfEditorInput(fResource, fTrace);\r
66 } else if (input instanceof FileStoreEditorInput) {\r
67 try {\r
68 FileStoreEditorInput fileStoreEditorInput = (FileStoreEditorInput) input;\r
69 fResource = ProjectView.createLink(fileStoreEditorInput.getURI());\r
70 fTrace = ParserProviderManager.getTrace(fResource);\r
71 input = new TmfEditorInput(fResource, fTrace);\r
72 } catch (CoreException e) {\r
73 throw new PartInitException(e.getMessage());\r
74 }\r
75 } else {\r
76 throw new PartInitException("Invalid IEditorInput: " + input.getClass());\r
77 }\r
78 if (fTrace == null) {\r
79 throw new PartInitException("Invalid IEditorInput: " + fResource.getName());\r
80 }\r
81 super.setSite(site);\r
82 super.setInput(input);\r
83 }\r
84\r
85 @Override\r
86 public boolean isDirty() {\r
87 return false;\r
88 }\r
89\r
90 @Override\r
91 public boolean isSaveAsAllowed() {\r
92 return false;\r
93 }\r
94\r
95 @Override\r
96 public void setInput(IEditorInput input) {\r
97 super.setInput(input);\r
98 firePropertyChange(IEditorPart.PROP_INPUT);\r
99 }\r
100\r
101// @Override\r
102 public void propertyChanged(Object source, int propId) {\r
103 if (propId == IEditorPart.PROP_INPUT) {\r
104 broadcast(new TmfTraceClosedSignal(this, fTrace));\r
105 fResource = ((TmfEditorInput) getEditorInput()).getResource();\r
106 fTrace = ((TmfEditorInput) getEditorInput()).getTrace();\r
107 fEventsTable.dispose();\r
108 if (fTrace != null) {\r
109 fEventsTable = createEventsTable(fParent, fTrace.getCacheSize());\r
529ee6a9 110 fEventsTable.setTrace(fTrace, true);\r
abfad0aa
FC
111 broadcast(new TmfTraceOpenedSignal(this, fTrace));\r
112 } else {\r
113 fEventsTable = new TmfEventsTable(fParent, 0);\r
114 }\r
115 fParent.layout();\r
116 }\r
117 }\r
118\r
119 @Override\r
120 public void createPartControl(Composite parent) {\r
121 fParent = parent;\r
122 setPartName(getEditorInput().getName());\r
123 if (fTrace != null) {\r
124 fEventsTable = createEventsTable(parent, fTrace.getCacheSize());\r
529ee6a9 125 fEventsTable.setTrace(fTrace, true);\r
abfad0aa
FC
126 broadcast(new TmfTraceOpenedSignal(this, fTrace));\r
127 } else {\r
128 fEventsTable = new TmfEventsTable(parent, 0);\r
129 }\r
130 addPropertyListener(this);\r
131 }\r
132\r
133 @Override\r
134 public void dispose() {\r
135 removePropertyListener(this);\r
136 if (fTrace != null) {\r
137 broadcast(new TmfTraceClosedSignal(this, fTrace));\r
138 }\r
139 if (fEventsTable != null) {\r
140 fEventsTable.dispose();\r
141 }\r
142 super.dispose();\r
143 }\r
144\r
145 protected TmfEventsTable createEventsTable(Composite parent, int cacheSize) {\r
146 TmfEventsTable eventsTable = ParserProviderManager.getEventsTable(fTrace, parent, cacheSize);\r
147 if (eventsTable == null) {\r
148 eventsTable = new TmfEventsTable(parent, cacheSize);\r
149 }\r
150 return eventsTable;\r
151 }\r
152 \r
153// @Override\r
154 public ITmfTrace getTrace() {\r
155 return fTrace;\r
156 }\r
157\r
158 @Override\r
159 public void setFocus() {\r
160 fEventsTable.setFocus();\r
161 if (fTrace != null) {\r
162 broadcast(new TmfTraceSelectedSignal(this, fTrace));\r
163 }\r
164 }\r
165\r
166 // ------------------------------------------------------------------------\r
167 // Signal handlers\r
168 // ------------------------------------------------------------------------\r
169 \r
170 @TmfSignalHandler\r
171 public void traceParserUpdated(TmfTraceParserUpdatedSignal signal) {\r
172 if (signal.getTraceResource().equals(fResource)) {\r
173 broadcast(new TmfTraceClosedSignal(this, fTrace));\r
174 fTrace = ParserProviderManager.getTrace(fResource);\r
175 fEventsTable.dispose();\r
176 if (fTrace != null) {\r
177 fEventsTable = createEventsTable(fParent, fTrace.getCacheSize());\r
529ee6a9 178 fEventsTable.setTrace(fTrace, true);\r
abfad0aa
FC
179 broadcast(new TmfTraceOpenedSignal(this, fTrace));\r
180 } else {\r
181 fEventsTable = new TmfEventsTable(fParent, 0);\r
182 }\r
183 fParent.layout();\r
184 }\r
185 }\r
186\r
187 @TmfSignalHandler\r
188 public void traceSelected(TmfTraceSelectedSignal signal) {\r
189 if (signal.getSource() != this && signal.getTrace().equals(fTrace)) {\r
190 getSite().getPage().bringToTop(this);\r
191 }\r
192 }\r
193\r
194}\r
This page took 0.03107 seconds and 5 git commands to generate.