Package org.dcarew.logviewer

Source Code of org.dcarew.logviewer.LogViewerPlugin

package org.dcarew.logviewer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchesListener2;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;

/**
* The activator class controls the plug-in life cycle
*/
public class LogViewerPlugin
    extends AbstractUIPlugin
{
  // The plug-in ID
  public static final String PLUGIN_ID = "org.dcarew.logviewer";

  // The shared instance
  private static LogViewerPlugin plugin;
 
    private static Map<String, Image> imageMap  = new HashMap<String, Image>();
   
   
    private List<IEclipseLaunchListener> listeners = new ArrayList<IEclipseLaunchListener>();
   
    private ILaunchesListener2 launchListener = new LaunchesListener2();
   
   
  /**
   * The constructor
   */
  public LogViewerPlugin()
  {
     
  }

  public void start(BundleContext context)
      throws Exception
  {
    super.start(context);
   
    plugin = this;
   
    DebugPlugin.getDefault().getLaunchManager().addLaunchListener(launchListener);
  }

  public void stop(BundleContext context)
      throws Exception
  {
        DebugPlugin.getDefault().getLaunchManager().removeLaunchListener(launchListener);
       
    plugin = null;
   
    super.stop(context);
  }
 
 
 
   
    /**
   * Returns the shared instance
   *
   * @return the shared instance
   */
  public static LogViewerPlugin getPlugin()
  {
    return plugin;
  }
 
  public void addEclipseLaunchListener(IEclipseLaunchListener listener)
  {
      listeners.add(listener);
  }
 
  public void removeEclipseLaunchListener(IEclipseLaunchListener listener)
  {
      listeners.remove(listener);
  }
 
    /**
     * Get a image from this plugin's icons directory.
     *
     * @param imagePath the image path, relative to the icons directory.
     * @return the specified image
     */
    public static Image getImage(String imagePath)
    {
        if (imageMap.get(imagePath) == null)
        {
            ImageDescriptor imageDescriptor = imageDescriptorFromPlugin(PLUGIN_ID, "icons/" + imagePath);

            imageMap.put(imagePath, imageDescriptor.createImage());
        }

        return imageMap.get(imagePath);
    }





    /**
     * Get a image descriptor from this plugin's icons directory.
     *
     * @param imagePath the image path, relative to the icons directory.
     * @return the specified image descriptor
     */
    public static ImageDescriptor getImageDescriptor(String imagePath)
    {
        return imageDescriptorFromPlugin(PLUGIN_ID, "icons/" + imagePath);
    }
   
    public static void log(Throwable exception)
    {
        getPlugin().getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, exception.getMessage(), exception));
    }
   

    private void ensureLogViewerViewExists()
    {
        getWorkbench().getDisplay().asyncExec(new Runnable() {
            @Override
            public void run()
            {
                try
                {
                    IWorkbench wb = getWorkbench();
                    IWorkbenchWindow ww = wb.getActiveWorkbenchWindow();
                    IWorkbenchPage wp = ww.getActivePage();
                   
                    //wp.showView(LogViewerView.ID, null, IWorkbenchPage.VIEW_CREATE);
                    wp.showView(LogViewerView.ID, null, IWorkbenchPage.VIEW_VISIBLE);
                }
                catch (PartInitException e)
                {
                    log(e);
                }
            }
        });       
    }
   
    private class LaunchesListener2
        implements ILaunchesListener2
    {
        private Set<ILaunch> runningLaunches = new HashSet<ILaunch>();
       
        @Override
        public void launchesAdded(ILaunch[] launches)
        {
            for (ILaunch launch : launches)
            {
                try
                {
                    if (isEclipseLaunch(launch))
                    {
                        if (runningLaunches.contains(launch))
                            continue;
                       
                        runningLaunches.add(launch);
                       
                        ensureLogViewerViewExists();
                       
                        ILaunchConfiguration launchConfiguration = launch.getLaunchConfiguration();
                       
                        for (IEclipseLaunchListener listener : listeners)
                        {
                            listener.launchStarted(launch, launchConfiguration);
                        }
                    }
                }
                catch (CoreException ce)
                {
                   log(ce);
                }
            }
        }
       
        private boolean isEclipseLaunch(ILaunch launch)
            throws CoreException
        {
            ILaunchConfiguration launchConfiguration = launch.getLaunchConfiguration();
           
            if (launchConfiguration == null)
                return false;
           
            return "Eclipse Application".equals(launchConfiguration.getType().getName());
        }

        @Override
        public void launchesChanged(ILaunch[] launches)
        {
           
        }
       
        @Override
        public void launchesRemoved(ILaunch[] launches)
        {
            for (ILaunch launch : launches)
            {
                try
                {
                    if (isEclipseLaunch(launch))
                    {
                        if (!runningLaunches.contains(launch))
                            continue;
                       
                        runningLaunches.remove(launch);
                       
                        ILaunchConfiguration launchConfiguration = launch.getLaunchConfiguration();
                       
                        for (IEclipseLaunchListener listener : listeners)
                        {
                            listener.launchEnded(launch, launchConfiguration);
                        }
                    }
                }
                catch (CoreException ce)
                {
                   log(ce);
                }
            }
        }
       
        @Override
        public void launchesTerminated(ILaunch[] launches)
        {
            for (ILaunch launch : launches)
            {
                try
                {
                    if (isEclipseLaunch(launch))
                    {
                        if (!runningLaunches.contains(launch))
                            continue;
                       
                        runningLaunches.remove(launch);
                       
                        ILaunchConfiguration launchConfiguration = launch.getLaunchConfiguration();
                       
                        for (IEclipseLaunchListener listener : listeners)
                        {
                            listener.launchEnded(launch, launchConfiguration);
                        }
                    }
                }
                catch (CoreException ce)
                {
                   log(ce);
                }
            }
        }
    }

}
TOP

Related Classes of org.dcarew.logviewer.LogViewerPlugin

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.