package org.rubypeople.rdt.internal.debug.ui; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.QualifiedName; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IWorkbenchPropertyPage; import org.eclipse.ui.dialogs.PropertyPage; public class RubyExecutionArgumentsPage extends PropertyPage implements IWorkbenchPropertyPage { protected Text interpreterArgumentsText, programArgumentsText; public RubyExecutionArgumentsPage() { } protected Control createContents(Composite parent) { noDefaultAndApplyButton(); Composite composite = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); layout.numColumns = 2; composite.setLayout(layout); new Label(composite, SWT.NONE).setText(RdtDebugUiMessages.LaunchConfigurationTab_RubyArguments_interpreter_args_box_title); new Label(composite, SWT.NONE).setText(" "); interpreterArgumentsText = new Text(composite, SWT.BORDER); GridData interpreterArgumentsData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); interpreterArgumentsData.horizontalSpan = 2; interpreterArgumentsText.setLayoutData(interpreterArgumentsData); interpreterArgumentsText.setText(getArgument("interpreter")); new Label(composite, SWT.NONE).setText(RdtDebugUiMessages.LaunchConfigurationTab_RubyArguments_program_args_box_title); programArgumentsText = new Text(composite, SWT.BORDER); GridData programArgumentsData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); programArgumentsData.horizontalSpan = 2; programArgumentsText.setLayoutData(programArgumentsData); programArgumentsText.setText(getArgument("program")); return composite; } protected String getArgument(String name) { String argumentValue = null; try { argumentValue = ((IFile)getElement()).getPersistentProperty(new QualifiedName("executionArguments", name)); } catch(CoreException e) {} return argumentValue != null ? argumentValue : ""; } public boolean performOk() { IFile rubyFile = (IFile)getElement(); try { rubyFile.setPersistentProperty(new QualifiedName("executionArguments", "interpreter"), interpreterArgumentsText.getText()); rubyFile.setPersistentProperty(new QualifiedName("executionArguments", "program"), programArgumentsText.getText()); } catch(CoreException e) { RdtDebugUiPlugin.log(e); return false; } return true; } }