Package com.subgraph.vega.application

Source Code of com.subgraph.vega.application.Activator

/*******************************************************************************
* Copyright (c) 2011 Subgraph.
* 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:
*     Subgraph - initial API and implementation
******************************************************************************/
package com.subgraph.vega.application;

import org.apache.http.HttpHost;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
import org.osgi.util.tracker.ServiceTracker;

import com.subgraph.vega.api.console.IConsole;
import com.subgraph.vega.api.http.requests.IHttpRequestEngineFactory;
import com.subgraph.vega.api.model.IModel;
import com.subgraph.vega.api.paths.IPathFinder;
import com.subgraph.vega.application.preferences.IPreferenceConstants;

/**
* The activator class controls the plug-in life cycle
*/
public class Activator extends AbstractUIPlugin {

  // The plug-in ID
  public static final String PLUGIN_ID = "com.subgraph.vega.application"; //$NON-NLS-1$

  // The shared instance
  private static Activator plugin;
 
  private ServiceTracker<IModel, IModel> modelTracker;
  private ServiceTracker<IConsole, IConsole> consoleTracker;
  private ServiceTracker<IPathFinder, IPathFinder> pathFinderTracker;
  private ServiceTracker<IHttpRequestEngineFactory, IHttpRequestEngineFactory> httpRequestEngineFactoryServiceTracker;
 
  /**
   * The constructor
   */
  public Activator() {
  }

  /*
   * (non-Javadoc)
   * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
   */
  public void start(BundleContext context) throws Exception {
    super.start(context);
    plugin = this;
   
    modelTracker = new ServiceTracker<IModel, IModel>(context, IModel.class.getName(), null);
    modelTracker.open();
   
    consoleTracker = new ServiceTracker<IConsole, IConsole>(context, IConsole.class.getName(), null);
    consoleTracker.open();
   
    pathFinderTracker = new ServiceTracker<IPathFinder, IPathFinder>(context, IPathFinder.class.getName(), null);
    pathFinderTracker.open();

    httpRequestEngineFactoryServiceTracker = new ServiceTracker<IHttpRequestEngineFactory, IHttpRequestEngineFactory>(context, IHttpRequestEngineFactory.class.getName(), null);
    httpRequestEngineFactoryServiceTracker.open();

    getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() {
      @Override
      public void propertyChange(PropertyChangeEvent event) {
        configureSocks();
        configureHttpProxy();
      }
    });
    configureSocks();
    configureHttpProxy();
  }

  private void configureSocks() {
    final IPreferenceStore store = getPreferenceStore();
    if(!store.getBoolean(IPreferenceConstants.P_SOCKS_ENABLED)) {
      System.getProperties().remove("socksProxyHost");
      System.getProperties().remove("socksProxyPort");
      System.getProperties().remove("socksEnabled");
      return;
    }
   
    System.setProperty("socksProxyHost", store.getString(IPreferenceConstants.P_SOCKS_ADDRESS));
    System.setProperty("socksProxyPort", store.getString(IPreferenceConstants.P_SOCKS_PORT));
    System.setProperty("socksEnabled", "true");
  }
 
  private void configureHttpProxy() {
    final IPreferenceStore store = getPreferenceStore();
    final IHttpRequestEngineFactory requestEngineFactory = getHttpRequestEngineFactoryService();

    if (store.getBoolean(IPreferenceConstants.P_PROXY_ENABLED)) {
      final String proxyAddress = store.getString(IPreferenceConstants.P_PROXY_ADDRESS);
      final Integer proxyPort = store.getInt(IPreferenceConstants.P_PROXY_PORT);
      requestEngineFactory.setProxy(new HttpHost(proxyAddress, proxyPort));
    } else {
      requestEngineFactory.setProxy(null);
    }
  }

  /*
   * (non-Javadoc)
   * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
   */
  public void stop(BundleContext context) throws Exception {
    plugin = null;
    super.stop(context);
  }

  /**
   * Returns the shared instance
   *
   * @return the shared instance
   */
  public static Activator getDefault() {
    return plugin;
  }

  /**
   * Returns an image descriptor for the image file at the given
   * plug-in relative path
   *
   * @param path the path
   * @return the image descriptor
   */
  public static ImageDescriptor getImageDescriptor(String path) {
    return imageDescriptorFromPlugin(PLUGIN_ID, path);
  }
 
  public IModel getModel() {
    return modelTracker.getService();
  }
 
  public IConsole getConsole() {
    return consoleTracker.getService();
  }
 
  public IPathFinder getPathFinder() {
    return pathFinderTracker.getService();
  }

  public IHttpRequestEngineFactory getHttpRequestEngineFactoryService() {
    return httpRequestEngineFactoryServiceTracker.getService();
  }

}
TOP

Related Classes of com.subgraph.vega.application.Activator

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.