package org.mwc.debrief.core;

import org.eclipse.ui.plugin.*;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.resource.ImageDescriptor;
import org.mwc.cmap.plotViewer.actions.ExportWMF;
import org.osgi.framework.BundleContext;
import java.util.*;

/**
 * The main plugin class to be used in the desktop.
 */
public class CorePlugin extends AbstractUIPlugin {
	//The shared instance.
	private static CorePlugin plugin;
	//Resource bundle.
	private ResourceBundle resourceBundle;
	
	/**
	 * The constructor.
	 */
	public CorePlugin() {
		super();
		plugin = this;
	}

	/**
	 * This method is called upon plug-in activation
	 */
	public void start(BundleContext context) throws Exception {
		super.start(context);
		
		ExportWMF.init(org.mwc.cmap.core.CorePlugin.getToolParent());
		
	}

	/**
	 * This method is called when the plug-in is stopped
	 */
	public void stop(BundleContext context) throws Exception {
		super.stop(context);
		plugin = null;
		resourceBundle = null;
	}

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

	/**
	 * Returns the string from the plugin's resource bundle,
	 * or 'key' if not found.
	 */
	public static String getResourceString(String key) {
		ResourceBundle bundle = CorePlugin.getDefault().getResourceBundle();
		try {
			return (bundle != null) ? bundle.getString(key) : key;
		} catch (MissingResourceException e) {
			return key;
		}
	}

	/**
	 * Returns the plugin's resource bundle,
	 */
	public ResourceBundle getResourceBundle() {
		try {
			if (resourceBundle == null)
				resourceBundle = ResourceBundle.getBundle("org.mwc.debrief.core.CorePluginResources");
		} catch (MissingResourceException x) {
			resourceBundle = null;
		}
		return resourceBundle;
	}

	/**
	 * 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 AbstractUIPlugin.imageDescriptorFromPlugin("org.mwc.debrief.core", path);
	}
	
	/** error logging utility
	 * 
	 * @param severity the severity; one of <code>OK</code>, <code>ERROR</code>, 
	 * <code>INFO</code>, <code>WARNING</code>,  or <code>CANCEL</code>
	 * @param message a human-readable message, localized to the
	 *    current locale
	 * @param exception a low-level exception, or <code>null</code> if not
	 *    applicable 
	 */
	public static void logError(int severity, String message, Throwable exception)
	{
		Status stat = new Status(severity,"org.mwc.debrief.core", Status.OK, message, exception);
		getDefault().getLog().log(stat);
	}
}

@@ -171,36 +171,146 @@
 map.
-plotViewer.actions.ExportWMF
+core.property_support.RightClickSupport;%0Aimport org.mwc.cmap.plotViewer.actions.ExportWMF;%0Aimport org.mwc.debrief.core.ContextOperations.*
 ;%0Aim
@@ -835,16 +835,44 @@
 xt);%0A%09%09%0A
+%09%09// sort out export to WMF%0A
 %09%09Export
@@ -930,16 +930,227 @@
 ());%0A%09%09%0A
+%09%09// also provide some extra functionality to the right-click editor%0A%09%09RightClickSupport.addRightClickGenerator(new GenerateTrack());%0A%09%09RightClickSupport.addRightClickGenerator(new InterpolateTrack());%0A%09%09%0A%09%09%0A%09%09%0A
 %09%7D%0A%0A%09/**

Add right-click operations