Fix for Bug338162
[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
abfad0aa
FC
19import org.eclipse.linuxtools.tmf.signal.TmfTraceSelectedSignal;\r
20import org.eclipse.linuxtools.tmf.trace.ITmfTrace;\r
21import org.eclipse.linuxtools.tmf.ui.parsers.ParserProviderManager;\r
46ab8ce3
FC
22import org.eclipse.linuxtools.tmf.ui.signal.TmfTraceClosedSignal;\r
23import org.eclipse.linuxtools.tmf.ui.signal.TmfTraceParserUpdatedSignal;\r
abfad0aa
FC
24import org.eclipse.linuxtools.tmf.ui.viewers.events.TmfEventsTable;\r
25import org.eclipse.linuxtools.tmf.ui.views.project.ProjectView;\r
26import org.eclipse.swt.widgets.Composite;\r
27import org.eclipse.ui.IEditorInput;\r
28import org.eclipse.ui.IEditorPart;\r
29import org.eclipse.ui.IEditorSite;\r
30import org.eclipse.ui.IFileEditorInput;\r
31import org.eclipse.ui.IPropertyListener;\r
32import org.eclipse.ui.IReusableEditor;\r
33import org.eclipse.ui.PartInitException;\r
34import org.eclipse.ui.ide.FileStoreEditorInput;\r
35\r
36/**\r
37 * <b><u>TmfEventsEditor</u></b>\r
38 */\r
39public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReusableEditor, IPropertyListener {\r
40\r
3b38ea61 41 public static final String ID = "org.eclipse.linuxtools.tmf.ui.editors.events"; //$NON-NLS-1$\r
abfad0aa
FC
42 \r
43 private TmfEventsTable fEventsTable;\r
44 private IResource fResource;\r
45 private ITmfTrace fTrace;\r
46 private Composite fParent;\r
47\r
48 @Override\r
49 public void doSave(IProgressMonitor monitor) {\r
50 }\r
51\r
52 @Override\r
53 public void doSaveAs() {\r
54 }\r
55\r
56 @Override\r
57 public void init(IEditorSite site, IEditorInput input) throws PartInitException {\r
58 if (input instanceof TmfEditorInput) {\r
59 fResource = ((TmfEditorInput) input).getResource();\r
60 fTrace = ((TmfEditorInput) input).getTrace();\r
61 } else if (input instanceof IFileEditorInput) {\r
62 fResource = ((IFileEditorInput) input).getFile();\r
63 fTrace = ParserProviderManager.getTrace(fResource);\r
64 input = new TmfEditorInput(fResource, fTrace);\r
65 } else if (input instanceof FileStoreEditorInput) {\r
66 try {\r
67 FileStoreEditorInput fileStoreEditorInput = (FileStoreEditorInput) input;\r
68 fResource = ProjectView.createLink(fileStoreEditorInput.getURI());\r
69 fTrace = ParserProviderManager.getTrace(fResource);\r
70 input = new TmfEditorInput(fResource, fTrace);\r
71 } catch (CoreException e) {\r
72 throw new PartInitException(e.getMessage());\r
73 }\r
74 } else {\r
3b38ea61 75 throw new PartInitException("Invalid IEditorInput: " + input.getClass()); //$NON-NLS-1$\r
abfad0aa
FC
76 }\r
77 if (fTrace == null) {\r
3b38ea61 78 throw new PartInitException("Invalid IEditorInput: " + fResource.getName()); //$NON-NLS-1$\r
abfad0aa
FC
79 }\r
80 super.setSite(site);\r
81 super.setInput(input);\r
82 }\r
83\r
84 @Override\r
85 public boolean isDirty() {\r
86 return false;\r
87 }\r
88\r
89 @Override\r
90 public boolean isSaveAsAllowed() {\r
91 return false;\r
92 }\r
93\r
94 @Override\r
95 public void setInput(IEditorInput input) {\r
96 super.setInput(input);\r
97 firePropertyChange(IEditorPart.PROP_INPUT);\r
98 }\r
99\r
100// @Override\r
d4011df2
FC
101 @Override\r
102 public void propertyChanged(Object source, int propId) {\r
abfad0aa
FC
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
46ab8ce3 111// FIXME: broadcast(new TmfTraceOpenedSignal(this, fTrace));\r
abfad0aa
FC
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
46ab8ce3 126// FIXME: broadcast(new TmfTraceOpenedSignal(this, fTrace));\r
abfad0aa
FC
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
d4011df2
FC
154 @Override\r
155 public ITmfTrace getTrace() {\r
abfad0aa
FC
156 return fTrace;\r
157 }\r
158\r
159 @Override\r
160 public void setFocus() {\r
161 fEventsTable.setFocus();\r
162 if (fTrace != null) {\r
163 broadcast(new TmfTraceSelectedSignal(this, fTrace));\r
164 }\r
165 }\r
166\r
167 // ------------------------------------------------------------------------\r
168 // Signal handlers\r
169 // ------------------------------------------------------------------------\r
170 \r
171 @TmfSignalHandler\r
172 public void traceParserUpdated(TmfTraceParserUpdatedSignal signal) {\r
173 if (signal.getTraceResource().equals(fResource)) {\r
174 broadcast(new TmfTraceClosedSignal(this, fTrace));\r
175 fTrace = ParserProviderManager.getTrace(fResource);\r
176 fEventsTable.dispose();\r
177 if (fTrace != null) {\r
178 fEventsTable = createEventsTable(fParent, fTrace.getCacheSize());\r
529ee6a9 179 fEventsTable.setTrace(fTrace, true);\r
46ab8ce3 180// FIXME:broadcast(new TmfTraceOpenedSignal(this, fTrace, fResource, fEventsTable));\r
abfad0aa
FC
181 } else {\r
182 fEventsTable = new TmfEventsTable(fParent, 0);\r
183 }\r
184 fParent.layout();\r
185 }\r
186 }\r
187\r
188 @TmfSignalHandler\r
189 public void traceSelected(TmfTraceSelectedSignal signal) {\r
190 if (signal.getSource() != this && signal.getTrace().equals(fTrace)) {\r
191 getSite().getPage().bringToTop(this);\r
192 }\r
193 }\r
194\r
195}\r
This page took 0.032119 seconds and 5 git commands to generate.