6

Eclipse 用の Google Closure Compiler プラグインを作成したいと考えています。JavaScript ファイルを縮小バージョンにコンパイルするためのポップアップ メニュー エントリが既にあります。*.jsしかし、縮小版を保存するたびに自動的に生成されると便利です。ネイチャーとビルダー、拡張ポイント、および について読んだり聞いたりしIResourceChangeListenerました。しかし、何を使用すべきか、特にそれを機能させる方法を理解することができませんでした。

「同じ種類のこと」を行うプラグインの実例はありますか?

以下の回答で、 を使用するプロジェクトを検索しIResourceChangeListener、このコードを思いつきました。

マニフェスト: http://codepaste.net/3yahwe

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

アクティベーター: http://codepaste.net/s7xowm

ダミースタートアップ: http://codepaste.net/rkub82

MinifiedJavascriptUpdater: http://codepaste.net/koweuh

関数のMinifiedJavascriptUpdater.javaコードを保持する にIResourceChangeListenerresourceChanged()到達しません。

4

2 に答える 2

5

ここから回答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;
    }
}
于 2012-06-18T09:28:25.380 に答える
1

これにはビルダーが必要です。Eclipse は、ユーザーがやりたいことだけを幅広くサポートしており、状況の変化に応じて維持する必要のある生成されたアーティファクトの概念をサポートしています。このホワイト ペーパーから始めましょう (非常に古いものですが、完全に正確です)。

すべての言語プラグイン (JDT、CDT など) は、コードをコンパイルするときにこのようなことを行います。

于 2012-06-01T14:06:44.120 に答える