2012-06-01 15 views
6

Chcę utworzyć wtyczkę Google Closure Compiler dla Eclipse. Mam już wyskakujące menu do skompilowania pliku JavaScript do jego minifikowanej wersji. Byłoby jednak więcej niż pożyteczne, gdyby za każdym razem, gdy zapisywano, zminimalizowana wersja byłaby generowana automatycznie. Czytałem/słyszałem o naturach i budowniczych, punktach rozszerzeń i IResourceChangeListener. Ale nie udało mi się wymyślić, czego powinienem użyć, a zwłaszcza jak sprawić, by działał.Hook to Save Action w plugin Eclipse

Czy istnieje działający przykład wtyczki, która robi "ten sam rodzaj rzeczy", abym mógł pracować z tego lub samouczek pisać?

z odpowiedzią poniżej Szukałem projektami wykorzystującymi IResourceChangeListener i wymyślił ten kod:

manifeście: 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

Tam w MinifiedJavascriptUpdater.java który posiada kod dla IResourceChangeListener funkcji resourceChanged() nigdy nie zostanie osiągnięty.

Odpowiedz

5

Odpowiedź stąd http://www.eclipse.org/forums/index.php/t/362425/

Rozwiązanie jest w celu uzyskania kodu do aktywatora i pozbyć się 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; 
    } 
} 
1

Chcesz budowniczego do tego. Eclipse ma szerokie wsparcie dla tego, co chcesz robić, pojęcie wygenerowanych artefaktów, które należy zachować, gdy rzeczy się zmieniają. This Paper pozwoli Ci zacząć (nawet jeśli jest bardzo stary, jest całkowicie dokładny).

Wszystkie wtyczki językowe (JDT, CDT itp.) Robią tego rodzaju rzeczy podczas kompilowania kodu.

+0

ja już przeczytać ten artykuł i chociaż istnieją „try this” przykłady w nim . Nie udało mi się tego przekonać do pracy na moim etapie doświadczenia. Niestety nie ma w pełni działającego przykładu. – DarsVaeda

+0

Możesz chcieć Google, a następnie "IResourceChangeListener", który pokaże Ci wtyczki, które go używają. Byłem w stanie uruchomić go w mojej aplikacji RCP, jestem pewien, że znajdziesz coś podobnego w świecie open source. –

+0

Gdzie to znaleźć w Google? Ja nie. – DarsVaeda