Package org.eclipse.php.internal.debug.core.xdebug

Source Code of org.eclipse.php.internal.debug.core.xdebug.XDebugPreferenceMgr

/*******************************************************************************
* 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;

import org.eclipse.core.runtime.Preferences;
import org.eclipse.php.internal.debug.core.PHPDebugCoreMessages;
import org.eclipse.php.internal.debug.core.PHPDebugPlugin;
import org.eclipse.php.internal.debug.core.xdebug.dbgp.DBGpPreferences;

public class XDebugPreferenceMgr {

  public static Preferences getPreferences() {
    return IDELayerFactory.getIDELayer().getPrefs();
  }

  // general
  public static final String XDEBUG_PREF_PORT = PHPDebugPlugin.ID
      + ".xdebug_port"; //$NON-NLS-1$
  public static final String XDEBUG_PREF_SHOWSUPERGLOBALS = PHPDebugPlugin.ID
      + ".xdebug_showSuperGlobals"; //$NON-NLS-1$
  public static final String XDEBUG_PREF_ARRAYDEPTH = PHPDebugPlugin.ID
      + ".xdebug_arrayDepth"; //$NON-NLS-1$
  public static final String XDEBUG_PREF_CHILDREN = PHPDebugPlugin.ID
      + ".xdebug_children"; //$NON-NLS-1$
  public static final String XDEBUG_PREF_DATA = PHPDebugPlugin.ID
      + ".xdebug_data"; //$NON-NLS-1$
  public static final String XDEBUG_PREF_MULTISESSION = PHPDebugPlugin.ID
      + ".xdebug_multisession"; //$NON-NLS-1$
  public static final String XDEBUG_PREF_REMOTESESSION = PHPDebugPlugin.ID
      + ".xdebug_remotesession"; //$NON-NLS-1$
  // capture output
  public static final String XDEBUG_PREF_CAPTURESTDOUT = PHPDebugPlugin.ID
      + ".xdebug_capturestdout"; //$NON-NLS-1$
  public static final String XDEBUG_PREF_CAPTURESTDERR = PHPDebugPlugin.ID
      + ".xdebug_capturestderr"; //$NON-NLS-1$
  // proxy
  public static final String XDEBUG_PREF_USEPROXY = PHPDebugPlugin.ID
      + ".xdebug_useproxy"; //$NON-NLS-1$
  public static final String XDEBUG_PREF_IDEKEY = PHPDebugPlugin.ID
      + ".xdebug_idekey"; //$NON-NLS-1$
  public static final String XDEBUG_PREF_PROXY = PHPDebugPlugin.ID
      + ".xdebug_proxy"; //$NON-NLS-1$

  public static enum AcceptRemoteSession {
    off, localhost, any, prompt
  }

  public static final String[] remoteSessionOptions = {
      PHPDebugCoreMessages.XDebugConfigurationDialog_remoteSessionOption_off,
      PHPDebugCoreMessages.XDebugConfigurationDialog_remoteSessionOption_localhost,
      PHPDebugCoreMessages.XDebugConfigurationDialog_remoteSessionOption_any,
      PHPDebugCoreMessages.XDebugConfigurationDialog_remoteSessionOption_prompt };

  // just happens to match DBGp values so no conversion to DBGp Preferences
  // required.
  public static enum CaptureOutput {
    off, copy, redirect
  }

  public static final String[] captureOutputOptions = {
      PHPDebugCoreMessages.XDebugConfigurationDialog_capture_off,
      PHPDebugCoreMessages.XDebugConfigurationDialog_capture_copy,
      PHPDebugCoreMessages.XDebugConfigurationDialog_capture_redirect };

  public static void setDefaults() {
    Preferences prefs = getPreferences();
    prefs
        .setDefault(XDebugPreferenceMgr.XDEBUG_PREF_PORT,
            getPortDefault());
    prefs.setDefault(XDebugPreferenceMgr.XDEBUG_PREF_SHOWSUPERGLOBALS,
        showSuperGlobalsDefault());
    prefs.setDefault(XDebugPreferenceMgr.XDEBUG_PREF_ARRAYDEPTH,
        getDepthDefault());
    prefs.setDefault(XDebugPreferenceMgr.XDEBUG_PREF_MULTISESSION,
        useMultiSessionDefault());
    prefs.setDefault(XDebugPreferenceMgr.XDEBUG_PREF_CHILDREN,
        getChildrenDefault());
    prefs.setDefault(XDebugPreferenceMgr.XDEBUG_PREF_DATA, getDataDefault());
    prefs.setDefault(XDebugPreferenceMgr.XDEBUG_PREF_REMOTESESSION,
        getAcceptRemoteSessionDefault());

    prefs.setDefault(XDebugPreferenceMgr.XDEBUG_PREF_CAPTURESTDOUT,
        getCaptureDefault());
    prefs.setDefault(XDebugPreferenceMgr.XDEBUG_PREF_CAPTURESTDERR,
        getCaptureDefault());

    // Proxy config doesn't need its default values set here.
  }

  public static void applyDefaults(Preferences preferences) {
    preferences.setValue(XDebugPreferenceMgr.XDEBUG_PREF_PORT, preferences
        .getDefaultInt(XDebugPreferenceMgr.XDEBUG_PREF_PORT));
    preferences
        .setValue(
            XDebugPreferenceMgr.XDEBUG_PREF_SHOWSUPERGLOBALS,
            preferences
                .getDefaultBoolean(XDebugPreferenceMgr.XDEBUG_PREF_SHOWSUPERGLOBALS));
    preferences
        .setValue(
            XDebugPreferenceMgr.XDEBUG_PREF_ARRAYDEPTH,
            preferences
                .getDefaultInt(XDebugPreferenceMgr.XDEBUG_PREF_ARRAYDEPTH));
    preferences
        .setValue(
            XDebugPreferenceMgr.XDEBUG_PREF_CHILDREN,
            preferences
                .getDefaultInt(XDebugPreferenceMgr.XDEBUG_PREF_CHILDREN));
    preferences
        .setValue(XDebugPreferenceMgr.XDEBUG_PREF_DATA, preferences
            .getDefaultInt(XDebugPreferenceMgr.XDEBUG_PREF_DATA));
    preferences
        .setValue(
            XDebugPreferenceMgr.XDEBUG_PREF_MULTISESSION,
            preferences
                .getDefaultBoolean(XDebugPreferenceMgr.XDEBUG_PREF_MULTISESSION));
    preferences
        .setValue(
            XDebugPreferenceMgr.XDEBUG_PREF_REMOTESESSION,
            preferences
                .getDefaultInt(XDebugPreferenceMgr.XDEBUG_PREF_REMOTESESSION));

    preferences
        .setValue(
            XDebugPreferenceMgr.XDEBUG_PREF_CAPTURESTDOUT,
            preferences
                .getDefaultInt(XDebugPreferenceMgr.XDEBUG_PREF_CAPTURESTDOUT));
    preferences
        .setValue(
            XDebugPreferenceMgr.XDEBUG_PREF_CAPTURESTDERR,
            preferences
                .getDefaultInt(XDebugPreferenceMgr.XDEBUG_PREF_CAPTURESTDERR));

    preferences
        .setValue(
            XDebugPreferenceMgr.XDEBUG_PREF_USEPROXY,
            preferences
                .getDefaultBoolean(XDebugPreferenceMgr.XDEBUG_PREF_USEPROXY));
    preferences
        .setValue(
            XDebugPreferenceMgr.XDEBUG_PREF_IDEKEY,
            preferences
                .getDefaultBoolean(XDebugPreferenceMgr.XDEBUG_PREF_IDEKEY));
    preferences.setValue(XDebugPreferenceMgr.XDEBUG_PREF_PROXY, preferences
        .getDefaultBoolean(XDebugPreferenceMgr.XDEBUG_PREF_PROXY));
  }

  /**
   * create the DBGp preferences from the UI preferences.
   * <ul>
   * <li>Array Depth
   * <li>Children
   * <li>show super globals
   *
   * @return
   */
  public static DBGpPreferences createSessionPreferences() {
    DBGpPreferences sessionPrefs = new DBGpPreferences();
    Preferences uiPrefs = getPreferences();
    int maxDepth = uiPrefs
        .getInt(XDebugPreferenceMgr.XDEBUG_PREF_ARRAYDEPTH);
    if (1 == maxDepth) {
      XDebugPreferenceMgr.setDefaults();
      maxDepth = XDebugPreferenceMgr.getDepthDefault();
    }
    sessionPrefs
        .setValue(DBGpPreferences.DBGP_MAX_DEPTH_PROPERTY, maxDepth);

    int maxChildren = uiPrefs
        .getInt(XDebugPreferenceMgr.XDEBUG_PREF_CHILDREN);
    sessionPrefs.setValue(DBGpPreferences.DBGP_MAX_CHILDREN_PROPERTY,
        maxChildren);

    int maxData = uiPrefs.getInt(XDebugPreferenceMgr.XDEBUG_PREF_DATA);
    sessionPrefs.setValue(DBGpPreferences.DBGP_MAX_DATA_PROPERTY, maxData);

    boolean getSuperGlobals = uiPrefs
        .getBoolean(XDebugPreferenceMgr.XDEBUG_PREF_SHOWSUPERGLOBALS);
    sessionPrefs.setValue(DBGpPreferences.DBGP_SHOW_GLOBALS_PROPERTY,
        getSuperGlobals);

    // ui stored values are identical to DBGp expected values so no need to
    // convert
    int captureStdout = uiPrefs
        .getInt(XDebugPreferenceMgr.XDEBUG_PREF_CAPTURESTDOUT);
    sessionPrefs.setValue(DBGpPreferences.DBGP_CAPTURE_STDOUT_PROPERTY,
        captureStdout);

    int captureStderr = uiPrefs
        .getInt(XDebugPreferenceMgr.XDEBUG_PREF_CAPTURESTDERR);
    sessionPrefs.setValue(DBGpPreferences.DBGP_CAPTURE_STDERR_PROPERTY,
        captureStderr);

    return sessionPrefs;

  }

  // provide easy access to the preferences which are not DBGp Session
  // preferences.
  public static int getPort() {
    Preferences prefs = getPreferences();
    return getPort(prefs);
  }

  public static void setPort(int port) {
    Preferences prefs = getPreferences();
    setPort(prefs, port);
  }

  public static int getPort(Preferences preferences) {
    return preferences.getInt(XDebugPreferenceMgr.XDEBUG_PREF_PORT);
  }

  public static void setPort(Preferences preferences, int port) {
    preferences.setValue(XDebugPreferenceMgr.XDEBUG_PREF_PORT, port);
  }

  public static boolean useMultiSession() {
    Preferences prefs = getPreferences();
    return prefs.getBoolean(XDebugPreferenceMgr.XDEBUG_PREF_MULTISESSION);
  }

  public static boolean useProxy() {
    Preferences prefs = getPreferences();
    return prefs.getBoolean(XDebugPreferenceMgr.XDEBUG_PREF_USEPROXY);
  }

  public static void setUseProxy(boolean newState) {
    Preferences prefs = getPreferences();
    prefs.setValue(XDebugPreferenceMgr.XDEBUG_PREF_USEPROXY, newState);
  }

  public static AcceptRemoteSession getAcceptRemoteSession() {
    Preferences prefs = getPreferences();
    int rSess = prefs.getInt(XDebugPreferenceMgr.XDEBUG_PREF_REMOTESESSION);
    return AcceptRemoteSession.values()[rSess];
  }

  // the defaults for the UI preferences
  private static int getDepthDefault() {
    return DBGpPreferences.DBGP_MAX_DEPTH_DEFAULT;
  }

  private static int getChildrenDefault() {
    return DBGpPreferences.DBGP_MAX_CHILDREN_DEFAULT;
  }

  private static int getDataDefault() {
    return DBGpPreferences.DBGP_MAX_DATA_DEFAULT;
  }

  private static int getPortDefault() {
    return DBGpPreferences.DBGP_PORT_DEFAULT;
  }

  private static boolean showSuperGlobalsDefault() {
    return DBGpPreferences.DBGP_SHOW_GLOBALS_DEFAULT;
  }

  private static int getCaptureDefault() {
    // we use the UI definition here as it would be mapped
    // if required to the appropriate DBGp Value.
    return CaptureOutput.copy.ordinal();
  }

  private static boolean useMultiSessionDefault() {
    // this is not a DBGp property.
    return false;
  }

  private static int getAcceptRemoteSessionDefault() {
    // this is not a DBGp property
    return AcceptRemoteSession.off.ordinal();
  }

}
TOP

Related Classes of org.eclipse.php.internal.debug.core.xdebug.XDebugPreferenceMgr

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.