代码之家  ›  专栏  ›  技术社区  ›  Mario Marinato

我如何知道用户何时最小化/最大化Eclipse?

  •  0
  • Mario Marinato  · 技术社区  · 18 年前

    我需要响应最小化/最大化Eclipse窗口的事件。我该怎么做?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Balint Pato    18 年前

    我可以建议一种方法:你可以为它写一个插件。
    例如,看到这个即兴的“教程”,我做了它,尝试了它在木卫三上的工作。最后一个shell变量有点难看,但是可以工作。如果你知道更好的解决方案,就开枪吧:) (实际上有一种方法:扩展自己的ControlListener类,但这需要更多的编码:)

    1. 创建一个新的插件项目,根据需要命名,从名为:hello world命令的模板创建。
    2. 打开samplehandler类,然后用此代码替换execute()函数。

      public Object execute(ExecutionEvent event) throws ExecutionException {
              IWorkbenchWindow window = HandlerUtil
                      .getActiveWorkbenchWindowChecked(event);
              final Shell s = window.getShell();
      
      
      window.getShell().addControlListener(new ControlListener() {
      
              @Override
              public void controlMoved(ControlEvent e) {
                  // TODO Auto-generated method stub
      
              }
      
              @Override
              public void controlResized(ControlEvent e) {
                  MessageDialog.openInformation(s,
                          "WindowEventHandler Plug-in", "RESIZED: "
                                  + e.toString() + "\nHello, Eclipse world");
              }
      
          });
          MessageDialog.openInformation(window.getShell(),
                  "WindowEventHandler Plug-in",
                  "Hello, Eclipse world, resize will be taken care of.");
      
          return null;
      }
      
    3. 现在。启动项目(以Eclipse应用程序的形式运行),您将在工具栏上看到一个Eclipse按钮。点击它!它会触发上述代码的运行,其本质是window.getshell()与主窗口组件一起返回,这样您就可以向其中添加侦听器。

    如果您希望它自动运行,而不仅仅是一个按钮,您必须找到一个插件,其中入口点连接到应用程序的启动。

    希望这有帮助。

    乙

        2
  •  1
  •   Mario Marinato    17 年前

    找到一种简单的方法:你必须创建一个 ShellListener 或 ShellAdapter 它具有当外壳被图标化、去神化、激活、停用和关闭时调用的方法。

    创建后,将其添加为具有以下行的侦听器:

    int i;
    
    PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().addShellListener( yourListenerHere);
    

    如果将其从shell的侦听器列表中删除,请确保Workbench、ActiveWorkbnchWindow和shell不为空。