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

2024-01-04

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

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

环境:Eclipse Ganymede、Windows XP。


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

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

您使用窗口可能只是为了在不同的显示器上看到相同数据的不同视角。在这种情况下,您不需要以编程方式创建窗口,而只需要添加工作台提供的操作。这可以通过修改 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()

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • PHP上传不起作用,可能是权限问题

    我需要在我的网站上创建一个上传页面 我正在使用 altervista 试用服务器 我使用了教程http www w3schools com php php file upload asp http www w3schools com php
  • 使用 JTransforms 库通过 FFT 计算自相关

    我正在尝试使用下面的代码计算时间序列中样本窗口的自相关性 我将 FFT 应用于该窗口 然后计算实部和虚部的幅度并将虚部设置为零 最后对其进行逆变换以获得自相关 DoubleFFT 1D fft new DoubleFFT 1D magCnt
  • UnrecognizedImageError - 图像插入错误 - python-docx

    我正在尝试使用将 wmf 文件插入 docxpython docx它产生以下回溯 Traceback most recent call last File C Users ADMIN PycharmProjects ppt to word
  • 如何将PanelGrid居中对齐? JSF-Primefaces

    我知道关于这个问题有很多问题 但没有一个对我有用 我需要将 PanelGrid 对齐到中心 水平 这是我的面板网格
  • 让 Spring 计划任务与任务执行器线程一起运行

    背景 我在 Websphere 7 应用程序中使用 Spring 3 0 x 来获取 CommonJ WorkManager 和 TimerManager 我使用它们在部署的应用程序中以一定的时间间隔执行任意任务 Problem 我刚刚了解
  • Jsoup获取动态生成的HTML

    我可以连接到大多数网站并获取 HTML 但是当尝试连接到大多数内容是在使用 JavaScript 加载初始页面后生成的网站时 它无法获取任何数据 有没有办法用 Jsoup 来做到这一点或者它不支持它 JSoup 包含一些基本的连接处理 但它
  • 在文件应用程序中公开来自 iOS 应用程序组容器的文档

    我的 iOS 应用程序及其扩展通过应用程序组容器在本地成功共享文件 设置后 该应用程序还将其应用程序容器的文档文件夹中的文件公开给文件应用程序UISupportsDocumentBrowser在应用程序的 info plist 中 我怎么能
  • NSDateFormatter dateFromString 和 iPhone 中的 24 小时格式混淆

    我有问题 我收到 12 小时格式的传入时间字符串 并将它们转换为 NSDate 对象 当 iPhone 为 12 小时格式时 没有问题 但当它采用 24 小时格式时 事情就会出错 下面是一些示例代码来演示 NSString theTime
  • 在 Flutter 中从 Firebase Cloud Storage 删除文件夹

    我有一个 Flutter 移动应用程序 我正在尝试从 Firebase Cloud Storage 中删除文件夹 及其内容 我的方法如下 deleteFromFirebaseStorage async return await Fireba
  • android 在 onPause 或 onDestroy 中保存游戏状态?

    我正在尝试为我正在开发的游戏实现 恢复 功能 它应该按如下方式工作 如果用户开始游戏并稍后关闭游戏并完成 则保存游戏状态 再次打开应用程序时 将提供 恢复 选项 如果活动只是暂停 例如 由于电话而最小化 并且用户返回 则它应该显示游戏正在进
  • 如何以不同用户身份启动 Visual Studio Code 终端

    我开始使用 Visual Studio Code 来完成一些 PowerShell 工作 到目前为止 我确实很享受这种体验 环境 我面临的唯一困难是我通常使用两个不同的帐户运行 PowerShell 一个是我登录计算机的普通域帐户 秒是一个
  • 在Mapbox.js中,如何平滑折线?

    代码可以在以下地址查看 http jsfiddle net qsr5bs6v http jsfiddle net qsr5bs6v 以下是添加折线的行 L polyline 31 233 121 465 31 233499 121 5006
  • ASP.NET 中的通用处理程序是什么及其用途?

    我是 ASP NET 新手 我想了解 ASP NET 中的通用处理程序 以及如何以及在哪里使用 你可以帮帮我吗 通用处理程序是实现 System Web IHttpHandler 接口的 NET 组件 任何实现 IHttpHandler 接
  • 使用php从另一个网站获取数据

    我需要从此网页获取数据亚美尼亚中央银行 http www cba am en sitepages default aspx 在我的 html 表单中 用户必须插入其供应的价格 他 她选择货币 美元 欧元或 AMD 并输入其价值 之后 我需要
  • 便携式、开源 Java Web 服务器推荐? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Visual Studio Code 中有隐藏侧边栏的快捷方式吗?

    It d be handy if there was a keyboard shortcut for hiding and showing the sidebar Sublime has cmd k b and it s a quick w
  • 如何将文件夹的每个子文件夹中除最新文件之外的所有文件压缩为每个子文件夹一个 ZIP 文件?

    我正在尝试创建一个批处理脚本 该脚本将压缩每个子目录中除最新 或最新的几个 之外的所有内容 我目前正在 Windows 中尝试使用 7 Zip 但从技术上讲 该目录位于 Linux 服务器上 因此欢迎任何针对 Linux 命令的建议 目录结
  • Safari 图标错误地呈现白色背景

    Edit 我发现这是由于深色模式造成的 因为图标和背景之间没有足够的对比度 但是 还有办法禁用此功能吗 我用图标制作了一个模拟图像文件 对比度似乎足够了 我正在尝试向HTML网站 但是 在 Safari 中 图标错误地呈现为白色背景 见下图
  • 如何将 Firestore 时间戳转换为 Dart 日期时间

    我正在将 QuerySnapshot 从 Firestore 映射到我的 Dart 类之一 返回的字段之一作为时间戳存储在 Firestore 中 我需要将其映射到模型中的日期时间 在下面的代码片段中 由于 UserTask dueDate
  • Eclipse RCP 应用程序 - 多个监视器的多窗口设计

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