Package jmockit.assist

Source Code of jmockit.assist.Activator

/*
* Copyright (c) 2012 Andrejs Jermakovics.
*
* 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:
*     Andrejs Jermakovics - initial implementation
*/
package jmockit.assist;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWindowListener;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;

public class Activator extends AbstractUIPlugin
{
  private static BundleContext context;
  private static Activator plugin;

  private final JunitLaunchListener launchListener = new JunitLaunchListener();
  private IWorkbenchWindow activeWindow;
  private IWindowListener windowListener;

  static BundleContext getContext()
  {
    return context;
  }

  public Activator()
  {
    plugin = this;
  }

  @Override
  public final void start(final BundleContext bundleContext) throws Exception
  {
    super.start(bundleContext);
    Activator.context = bundleContext;

    ILaunchManager launchMan = DebugPlugin.getDefault().getLaunchManager();

    launchMan.addLaunchListener(launchListener);

    windowListener = createWindowListener();
    PlatformUI.getWorkbench().addWindowListener(windowListener);
  }

  @Override
  public final void stop(final BundleContext bundleContext) throws Exception
  {
    super.stop(bundleContext);
    Activator.context = null;

    DebugPlugin.getDefault().getLaunchManager().removeLaunchListener(launchListener);
    PlatformUI.getWorkbench().removeWindowListener(windowListener);
  }

  public static void log(final Exception e)
  {
    e.printStackTrace();
    Status status = createStatus(e);
    plugin.getLog().log(status);
  }

  public static Status createStatus(final Exception e)
  {
    return new Status(IStatus.ERROR, context.getBundle().getSymbolicName(), e.getMessage(), e);
  }

  public static void info(final String msg)
  {
    Status status = new Status(IStatus.INFO, context.getBundle().getSymbolicName(), msg);
    plugin.getLog().log(status);
  }

  public static IPreferenceStore getPrefStore()
  {
    return plugin.getPreferenceStore();
  }

  public static String getActiveProject()
  {
    IResource resource = getActiveResource();
    IProject project = null;

    if (resource != null)
    {
      project = resource.getProject();
    }

    if (project != null && project.isAccessible())
    {
      return project.getName();
    }

    return null;
  }

  public static IResource getActiveResource()
  {
    IEditorPart editor = getActiveEditor();

    if( editor == null )
    {
      return null;
    }

    IAdaptable adaptable = editor.getEditorInput();
    IResource resource = (IResource) adaptable.getAdapter(IResource.class);

    return resource;
  }

  /**
   * Gets active editor
   * Must be run from UI thread
   *
   * @return IEditorPart
   */
  public static IEditorPart getActiveEditor()
  {
    if( getWorkbenchWindow() == null )
    {
      return null;
    }

    IWorkbenchPage activePage= getWorkbenchWindow().getActivePage();
    if (activePage != null)
    {
      IEditorPart activeEditor = activePage.getActiveEditor();

      return activeEditor;
    }

    return null;
  }

  public static IWorkbenchWindow getWorkbenchWindow()
  {
    return plugin.activeWindow;
  }

  /**
   * Listener to track active window so that it can be read from any thread.
   * Otherwise active window can only be determined if called from UI thread.
   *
   * @return
   */
  private static IWindowListener createWindowListener()
  {
    return new IWindowListener()
    {
      @Override
      public void windowActivated(final IWorkbenchWindow window)
      {
        plugin.activeWindow = window;
      }

      @Override
      public void windowOpened(final IWorkbenchWindow window)
      {
      }

      @Override
      public void windowDeactivated(final IWorkbenchWindow window)
      {
      }

      @Override
      public void windowClosed(final IWorkbenchWindow window)
      {
      }
    };
  }
}
TOP

Related Classes of jmockit.assist.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.