/*******************************************************************************
* Copyright (c) 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Zend Technologies
*******************************************************************************/
package org.eclipse.php.internal.debug.core.xdebug.dbgp;
import java.io.File;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.php.internal.debug.core.PHPDebugCoreMessages;
import org.eclipse.php.internal.debug.core.PHPDebugPlugin;
import org.eclipse.php.internal.debug.core.debugger.AbstractDebuggerConfiguration;
import org.eclipse.php.internal.debug.core.launching.XDebugExeLaunchConfigurationDelegate;
import org.eclipse.php.internal.debug.core.launching.XDebugWebLaunchConfigurationDelegate;
import org.eclipse.php.internal.debug.core.preferences.PHPexeItem;
import org.eclipse.php.internal.debug.core.preferences.PHPexes;
import org.eclipse.php.internal.debug.core.xdebug.XDebugPreferenceMgr;
import org.eclipse.swt.widgets.Shell;
/**
* XDebug's debugger configuration class.
*
* @author Shalom Gibly
* @since PDT 1.0
*/
public class XDebugDebuggerConfiguration extends AbstractDebuggerConfiguration {
public static final String ID = "org.eclipse.php.debug.core.xdebugDebugger"; //$NON-NLS-1$
private static final String REMOTE_ENABLE = "remote_enable"; //$NON-NLS-1$
private static final String EXTENSION_MODULE_ID = "Xdebug"; //$NON-NLS-1$
/**
* Constructs a new XDebugDebuggerConfiguration.
*/
public XDebugDebuggerConfiguration() {
}
/**
* @see org.eclipse.php.internal.debug.core.debugger.
* AbstractDebuggerConfiguration #getModuleId()
*/
@Override
public String getModuleId() {
return EXTENSION_MODULE_ID;
}
/**
* @see org.eclipse.php.internal.debug.core.debugger.IDebuggerConfiguration#
* openConfigurationDialog(org.eclipse.swt.widgets.Shell)
*/
public void openConfigurationDialog(final Shell parentShell) {
new XDebugConfigurationDialog(this, parentShell).open();
}
/**
* @see org.eclipse.php.internal.debug.core.debugger.
* AbstractDebuggerConfiguration #getPort()
*/
public int getPort() {
return XDebugPreferenceMgr.getPort();
}
/**
* @see org.eclipse.php.internal.debug.core.debugger.
* AbstractDebuggerConfiguration #setPort(int)
*/
public void setPort(int port) {
XDebugPreferenceMgr.setPort(preferences, port);
}
/**
* @see org.eclipse.php.internal.debug.core.debugger.IDebuggerConfiguration#
* getScriptLaunchDelegateClass()
*/
public String getScriptLaunchDelegateClass() {
return XDebugExeLaunchConfigurationDelegate.class.getName();
}
/**
* @see org.eclipse.php.internal.debug.core.debugger.IDebuggerConfiguration#
* getWebLaunchDelegateClass()
*/
public String getWebLaunchDelegateClass() {
return XDebugWebLaunchConfigurationDelegate.class.getName();
}
/**
* @see org.eclipse.php.internal.debug.core.debugger.
* AbstractDebuggerConfiguration #applyDefaults()
*/
public void applyDefaults() {
XDebugPreferenceMgr.applyDefaults(preferences);
save();
}
/**
* @see org.eclipse.php.internal.debug.core.debugger.
* AbstractDebuggerConfiguration #validate()
*/
public IStatus validate(PHPexeItem item) {
File executable = item.getExecutable();
PHPexes.changePermissions(executable);
if (isInstalled(item, EXTENSION_MODULE_ID))
return Status.OK_STATUS;
return new Status(IStatus.WARNING, PHPDebugPlugin.ID,
PHPDebugCoreMessages.XDebugDebuggerConfiguration_XDebugNotInstalledError);
}
}