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
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
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
\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
}\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
\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