钩在Eclipse插件中保存动作 [英] Hook to Save Action in Eclipse plugin

查看:109
本文介绍了钩在Eclipse插件中保存动作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想为Eclipse创建一个Google Closure Compiler插件。我已经有一个弹出菜单项,将JavaScript文件编译成其最小化版本。但是,如果您每次保存 *。js ,那么会自动生成该版本的缩小将是非常有用的。我读/听了关于自然和建设者,扩展点和 IResourceChangeListener 。但是我没有想出我应该使用什么,特别是如何使它工作。

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?

下面的答案我搜索了使用 IResourceChangeListener 并提出了这个代码:

With the answer below I searched for projects that use the IResourceChangeListener and came up with this code:

清单: http://codepaste.net/3yahwe

plugin.xml http://codepaste.net/qek3rw

Activator:< a href =http://codepaste.net/s7xowm =nofollow noreferrer> http://codepaste.net/s7xowm

Activator: http://codepaste.net/s7xowm

DummyStartup : http://codepaste.net/rkub82

DummyStartup: http://codepaste.net/rkub82

MinifiedJavascriptUpdater: http://codepaste.net/koweuh

MinifiedJavascriptUpdater: http://codepaste.net/koweuh

MinifiedJavascriptUpdater.java 它保存 IResourceChangeListener 的代码,从未达到 resourceChanged()函数。

There in the MinifiedJavascriptUpdater.java which holds the code for the IResourceChangeListener the resourceChanged() function is never reached.

推荐答案

从这里回答 http://www.eclipse.org/forums/index.php/t/362425/

解决方案是让代码进入激活器并摆脱 MinifiedJavascriptUpdater

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;
    }
}

这篇关于钩在Eclipse插件中保存动作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆