Hook to Save Action in Eclipse plugin

eclipse, java, plugins, save

Solution

Answer from here http://www.eclipse.org/forums/index.php/t/362425/

Solution is to get the code into the activator and get rid of the `MinifiedJavascriptUpdater`:

package closure_compiler_save;

import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;

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

    // The plug-in ID
    public static final String PLUGIN_ID = "closure-compiler-save"; //$NON-NLS-1$

    // The shared instance
    private static Activator plugin;

    /**
     * The constructor
     */
    public Activator() {
    } //gets here

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

        ResourcesPlugin.getWorkspace().addResourceChangeListener(new IResourceChangeListener() {
            public void resourceChanged(IResourceChangeEvent event) {
                System.out.println("Something changed!");
            }
        });
    }

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

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

Problem

I want to create a Google Closure Compiler plugin for Eclipse. I already have a popup menu entry to compile a JavaScript file to its minified version. But it would be more than helpful if every time you save a `*.js` that minified version would be generated automatically. I read/heard about natures and builders, extension points and `IResourceChangeListener`. But I did not manage to figure out what I should use and especially how to get it to work. Is there a working example of a plugin that does "the same kind of thing" so I can work from that or a tutorial to write such? With the answer below I searched for projects that use the `IResourceChangeListener` and came up with this code: Manifest: http://codepaste.net/3yahwe `plugin.xml`: http://codepaste.net/qek3rw Activator: http://codepaste.net/s7xowm DummyStartup: http://codepaste.net/rkub82 MinifiedJavascriptUpdater: http://codepaste.net/koweuh There in the `MinifiedJavascriptUpdater.java` which holds the code for the `IResourceChangeListener` the `resourceChanged()` function is never reached.

Original source