簡體   English   中英

Eclipse插件保存命令成功

[英]Eclipse plugin save command sucess

我需要實現一個插件來使每次使用保存文件時都會向服務器記錄一些東西。 該文件可以是任何類型(html,js,css,java,py)。 我有以下內容:

package tstsave;
import org.eclipse.ui.IStartup;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;

public class Activator extends AbstractUIPlugin implements IStartup {
    public static final String PLUGIN_ID = "tstsave"; //$NON-NLS-1$
    private static Activator plugin;

    public Activator() {
        Log.log("Activator()");
    }

    public void start(BundleContext context) throws Exception {
        super.start(context);
        ICommandService commandService = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
        commandService.addExecutionListener(new SaveListener());
        plugin = this;
    }

    public void stop(BundleContext context) throws Exception {
        plugin = null;
        super.stop(context);
    }

    public static Activator getDefault() {
        return plugin;
    }

    @Override
    public void earlyStartup() {
        Log.log("earlyStartup()");
    }

}

我的聽眾

import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IExecutionListener;
import org.eclipse.core.commands.NotHandledException;

public class SaveListener implements IExecutionListener  {

    @Override
    public void notHandled(String arg0, NotHandledException arg1) {

    }

    @Override
    public void postExecuteFailure(String arg0, ExecutionException arg1) {

    }

    @Override
    public void postExecuteSuccess(String arg0, Object arg1) {
        System.out.println("test");
        Log.log("postExecuteSuccess");
    }

    @Override
    public void preExecute(String arg0, ExecutionEvent arg1) {

    }

}

簡單的記錄器

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;

public class Log {
    public static void log(String message){
        Writer writer = null;
        try {
            writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\\temp\\filename.txt"), "utf-8"));
            writer.write(message);
        } catch (IOException ex) {
          // report
        } finally {
           try {writer.close();} catch (Exception ex) {/*ignore*/}
        }
    }
}

該插件似乎無法正常工作,因此從未調用過。 有小費嗎?

我不得不創建另一個類,還添加了org.eclipse.ui.startup擴展點。

import org.eclipse.ui.IStartup;

public class StartupClass implements IStartup {

@Override
public void earlyStartup() 
{

}
}

和plugin.xml代碼

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension point="org.eclipse.ui.startup">
         <startup class="myplugin.StartupClass" />
   </extension>

</plugin>

謝謝@ greg-449

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM