2012-06-01 11 views
6

Quiero crear un complemento del compilador de cierre de Google para Eclipse. Ya tengo una entrada del menú emergente para compilar un archivo JavaScript en su versión reducida. Pero sería más que útil que cada vez que guarde *.js esa versión minimizada se genere automáticamente. Leo/escuché sobre naturalezas y constructores, puntos de extensión y IResourceChangeListener. Pero no logré descubrir qué debería usar y especialmente cómo hacerlo funcionar.Gancho para guardar la acción en el complemento Eclipse

¿Hay un ejemplo funcional de un complemento que hace "el mismo tipo de cosas", así que puedo trabajar con eso o un tutorial para escribirlo?

Con la respuesta a continuación me han buscado para proyectos que utilizan el IResourceChangeListener y se acercó con este código:

Manifiesto: http://codepaste.net/3yahwe

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

Activador: http://codepaste.net/s7xowm

DummyStartup: http://codepaste.net/rkub82

MinifiedJavascriptUpdater: http://codepaste.net/koweuh

Allí, en la MinifiedJavascriptUpdater.java que contiene el código para el IResourceChangeListener la función resourceChanged() no se alcanza nunca.

Respuesta

5

respuesta de aquí http://www.eclipse.org/forums/index.php/t/362425/

solución es conseguir el código en el activador y deshacerse de la 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

¿Quieres un constructor para esto. Eclipse tiene un amplio soporte para lo que desea hacer, la noción de artefactos generados que deben mantenerse a medida que cambian las cosas. This Paper le ayudará a comenzar (aunque es muy antiguo, es completamente preciso).

Todos los complementos de lenguaje (JDT, CDT, etc.) hacen este tipo de cosas cuando compilan el código.

+0

ya leí ese artículo y, aunque hay "Prueba esto" ejemplos en ella . No logré que funcionara en mi etapa de experiencia. Desafortunadamente, falta un ejemplo completamente funcional. – DarsVaeda

+0

Es posible que desee buscar en Google luego 'IResourceChangeListener' que le mostrará los complementos que lo usan. Pude hacer que funcione en mi aplicación RCP, estoy seguro de que encontrará algo comparable en el mundo del código abierto. –

+0

¿Dónde lo encuentras con Google? Yo no. – DarsVaeda

Cuestiones relacionadas