当前位置: 首页 > 面试题库 >

希望在Eclipse插件中保存操作

长孙燕七
2023-03-14
问题内容

我想为Eclipse创建一个Google Closure
Compiler插件。我已经有一个弹出菜单项,用于将JavaScript文件编译为压缩版本。但是,如果每次保存时*.js都会自动生成一个缩小的版本,那么它将大有帮助。我已阅读/听说过有关自然和建筑,扩展点和的内容IResourceChangeListener。但是我没有弄清楚我应该使用什么,尤其是如何使它工作。

是否有一个实用的插件实例可以执行“相同的事情”,以便我可以从中进行工作或编写教程来编写此类插件?

在下面的答案中,我搜索了使用的项目,IResourceChangeListener并提出了以下代码:

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

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

激活器:http :
//codepaste.net/s7xowm

DummyStartup:http
://codepaste.net/rkub82

MinifiedJavascriptUpdater:http
://codepaste.net/koweuh

MinifiedJavascriptUpdater.java其中保存了IResourceChangeListenerresourceChanged()函数的代码,因此从未实现过。


问题答案:

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

解决方案是将代码放入激活器并摆脱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;
    }
}


 类似资料:
  • 日志: 2021-05-09 14:04:19.356错误22211---[nio-8080-exec-2]O.A.C.C.C.[.[.[/].[dispatcherServlet]:servlet.Service()对于路径[]上下文中的servlet[dispatcherServlet]抛出异常[请求处理失败;嵌套异常为java.lang.NullPointerException:无法调用“c

  • Vim的插件配置方式,在你仅仅添加一个文件来自定义自己的Vim体验时很合理, 但当你想要使用别人写的插件时,这种方式会导致一团糟。 在过去,要想使用别人写好的插件,你得下载所有文件并逐一正确地放置它们。 你也可能使用zip或tar来替你做放置的工作。 在这个过程中有些明显的问题: 当你想更新插件的时候怎么办?你可以覆盖旧的文件, 但如果作者删除了某个文件,你怎么知道你要手工删除对应文件? 假如有两

  • 我面临着使用Spring数据JPA存储库将数据保存到数据库的问题。 我的场景是:我使用循环逐个收集和保存数据。收集所有数据需要很多时间。因此,我想将每个记录的数据立即保存到表中并保存到数据库中。我正在使用saveAndFlush方法,但数据并没有立即保存到表中。 我迫不及待地要收集所有数据,因为收集所有数据可能需要一整天。

  • 问题内容: 我希望HTML表单在提交后不执行任何操作。 这是不好的,因为它会导致页面重新加载。 基本上,我希望每当按下按钮或有人在键入数据后单击“输入”时都调用ajax函数。是的,我可以删除表单标签并添加,只需从按钮的onclick事件中调用该函数即可,但是我也希望“命中进入”功能而不会引起任何麻烦。 问题答案: 通过在通过“提交”按钮调用的javascript中使用,可以停止提交表单。 基本上,

  • 如果具有匹配ID的值不存在,则需要将值插入表中,如以下线程中所示:SQL-insert Where not Exists 但是我需要确保如果另一个线程在完全相同的时间执行一个查询,我不会得到两个相同的行。 这是我的桌子: 这是我当前的查询,如果的本地化行不存在,则会插入一个新的本地化行(不幸的是,它工作不正确-现在我的数据库中有重复项): 这导致现在我有许多行具有相同的,我现在无法删除它们,它们在

  • 我正在使用Ansile 2.0.1.0和Docker。 我想连接到容器以在Ansbile中创建一个Docker容器。 也是变量中要管理的容器的名称。 但是当执行时,我得到错误消息。 我猜是因为它使用了var来宿主。 我如何修复错误?