Package org.pdtextensions.core.ui.preferences

Source Code of org.pdtextensions.core.ui.preferences.PHPExecutableChangeListener

package org.pdtextensions.core.ui.preferences;

import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.php.internal.debug.core.PHPDebugPlugin;
import org.eclipse.php.internal.debug.core.preferences.PHPexeItem;
import org.eclipse.php.internal.debug.core.preferences.PHPexes;
import org.pdtextensions.core.log.Logger;

/**
* Ensures that the Launcher knows that the user has set a PHP executable and avoid additional error dialogs.
*
*/
@SuppressWarnings({ "deprecation", "restriction" })
public class PHPExecutableChangeListener implements IPropertyChangeListener {

  private final String bundleId;
  private final String executableKey;

  public PHPExecutableChangeListener(String bundleID, String executableKey) {
    this.bundleId = bundleID;
    this.executableKey = executableKey;
  }

  @Override
  public void propertyChange(PropertyChangeEvent event) {

    if (!"org.eclipse.php.debug.coreinstalledPHPDefaults".equals(event.getProperty())) {
      return;
    }

    IEclipsePreferences preferences = InstanceScope.INSTANCE.getNode(bundleId);
    String executable = preferences.get(executableKey, null);

    if (executable != null && executable.length() > 0) {
      return;
    }

    try {
      PHPexeItem[] exes = PHPexes.getInstance().getAllItems();
      if (exes.length == 1) {
        Logger.debug("PHP executable changed, setting store value for " + bundleId + " to " + executableKey + " (" + exes[0].getExecutable().toString() + ")" );
        preferences.put(executableKey, exes[0].getExecutable().toString());
        preferences.flush();
       
        // we don't need it anymore now
        PHPDebugPlugin.getDefault().getPluginPreferences().removePropertyChangeListener(this);
      }

    } catch (Exception e) {
      Logger.logException(e);
    }
  }
}
TOP

Related Classes of org.pdtextensions.core.ui.preferences.PHPExecutableChangeListener

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.