【问题标题】:Eclipse RCP application - multi-window design for multiple monitorsEclipse RCP 应用程序 - 多显示器的多窗口设计
【发布时间】:2010-10-15 17:39:19
【问题描述】:

关于 Eclipse RCP 和整个透视/视图/编辑器设计的问题 - 创建将在多个监视器上显示多个窗口的应用程序的最佳方法是什么?我见过的教程和书籍总是将 RCP/SWT 设计打包到单个应用程序窗口内的透视图中。

应该一个窗口统治所有其他窗口,还是它们都应该相等(关闭最后一个退出应用程序)?如何处理观点和观点?还有什么我们应该知道的吗?

环境:Eclipse Ganymede,Windows XP。

【问题讨论】:

    标签: eclipse views eclipse-rcp rcp perspectives


    【解决方案1】:

    一个 Eclipse 工作台可以创建多个窗口。每个窗口都使用一个透视图进行布局,因此可以将不同的窗口设置为不同的透视图或相同的透视图,并且您可以在每个窗口中独立于其他窗口切换透视图。

    您还可以为每个窗口设置输入。如果每个窗口都在处理不同的数据(例如,每个窗口可以连接到不同的服务器,或者可以显示来自具有相同架构但数据不同的不同数据库的数据),这将非常有用。

    您可能只使用 Windows,以便您可以在不同的显示器上看到相同数据的不同视角。在这种情况下,您不需要以编程方式创建窗口,而只需添加工作台提供的操作。这可以通过修改 ActionBarAdvisor 类来完成:

    添加到字段声明:

    private IWorkbenchAction newWindowAction;
    

    添加到您执行操作的代码中(通常是一个名为 makeActions 的方法):

        newWindowAction = ActionFactory.OPEN_NEW_WINDOW.create(window);
        register(newWindowAction);
    

    添加到您创建菜单的代码:

        menu.add(newWindowAction);
    

    其中 menu 通常是 Window 菜单。如果您的应用程序中还没有 Window 菜单并且想要创建一个,则可以使用以下行:

        MenuManager menu = new MenuManager(
          "&Window", 
          IWorkbenchActionConstants.M_WINDOW);
    

    这将为您提供一个菜单项,该菜单项将以与 Eclipse IDE 中的 Window->New Window 菜单项相同的方式创建一个新窗口。

    另一方面,如果您希望每个窗口显示不同的数据,那么您需要以编程方式打开新窗口。这允许您为每个窗口设置不同的输入。您将需要一行代码,例如:

    IWorkbenchPage newPage = window.openPage(inputObject);
    

    其中 inputObject 包含标识窗口中显示的数据的信息。如果要设置初始视角,可以通过在页面上调用 setPerspective 来完成。

    您需要在每个窗口中设置标题:

    newPage.getWorkbenchWindow().getShell().setText(windowTitle);
    

    其中 windowTitle 是描述窗口输入的字符串。

    您可以按如下方式获取窗口的输入:

    window.getActivePage().getInput()
    

    然后,您可以将其转换为您用作窗口输入的任何类。

    【讨论】:

      猜你喜欢
      • 2014-12-21
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 2015-07-07
      相关资源
      最近更新 更多