package net.sourceforge.phpeclipse.xdebug.ui.php.launching;
+import java.io.File;
import net.sourceforge.phpdt.internal.ui.PHPUiImages;
import net.sourceforge.phpdt.internal.ui.util.PHPFileSelector;
import net.sourceforge.phpdt.internal.ui.util.PHPProjectSelector;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
private Button fUseDefaultInterpreterButton;
private Button fInterpreterButton;
private Text fInterpreterText;
- private Label fInterpreterLabel;
public PHPMainTab() {
super();
public void createControl(Composite parent) {
Font font = parent.getFont();
-
+
Composite comp = new Composite(parent, SWT.NONE);
setControl(comp);
// PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), IJavaDebugHelpContextIds.LAUNCH_CONFIGURATION_DIALOG_MAIN_TAB);
topLayout.verticalSpacing = 0;
comp.setLayout(topLayout);
comp.setFont(font);
-
+
createProjectEditor(comp);
createVerticalSpacer(comp, 1);
createMainTypeEditor(comp);
createVerticalSpacer(comp, 1);
createInterpreterEditor(comp);
}
-
+
/**
* Creates the widgets for specifying a main type.
- *
+ *
* @param parent the parent composite
*/
private void createProjectEditor(Composite parent) {
updateLaunchConfigurationDialog();
}
});
- }
+ }
+
-
/**
* Creates the widgets for specifying a php file.
- *
+ *
* @param parent the parent composite
*/
private void createMainTypeEditor(Composite parent) {
Font font= parent.getFont();
Group mainGroup= new Group(parent, SWT.NONE);
- mainGroup.setText("File: ");
+ mainGroup.setText("File: ");
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
mainGroup.setLayoutData(gd);
GridLayout layout = new GridLayout();
}
});
}
-
+
/**
* Creates the widgets for specifying debug settings.
- *
+ *
* @param parent the parent composite
*/
private void createInterpreterEditor(Composite parent) {
Font font= parent.getFont();
Group interpreterGroup= new Group(parent, SWT.NONE);
- interpreterGroup.setText("Interpreter: ");
+ interpreterGroup.setText("Interpreter: ");
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
interpreterGroup.setLayoutData(gd);
GridLayout layout = new GridLayout();
layout.numColumns = 2;
interpreterGroup.setLayout(layout);
interpreterGroup.setFont(font);
-
-// fInterpreterLabel= new Label(interpreterGroup, SWT.NONE);
-// fInterpreterLabel.setText("Interpreter: ");
-// gd= new GridData();
-// gd.horizontalSpan = 2;
-// fInterpreterLabel.setLayoutData(gd);
-// fInterpreterLabel.setFont(font);
-
+
fInterpreterText= new Text(interpreterGroup, SWT.SINGLE | SWT.BORDER);
gd= new GridData(GridData.FILL_HORIZONTAL);
fInterpreterText.setLayoutData(gd);
}
});
-
+
fInterpreterButton= createPushButton(interpreterGroup,"Browse..", null);
fInterpreterButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
handleBrowseSellected(event);
}
});
-
+
fUseDefaultInterpreterButton = new Button(interpreterGroup,SWT.CHECK);
fUseDefaultInterpreterButton.setText("Use default interpreter");
gd = new GridData(GridData.FILL_HORIZONTAL);
});
}
-
+
/**
* Set the appropriate enabled state for the appletviewqer text widget.
*/
fInterpreterButton.setEnabled(true);
}
}
-
+
/**
* Returns whether the default appletviewer is to be used
*/
if (file != null) {
fileSelector.setSelectionText(file);
}
-
+
String interpreterFile=configuration.getAttribute(IXDebugConstants.ATTR_PHP_INTERPRETER, (String) null);
if(interpreterFile!=null)
fInterpreterText.setText(interpreterFile);
configuration.setAttribute(IXDebugConstants.ATTR_PHP_INTERPRETER, this.fInterpreterText.getText());
}
-
+
/* (non-Javadoc)
* @see org.eclipse.debug.ui.ILaunchConfigurationTab#isValid(org.eclipse.debug.core.ILaunchConfiguration)
*/
public boolean isValid(ILaunchConfiguration launchConfig) {
- try {
-
- String projectName = launchConfig.getAttribute(IXDebugConstants.ATTR_PHP_PROJECT, "");
- if (projectName.length() == 0) {
- setErrorMessage("Iinvalid Project");
- return false;
- }
-
- String fileName = launchConfig.getAttribute(IXDebugConstants.ATTR_PHP_FILE, "");
- if (fileName.length() == 0) {
- setErrorMessage("Invalid File");
+ setErrorMessage(null);
+ String projectName=projectSelector.getSelectionText().trim();
+ IProject project=ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+ if (!project.exists()) {
+ setErrorMessage("Project does not exist");
+ return false;
+ }
+ String fileName=fileSelector.getSelectionText().trim();
+ if (fileName.equals("")) {
+ setErrorMessage("No file selected.");
+ return false;
+ }
+ IFile file=project.getFile(fileName);
+ if (!file.exists()) {
+ setErrorMessage("File does not exist");
+ return false;
+ }
+ if (!fUseDefaultInterpreterButton.getSelection()) {
+ File exe = new File(fInterpreterText.getText());
+ System.out.println(exe.toString());
+ if (!exe.exists()) {
+ setErrorMessage("Invalid Interpreter");
return false;
}
- } catch (CoreException e) {
-// XDebugCorePlugin.log(e);
}
-
- setErrorMessage(null);
- return super.isValid(launchConfig);
+ return true;
}
+
public Image getImage() {
return PHPUiImages.get(PHPUiImages.IMG_CTOOLS_PHP_PAGE);
}
-
+
public String getName() {
return "Main";
}