]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - eclipse/plugins/org.argeo.slc.ui.launch/src/main/java/org/argeo/slc/ui/launch/script/SlcScriptLaunchConfigurationTab.java
Improve ergonomics
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.ui.launch / src / main / java / org / argeo / slc / ui / launch / script / SlcScriptLaunchConfigurationTab.java
index d7998669032aaaa432e3a594dbc5793aa5390900..be957302cf8713304ae1f23b15270739c5100ec9 100644 (file)
@@ -1,10 +1,12 @@
 package org.argeo.slc.ui.launch.script;\r
 \r
-import org.eclipse.core.resources.IFile;\r
+import org.eclipse.core.resources.IResource;\r
+import org.eclipse.core.resources.ResourcesPlugin;\r
 import org.eclipse.core.runtime.CoreException;\r
 import org.eclipse.debug.core.ILaunchConfiguration;\r
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;\r
 import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;\r
+import org.eclipse.jface.window.Window;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.events.ModifyEvent;\r
 import org.eclipse.swt.events.ModifyListener;\r
@@ -16,11 +18,12 @@ import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.swt.widgets.Label;\r
 import org.eclipse.swt.widgets.Text;\r
+import org.eclipse.ui.dialogs.ResourceSelectionDialog;\r
 \r
 public class SlcScriptLaunchConfigurationTab extends\r
                AbstractLaunchConfigurationTab {\r
 \r
-       private Text scriptL;\r
+       private Text scriptTF;\r
        private Text propertiesTF;\r
        private Text runtimeTF;\r
        private Text targetsTF;\r
@@ -33,9 +36,8 @@ public class SlcScriptLaunchConfigurationTab extends
                body.setFont(parent.getFont());\r
 \r
                createLabel(body, "Script location");\r
-               scriptL = createSingleText(body);\r
-               scriptL.setEditable(false);\r
-               scriptL.setBackground(body.getBackground());\r
+               scriptTF = createSingleText(body);\r
+               createWorkspaceButton(body);\r
 \r
                createLabel(body, "Runtime");\r
                runtimeTF = createSingleText(body);\r
@@ -55,18 +57,18 @@ public class SlcScriptLaunchConfigurationTab extends
 \r
        public void initializeFrom(ILaunchConfiguration configuration) {\r
                try {\r
-                       IFile script = (IFile) configuration.getMappedResources()[0];\r
-                       scriptL.setText(script.getLocation().toFile().getAbsolutePath());\r
+                       scriptTF.setText(configuration.getAttribute(\r
+                                       SlcScriptUtils.ATTR_SCRIPT, ""));\r
 \r
                        boolean pre093 = configuration.getAttribute(\r
-                                       SlcScriptLaunchDelegate.ATTR_PRE093, false);\r
+                                       SlcScriptUtils.ATTR_PRE093, false);\r
 \r
                        propertiesTF.setText(configuration.getAttribute(\r
-                                       SlcScriptLaunchDelegate.ATTR_PROPERTIES, ""));\r
+                                       SlcScriptUtils.ATTR_PROPERTIES, ""));\r
                        runtimeTF.setText(configuration.getAttribute(\r
-                                       SlcScriptLaunchDelegate.ATTR_RUNTIME, ""));\r
+                                       SlcScriptUtils.ATTR_RUNTIME, ""));\r
                        targetsTF.setText(configuration.getAttribute(\r
-                                       SlcScriptLaunchDelegate.ATTR_TARGETS, ""));\r
+                                       SlcScriptUtils.ATTR_TARGETS, ""));\r
                        pre093B.setSelection(pre093);\r
                } catch (CoreException e) {\r
                        throw new RuntimeException("Cannot initialize tab", e);\r
@@ -75,17 +77,24 @@ public class SlcScriptLaunchConfigurationTab extends
        }\r
 \r
        public void performApply(ILaunchConfigurationWorkingCopy configuration) {\r
-               configuration.setAttribute(SlcScriptLaunchDelegate.ATTR_PROPERTIES,\r
-                               propertiesTF.getText());\r
-               configuration.setAttribute(SlcScriptLaunchDelegate.ATTR_RUNTIME,\r
-                               runtimeTF.getText());\r
-               configuration.setAttribute(SlcScriptLaunchDelegate.ATTR_TARGETS,\r
-                               targetsTF.getText());\r
-               configuration.setAttribute(SlcScriptLaunchDelegate.ATTR_PRE093, pre093B\r
+               configuration.setAttribute(SlcScriptUtils.ATTR_SCRIPT, scriptTF\r
+                               .getText());\r
+               configuration.setAttribute(SlcScriptUtils.ATTR_PROPERTIES, propertiesTF\r
+                               .getText());\r
+               configuration.setAttribute(SlcScriptUtils.ATTR_RUNTIME, runtimeTF\r
+                               .getText());\r
+               configuration.setAttribute(SlcScriptUtils.ATTR_TARGETS, targetsTF\r
+                               .getText());\r
+               configuration.setAttribute(SlcScriptUtils.ATTR_PRE093, pre093B\r
                                .getSelection());\r
        }\r
 \r
        public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {\r
+               configuration.setAttribute(SlcScriptUtils.ATTR_SCRIPT, "");\r
+               configuration.setAttribute(SlcScriptUtils.ATTR_PROPERTIES, "");\r
+               configuration.setAttribute(SlcScriptUtils.ATTR_RUNTIME, "");\r
+               configuration.setAttribute(SlcScriptUtils.ATTR_TARGETS, "");\r
+               configuration.setAttribute(SlcScriptUtils.ATTR_PRE093, false);\r
        }\r
 \r
        // UI Utils\r
@@ -129,6 +138,37 @@ public class SlcScriptLaunchConfigurationTab extends
 \r
        }\r
 \r
+       protected Button createWorkspaceButton(Composite parent) {\r
+               Button b = new Button(parent, SWT.PUSH);\r
+               b.setFont(parent.getFont());\r
+               b.setText("Workspace...");\r
+               b.addSelectionListener(new SelectionListener() {\r
+                       public void widgetDefaultSelected(SelectionEvent e) {\r
+                       }\r
+\r
+                       public void widgetSelected(SelectionEvent e) {\r
+                               handleWorkspaceLocationButtonSelected();\r
+                       }\r
+               });\r
+               return b;\r
+       }\r
+\r
+       protected void handleWorkspaceLocationButtonSelected() {\r
+               ResourceSelectionDialog dialog;\r
+               dialog = new ResourceSelectionDialog(getShell(), ResourcesPlugin\r
+                               .getWorkspace().getRoot(), "Select a file");\r
+               if (dialog.open() == Window.OK) {\r
+                       Object[] results = dialog.getResult();\r
+                       if (results == null || results.length < 1) {\r
+                               return;\r
+                       }\r
+                       IResource resource = (IResource) results[0];\r
+                       scriptTF.setText(SlcScriptUtils\r
+                                       .convertToWorkspaceLocation(resource));\r
+                       updateLaunchConfigurationDialog();\r
+               }\r
+       }\r
+\r
        // LISTENERS\r
        /**\r
         * Modify listener that simply updates the owning launch configuration\r