1 package org
.argeo
.slc
.ide
.ui
.launch
.osgi
;
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
;
23 public class OsgiBootMainTab
extends AbstractLaunchConfigurationTab
implements
24 OsgiLauncherConstants
{
25 private Listener listener
= new Listener();
26 private Button addJvmPaths
;
27 private Text additionalVmArgs
;
29 private Text additionalProgramArgs
;
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
);
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
));
49 additionalProgramArgs
= new Text(container
, SWT
.MULTI
| SWT
.WRAP
50 | SWT
.BORDER
| SWT
.V_SCROLL
);
51 GridData gd
= new GridData(GridData
.FILL_BOTH
);
54 gd
.horizontalSpan
= 2;
55 additionalProgramArgs
.setLayoutData(gd
);
56 additionalProgramArgs
.addModifyListener(listener
);
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
));
67 additionalVmArgs
= new Text(container
, SWT
.MULTI
| SWT
.WRAP
68 | SWT
.BORDER
| SWT
.V_SCROLL
);
69 GridData gd
= new GridData(GridData
.FILL_BOTH
);
72 gd
.horizontalSpan
= 2;
73 additionalVmArgs
.setLayoutData(gd
);
74 additionalVmArgs
.addModifyListener(listener
);
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");
83 public String
getName() {
88 public Image
getImage() {
89 return SlcIdeUiPlugin
.getDefault().getImage("icons/slc-launch.gif");
92 public void initializeFrom(ILaunchConfiguration configuration
) {
93 // System.out.println("initializeFrom");
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
) {
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
113 configuration
.setAttribute(ATTR_ADD_JVM_PATHS
, addJvmPaths
115 // writeProperties(configuration);
117 OsgiLaunchHelper
.updateLaunchConfiguration(configuration
);
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");
128 public void activated(ILaunchConfigurationWorkingCopy workingCopy
) {
129 initializeFrom(workingCopy
);
131 workingCopy
.doSave();
132 } catch (CoreException e
) {
138 public void deactivated(ILaunchConfigurationWorkingCopy workingCopy
) {
142 class Listener
extends SelectionAdapter
implements ModifyListener
{
143 public void widgetSelected(SelectionEvent e
) {
144 // Object source = e.getSource();
146 updateLaunchConfigurationDialog();
149 public void modifyText(ModifyEvent e
) {
150 // System.out.println("modifyText : " + e);
152 updateLaunchConfigurationDialog();
156 // private void readProperties(ILaunchConfiguration configuration) {
157 // BufferedReader reader = null;
159 // IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
160 // propertiesFile.refreshLocal(IResource.DEPTH_ONE, null);
161 // reader = new BufferedReader(new InputStreamReader(propertiesFile
163 // String line = null;
164 // StringBuffer buf = new StringBuffer("");
165 // while ((line = reader.readLine()) != null) {
169 // propertiesText.setText(buf.toString());
170 // } catch (CoreException e) {
171 // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
172 // "Error", "Cannot read properties", e.getStatus());
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));
181 // if (reader != null)
184 // } catch (IOException e) {
191 // private void writeProperties(ILaunchConfiguration configuration) {
192 // InputStream in = null;
193 // IFile propertiesFile = null;
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());
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));
213 // } catch (IOException e) {