Eclipse RCP 应用程序中的 JxBrowser

本教程展示了如何创建一个 Eclipse RCP 应用程序并向其添加 JxBrowser 库。

前提条件

为完成本教程,您将需要:

  • Git
  • Java 8或更高版本
  • 一个有效的JxBrowser许可证。它可以是评估版或商业版。有关许可的更多信息,请参见许可指南。
  • 用于 RCP 和 RAP 开发人员的Eclipse IDE。
  • 创建一个 Eclipse 工作区。

获取代码

要查看本教程中创建的完整的 Eclipse RCP 项目,请查看我们的示例集:

$ git clone https://github.com/TeamDev-IP/JxBrowser-Examples
$ cd JxBrowser-Examples/tutorials/eclipse-rcp

添加许可证

要运行本教程,您需要设置一个许可证密.

创建Eclipse RCP应用程序

按照指令创建一个简单的 Eclipse RCP 应用程序。

创建 JxBrowser 插件

为了在 Eclipse RCP 应用程序中使用 JxBrowser ,在本教程中,我们将库包装到一个 Eclipse 插件中,该插件可以被其他插件使用。

要创建 JxBrowser 插件,打开 Eclipse 并切换到您的工作区。

File 菜单上单击 New, 然后单击 Other….

在打开的对话框中,在 Plug-in Development 组中,选择 Plug-in from Existing JAR Archive, 然后单击 Next 按钮。

New Plug-in Wizard

在打开的对话框中,单击 Add External… 以添加jxbrowser.jarjxbrowser-swt.jar 文件作为外部JAR存档。

External JARs choosing

单击 Next 按钮。

在打开的向导中,提供有效的项目名称、插件 ID、版本、名称和供应商。 确保 Unzip the JAR archives into the project 复选框被清除。

New Plug-In Properties

单击 Finish 关闭向导。

打开新创建的 MANIFEST.MF文件,通过向该文件添加以下行来增加对SWT工具包的依赖:

Require-Bundle: org.eclipse.swt

创建特定于平台的片段

在将核心 JxBrowser 部分集成到 Eclipse RCP 环境中之后,就可以添加特定于平台的组件了。 为此,我们将使用所谓的片段

正如官方文件所述:

片段是用来替代或扩展现有插件的功能。片段的一个常见用途是将特定于环境(操作系统、架构等)的代码放入片段中。

JxBrowser 提供了许多特定于平台的 JAR。 我们将为其中的一些创建片段,如下所示:

File 菜单上,单击 New ,然后再单击 Other 其他…”。

在打开的对话框中,在 Plug-in Development 组中,选择 Fragment Project 并单击 Next 按钮。

Fragment Wizard

在打开的向导中为特定于平台的二进制文件提供有效的项目名称。 在本教程中,我们将 Eclipse RCP 配置为在 macOS 上工作,因此我们只添加 JxBrowser JAR 和适用于 macOS 平台的 Chromium 二进制文件。

Fragment Project

单击 Next 按钮。

在打开的向导中,在 Host Plug-in 部分选择之前创建的插件。

Fragment Content

单击 Finish 按钮。

将所需的 JAR(例如 jxbrowser-mac.jar for macOS)复制到新创建的片段的根目录。

Fragment JAR

打开 MANIFEST.MF 文件。

Runtime 选项卡中,将 jxbrowser-mac.jar文件添加到类路径中。

Fragment Classpath

Overview 选项卡中,使用与您的操作系统匹配的表达式填写 Platform Filter 文本字段:

平台 平台过滤器
Windows (32位) (& (osgi.os=win32) (osgi.arch=x86))
Windows (64位) (& (osgi.os=win32) (osgi.arch=x86_64))
Linux (& (osgi.os=linux) (osgi.arch=x86_64))
Linux (ARM) (& (osgi.os=linux) (osgi.arch=arm))
macOS (osgi.os=macosx)


Fragment Platform Filter

将 JxBrowser 插件添加到 RCP 应用程序中

在 Eclipse RCP 项目中打开 MANIFEST.MF 文件。

Dependencies 选项卡中,在 Required Plug-ins 部分,单击 Add… 按钮以添加 JxBrowser 插件。

Add JxBrowser Plug-in

打开 Run Configurations 对话框。 在 Eclipse RCP 应用配置中,打开 Plug-ins 选项卡并确保 JxBrowser 插件及其片段已启用。

Enable JxBrowser Plug-in

单击 Apply 按钮以保存对此配置的更改。

嵌入 SWT BrowserView

打开 com.example.e4.rcp.parts.SamplePart 类并将其内容替换为以下代码:

package com.example.e4.rcp.parts;

import static org.eclipse.swt.layout.GridData.FILL;

import com.teamdev.jxbrowser.browser.Browser;
import com.teamdev.jxbrowser.engine.Engine;
import com.teamdev.jxbrowser.engine.EngineOptions;
import com.teamdev.jxbrowser.engine.RenderingMode;
import com.teamdev.jxbrowser.view.swt.BrowserView;

import javax.annotation.PostConstruct;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;

public class SamplePart {

    @PostConstruct
    public void createComposite(Composite parent) {
        parent.setLayout(new GridLayout(1, false));

        Engine engine = Engine.newInstance(
                EngineOptions.newBuilder(RenderingMode.HARDWARE_ACCELERATED)
                        .licenseKey("your_license_key")
                        .build());
        Browser browser = engine.newBrowser();

        Text addressBar = new Text(parent, SWT.SINGLE);
        addressBar.setText("https://google.com");
        addressBar.addListener(SWT.Traverse, event -> {
            if (event.detail == SWT.TRAVERSE_RETURN) {
                browser.navigation().loadUrl(addressBar.getText());
            }
        });
        browser.navigation().loadUrl(addressBar.getText());

        GridData textGrid = new GridData();
        textGrid.horizontalAlignment = GridData.FILL;
        addressBar.setLayoutData(textGrid);

        BrowserView view = BrowserView.newInstance(parent, browser);
        view.setLayoutData(new GridData(FILL, FILL, true, true));
    }
}

your_license_key 替换为有效的许可证密钥。 保存更改。

运行Eclipse RCP应用程序

要使用集成的 JxBrowser SWT BrowserView 运行 Eclipse RCP 应用程序,请打开 com.example.e4.rcp.product 文件并单击 Launch an Eclipse application 链接:

Run Eclipse RCP App

输出内容应如下所示:

Eclipse RCP App

总结

在本教程中,我们:

  1. 创建一个 Eclipse RCP 应用程序。
  2. 创建并配置 JxBrowser 插件。
  3. 为 macOS JxBrowser JAR 文件创建特定于平台的片段。
  4. 将 JxBrowser 插件添加到 Eclipse RCP 应用程序。
  5. 将 SWT BrowserView 控件嵌入到 Eclipse RCP 应用程序中以显示 web 内容。
Go Top