Refactor TmfTrace and dependencies - remove getTrace()
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / internal / tmf / ui / parsers / wizards / CustomTxtParserOutputWizardPage.java
CommitLineData
d34665f9 1package org.eclipse.linuxtools.internal.tmf.ui.parsers.wizards;\r
c3c5c786
FC
2\r
3import java.io.File;\r
4import java.io.FileNotFoundException;\r
5import java.io.FileWriter;\r
6import java.io.IOException;\r
7import java.util.ArrayList;\r
8import java.util.Iterator;\r
9import java.util.List;\r
10\r
11import org.eclipse.jface.wizard.WizardPage;\r
d34665f9
FC
12import org.eclipse.linuxtools.internal.tmf.ui.Messages;\r
13import org.eclipse.linuxtools.internal.tmf.ui.TmfUiPlugin;\r
14import org.eclipse.linuxtools.internal.tmf.ui.parsers.custom.CustomEventsTable;\r
25e48683 15import org.eclipse.linuxtools.internal.tmf.ui.parsers.custom.CustomTraceDefinition.OutputColumn;\r
d34665f9
FC
16import org.eclipse.linuxtools.internal.tmf.ui.parsers.custom.CustomTxtTrace;\r
17import org.eclipse.linuxtools.internal.tmf.ui.parsers.custom.CustomTxtTraceDefinition;\r
6c13869b 18import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;\r
c3c5c786
FC
19import org.eclipse.swt.SWT;\r
20import org.eclipse.swt.custom.SashForm;\r
21import org.eclipse.swt.custom.ScrolledComposite;\r
22import org.eclipse.swt.events.SelectionAdapter;\r
23import org.eclipse.swt.events.SelectionEvent;\r
24import org.eclipse.swt.graphics.Image;\r
25import org.eclipse.swt.layout.GridData;\r
26import org.eclipse.swt.layout.GridLayout;\r
27import org.eclipse.swt.widgets.Button;\r
28import org.eclipse.swt.widgets.Composite;\r
29import org.eclipse.swt.widgets.Text;\r
30\r
31public class CustomTxtParserOutputWizardPage extends WizardPage {\r
32\r
d7fcacc9
FC
33 private static final Image upImage = TmfUiPlugin.getDefault().getImageFromPath("/icons/elcl16/up_button.gif"); //$NON-NLS-1$\r
34 private static final Image downImage = TmfUiPlugin.getDefault().getImageFromPath("/icons/elcl16/down_button.gif"); //$NON-NLS-1$\r
25e48683 35 private final CustomTxtParserWizard wizard;\r
c3c5c786
FC
36 private CustomTxtTraceDefinition definition;\r
37 ArrayList<Output> outputs = new ArrayList<Output>();\r
25e48683 38 // Output messageOutput;\r
c3c5c786
FC
39 Composite container;\r
40 SashForm sash;\r
25e48683
FC
41 // Text timestampFormatText;\r
42 // Text timestampPreviewText;\r
c3c5c786
FC
43 ScrolledComposite outputsScrolledComposite;\r
44 Composite outputsContainer;\r
25e48683 45 // ScrolledComposite inputScrolledComposite;\r
c3c5c786
FC
46 Composite tableContainer;\r
47 CustomEventsTable previewTable;\r
48 File tmpFile;\r
25e48683
FC
49\r
50 protected CustomTxtParserOutputWizardPage(final CustomTxtParserWizard wizard) {\r
3b38ea61 51 super("CustomParserOutputWizardPage"); //$NON-NLS-1$\r
c3c5c786 52 setTitle(wizard.inputPage.getTitle());\r
3b38ea61 53 setDescription(Messages.CustomTxtParserOutputWizardPage_description);\r
c3c5c786
FC
54 this.wizard = wizard;\r
55 setPageComplete(false);\r
56 }\r
57\r
25e48683
FC
58 @Override\r
59 public void createControl(final Composite parent) {\r
c3c5c786
FC
60 container = new Composite(parent, SWT.NULL);\r
61 container.setLayout(new GridLayout());\r
62\r
63 sash = new SashForm(container, SWT.VERTICAL);\r
64 sash.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
65 sash.setBackground(sash.getDisplay().getSystemColor(SWT.COLOR_GRAY));\r
25e48683 66\r
c3c5c786
FC
67 outputsScrolledComposite = new ScrolledComposite(sash, SWT.V_SCROLL);\r
68 outputsScrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
69 outputsContainer = new Composite(outputsScrolledComposite, SWT.NONE);\r
25e48683 70 final GridLayout outputsLayout = new GridLayout(4, false);\r
c3c5c786
FC
71 outputsLayout.marginHeight = 10;\r
72 outputsLayout.marginWidth = 0;\r
73 outputsContainer.setLayout(outputsLayout);\r
74 outputsScrolledComposite.setContent(outputsContainer);\r
75 outputsScrolledComposite.setExpandHorizontal(true);\r
76 outputsScrolledComposite.setExpandVertical(true);\r
77\r
78 outputsContainer.layout();\r
25e48683 79\r
c3c5c786
FC
80 outputsScrolledComposite.setMinSize(outputsContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT).x, outputsContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT).y-5);\r
81\r
82 tableContainer = new Composite(sash, SWT.NONE);\r
25e48683 83 final GridLayout tableLayout = new GridLayout();\r
c3c5c786
FC
84 tableLayout.marginHeight = 0;\r
85 tableLayout.marginWidth = 0;\r
86 tableContainer.setLayout(tableLayout);\r
87 previewTable = new CustomEventsTable(new CustomTxtTraceDefinition(), tableContainer, 0);\r
d7fcacc9 88 previewTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
25e48683
FC
89\r
90 if (wizard.definition != null)\r
c3c5c786 91 loadDefinition(wizard.definition);\r
c3c5c786 92 setControl(container);\r
25e48683 93\r
c3c5c786
FC
94 }\r
95\r
96 @Override\r
97 public void dispose() {\r
98 previewTable.dispose();\r
99 super.dispose();\r
100 }\r
101\r
25e48683
FC
102 private void loadDefinition(final CustomTxtTraceDefinition definition) {\r
103 for (final OutputColumn outputColumn : definition.outputs) {\r
104 final Output output = new Output(outputsContainer, outputColumn.name);\r
c3c5c786
FC
105 outputs.add(output);\r
106 }\r
107 }\r
108\r
109 /* (non-Javadoc)\r
110 * @see org.eclipse.jface.dialogs.DialogPage#setVisible(boolean)\r
111 */\r
112 @Override\r
25e48683 113 public void setVisible(final boolean visible) {\r
c3c5c786
FC
114 if (visible) {\r
115 this.definition = wizard.inputPage.getDefinition();\r
25e48683
FC
116 final List<String> outputNames = wizard.inputPage.getInputNames();\r
117\r
c3c5c786 118 // dispose outputs that have been removed in the input page\r
25e48683 119 final Iterator<Output> iter = outputs.iterator();\r
c3c5c786 120 while (iter.hasNext()) {\r
25e48683 121 final Output output = iter.next();\r
c3c5c786 122 boolean found = false;\r
25e48683 123 for (final String name : outputNames)\r
c3c5c786
FC
124 if (output.name.equals(name)) {\r
125 found = true;\r
126 break;\r
127 }\r
c3c5c786
FC
128 if (!found) {\r
129 output.dispose();\r
130 iter.remove();\r
131 }\r
132 }\r
25e48683 133\r
c3c5c786 134 // create outputs that have been added in the input page\r
25e48683 135 for (final String name : outputNames) {\r
c3c5c786 136 boolean found = false;\r
25e48683 137 for (final Output output : outputs)\r
c3c5c786
FC
138 if (output.name.equals(name)) {\r
139 found = true;\r
140 break;\r
141 }\r
25e48683 142 if (!found)\r
c3c5c786 143 outputs.add(new Output(outputsContainer, name));\r
c3c5c786 144 }\r
25e48683 145\r
c3c5c786
FC
146 outputsContainer.layout();\r
147 outputsScrolledComposite.setMinSize(outputsContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT).x, outputsContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT).y-5);\r
148 updatePreviewTable();\r
25e48683 149 if (sash.getSize().y > outputsContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT).y + previewTable.getTable().getItemHeight())\r
c3c5c786 150 sash.setWeights(new int[] {outputsContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT).y, sash.getSize().y - outputsContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT).y});\r
25e48683 151 else\r
c3c5c786 152 sash.setWeights(new int[] {outputsContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT).y, previewTable.getTable().getItemHeight()});\r
c3c5c786 153 setPageComplete(true);\r
25e48683 154 } else\r
c3c5c786 155 setPageComplete(false);\r
c3c5c786
FC
156 super.setVisible(visible);\r
157 }\r
158\r
25e48683
FC
159 private void moveBefore(final Output moved) {\r
160 final int i = outputs.indexOf(moved);\r
c3c5c786 161 if (i > 0) {\r
25e48683 162 final Output previous = outputs.get(i-1);\r
c3c5c786
FC
163 moved.enabledButton.moveAbove(previous.enabledButton);\r
164 moved.nameLabel.moveBelow(moved.enabledButton);\r
165 moved.upButton.moveBelow(moved.nameLabel);\r
166 moved.downButton.moveBelow(moved.upButton);\r
167 outputs.add(i-1, outputs.remove(i));\r
168 outputsContainer.layout();\r
169 outputsScrolledComposite.setMinSize(outputsContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT).x, outputsContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT).y-5);\r
170 container.layout();\r
171 updatePreviewTable();\r
172 }\r
173 }\r
25e48683
FC
174\r
175 private void moveAfter(final Output moved) {\r
176 final int i = outputs.indexOf(moved);\r
c3c5c786 177 if (i+1 < outputs.size()) {\r
25e48683 178 final Output next = outputs.get(i+1);\r
c3c5c786
FC
179 moved.enabledButton.moveBelow(next.downButton);\r
180 moved.nameLabel.moveBelow(moved.enabledButton);\r
181 moved.upButton.moveBelow(moved.nameLabel);\r
182 moved.downButton.moveBelow(moved.upButton);\r
183 outputs.add(i+1, outputs.remove(i));\r
184 outputsContainer.layout();\r
185 outputsScrolledComposite.setMinSize(outputsContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT).x, outputsContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT).y-5);\r
186 container.layout();\r
187 updatePreviewTable();\r
188 }\r
189 }\r
25e48683 190\r
c3c5c786 191 private void updatePreviewTable() {\r
4bf17f4a 192 final int CACHE_SIZE = 50;\r
c3c5c786
FC
193 definition.outputs = extractOutputs();\r
194\r
195 try {\r
3b38ea61 196 tmpFile = TmfUiPlugin.getDefault().getStateLocation().addTrailingSeparator().append("customwizard.tmp").toFile(); //$NON-NLS-1$\r
25e48683 197 final FileWriter writer = new FileWriter(tmpFile);\r
c3c5c786
FC
198 writer.write(wizard.inputPage.getInputText());\r
199 writer.close();\r
25e48683
FC
200\r
201 final ITmfTrace<?> trace = new CustomTxtTrace(null, definition, tmpFile.getAbsolutePath(), CACHE_SIZE);\r
c3c5c786 202 previewTable.dispose();\r
4bf17f4a 203 previewTable = new CustomEventsTable(definition, tableContainer, CACHE_SIZE);\r
d7fcacc9 204 previewTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
529ee6a9 205 previewTable.setTrace(trace, true);\r
25e48683 206 } catch (final FileNotFoundException e) {\r
c3c5c786 207 e.printStackTrace();\r
25e48683 208 } catch (final IOException e) {\r
c3c5c786
FC
209 e.printStackTrace();\r
210 }\r
25e48683 211\r
c3c5c786
FC
212 tableContainer.layout();\r
213 container.layout();\r
214 }\r
215\r
216 public List<OutputColumn> extractOutputs() {\r
217 int numColumns = 0;\r
25e48683
FC
218 for (int i = 0; i < outputs.size(); i++)\r
219 if (outputs.get(i).enabledButton.getSelection())\r
c3c5c786 220 numColumns++;\r
25e48683 221 final List<OutputColumn> outputColumns = new ArrayList<OutputColumn>(numColumns);\r
c3c5c786
FC
222 numColumns = 0;\r
223 for (int i = 0; i < outputs.size(); i++) {\r
25e48683 224 final Output output = outputs.get(i);\r
c3c5c786 225 if (output.enabledButton.getSelection()) {\r
25e48683 226 final OutputColumn column = new OutputColumn();\r
c3c5c786 227 column.name = output.nameLabel.getText();\r
25e48683 228 outputColumns.add(column);\r
c3c5c786
FC
229 }\r
230 }\r
231 return outputColumns;\r
232 }\r
233\r
234 private class Output {\r
235 String name;\r
236 Button enabledButton;\r
237 Text nameLabel;\r
238 Button upButton;\r
239 Button downButton;\r
25e48683
FC
240\r
241 public Output(final Composite parent, final String name) {\r
c3c5c786 242 this.name = name;\r
25e48683 243\r
c3c5c786 244 enabledButton = new Button(parent, SWT.CHECK);\r
3b38ea61 245 enabledButton.setToolTipText(Messages.CustomTxtParserOutputWizardPage_visible);\r
c3c5c786
FC
246 enabledButton.setSelection(true);\r
247 enabledButton.addSelectionListener(new SelectionAdapter() {\r
25e48683
FC
248 @Override\r
249 public void widgetSelected(final SelectionEvent e) {\r
c3c5c786
FC
250 updatePreviewTable();\r
251 }\r
252 });\r
25e48683
FC
253 // if (messageOutput != null) {\r
254 // enabledButton.moveAbove(messageOutput.enabledButton);\r
255 // }\r
256\r
c3c5c786
FC
257 nameLabel = new Text(parent, SWT.BORDER | SWT.READ_ONLY | SWT.SINGLE);\r
258 nameLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));\r
259 nameLabel.setText(name);\r
260 nameLabel.moveBelow(enabledButton);\r
261\r
262 upButton = new Button(parent, SWT.PUSH);\r
263 upButton.setImage(upImage);\r
3b38ea61 264 upButton.setToolTipText(Messages.CustomTxtParserOutputWizardPage_moveBefore);\r
c3c5c786 265 upButton.addSelectionListener(new SelectionAdapter() {\r
25e48683
FC
266 @Override\r
267 public void widgetSelected(final SelectionEvent e) {\r
c3c5c786
FC
268 moveBefore(Output.this);\r
269 }\r
270 });\r
271 upButton.moveBelow(nameLabel);\r
25e48683 272\r
c3c5c786
FC
273 downButton = new Button(parent, SWT.PUSH);\r
274 downButton.setImage(downImage);\r
3b38ea61 275 downButton.setToolTipText(Messages.CustomTxtParserOutputWizardPage_moveAfter);\r
c3c5c786 276 downButton.addSelectionListener(new SelectionAdapter() {\r
25e48683
FC
277 @Override\r
278 public void widgetSelected(final SelectionEvent e) {\r
c3c5c786
FC
279 moveAfter(Output.this);\r
280 }\r
281 });\r
282 downButton.moveBelow(upButton);\r
283 }\r
284\r
285 private void dispose() {\r
286 enabledButton.dispose();\r
287 nameLabel.dispose();\r
288 upButton.dispose();\r
289 downButton.dispose();\r
290 }\r
291 }\r
292\r
293 public CustomTxtTraceDefinition getDefinition() {\r
294 return definition;\r
295 }\r
25e48683 296\r
c3c5c786 297}\r
This page took 0.047657 seconds and 5 git commands to generate.