钩在Eclipse插件中保存动作 [英] Hook to Save Action in Eclipse plugin
问题描述
我想为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屋!