jbr*_*aud 4 subclipse eclipse-plugin listener
我正在使用Subclipse API,我想实现ISVNNotifyListener,这样我就可以了解在运行时发生的subclipse事件.我相信我需要将我的通知监听器实例添加(订阅)给客户端适配器将通知的一组监听器,但是我对如何访问Subclipse在运行时使用的客户机适配器感到茫然.有没有办法访问它,以便我可以将我的监听器添加到集合?
对不起,但不幸的是,Subclipse没有以这样的方式编码来提供对内部的访问.Subclipse为它需要在Subversion中进行的每个API调用构造一个新的ISVNClientAdapter对象,并根据需要动态地将其ISVNNotifyListener添加到该对象.因此,您无法插入自己的听众.
也许您可以编写一个实现IConsoleListener的类,并让它充当Subclipse类的代理.然后,您可以调用SVNProviderPlugin.getConsoleListener来获取当前控制台侦听器并在您的类中存储对它的引用.然后调用SVNProviderPlugin.setConsoleListener将您在Subclipse中保存的类替换为您的类.当事件在您的类中被触发时,您可以将它们转发到Subclipse类,并使用代码中的事件执行任何操作.像这样的东西:
import java.io.File;
import org.tigris.subversion.subclipse.core.client.IConsoleListener;
import org.tigris.subversion.svnclientadapter.SVNNodeKind;
public class ProxyListener implements IConsoleListener {
private IConsoleListener subclipseListener;
public ProxyListener(IConsoleListener subclipseListener) {
super();
this.subclipseListener = subclipseListener;
}
public void setCommand(int command) {
subclipseListener.setCommand(command);
// TODO add your code
}
public void logCommandLine(String commandLine) {
subclipseListener.logCommandLine(commandLine);
// TODO add your code
}
public void logMessage(String message) {
subclipseListener.logMessage(message);
// TODO add your code
}
public void logError(String message) {
subclipseListener.logError(message);
// TODO add your code
}
public void logRevision(long revision, String path) {
subclipseListener.logRevision(revision , path);
// TODO add your code
}
public void logCompleted(String message) {
subclipseListener.logCompleted(message);
// TODO add your code
}
public void onNotify(File path, SVNNodeKind kind) {
subclipseListener.onNotify(path, kind);
// TODO add your code
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |