/******************************************************************************* * 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.zend.debugger; import java.io.File; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; 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.PHPExecutableLaunchDelegate; import org.eclipse.php.internal.debug.core.launching.PHPWebPageLaunchDelegate; import org.eclipse.php.internal.debug.core.preferences.PHPDebugCorePreferenceNames; import org.eclipse.php.internal.debug.core.preferences.PHPexeItem; import org.eclipse.php.internal.debug.core.preferences.PHPexes; import org.eclipse.swt.widgets.Shell; /** * Zend's debugger configuration class. * * @author Shalom Gibly * @since PDT 1.0 */ public class ZendDebuggerConfiguration extends AbstractDebuggerConfiguration { public static final String ID = "org.eclipse.php.debug.core.zendDebugger"; //$NON-NLS-1$ private static final String EXTENSION_MODULE_ID = "Zend Debugger"; //$NON-NLS-1$ /** * Constructs a new ZendDebuggerConfiguration. */ public ZendDebuggerConfiguration() { } /** * @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(Shell parentShell) { new ZendDebuggerConfigurationDialog(this, parentShell).open(); } /** * @see org.eclipse.php.internal.debug.core.debugger. * AbstractDebuggerConfiguration #getPort() */ public int getPort() { return Platform.getPreferencesService().getInt(PHPDebugPlugin.ID, PHPDebugCorePreferenceNames.ZEND_DEBUG_PORT, 0, null); } /** * @see org.eclipse.php.internal.debug.core.debugger. * AbstractDebuggerConfiguration #setPort(int) */ public void setPort(int port) { preferences.putInt(PHPDebugCorePreferenceNames.ZEND_DEBUG_PORT, port); } /** * @return port for broadcasting Studio settings to the ToolBar or Zend GUI */ public int getBroadcastPort() { return Platform.getPreferencesService().getInt(PHPDebugPlugin.ID, PHPDebugCorePreferenceNames.ZEND_DEBUG_BROADCAST_PORT, 0, null); } /** * @param broadcastPort * Port for broadcasting Studio settings to the ToolBar or Zend * GUI */ public void setBroadcastPort(int broadcastPort) { preferences.putInt(PHPDebugCorePreferenceNames.ZEND_DEBUG_BROADCAST_PORT, broadcastPort); } /** * @return dummy PHP file name */ public String getDummyFile() { return Platform.getPreferencesService().getString(PHPDebugPlugin.ID, PHPDebugCorePreferenceNames.ZEND_DEBUG_DUMMY_FILE, null, null); } /** * @param dummyFile * dummy PHP file name */ public void setDummyFile(String dummyFile) { preferences.put(PHPDebugCorePreferenceNames.ZEND_DEBUG_DUMMY_FILE, dummyFile); } public boolean isUseNewProtocol() { return Platform.getPreferencesService().getBoolean(PHPDebugPlugin.ID, PHPDebugCorePreferenceNames.ZEND_NEW_PROTOCOL, true, null); } public void setUNewProtocol(boolean enable) { preferences.putBoolean(PHPDebugCorePreferenceNames.ZEND_NEW_PROTOCOL, enable); } /** * @return whether to use SSL encryption when debugging */ public boolean isUseSSL() { return Platform.getPreferencesService().getBoolean(PHPDebugPlugin.ID, PHPDebugCorePreferenceNames.ZEND_DEBUG_ENCRYPTED_SSL_DATA, true, null); } /** * @param useSSL * whether to use SSL encryption when debugging */ public void setUseSSL(boolean useSSL) { preferences.putBoolean(PHPDebugCorePreferenceNames.ZEND_DEBUG_ENCRYPTED_SSL_DATA, useSSL); } /** * @see org.eclipse.php.internal.debug.core.debugger.IDebuggerConfiguration#getScriptLaunchDelegateClass() */ public String getScriptLaunchDelegateClass() { return PHPExecutableLaunchDelegate.class.getName(); } /** * @see org.eclipse.php.internal.debug.core.debugger.IDebuggerConfiguration#getWebLaunchDelegateClass() */ public String getWebLaunchDelegateClass() { return PHPWebPageLaunchDelegate.class.getName(); } /** * @see org.eclipse.php.internal.debug.core.debugger.AbstractDebuggerConfiguration * #applyDefaults() */ public void applyDefaults() { setPort(defaultPreferences.getInt(PHPDebugCorePreferenceNames.ZEND_DEBUG_PORT, 0)); preferences.put(PHPDebugCorePreferenceNames.RUN_WITH_DEBUG_INFO, defaultPreferences.get(PHPDebugCorePreferenceNames.RUN_WITH_DEBUG_INFO, null)); setBroadcastPort(defaultPreferences.getInt(PHPDebugCorePreferenceNames.ZEND_DEBUG_BROADCAST_PORT, 0)); setDummyFile(defaultPreferences.get(PHPDebugCorePreferenceNames.ZEND_DEBUG_DUMMY_FILE, null)); setUseSSL(defaultPreferences.getBoolean(PHPDebugCorePreferenceNames.ZEND_DEBUG_ENCRYPTED_SSL_DATA, false)); 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.ZendDebuggerConfiguration_ZendDebuggerNotInstalledError); } }