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
d4011df2
FC
102 @Override\r
103 public void propertyChanged(Object source, int propId) {\r
abfad0aa
FC
104 if (propId == IEditorPart.PROP_INPUT) {\r
105 broadcast(new TmfTraceClosedSignal(this, fTrace));\r
106 fResource = ((TmfEditorInput) getEditorInput()).getResource();\r
107 fTrace = ((TmfEditorInput) getEditorInput()).getTrace();\r
108 fEventsTable.dispose();\r
109 if (fTrace != null) {\r
110 fEventsTable = createEventsTable(fParent, fTrace.getCacheSize());\r
529ee6a9 111 fEventsTable.setTrace(fTrace, true);\r
abfad0aa
FC
112 broadcast(new TmfTraceOpenedSignal(this, fTrace));\r
113 } else {\r
114 fEventsTable = new TmfEventsTable(fParent, 0);\r
115 }\r
116 fParent.layout();\r
117 }\r
118 }\r
119\r
120 @Override\r
121 public void createPartControl(Composite parent) {\r
122 fParent = parent;\r
123 setPartName(getEditorInput().getName());\r
124 if (fTrace != null) {\r
125 fEventsTable = createEventsTable(parent, fTrace.getCacheSize());\r
529ee6a9 126 fEventsTable.setTrace(fTrace, true);\r
abfad0aa
FC
127 broadcast(new TmfTraceOpenedSignal(this, fTrace));\r
128 } else {\r
129 fEventsTable = new TmfEventsTable(parent, 0);\r
130 }\r
131 addPropertyListener(this);\r
132 }\r
133\r
134 @Override\r
135 public void dispose() {\r
136 removePropertyListener(this);\r
137 if (fTrace != null) {\r
138 broadcast(new TmfTraceClosedSignal(this, fTrace));\r
139 }\r
140 if (fEventsTable != null) {\r
141 fEventsTable.dispose();\r
142 }\r
143 super.dispose();\r
144 }\r
145\r
146 protected TmfEventsTable createEventsTable(Composite parent, int cacheSize) {\r
147 TmfEventsTable eventsTable = ParserProviderManager.getEventsTable(fTrace, parent, cacheSize);\r
148 if (eventsTable == null) {\r
149 eventsTable = new TmfEventsTable(parent, cacheSize);\r
150 }\r
151 return eventsTable;\r
152 }\r
153 \r
154// @Override\r
d4011df2
FC
155 @Override\r
156 public ITmfTrace getTrace() {\r
abfad0aa
FC
157 return fTrace;\r
158 }\r
159\r
160 @Override\r
161 public void setFocus() {\r
162 fEventsTable.setFocus();\r
163 if (fTrace != null) {\r
164 broadcast(new TmfTraceSelectedSignal(this, fTrace));\r
165 }\r
166 }\r
167\r
168 // ------------------------------------------------------------------------\r
169 // Signal handlers\r
170 // ------------------------------------------------------------------------\r
171 \r
172 @TmfSignalHandler\r
173 public void traceParserUpdated(TmfTraceParserUpdatedSignal signal) {\r
174 if (signal.getTraceResource().equals(fResource)) {\r
175 broadcast(new TmfTraceClosedSignal(this, fTrace));\r
176 fTrace = ParserProviderManager.getTrace(fResource);\r
177 fEventsTable.dispose();\r
178 if (fTrace != null) {\r
179 fEventsTable = createEventsTable(fParent, fTrace.getCacheSize());\r
529ee6a9 180 fEventsTable.setTrace(fTrace, true);\r
abfad0aa
FC
181 broadcast(new TmfTraceOpenedSignal(this, fTrace));\r
182 } else {\r
183 fEventsTable = new TmfEventsTable(fParent, 0);\r
184 }\r
185 fParent.layout();\r
186 }\r
187 }\r
188\r
189 @TmfSignalHandler\r
190 public void traceSelected(TmfTraceSelectedSignal signal) {\r
191 if (signal.getSource() != this && signal.getTrace().equals(fTrace)) {\r
192 getSite().getPage().bringToTop(this);\r
193 }\r
194 }\r
195\r
196}\r
This page took 0.033563 seconds and 5 git commands to generate.