]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - eclipse/plugins/org.argeo.slc.ide.ui/src/main/java/org/argeo/slc/ide/ui/launch/osgi/OsgiBootMainTab.java
NEW - bug 11: Introduce a simplified launch for RCP
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.ide.ui / src / main / java / org / argeo / slc / ide / ui / launch / osgi / OsgiBootMainTab.java
index 95d32eb9552cd60f9fb9af92d97442e8be035ff1..d0a76ce9d2c1344649673c547c1973c3c40a33e5 100644 (file)
@@ -20,24 +20,56 @@ import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 
+/** Main tab of OSGiBoot launch configuration UI. */
 public class OsgiBootMainTab extends AbstractLaunchConfigurationTab implements
                OsgiLauncherConstants {
        private Listener listener = new Listener();
+
+       private Button syncBundles;
+       private Button clearDataDirectory;
+
        private Button addJvmPaths;
        private Text additionalVmArgs;
 
        private Text additionalProgramArgs;
 
+       private final Boolean isEclipse;
+
+       public OsgiBootMainTab(Boolean isEclipse) {
+               super();
+               this.isEclipse = isEclipse;
+       }
+
        public void createControl(Composite parent) {
                Composite container = new Composite(parent, SWT.NONE);
                container.setLayout(new GridLayout());
                container.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+               createGeneral(container);
                createAdditionalProgramArgs(container);
                createAdditionalVmArgumentBlock(container);
                Dialog.applyDialogFont(container);
                setControl(container);
        }
 
+       protected void createGeneral(Composite parent) {
+               Group container = new Group(parent, SWT.NONE);
+               container.setText("General");
+               GridLayout layout = new GridLayout();
+               layout.numColumns = 2;
+               container.setLayout(layout);
+               container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+               syncBundles = new Button(container, SWT.CHECK);
+               syncBundles.addSelectionListener(listener);
+               new Label(container, SWT.NONE)
+                               .setText("Keep bundles in line with target platform and workspace (recommended)");
+               clearDataDirectory = new Button(container, SWT.CHECK);
+               clearDataDirectory.addSelectionListener(listener);
+               new Label(container, SWT.NONE)
+                               .setText("Clear data directory before launch");
+       }
+
        protected void createAdditionalProgramArgs(Composite parent) {
                Group container = new Group(parent, SWT.NONE);
                container.setText("Additional Program Arguments");
@@ -92,6 +124,11 @@ public class OsgiBootMainTab extends AbstractLaunchConfigurationTab implements
        public void initializeFrom(ILaunchConfiguration configuration) {
                // System.out.println("initializeFrom");
                try {
+                       syncBundles.setSelection(configuration.getAttribute(
+                                       ATTR_SYNC_BUNDLES, true));
+                       clearDataDirectory.setSelection(configuration.getAttribute(
+                                       ATTR_CLEAR_DATA_DIRECTORY, false));
+
                        additionalProgramArgs.setText(configuration.getAttribute(
                                        ATTR_ADDITIONAL_PROGRAM_ARGS, ""));
                        addJvmPaths.setSelection(configuration.getAttribute(
@@ -106,19 +143,26 @@ public class OsgiBootMainTab extends AbstractLaunchConfigurationTab implements
 
        public void performApply(ILaunchConfigurationWorkingCopy configuration) {
                // System.out.println("performApply");
+               configuration.setAttribute(ATTR_SYNC_BUNDLES,
+                               syncBundles.getSelection());
+               configuration.setAttribute(ATTR_CLEAR_DATA_DIRECTORY,
+                               clearDataDirectory.getSelection());
+
                configuration.setAttribute(ATTR_ADDITIONAL_PROGRAM_ARGS,
                                additionalProgramArgs.getText());
-               configuration.setAttribute(ATTR_ADDITIONAL_VM_ARGS, additionalVmArgs
-                               .getText());
-               configuration.setAttribute(ATTR_ADD_JVM_PATHS, addJvmPaths
-                               .getSelection());
+               configuration.setAttribute(ATTR_ADDITIONAL_VM_ARGS,
+                               additionalVmArgs.getText());
+               configuration.setAttribute(ATTR_ADD_JVM_PATHS,
+                               addJvmPaths.getSelection());
                // writeProperties(configuration);
 
-               OsgiLaunchHelper.updateLaunchConfiguration(configuration);
+               OsgiLaunchHelper.updateLaunchConfiguration(configuration, isEclipse);
        }
 
        public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
                // System.out.println("setDefaults");
+               configuration.setAttribute(ATTR_SYNC_BUNDLES, true);
+               configuration.setAttribute(ATTR_CLEAR_DATA_DIRECTORY, false);
                configuration.setAttribute(ATTR_ADD_JVM_PATHS, false);
                configuration.setAttribute(ATTR_ADDITIONAL_VM_ARGS, "-Xmx128m");
                configuration.setAttribute(ATTR_ADDITIONAL_PROGRAM_ARGS, "-console");