]> 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
Clean up code
[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 public class OsgiBootMainTab extends AbstractLaunchConfigurationTab implements
24 OsgiLauncherConstants {
25 private Listener listener = new Listener();
26 private Button addJvmPaths;
27 private Text additionalVmArgs;
28
29 private Text additionalProgramArgs;
30
31 public void createControl(Composite parent) {
32 Composite container = new Composite(parent, SWT.NONE);
33 container.setLayout(new GridLayout());
34 container.setLayoutData(new GridData(GridData.FILL_BOTH));
35 createAdditionalProgramArgs(container);
36 createAdditionalVmArgumentBlock(container);
37 Dialog.applyDialogFont(container);
38 setControl(container);
39 }
40
41 protected void createAdditionalProgramArgs(Composite parent) {
42 Group container = new Group(parent, SWT.NONE);
43 container.setText("Additional Program Arguments");
44 GridLayout layout = new GridLayout();
45 layout.numColumns = 2;
46 container.setLayout(layout);
47 container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
48
49 additionalProgramArgs = new Text(container, SWT.MULTI | SWT.WRAP
50 | SWT.BORDER | SWT.V_SCROLL);
51 GridData gd = new GridData(GridData.FILL_BOTH);
52 gd.heightHint = 60;
53 gd.widthHint = 100;
54 gd.horizontalSpan = 2;
55 additionalProgramArgs.setLayoutData(gd);
56 additionalProgramArgs.addModifyListener(listener);
57 }
58
59 protected void createAdditionalVmArgumentBlock(Composite parent) {
60 Group container = new Group(parent, SWT.NONE);
61 container.setText("Additional VM Arguments");
62 GridLayout layout = new GridLayout();
63 layout.numColumns = 2;
64 container.setLayout(layout);
65 container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
66
67 additionalVmArgs = new Text(container, SWT.MULTI | SWT.WRAP
68 | SWT.BORDER | SWT.V_SCROLL);
69 GridData gd = new GridData(GridData.FILL_BOTH);
70 gd.heightHint = 60;
71 gd.widthHint = 100;
72 gd.horizontalSpan = 2;
73 additionalVmArgs.setLayoutData(gd);
74 additionalVmArgs.addModifyListener(listener);
75
76 addJvmPaths = new Button(container, SWT.CHECK);
77 addJvmPaths.addSelectionListener(listener);
78 new Label(container, SWT.NONE)
79 .setText("Add workspace JVM paths as non-standard system properties");
80
81 }
82
83 public String getName() {
84 return "OSGi Boot";
85 }
86
87 @Override
88 public Image getImage() {
89 return SlcIdeUiPlugin.getDefault().getImage("icons/slc-launch.gif");
90 }
91
92 public void initializeFrom(ILaunchConfiguration configuration) {
93 // System.out.println("initializeFrom");
94 try {
95 additionalProgramArgs.setText(configuration.getAttribute(
96 ATTR_ADDITIONAL_PROGRAM_ARGS, ""));
97 addJvmPaths.setSelection(configuration.getAttribute(
98 ATTR_ADD_JVM_PATHS, false));
99 additionalVmArgs.setText(configuration.getAttribute(
100 ATTR_ADDITIONAL_VM_ARGS, ""));
101 // readProperties(configuration);
102 } catch (CoreException e) {
103 e.printStackTrace();
104 }
105 }
106
107 public void performApply(ILaunchConfigurationWorkingCopy configuration) {
108 // System.out.println("performApply");
109 configuration.setAttribute(ATTR_ADDITIONAL_PROGRAM_ARGS,
110 additionalProgramArgs.getText());
111 configuration.setAttribute(ATTR_ADDITIONAL_VM_ARGS, additionalVmArgs
112 .getText());
113 configuration.setAttribute(ATTR_ADD_JVM_PATHS, addJvmPaths
114 .getSelection());
115 // writeProperties(configuration);
116
117 OsgiLaunchHelper.updateLaunchConfiguration(configuration);
118 }
119
120 public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
121 // System.out.println("setDefaults");
122 configuration.setAttribute(ATTR_ADD_JVM_PATHS, false);
123 configuration.setAttribute(ATTR_ADDITIONAL_VM_ARGS, "-Xmx128m");
124 configuration.setAttribute(ATTR_ADDITIONAL_PROGRAM_ARGS, "-console");
125 }
126
127 @Override
128 public void activated(ILaunchConfigurationWorkingCopy workingCopy) {
129 initializeFrom(workingCopy);
130 try {
131 workingCopy.doSave();
132 } catch (CoreException e) {
133 e.printStackTrace();
134 }
135 }
136
137 @Override
138 public void deactivated(ILaunchConfigurationWorkingCopy workingCopy) {
139 // do nothing
140 }
141
142 class Listener extends SelectionAdapter implements ModifyListener {
143 public void widgetSelected(SelectionEvent e) {
144 // Object source = e.getSource();
145 // setDirty(true);
146 updateLaunchConfigurationDialog();
147 }
148
149 public void modifyText(ModifyEvent e) {
150 // System.out.println("modifyText : " + e);
151 // setDirty(true);
152 updateLaunchConfigurationDialog();
153 }
154 }
155
156 // private void readProperties(ILaunchConfiguration configuration) {
157 // BufferedReader reader = null;
158 // try {
159 // IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
160 // propertiesFile.refreshLocal(IResource.DEPTH_ONE, null);
161 // reader = new BufferedReader(new InputStreamReader(propertiesFile
162 // .getContents()));
163 // String line = null;
164 // StringBuffer buf = new StringBuffer("");
165 // while ((line = reader.readLine()) != null) {
166 // buf.append(line);
167 // buf.append("\n");
168 // }
169 // propertiesText.setText(buf.toString());
170 // } catch (CoreException e) {
171 // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
172 // "Error", "Cannot read properties", e.getStatus());
173 // return;
174 // } catch (Exception e) {
175 // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
176 // "Error", "Cannot read properties",
177 // new Status(IStatus.ERROR, SlcIdeUiPlugin.ID,
178 // e.getMessage(), e));
179 // return;
180 // } finally {
181 // if (reader != null)
182 // try {
183 // reader.close();
184 // } catch (IOException e) {
185 // // silent
186 // }
187 // }
188 //
189 // }
190 //
191 // private void writeProperties(ILaunchConfiguration configuration) {
192 // InputStream in = null;
193 // IFile propertiesFile = null;
194 // try {
195 // propertiesFile = (IFile) configuration.getMappedResources()[0];
196 // in = new ByteArrayInputStream(propertiesText.getText().getBytes());
197 // propertiesFile.setContents(in, true, true, null);
198 // propertiesFile.refreshLocal(IResource.DEPTH_ONE, null);
199 // } catch (CoreException e) {
200 // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
201 // "Error", "Cannot write properties", e.getStatus());
202 // return;
203 // } catch (Exception e) {
204 // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
205 // "Error", "Cannot write properties",
206 // new Status(IStatus.ERROR, SlcIdeUiPlugin.ID,
207 // e.getMessage(), e));
208 // return;
209 // } finally {
210 // if (in != null)
211 // try {
212 // in.close();
213 // } catch (IOException e) {
214 // // silent
215 // }
216 // }
217 //
218 // }
219
220 }