2012-06-01 22 views
6

Eclipse için bir Google Closure Compiler eklentisi oluşturmak istiyorum. Bir JavaScript dosyasını minified sürümüne derlemek için zaten bir açılır menü girdim var. Ancak, *.js'u her kaydettiğinizde, indirgenmiş sürümün otomatik olarak oluşturulacağı her zaman yardımcı olur. Doğa ve inşaatçılar, uzatma noktaları ve IResourceChangeListener'u okudum/duydum. Ama ne kullanmam gerektiğini ve özellikle işe nasıl başlayacağımı anlamaya başlamamıştım.Eclipse eklentisinde Eylem Kaydetme Kancası

"Aynı tür bir şey" yapan bir eklentinin çalışan bir örneği var mı? Bu yüzden, bunun için yazabilirim veya bir yazının nasıl yazılacağını? I aşağıda cevabını sayesinde

IResourceChangeListener kullanmak projeler için aradı ve bu kodla geldi:

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

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

Aktivatör: http://codepaste.net/s7xowm

DummyStartup: http://codepaste.net/rkub82

.210

MinifiedJavascriptUpdater: IResourceChangeListenerresourceChanged() işlev kodu tutan MinifiedJavascriptUpdater.java Orada http://codepaste.net/koweuh

ulaştı asla.

cevap

5

Cevap buradan http://www.eclipse.org/forums/index.php/t/362425/

Çözüm aktivtörüne kodu almak için ve kurtulmak olduğunu MinifiedJavascriptUpdater: Zaten o makaleyi okuyup olmasına rağmen o örnekler "Bu deneyin"

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

Bunun için bir inşaatçı istersiniz. Eclipse, yapmak istediğiniz şey için kapsamlı bir desteğe sahiptir, her şey değiştikçe sürdürülmesi gereken yaratılmış nesneler kavramı. This Paper başlamanızı sağlayacaktır (çok eski olmasına rağmen, tamamen doğrudur).

Tüm dil eklentileri (JDT, CDT, vb.) Kod derlediklerinde bu tür bir şey yaparlar.

+0

. Deneyim aşamasında çalışmayı başaramadım. Maalesef tam olarak çalışan bir örnek eksik. – DarsVaeda

+0

Google'a sonra kullanmak istediğiniz eklentileri gösteren 'IResourceChangeListener' için isteyebilirsiniz. RCP uygulamasında çalışmayı başarabildim, açık kaynak dünyasında karşılaştırılabilir bir şey bulacağınızdan eminim. –

+0

Bunu Google ile nerede bulabilirsiniz? Yapmıyorum. – DarsVaeda