我开始使用 SWT OLE api 在 Eclipse RCP 中编辑 Word 文档。我创建了一个自定义编辑器,它扩展了 org.eclipse.ui.part.EditorPart 并包含一个 OleClientSite 对象。 问题是保存图标呈灰色。有没有办法启用该图标?
我还尝试将 KeyListener
添加到我的 OleClientSite
来捕获 Ctrl+s 事件,但它似乎不起作用。在 Debug模式下,永远不会到达 keyPressed
方法中的断点...
我以为我可以向我的编辑器添加一个按键监听器,但我没有找到如何操作。
最佳答案
这是 OLE 对象。在 OLE 中,保存菜单被禁用,但是可以通过 save() 方法保存对象,如下所示:
oleClientSite.save(new File(fileName), true);
如果对象被修改,还有 isDirty() 方法返回 true 您需要添加自己的菜单才能让用户保存文件。
private void addMenu(OleFrame frame, String menuName) {
final Shell shell = frame.getShell();
Menu menuBar = shell.getMenuBar();
if (menuBar == null) {
menuBar = new Menu(shell, SWT.BAR);
shell.setMenuBar(menuBar);
}
MenuItem fileMenu = new MenuItem(menuBar, SWT.CASCADE);
fileMenu.setText(menuName);
Menu menuFile = new Menu(fileMenu);
fileMenu.setMenu(menuFile);
frame.setFileMenus(new MenuItem[]{fileMenu});
MenuItem menuFileOpen = new MenuItem(menuFile, SWT.CASCADE);
menuFileOpen.setText("Save ...");
menuFileOpen.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
oleClientSite.save(new File(fileName), true);
}
});
MenuItem menuFileExit = new MenuItem(menuFile, SWT.CASCADE);
menuFileExit.setText("Quit");
menuFileExit.addSelectionListener(new SelectionAdapter() {
shell.dispose();
}
});
}
.....
display = new Display();
shell = new Shell(display);
shell.setSize(1000, 700);
shell.setLayout(new FillLayout());
oleFrame = new OleFrame(shell, SWT.NONE);
oleClientSite = new OleClientSite(oleFrame, SWT.NONE, new File(fileName));
oleClientSite.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
addMenu(oleFrame);
关于java - 如何将在 SWT OleClientSite 中打开的文档保存在 eclipse EditorPart 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17040368/