Eclipse RCP 应用程序 - 多个监视器的多窗口设计

标签 eclipse view eclipse-rcp rcp perspectives

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

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

环境:Eclipse Ganymede、Windows XP。

最佳答案

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

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

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

添加到字段声明:

private IWorkbenchAction newWindowAction;

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

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

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

    menu.add(newWindowAction);

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

    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()

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

关于Eclipse RCP 应用程序 - 多个监视器的多窗口设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/686265/

相关文章:

java.lang.UnsatisfiedLinkError : no gluegen-rt in java. library.path RCP 应用程序

java - 让MPart监听eventBroker事件

java - eclipse转android studio出现中文乱码

java - 为什么导入 javax.servlet.*;尽管安装了 Java EE 仍无法解决 |面向 Java EE 开发人员的 Eclipse

eclipse - 如何解决错误 Mwe2Launcher : Couldn't find EClass for name

android - View.setBackground 抛出 NoSuchMethodError

android - 不使用 ROW_ID 更新 SQL 数据库

controller - 获取 Laravel 4.1 中模型返回的记录总和

cocoa View 模板

java - Skype for Business 核心/插件 Java API