请教做eclipse插件,当前窗口保存,关闭事件如果接听?谢谢

时间:2022-09-02 20:33:30
做eclipse插件,想在对当前窗口(也就是当前文件)保存,关闭前对当前文件进行处理
我的action 类是implements IWorkbenchWindowActionDelegate的
IEditorPart editorPart = window.getActivePage().getActiveEditor();
是否在ActivePage, ActiveEditor ?
如何写? 谢谢

12 个解决方案

#1


getActivePage().addPartListener 可以接听colsed , opened 
但saving 或saved 如何接听呢?

#2


你用到了EditorPart了吧?

public abstract class EditorPart extends WorkbenchPart implements IEditorPart {

    public abstract void  doSave(IProgressMonitor monitor);

    public abstract void  doSaveAs();


如果你继承的是GraphicalEditor的话,重写doSave就好。


#3


引用 2 楼 gongfuliang 的回复:
你用到了EditorPart了吧? 

public abstract class EditorPart extends WorkbenchPart implements IEditorPart { 

    public abstract void doSave(IProgressMonitor monitor); 

    public abstract void doSaveAs(); 


如果你继承的是GraphicalEditor的话,重写doSave就好。 

支持

#4


二楼的方法可行

#5


我是这样的
public class MyAction implements IWorkbenchWindowActionDelegate{
}

?

#6


IWorkbenchWindowActionDelegate是在MenuBar/ToolBar中插入按钮,不是对保存/关闭进行监听。

#7


但我想对save 保存进行监听? 因为想在保存之前对文件处理
关闭是可以监听的, getActivePage().addPartListener 可以接听colsed , opened 
但不知道怎么对save 监听?

#8


你的插件既然有界面,那么应该是用到了GEF/EMF吧。

有界面的话,应该有类继承了 EditorPart或者EditorPart的子类的,EditorPart中有 doSave和doSaveAs的方法,你想啊要监听的话,就在这两个方法中选择合适的添加你要处理的逻辑

#9


帮顶!!!
二楼正解!!!

#10


to Arthur(亚瑟王)
doSave和doSaveAs是不行的,因为我没有继承,

不知您有没有用过CompilationUnitEditor 的fSavePolicy?

#11


顺便请教下, 
有没有方法得到
myeclipse 的
com.genuitec.eclipse.javascript.editor.JSMultiPageEditorPart
org.eclipse.wst.xml.ui.internal.tabletree.XMLMultiPageEditorPart
的sourceEditor(ITextEditor) ?

就想myeclipse的jsp WebDesignerMultiPageEditor 它提供了puliic getSourceEditor()

但 com.genuitec.eclipse.javascript.editor.JSMultiPageEditorPart
org.eclipse.wst.xml.ui.internal.tabletree.XMLMultiPageEditorPart
都不是public的


#12


也碰到同样问题,想知道答案

#1


getActivePage().addPartListener 可以接听colsed , opened 
但saving 或saved 如何接听呢?

#2


你用到了EditorPart了吧?

public abstract class EditorPart extends WorkbenchPart implements IEditorPart {

    public abstract void  doSave(IProgressMonitor monitor);

    public abstract void  doSaveAs();


如果你继承的是GraphicalEditor的话,重写doSave就好。


#3


引用 2 楼 gongfuliang 的回复:
你用到了EditorPart了吧? 

public abstract class EditorPart extends WorkbenchPart implements IEditorPart { 

    public abstract void doSave(IProgressMonitor monitor); 

    public abstract void doSaveAs(); 


如果你继承的是GraphicalEditor的话,重写doSave就好。 

支持

#4


二楼的方法可行

#5


我是这样的
public class MyAction implements IWorkbenchWindowActionDelegate{
}

?

#6


IWorkbenchWindowActionDelegate是在MenuBar/ToolBar中插入按钮,不是对保存/关闭进行监听。

#7


但我想对save 保存进行监听? 因为想在保存之前对文件处理
关闭是可以监听的, getActivePage().addPartListener 可以接听colsed , opened 
但不知道怎么对save 监听?

#8


你的插件既然有界面,那么应该是用到了GEF/EMF吧。

有界面的话,应该有类继承了 EditorPart或者EditorPart的子类的,EditorPart中有 doSave和doSaveAs的方法,你想啊要监听的话,就在这两个方法中选择合适的添加你要处理的逻辑

#9


帮顶!!!
二楼正解!!!

#10


to Arthur(亚瑟王)
doSave和doSaveAs是不行的,因为我没有继承,

不知您有没有用过CompilationUnitEditor 的fSavePolicy?

#11


顺便请教下, 
有没有方法得到
myeclipse 的
com.genuitec.eclipse.javascript.editor.JSMultiPageEditorPart
org.eclipse.wst.xml.ui.internal.tabletree.XMLMultiPageEditorPart
的sourceEditor(ITextEditor) ?

就想myeclipse的jsp WebDesignerMultiPageEditor 它提供了puliic getSourceEditor()

但 com.genuitec.eclipse.javascript.editor.JSMultiPageEditorPart
org.eclipse.wst.xml.ui.internal.tabletree.XMLMultiPageEditorPart
都不是public的


#12


也碰到同样问题,想知道答案