java - 如何将在 SWT OleClientSite 中打开的文档保存在 eclipse EditorPart 中?

标签 java swt eclipse-rcp ole

我开始使用 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);

更多详细信息请点击此处 - http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet262.java

这里http://www.eclipse.org/swt/snippets/

关于java - 如何将在 SWT OleClientSite 中打开的文档保存在 eclipse EditorPart 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17040368/

相关文章:

java - 如何在Eclipse插件中以编程方式设置TextEditor的字符串输入?

java - 更改 deb 包中的所有用户 PATH 变量

java - SWt : what is the color of a Control's border?

java - 如何在java中检测windows字体大小(100%、125%、150%)

java - 如何设置 swt 文件对话框的位置?

java - 在另一个模态 JFace 对话框之上打开模态 JFace 对话框

groovy - 如何在 Eclipse RCP 项目中使用 groovy?

java - 在此示例中如何返回 Point

java - 如何让 JavaFX 2.0 ChoiceBox 选择它的第一个元素

java - 尝试使用 JSF 创建项目时出现错误 "Failed to execute goal"