]> git.argeo.org Git - gpl/argeo-slc.git/blob - eclipse/plugins/org.argeo.slc.ide.ui/src/main/java/org/argeo/slc/ide/ui/launch/osgi/OsgiBootMainTab.java
Start working on serialized JMS
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.ide.ui / src / main / java / org / argeo / slc / ide / ui / launch / osgi / OsgiBootMainTab.java
1 package org.argeo.slc.ide.ui.launch.osgi;
2
3 import org.argeo.slc.ide.ui.SlcIdeUiPlugin;
4 import org.eclipse.core.runtime.CoreException;
5 import org.eclipse.debug.core.ILaunchConfiguration;
6 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
7 import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
8 import org.eclipse.jface.dialogs.Dialog;
9 import org.eclipse.swt.SWT;
10 import org.eclipse.swt.events.ModifyEvent;
11 import org.eclipse.swt.events.ModifyListener;
12 import org.eclipse.swt.events.SelectionAdapter;
13 import org.eclipse.swt.events.SelectionEvent;
14 import org.eclipse.swt.graphics.Image;
15 import org.eclipse.swt.layout.GridData;
16 import org.eclipse.swt.layout.GridLayout;
17 import org.eclipse.swt.widgets.Button;
18 import org.eclipse.swt.widgets.Composite;
19 import org.eclipse.swt.widgets.Group;
20 import org.eclipse.swt.widgets.Label;
21 import org.eclipse.swt.widgets.Text;
22
23 /** Main tab of OSGiBoot launch configuration UI. */
24 public class OsgiBootMainTab extends AbstractLaunchConfigurationTab implements
25 OsgiLauncherConstants {
26 private Listener listener = new Listener();
27
28 private Button syncBundles;
29 private Button clearDataDirectory;
30
31 private Button addJvmPaths;
32 private Text additionalVmArgs;
33
34 private Text additionalProgramArgs;
35
36 public void createControl(Composite parent) {
37 Composite container = new Composite(parent, SWT.NONE);
38 container.setLayout(new GridLayout());
39 container.setLayoutData(new GridData(GridData.FILL_BOTH));
40
41 createGeneral(container);
42 createAdditionalProgramArgs(container);
43 createAdditionalVmArgumentBlock(container);
44 Dialog.applyDialogFont(container);
45 setControl(container);
46 }
47
48 protected void createGeneral(Composite parent) {
49 Group container = new Group(parent, SWT.NONE);
50 container.setText("General");
51 GridLayout layout = new GridLayout();
52 layout.numColumns = 2;
53 container.setLayout(layout);
54 container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
55
56 syncBundles = new Button(container, SWT.CHECK);
57 syncBundles.addSelectionListener(listener);
58 new Label(container, SWT.NONE)
59 .setText("Keep bundles in line with target platform and workspace (recommended)");
60 clearDataDirectory = new Button(container, SWT.CHECK);
61 clearDataDirectory.addSelectionListener(listener);
62 new Label(container, SWT.NONE)
63 .setText("Clear data directory before launch");
64 }
65
66 protected void createAdditionalProgramArgs(Composite parent) {
67 Group container = new Group(parent, SWT.NONE);
68 container.setText("Additional Program Arguments");
69 GridLayout layout = new GridLayout();
70 layout.numColumns = 2;
71 container.setLayout(layout);
72 container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
73
74 additionalProgramArgs = new Text(container, SWT.MULTI | SWT.WRAP
75 | SWT.BORDER | SWT.V_SCROLL);
76 GridData gd = new GridData(GridData.FILL_BOTH);
77 gd.heightHint = 60;
78 gd.widthHint = 100;
79 gd.horizontalSpan = 2;
80 additionalProgramArgs.setLayoutData(gd);
81 additionalProgramArgs.addModifyListener(listener);
82 }
83
84 protected void createAdditionalVmArgumentBlock(Composite parent) {
85 Group container = new Group(parent, SWT.NONE);
86 container.setText("Additional VM Arguments");
87 GridLayout layout = new GridLayout();
88 layout.numColumns = 2;
89 container.setLayout(layout);
90 container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
91
92 additionalVmArgs = new Text(container, SWT.MULTI | SWT.WRAP
93 | SWT.BORDER | SWT.V_SCROLL);
94 GridData gd = new GridData(GridData.FILL_BOTH);
95 gd.heightHint = 60;
96 gd.widthHint = 100;
97 gd.horizontalSpan = 2;
98 additionalVmArgs.setLayoutData(gd);
99 additionalVmArgs.addModifyListener(listener);
100
101 addJvmPaths = new Button(container, SWT.CHECK);
102 addJvmPaths.addSelectionListener(listener);
103 new Label(container, SWT.NONE)
104 .setText("Add workspace JVM paths as non-standard system properties");
105
106 }
107
108 public String getName() {
109 return "OSGi Boot";
110 }
111
112 @Override
113 public Image getImage() {
114 return SlcIdeUiPlugin.getDefault().getImage("icons/slc-launch.gif");
115 }
116
117 public void initializeFrom(ILaunchConfiguration configuration) {
118 // System.out.println("initializeFrom");
119 try {
120 syncBundles.setSelection(configuration.getAttribute(
121 ATTR_SYNC_BUNDLES, true));
122 clearDataDirectory.setSelection(configuration.getAttribute(
123 ATTR_CLEAR_DATA_DIRECTORY, false));
124
125 additionalProgramArgs.setText(configuration.getAttribute(
126 ATTR_ADDITIONAL_PROGRAM_ARGS, ""));
127 addJvmPaths.setSelection(configuration.getAttribute(
128 ATTR_ADD_JVM_PATHS, false));
129 additionalVmArgs.setText(configuration.getAttribute(
130 ATTR_ADDITIONAL_VM_ARGS, ""));
131 // readProperties(configuration);
132 } catch (CoreException e) {
133 e.printStackTrace();
134 }
135 }
136
137 public void performApply(ILaunchConfigurationWorkingCopy configuration) {
138 // System.out.println("performApply");
139 configuration.setAttribute(ATTR_SYNC_BUNDLES, syncBundles
140 .getSelection());
141 configuration.setAttribute(ATTR_CLEAR_DATA_DIRECTORY,
142 clearDataDirectory.getSelection());
143
144 configuration.setAttribute(ATTR_ADDITIONAL_PROGRAM_ARGS,
145 additionalProgramArgs.getText());
146 configuration.setAttribute(ATTR_ADDITIONAL_VM_ARGS, additionalVmArgs
147 .getText());
148 configuration.setAttribute(ATTR_ADD_JVM_PATHS, addJvmPaths
149 .getSelection());
150 // writeProperties(configuration);
151
152 OsgiLaunchHelper.updateLaunchConfiguration(configuration);
153 }
154
155 public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
156 // System.out.println("setDefaults");
157 configuration.setAttribute(ATTR_SYNC_BUNDLES, true);
158 configuration.setAttribute(ATTR_CLEAR_DATA_DIRECTORY, false);
159 configuration.setAttribute(ATTR_ADD_JVM_PATHS, false);
160 configuration.setAttribute(ATTR_ADDITIONAL_VM_ARGS, "-Xmx128m");
161 configuration.setAttribute(ATTR_ADDITIONAL_PROGRAM_ARGS, "-console");
162 }
163
164 @Override
165 public void activated(ILaunchConfigurationWorkingCopy workingCopy) {
166 initializeFrom(workingCopy);
167 try {
168 workingCopy.doSave();
169 } catch (CoreException e) {
170 e.printStackTrace();
171 }
172 }
173
174 @Override
175 public void deactivated(ILaunchConfigurationWorkingCopy workingCopy) {
176 // do nothing
177 }
178
179 class Listener extends SelectionAdapter implements ModifyListener {
180 public void widgetSelected(SelectionEvent e) {
181 // Object source = e.getSource();
182 // setDirty(true);
183 updateLaunchConfigurationDialog();
184 }
185
186 public void modifyText(ModifyEvent e) {
187 // System.out.println("modifyText : " + e);
188 // setDirty(true);
189 updateLaunchConfigurationDialog();
190 }
191 }
192
193 // private void readProperties(ILaunchConfiguration configuration) {
194 // BufferedReader reader = null;
195 // try {
196 // IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
197 // propertiesFile.refreshLocal(IResource.DEPTH_ONE, null);
198 // reader = new BufferedReader(new InputStreamReader(propertiesFile
199 // .getContents()));
200 // String line = null;
201 // StringBuffer buf = new StringBuffer("");
202 // while ((line = reader.readLine()) != null) {
203 // buf.append(line);
204 // buf.append("\n");
205 // }
206 // propertiesText.setText(buf.toString());
207 // } catch (CoreException e) {
208 // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
209 // "Error", "Cannot read properties", e.getStatus());
210 // return;
211 // } catch (Exception e) {
212 // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
213 // "Error", "Cannot read properties",
214 // new Status(IStatus.ERROR, SlcIdeUiPlugin.ID,
215 // e.getMessage(), e));
216 // return;
217 // } finally {
218 // if (reader != null)
219 // try {
220 // reader.close();
221 // } catch (IOException e) {
222 // // silent
223 // }
224 // }
225 //
226 // }
227 //
228 // private void writeProperties(ILaunchConfiguration configuration) {
229 // InputStream in = null;
230 // IFile propertiesFile = null;
231 // try {
232 // propertiesFile = (IFile) configuration.getMappedResources()[0];
233 // in = new ByteArrayInputStream(propertiesText.getText().getBytes());
234 // propertiesFile.setContents(in, true, true, null);
235 // propertiesFile.refreshLocal(IResource.DEPTH_ONE, null);
236 // } catch (CoreException e) {
237 // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
238 // "Error", "Cannot write properties", e.getStatus());
239 // return;
240 // } catch (Exception e) {
241 // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
242 // "Error", "Cannot write properties",
243 // new Status(IStatus.ERROR, SlcIdeUiPlugin.ID,
244 // e.getMessage(), e));
245 // return;
246 // } finally {
247 // if (in != null)
248 // try {
249 // in.close();
250 // } catch (IOException e) {
251 // // silent
252 // }
253 // }
254 //
255 // }
256
257 }