单击x时隐藏而不是处置viewpart

时间:2011-07-01 15:42:50

标签: java eclipse swt rcp

我有一个viewpart,其closable设置为true。用户单击x。我想隐藏viewpart而不是关闭它。怎么办呢?

4 个答案:

答案 0 :(得分:1)

这是可能的,但这很棘手!

关闭视图实际上是从当前视角“隐藏”它。如果视图没有显示在任何地方,则会被丢弃。

您可以通过向RCP应用程序添加两个透视图来检查这一点,包括两者中的相同视图。现在,在透视图A中关闭视图将不会丢弃它,因为它在透视图B中仍然是打开的。

因此,为了避免处理视图,您应该确保它包含在另一个视角中。如果您的RCP应用程序不使用透视图,您可以使用从未显示的“隐藏”透视图,但可以存储所有“隐藏”视图,以便它们不会被丢弃。

另请参阅How to close a ViewPart in Eclipse?,其中要求完全相反。

答案 1 :(得分:0)

你可以试试这个:

shell.addShellListener(new ShellListener() {
            public void shellIconified(ShellEvent e) {
            }
            public void shellDeiconified(ShellEvent e) {
            }
            public void shellDeactivated(ShellEvent e) {
            }
            public void shellClosed(ShellEvent e) {
                shell.setVisible(false);
                e.doit = false;
            }
            public void shellActivated(ShellEvent e) {
            }
        });

其中shell是Viewpart的直接父shell。需要注意的要点是e.doit=false,它基本上使关闭事件无效。

答案 2 :(得分:0)

据我所知,这一般是不可能的。基本上,工作台部分在具有编辑器或视图“打开”的工作台窗口的所有透视图之间共享。因此,当您切换透视图时,只需调整零件的Composite大小以匹配应显示零件的新演示文稿站点。

当特定透视图关闭某个部件时,它会按照您希望的方式隐藏。当窗口的所有视角隐藏零件时,它将被丢弃。据我所知,没有办法阻止这种情况。

答案 3 :(得分:0)

如果您的应用是从对UI做出贡献的模板创建的,那么它应该在其中一个预生成的包中有一个WorkbenchWindowAdvisor文件。不确定隐藏窗口的确切实现细节,但听起来你需要在应用程序的WorkbenchWindowAdvisor实现中修改preWindowShellClose方法。