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 /** Main tab of OSGiBoot launch configuration UI. */
24 public class OsgiBootMainTab
extends AbstractLaunchConfigurationTab
implements
25 OsgiLauncherConstants
{
26 private Listener listener
= new Listener();
28 private Button syncBundles
;
29 private Button clearDataDirectory
;
31 private Button addJvmPaths
;
32 private Text additionalVmArgs
;
34 private Text additionalProgramArgs
;
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
));
41 createGeneral(container
);
42 createAdditionalProgramArgs(container
);
43 createAdditionalVmArgumentBlock(container
);
44 Dialog
.applyDialogFont(container
);
45 setControl(container
);
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
));
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");
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
));
74 additionalProgramArgs
= new Text(container
, SWT
.MULTI
| SWT
.WRAP
75 | SWT
.BORDER
| SWT
.V_SCROLL
);
76 GridData gd
= new GridData(GridData
.FILL_BOTH
);
79 gd
.horizontalSpan
= 2;
80 additionalProgramArgs
.setLayoutData(gd
);
81 additionalProgramArgs
.addModifyListener(listener
);
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
));
92 additionalVmArgs
= new Text(container
, SWT
.MULTI
| SWT
.WRAP
93 | SWT
.BORDER
| SWT
.V_SCROLL
);
94 GridData gd
= new GridData(GridData
.FILL_BOTH
);
97 gd
.horizontalSpan
= 2;
98 additionalVmArgs
.setLayoutData(gd
);
99 additionalVmArgs
.addModifyListener(listener
);
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");
108 public String
getName() {
113 public Image
getImage() {
114 return SlcIdeUiPlugin
.getDefault().getImage("icons/slc-launch.gif");
117 public void initializeFrom(ILaunchConfiguration configuration
) {
118 // System.out.println("initializeFrom");
120 syncBundles
.setSelection(configuration
.getAttribute(
121 ATTR_SYNC_BUNDLES
, true));
122 clearDataDirectory
.setSelection(configuration
.getAttribute(
123 ATTR_CLEAR_DATA_DIRECTORY
, false));
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
) {
137 public void performApply(ILaunchConfigurationWorkingCopy configuration
) {
138 // System.out.println("performApply");
139 configuration
.setAttribute(ATTR_SYNC_BUNDLES
, syncBundles
141 configuration
.setAttribute(ATTR_CLEAR_DATA_DIRECTORY
,
142 clearDataDirectory
.getSelection());
144 configuration
.setAttribute(ATTR_ADDITIONAL_PROGRAM_ARGS
,
145 additionalProgramArgs
.getText());
146 configuration
.setAttribute(ATTR_ADDITIONAL_VM_ARGS
, additionalVmArgs
148 configuration
.setAttribute(ATTR_ADD_JVM_PATHS
, addJvmPaths
150 // writeProperties(configuration);
152 OsgiLaunchHelper
.updateLaunchConfiguration(configuration
);
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");
165 public void activated(ILaunchConfigurationWorkingCopy workingCopy
) {
166 initializeFrom(workingCopy
);
168 workingCopy
.doSave();
169 } catch (CoreException e
) {
175 public void deactivated(ILaunchConfigurationWorkingCopy workingCopy
) {
179 class Listener
extends SelectionAdapter
implements ModifyListener
{
180 public void widgetSelected(SelectionEvent e
) {
181 // Object source = e.getSource();
183 updateLaunchConfigurationDialog();
186 public void modifyText(ModifyEvent e
) {
187 // System.out.println("modifyText : " + e);
189 updateLaunchConfigurationDialog();
193 // private void readProperties(ILaunchConfiguration configuration) {
194 // BufferedReader reader = null;
196 // IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
197 // propertiesFile.refreshLocal(IResource.DEPTH_ONE, null);
198 // reader = new BufferedReader(new InputStreamReader(propertiesFile
200 // String line = null;
201 // StringBuffer buf = new StringBuffer("");
202 // while ((line = reader.readLine()) != null) {
206 // propertiesText.setText(buf.toString());
207 // } catch (CoreException e) {
208 // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
209 // "Error", "Cannot read properties", e.getStatus());
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));
218 // if (reader != null)
221 // } catch (IOException e) {
228 // private void writeProperties(ILaunchConfiguration configuration) {
229 // InputStream in = null;
230 // IFile propertiesFile = null;
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());
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));
250 // } catch (IOException e) {