Skip to content
This repository was archived by the owner on Apr 16, 2026. It is now read-only.

Repository files navigation

Java Adapter Example

Overview

The following repo contains examples for OpenFin's Java adapter.

Guidelines

Run the example of connecting to OpenFin and creating applications

  1. Clone this repository

  2. Go to release directory and start run.bat

  3. Once the java app starts, click on Start button, which should start OpenFin Runtime. The java app will wait and try to connect to OpenFin Runtime.

  4. Once OpenFin Runtime is started and Java app connects successfully, "Create Application" button is enabled. You can click on the button to bring up a dialog for entering configuration of any HTML5 app. By default, the dialog is pre-populated with configuration for Hello OpenFin demo app.

  5. You can use buttons in Window Control section to move and re-size HTML5 window of Hello OpenFin app.

  6. Click "Create Application" button, which should start a dialog with all the fields pre-populated for our Hello OpenFin demo HTML5 application. Just click on "Create" button.

  7. After Hello OpenFin starts, you can use the buttons under Window Control of Java app to control Hello OpenFin window.

Source Code Review

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/OpenFinDesktopDemo.java. The followings overview of how it communicates with OpenFin Runtime with API calls supported by the Java adapter:

  1. Create connection object:
this.desktopConnection = newDesktopConnection("OpenFinDesktopDemo");

This code just creates an instance of DesktopConnection and it does not try to connect to runtime.

  1. Launch and connect to stable version of OpenFin runtime:
// create an instance of RuntimeConfiguration and configure Runtime by setting properties in RuntimeConfigurationthis.runtimeConfiguration = newRuntimeConfiguration();
// launch and connect to OpenFin RuntimedesktopConnection.connect(this.runtimeConfiguration, listener, 10000);

listener is an instance of DesktopStateListener which provides callback on status of connections to runtime.

  1. Create new application when clicking on Create App:
Applicationapp = newApplication(options, desktopConnection, newAckListener() {
@OverridepublicvoidonSuccess(Ackack) {
Applicationapplication = (Application) ack.getSource();
application.run(); // run the app
}
@OverridepublicvoidonError(Ackack) {
}
});

options is an instance of ApplicationOptions, which is populated from App Create dialog. AckListener interface provides callback for the operation.

Once the application is created successfully, you can take actions on its window:

  1. Change opacity:
WindowOptionsoptions = newWindowOptions();
options.setOpacity(newOpacityValue);
application.getWindow().updateOptions(options, null);
  1. Change Window size
application.getWindow().resizeBy(10, 10, "top-left");
  1. Publishes messages to a topic with InterApplicationBus
org.json.JSONObjectmessage = createSomeJsonMessage();
desktopConnection.getInterApplicationBus().publish("someTopic", message);
  1. Subscribes to a topic with InterApplicationBus
desktopConnection.getInterApplicationBus().subscribe("*", "someTopic", newBusListener() {
publicvoidonMessageReceived(StringsourceUuid, Stringtopic, Objectpayload) {
JSONObjectmessage = (JSONObject) payload;
}
});

Run the example of embedding HTML5 application into a Java Swing window

  1. Clone this repository

  2. Go to release directory and start embed.bat ( the default embedded url is https://openfin.co. Pass the url you wish to load if you want something different e.g. embed.bat https://www.mydomain.com )

  3. Once the java app starts, click on "Launch OpenFin" button, which should start OpenFin Runtime and embed the OpenFin application that points to https://openfin.co (or your custom url if you specified one)

  4. Click "Shutdown OpenFin" button to close HTML5 application and the Java Swing window

If there is a problem rendering the url please check your windows display settings to see ensure scaling is set to 100%.

Source Code Review for embedded OpenFin application

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/WindowEmbedDemo.java

  1. create a canvas and place it where the HTML5 application should be embedded.
embedCanvas = newjava.awt.Canvas();
panel.add(embedCanvas, BorderLayout.CENTER);
  1. listen to the canvas resize event, and resize embedded HTML5 application accordingly.
embedCanvas.addComponentListener(newComponentAdapter() {
@OverridepublicvoidcomponentResized(ComponentEventevent) {
super.componentResized(event);
DimensionnewSize = event.getComponent().getSize();
try {
if (startupHtml5app != null) {
startupHtml5app.getWindow().embedComponentSizeChange((int)newSize.getWidth(), (int)newSize.getHeight());
}
} catch (Exceptione) {
e.printStackTrace();
}
}
});
  1. launch and connect to OpenFin runtime
this.desktopConnection = newDesktopConnection(appUuid);
DesktopStateListenerlistener = newDesktopStateListener() {...};
RuntimeConfigurationconfiguration = newRuntimeConfiguration();
configuration.setRuntimeVersion(desktopVersion);
desktopConnection.connect(configuration, listener, 60);
  1. create HTML5 application
ApplicationOptionsoptions = newApplicationOptions(startupUuid, startupUuid, openfin_app_url);
WindowOptionsmainWindowOptions = newWindowOptions();
options.setMainWindowOptions(mainWindowOptions);
DemoUtils.runApplication(options, this.desktopConnection, newAckListener() {...});
  1. embed HTML5 application into the canvas
startupHtml5app = Application.wrap(this.startupUuid, this.desktopConnection);
Windowhtml5Wnd = startupHtml5app.getWindow();
longparentHWndId = Native.getComponentID(this.embedCanvas);
html5Wnd.embedInto(parentHWndId, this.embedCanvas.getWidth(), this.embedCanvas.getHeight(), newAckListener() {...});

More Info

More information and API documentation can be found at https://openfin.co/java-api/

Disclaimers

  • This is a starter example and intended to demonstrate to app providers a sample of how to approach an implementation. There are potentially other ways to approach it and alternatives could be considered.
  • Its possible that the repo is not actively maintained.

License

MIT

The code in this repository is covered by the included license.

However, if you run this code, it may call on the OpenFin RVM or OpenFin Runtime, which are covered by OpenFin’s Developer, Community, and Enterprise licenses. You can learn more about OpenFin licensing at the links listed below or just email us at support@openfin.co with questions.

https://openfin.co/developer-agreement/
https://openfin.co/licensing/

Support

Please enter an issue in the repo for any questions or problems.
Alternatively, please contact us at support@openfin.co

About

Examples for OpenFin Java adapter

Resources

Stars

19 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - openfin/java-example: Examples for OpenFin Java adapter · GitHub
Skip to content
This repository was archived by the owner on Apr 16, 2026. It is now read-only.

Repository files navigation

Java Adapter Example

Overview

The following repo contains examples for OpenFin's Java adapter.

Guidelines

Run the example of connecting to OpenFin and creating applications

  1. Clone this repository

  2. Go to release directory and start run.bat

  3. Once the java app starts, click on Start button, which should start OpenFin Runtime. The java app will wait and try to connect to OpenFin Runtime.

  4. Once OpenFin Runtime is started and Java app connects successfully, "Create Application" button is enabled. You can click on the button to bring up a dialog for entering configuration of any HTML5 app. By default, the dialog is pre-populated with configuration for Hello OpenFin demo app.

  5. You can use buttons in Window Control section to move and re-size HTML5 window of Hello OpenFin app.

  6. Click "Create Application" button, which should start a dialog with all the fields pre-populated for our Hello OpenFin demo HTML5 application. Just click on "Create" button.

  7. After Hello OpenFin starts, you can use the buttons under Window Control of Java app to control Hello OpenFin window.

Source Code Review

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/OpenFinDesktopDemo.java. The followings overview of how it communicates with OpenFin Runtime with API calls supported by the Java adapter:

  1. Create connection object:
this.desktopConnection = newDesktopConnection("OpenFinDesktopDemo");

This code just creates an instance of DesktopConnection and it does not try to connect to runtime.

  1. Launch and connect to stable version of OpenFin runtime:
// create an instance of RuntimeConfiguration and configure Runtime by setting properties in RuntimeConfigurationthis.runtimeConfiguration = newRuntimeConfiguration();
// launch and connect to OpenFin RuntimedesktopConnection.connect(this.runtimeConfiguration, listener, 10000);

listener is an instance of DesktopStateListener which provides callback on status of connections to runtime.

  1. Create new application when clicking on Create App:
Applicationapp = newApplication(options, desktopConnection, newAckListener() {
@OverridepublicvoidonSuccess(Ackack) {
Applicationapplication = (Application) ack.getSource();
application.run(); // run the app
}
@OverridepublicvoidonError(Ackack) {
}
});

options is an instance of ApplicationOptions, which is populated from App Create dialog. AckListener interface provides callback for the operation.

Once the application is created successfully, you can take actions on its window:

  1. Change opacity:
WindowOptionsoptions = newWindowOptions();
options.setOpacity(newOpacityValue);
application.getWindow().updateOptions(options, null);
  1. Change Window size
application.getWindow().resizeBy(10, 10, "top-left");
  1. Publishes messages to a topic with InterApplicationBus
org.json.JSONObjectmessage = createSomeJsonMessage();
desktopConnection.getInterApplicationBus().publish("someTopic", message);
  1. Subscribes to a topic with InterApplicationBus
desktopConnection.getInterApplicationBus().subscribe("*", "someTopic", newBusListener() {
publicvoidonMessageReceived(StringsourceUuid, Stringtopic, Objectpayload) {
JSONObjectmessage = (JSONObject) payload;
}
});

Run the example of embedding HTML5 application into a Java Swing window

  1. Clone this repository

  2. Go to release directory and start embed.bat ( the default embedded url is https://openfin.co. Pass the url you wish to load if you want something different e.g. embed.bat https://www.mydomain.com )

  3. Once the java app starts, click on "Launch OpenFin" button, which should start OpenFin Runtime and embed the OpenFin application that points to https://openfin.co (or your custom url if you specified one)

  4. Click "Shutdown OpenFin" button to close HTML5 application and the Java Swing window

If there is a problem rendering the url please check your windows display settings to see ensure scaling is set to 100%.

Source Code Review for embedded OpenFin application

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/WindowEmbedDemo.java

  1. create a canvas and place it where the HTML5 application should be embedded.
embedCanvas = newjava.awt.Canvas();
panel.add(embedCanvas, BorderLayout.CENTER);
  1. listen to the canvas resize event, and resize embedded HTML5 application accordingly.
embedCanvas.addComponentListener(newComponentAdapter() {
@OverridepublicvoidcomponentResized(ComponentEventevent) {
super.componentResized(event);
DimensionnewSize = event.getComponent().getSize();
try {
if (startupHtml5app != null) {
startupHtml5app.getWindow().embedComponentSizeChange((int)newSize.getWidth(), (int)newSize.getHeight());
}
} catch (Exceptione) {
e.printStackTrace();
}
}
});
  1. launch and connect to OpenFin runtime
this.desktopConnection = newDesktopConnection(appUuid);
DesktopStateListenerlistener = newDesktopStateListener() {...};
RuntimeConfigurationconfiguration = newRuntimeConfiguration();
configuration.setRuntimeVersion(desktopVersion);
desktopConnection.connect(configuration, listener, 60);
  1. create HTML5 application
ApplicationOptionsoptions = newApplicationOptions(startupUuid, startupUuid, openfin_app_url);
WindowOptionsmainWindowOptions = newWindowOptions();
options.setMainWindowOptions(mainWindowOptions);
DemoUtils.runApplication(options, this.desktopConnection, newAckListener() {...});
  1. embed HTML5 application into the canvas
startupHtml5app = Application.wrap(this.startupUuid, this.desktopConnection);
Windowhtml5Wnd = startupHtml5app.getWindow();
longparentHWndId = Native.getComponentID(this.embedCanvas);
html5Wnd.embedInto(parentHWndId, this.embedCanvas.getWidth(), this.embedCanvas.getHeight(), newAckListener() {...});

More Info

More information and API documentation can be found at https://openfin.co/java-api/

Disclaimers

  • This is a starter example and intended to demonstrate to app providers a sample of how to approach an implementation. There are potentially other ways to approach it and alternatives could be considered.
  • Its possible that the repo is not actively maintained.

License

MIT

The code in this repository is covered by the included license.

However, if you run this code, it may call on the OpenFin RVM or OpenFin Runtime, which are covered by OpenFin’s Developer, Community, and Enterprise licenses. You can learn more about OpenFin licensing at the links listed below or just email us at support@openfin.co with questions.

https://openfin.co/developer-agreement/
https://openfin.co/licensing/

Support

Please enter an issue in the repo for any questions or problems.
Alternatively, please contact us at support@openfin.co

About

Examples for OpenFin Java adapter

Resources

Stars

19 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - openfin/java-example: Examples for OpenFin Java adapter · GitHub
Skip to content
This repository was archived by the owner on Apr 16, 2026. It is now read-only.

Repository files navigation

Java Adapter Example

Overview

The following repo contains examples for OpenFin's Java adapter.

Guidelines

Run the example of connecting to OpenFin and creating applications

  1. Clone this repository

  2. Go to release directory and start run.bat

  3. Once the java app starts, click on Start button, which should start OpenFin Runtime. The java app will wait and try to connect to OpenFin Runtime.

  4. Once OpenFin Runtime is started and Java app connects successfully, "Create Application" button is enabled. You can click on the button to bring up a dialog for entering configuration of any HTML5 app. By default, the dialog is pre-populated with configuration for Hello OpenFin demo app.

  5. You can use buttons in Window Control section to move and re-size HTML5 window of Hello OpenFin app.

  6. Click "Create Application" button, which should start a dialog with all the fields pre-populated for our Hello OpenFin demo HTML5 application. Just click on "Create" button.

  7. After Hello OpenFin starts, you can use the buttons under Window Control of Java app to control Hello OpenFin window.

Source Code Review

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/OpenFinDesktopDemo.java. The followings overview of how it communicates with OpenFin Runtime with API calls supported by the Java adapter:

  1. Create connection object:
this.desktopConnection = newDesktopConnection("OpenFinDesktopDemo");

This code just creates an instance of DesktopConnection and it does not try to connect to runtime.

  1. Launch and connect to stable version of OpenFin runtime:
// create an instance of RuntimeConfiguration and configure Runtime by setting properties in RuntimeConfigurationthis.runtimeConfiguration = newRuntimeConfiguration();
// launch and connect to OpenFin RuntimedesktopConnection.connect(this.runtimeConfiguration, listener, 10000);

listener is an instance of DesktopStateListener which provides callback on status of connections to runtime.

  1. Create new application when clicking on Create App:
Applicationapp = newApplication(options, desktopConnection, newAckListener() {
@OverridepublicvoidonSuccess(Ackack) {
Applicationapplication = (Application) ack.getSource();
application.run(); // run the app
}
@OverridepublicvoidonError(Ackack) {
}
});

options is an instance of ApplicationOptions, which is populated from App Create dialog. AckListener interface provides callback for the operation.

Once the application is created successfully, you can take actions on its window:

  1. Change opacity:
WindowOptionsoptions = newWindowOptions();
options.setOpacity(newOpacityValue);
application.getWindow().updateOptions(options, null);
  1. Change Window size
application.getWindow().resizeBy(10, 10, "top-left");
  1. Publishes messages to a topic with InterApplicationBus
org.json.JSONObjectmessage = createSomeJsonMessage();
desktopConnection.getInterApplicationBus().publish("someTopic", message);
  1. Subscribes to a topic with InterApplicationBus
desktopConnection.getInterApplicationBus().subscribe("*", "someTopic", newBusListener() {
publicvoidonMessageReceived(StringsourceUuid, Stringtopic, Objectpayload) {
JSONObjectmessage = (JSONObject) payload;
}
});

Run the example of embedding HTML5 application into a Java Swing window

  1. Clone this repository

  2. Go to release directory and start embed.bat ( the default embedded url is https://openfin.co. Pass the url you wish to load if you want something different e.g. embed.bat https://www.mydomain.com )

  3. Once the java app starts, click on "Launch OpenFin" button, which should start OpenFin Runtime and embed the OpenFin application that points to https://openfin.co (or your custom url if you specified one)

  4. Click "Shutdown OpenFin" button to close HTML5 application and the Java Swing window

If there is a problem rendering the url please check your windows display settings to see ensure scaling is set to 100%.

Source Code Review for embedded OpenFin application

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/WindowEmbedDemo.java

  1. create a canvas and place it where the HTML5 application should be embedded.
embedCanvas = newjava.awt.Canvas();
panel.add(embedCanvas, BorderLayout.CENTER);
  1. listen to the canvas resize event, and resize embedded HTML5 application accordingly.
embedCanvas.addComponentListener(newComponentAdapter() {
@OverridepublicvoidcomponentResized(ComponentEventevent) {
super.componentResized(event);
DimensionnewSize = event.getComponent().getSize();
try {
if (startupHtml5app != null) {
startupHtml5app.getWindow().embedComponentSizeChange((int)newSize.getWidth(), (int)newSize.getHeight());
}
} catch (Exceptione) {
e.printStackTrace();
}
}
});
  1. launch and connect to OpenFin runtime
this.desktopConnection = newDesktopConnection(appUuid);
DesktopStateListenerlistener = newDesktopStateListener() {...};
RuntimeConfigurationconfiguration = newRuntimeConfiguration();
configuration.setRuntimeVersion(desktopVersion);
desktopConnection.connect(configuration, listener, 60);
  1. create HTML5 application
ApplicationOptionsoptions = newApplicationOptions(startupUuid, startupUuid, openfin_app_url);
WindowOptionsmainWindowOptions = newWindowOptions();
options.setMainWindowOptions(mainWindowOptions);
DemoUtils.runApplication(options, this.desktopConnection, newAckListener() {...});
  1. embed HTML5 application into the canvas
startupHtml5app = Application.wrap(this.startupUuid, this.desktopConnection);
Windowhtml5Wnd = startupHtml5app.getWindow();
longparentHWndId = Native.getComponentID(this.embedCanvas);
html5Wnd.embedInto(parentHWndId, this.embedCanvas.getWidth(), this.embedCanvas.getHeight(), newAckListener() {...});

More Info

More information and API documentation can be found at https://openfin.co/java-api/

Disclaimers

  • This is a starter example and intended to demonstrate to app providers a sample of how to approach an implementation. There are potentially other ways to approach it and alternatives could be considered.
  • Its possible that the repo is not actively maintained.

License

MIT

The code in this repository is covered by the included license.

However, if you run this code, it may call on the OpenFin RVM or OpenFin Runtime, which are covered by OpenFin’s Developer, Community, and Enterprise licenses. You can learn more about OpenFin licensing at the links listed below or just email us at support@openfin.co with questions.

https://openfin.co/developer-agreement/
https://openfin.co/licensing/

Support

Please enter an issue in the repo for any questions or problems.
Alternatively, please contact us at support@openfin.co

About

Examples for OpenFin Java adapter

Resources

Stars

19 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - openfin/java-example: Examples for OpenFin Java adapter · GitHub
Skip to content
This repository was archived by the owner on Apr 16, 2026. It is now read-only.

Repository files navigation

Java Adapter Example

Overview

The following repo contains examples for OpenFin's Java adapter.

Guidelines

Run the example of connecting to OpenFin and creating applications

  1. Clone this repository

  2. Go to release directory and start run.bat

  3. Once the java app starts, click on Start button, which should start OpenFin Runtime. The java app will wait and try to connect to OpenFin Runtime.

  4. Once OpenFin Runtime is started and Java app connects successfully, "Create Application" button is enabled. You can click on the button to bring up a dialog for entering configuration of any HTML5 app. By default, the dialog is pre-populated with configuration for Hello OpenFin demo app.

  5. You can use buttons in Window Control section to move and re-size HTML5 window of Hello OpenFin app.

  6. Click "Create Application" button, which should start a dialog with all the fields pre-populated for our Hello OpenFin demo HTML5 application. Just click on "Create" button.

  7. After Hello OpenFin starts, you can use the buttons under Window Control of Java app to control Hello OpenFin window.

Source Code Review

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/OpenFinDesktopDemo.java. The followings overview of how it communicates with OpenFin Runtime with API calls supported by the Java adapter:

  1. Create connection object:
this.desktopConnection = newDesktopConnection("OpenFinDesktopDemo");

This code just creates an instance of DesktopConnection and it does not try to connect to runtime.

  1. Launch and connect to stable version of OpenFin runtime:
// create an instance of RuntimeConfiguration and configure Runtime by setting properties in RuntimeConfigurationthis.runtimeConfiguration = newRuntimeConfiguration();
// launch and connect to OpenFin RuntimedesktopConnection.connect(this.runtimeConfiguration, listener, 10000);

listener is an instance of DesktopStateListener which provides callback on status of connections to runtime.

  1. Create new application when clicking on Create App:
Applicationapp = newApplication(options, desktopConnection, newAckListener() {
@OverridepublicvoidonSuccess(Ackack) {
Applicationapplication = (Application) ack.getSource();
application.run(); // run the app
}
@OverridepublicvoidonError(Ackack) {
}
});

options is an instance of ApplicationOptions, which is populated from App Create dialog. AckListener interface provides callback for the operation.

Once the application is created successfully, you can take actions on its window:

  1. Change opacity:
WindowOptionsoptions = newWindowOptions();
options.setOpacity(newOpacityValue);
application.getWindow().updateOptions(options, null);
  1. Change Window size
application.getWindow().resizeBy(10, 10, "top-left");
  1. Publishes messages to a topic with InterApplicationBus
org.json.JSONObjectmessage = createSomeJsonMessage();
desktopConnection.getInterApplicationBus().publish("someTopic", message);
  1. Subscribes to a topic with InterApplicationBus
desktopConnection.getInterApplicationBus().subscribe("*", "someTopic", newBusListener() {
publicvoidonMessageReceived(StringsourceUuid, Stringtopic, Objectpayload) {
JSONObjectmessage = (JSONObject) payload;
}
});

Run the example of embedding HTML5 application into a Java Swing window

  1. Clone this repository

  2. Go to release directory and start embed.bat ( the default embedded url is https://openfin.co. Pass the url you wish to load if you want something different e.g. embed.bat https://www.mydomain.com )

  3. Once the java app starts, click on "Launch OpenFin" button, which should start OpenFin Runtime and embed the OpenFin application that points to https://openfin.co (or your custom url if you specified one)

  4. Click "Shutdown OpenFin" button to close HTML5 application and the Java Swing window

If there is a problem rendering the url please check your windows display settings to see ensure scaling is set to 100%.

Source Code Review for embedded OpenFin application

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/WindowEmbedDemo.java

  1. create a canvas and place it where the HTML5 application should be embedded.
embedCanvas = newjava.awt.Canvas();
panel.add(embedCanvas, BorderLayout.CENTER);
  1. listen to the canvas resize event, and resize embedded HTML5 application accordingly.
embedCanvas.addComponentListener(newComponentAdapter() {
@OverridepublicvoidcomponentResized(ComponentEventevent) {
super.componentResized(event);
DimensionnewSize = event.getComponent().getSize();
try {
if (startupHtml5app != null) {
startupHtml5app.getWindow().embedComponentSizeChange((int)newSize.getWidth(), (int)newSize.getHeight());
}
} catch (Exceptione) {
e.printStackTrace();
}
}
});
  1. launch and connect to OpenFin runtime
this.desktopConnection = newDesktopConnection(appUuid);
DesktopStateListenerlistener = newDesktopStateListener() {...};
RuntimeConfigurationconfiguration = newRuntimeConfiguration();
configuration.setRuntimeVersion(desktopVersion);
desktopConnection.connect(configuration, listener, 60);
  1. create HTML5 application
ApplicationOptionsoptions = newApplicationOptions(startupUuid, startupUuid, openfin_app_url);
WindowOptionsmainWindowOptions = newWindowOptions();
options.setMainWindowOptions(mainWindowOptions);
DemoUtils.runApplication(options, this.desktopConnection, newAckListener() {...});
  1. embed HTML5 application into the canvas
startupHtml5app = Application.wrap(this.startupUuid, this.desktopConnection);
Windowhtml5Wnd = startupHtml5app.getWindow();
longparentHWndId = Native.getComponentID(this.embedCanvas);
html5Wnd.embedInto(parentHWndId, this.embedCanvas.getWidth(), this.embedCanvas.getHeight(), newAckListener() {...});

More Info

More information and API documentation can be found at https://openfin.co/java-api/

Disclaimers

  • This is a starter example and intended to demonstrate to app providers a sample of how to approach an implementation. There are potentially other ways to approach it and alternatives could be considered.
  • Its possible that the repo is not actively maintained.

License

MIT

The code in this repository is covered by the included license.

However, if you run this code, it may call on the OpenFin RVM or OpenFin Runtime, which are covered by OpenFin’s Developer, Community, and Enterprise licenses. You can learn more about OpenFin licensing at the links listed below or just email us at support@openfin.co with questions.

https://openfin.co/developer-agreement/
https://openfin.co/licensing/

Support

Please enter an issue in the repo for any questions or problems.
Alternatively, please contact us at support@openfin.co

About

Examples for OpenFin Java adapter

Resources

Stars

19 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - openfin/java-example: Examples for OpenFin Java adapter · GitHub
Skip to content
This repository was archived by the owner on Apr 16, 2026. It is now read-only.

Repository files navigation

Java Adapter Example

Overview

The following repo contains examples for OpenFin's Java adapter.

Guidelines

Run the example of connecting to OpenFin and creating applications

  1. Clone this repository

  2. Go to release directory and start run.bat

  3. Once the java app starts, click on Start button, which should start OpenFin Runtime. The java app will wait and try to connect to OpenFin Runtime.

  4. Once OpenFin Runtime is started and Java app connects successfully, "Create Application" button is enabled. You can click on the button to bring up a dialog for entering configuration of any HTML5 app. By default, the dialog is pre-populated with configuration for Hello OpenFin demo app.

  5. You can use buttons in Window Control section to move and re-size HTML5 window of Hello OpenFin app.

  6. Click "Create Application" button, which should start a dialog with all the fields pre-populated for our Hello OpenFin demo HTML5 application. Just click on "Create" button.

  7. After Hello OpenFin starts, you can use the buttons under Window Control of Java app to control Hello OpenFin window.

Source Code Review

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/OpenFinDesktopDemo.java. The followings overview of how it communicates with OpenFin Runtime with API calls supported by the Java adapter:

  1. Create connection object:
this.desktopConnection = newDesktopConnection("OpenFinDesktopDemo");

This code just creates an instance of DesktopConnection and it does not try to connect to runtime.

  1. Launch and connect to stable version of OpenFin runtime:
// create an instance of RuntimeConfiguration and configure Runtime by setting properties in RuntimeConfigurationthis.runtimeConfiguration = newRuntimeConfiguration();
// launch and connect to OpenFin RuntimedesktopConnection.connect(this.runtimeConfiguration, listener, 10000);

listener is an instance of DesktopStateListener which provides callback on status of connections to runtime.

  1. Create new application when clicking on Create App:
Applicationapp = newApplication(options, desktopConnection, newAckListener() {
@OverridepublicvoidonSuccess(Ackack) {
Applicationapplication = (Application) ack.getSource();
application.run(); // run the app
}
@OverridepublicvoidonError(Ackack) {
}
});

options is an instance of ApplicationOptions, which is populated from App Create dialog. AckListener interface provides callback for the operation.

Once the application is created successfully, you can take actions on its window:

  1. Change opacity:
WindowOptionsoptions = newWindowOptions();
options.setOpacity(newOpacityValue);
application.getWindow().updateOptions(options, null);
  1. Change Window size
application.getWindow().resizeBy(10, 10, "top-left");
  1. Publishes messages to a topic with InterApplicationBus
org.json.JSONObjectmessage = createSomeJsonMessage();
desktopConnection.getInterApplicationBus().publish("someTopic", message);
  1. Subscribes to a topic with InterApplicationBus
desktopConnection.getInterApplicationBus().subscribe("*", "someTopic", newBusListener() {
publicvoidonMessageReceived(StringsourceUuid, Stringtopic, Objectpayload) {
JSONObjectmessage = (JSONObject) payload;
}
});

Run the example of embedding HTML5 application into a Java Swing window

  1. Clone this repository

  2. Go to release directory and start embed.bat ( the default embedded url is https://openfin.co. Pass the url you wish to load if you want something different e.g. embed.bat https://www.mydomain.com )

  3. Once the java app starts, click on "Launch OpenFin" button, which should start OpenFin Runtime and embed the OpenFin application that points to https://openfin.co (or your custom url if you specified one)

  4. Click "Shutdown OpenFin" button to close HTML5 application and the Java Swing window

If there is a problem rendering the url please check your windows display settings to see ensure scaling is set to 100%.

Source Code Review for embedded OpenFin application

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/WindowEmbedDemo.java

  1. create a canvas and place it where the HTML5 application should be embedded.
embedCanvas = newjava.awt.Canvas();
panel.add(embedCanvas, BorderLayout.CENTER);
  1. listen to the canvas resize event, and resize embedded HTML5 application accordingly.
embedCanvas.addComponentListener(newComponentAdapter() {
@OverridepublicvoidcomponentResized(ComponentEventevent) {
super.componentResized(event);
DimensionnewSize = event.getComponent().getSize();
try {
if (startupHtml5app != null) {
startupHtml5app.getWindow().embedComponentSizeChange((int)newSize.getWidth(), (int)newSize.getHeight());
}
} catch (Exceptione) {
e.printStackTrace();
}
}
});
  1. launch and connect to OpenFin runtime
this.desktopConnection = newDesktopConnection(appUuid);
DesktopStateListenerlistener = newDesktopStateListener() {...};
RuntimeConfigurationconfiguration = newRuntimeConfiguration();
configuration.setRuntimeVersion(desktopVersion);
desktopConnection.connect(configuration, listener, 60);
  1. create HTML5 application
ApplicationOptionsoptions = newApplicationOptions(startupUuid, startupUuid, openfin_app_url);
WindowOptionsmainWindowOptions = newWindowOptions();
options.setMainWindowOptions(mainWindowOptions);
DemoUtils.runApplication(options, this.desktopConnection, newAckListener() {...});
  1. embed HTML5 application into the canvas
startupHtml5app = Application.wrap(this.startupUuid, this.desktopConnection);
Windowhtml5Wnd = startupHtml5app.getWindow();
longparentHWndId = Native.getComponentID(this.embedCanvas);
html5Wnd.embedInto(parentHWndId, this.embedCanvas.getWidth(), this.embedCanvas.getHeight(), newAckListener() {...});

More Info

More information and API documentation can be found at https://openfin.co/java-api/

Disclaimers

  • This is a starter example and intended to demonstrate to app providers a sample of how to approach an implementation. There are potentially other ways to approach it and alternatives could be considered.
  • Its possible that the repo is not actively maintained.

License

MIT

The code in this repository is covered by the included license.

However, if you run this code, it may call on the OpenFin RVM or OpenFin Runtime, which are covered by OpenFin’s Developer, Community, and Enterprise licenses. You can learn more about OpenFin licensing at the links listed below or just email us at support@openfin.co with questions.

https://openfin.co/developer-agreement/
https://openfin.co/licensing/

Support

Please enter an issue in the repo for any questions or problems.
Alternatively, please contact us at support@openfin.co

About

Examples for OpenFin Java adapter

Resources

Stars

19 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - openfin/java-example: Examples for OpenFin Java adapter · GitHub
Skip to content
This repository was archived by the owner on Apr 16, 2026. It is now read-only.

Repository files navigation

Java Adapter Example

Overview

The following repo contains examples for OpenFin's Java adapter.

Guidelines

Run the example of connecting to OpenFin and creating applications

  1. Clone this repository

  2. Go to release directory and start run.bat

  3. Once the java app starts, click on Start button, which should start OpenFin Runtime. The java app will wait and try to connect to OpenFin Runtime.

  4. Once OpenFin Runtime is started and Java app connects successfully, "Create Application" button is enabled. You can click on the button to bring up a dialog for entering configuration of any HTML5 app. By default, the dialog is pre-populated with configuration for Hello OpenFin demo app.

  5. You can use buttons in Window Control section to move and re-size HTML5 window of Hello OpenFin app.

  6. Click "Create Application" button, which should start a dialog with all the fields pre-populated for our Hello OpenFin demo HTML5 application. Just click on "Create" button.

  7. After Hello OpenFin starts, you can use the buttons under Window Control of Java app to control Hello OpenFin window.

Source Code Review

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/OpenFinDesktopDemo.java. The followings overview of how it communicates with OpenFin Runtime with API calls supported by the Java adapter:

  1. Create connection object:
this.desktopConnection = newDesktopConnection("OpenFinDesktopDemo");

This code just creates an instance of DesktopConnection and it does not try to connect to runtime.

  1. Launch and connect to stable version of OpenFin runtime:
// create an instance of RuntimeConfiguration and configure Runtime by setting properties in RuntimeConfigurationthis.runtimeConfiguration = newRuntimeConfiguration();
// launch and connect to OpenFin RuntimedesktopConnection.connect(this.runtimeConfiguration, listener, 10000);

listener is an instance of DesktopStateListener which provides callback on status of connections to runtime.

  1. Create new application when clicking on Create App:
Applicationapp = newApplication(options, desktopConnection, newAckListener() {
@OverridepublicvoidonSuccess(Ackack) {
Applicationapplication = (Application) ack.getSource();
application.run(); // run the app
}
@OverridepublicvoidonError(Ackack) {
}
});

options is an instance of ApplicationOptions, which is populated from App Create dialog. AckListener interface provides callback for the operation.

Once the application is created successfully, you can take actions on its window:

  1. Change opacity:
WindowOptionsoptions = newWindowOptions();
options.setOpacity(newOpacityValue);
application.getWindow().updateOptions(options, null);
  1. Change Window size
application.getWindow().resizeBy(10, 10, "top-left");
  1. Publishes messages to a topic with InterApplicationBus
org.json.JSONObjectmessage = createSomeJsonMessage();
desktopConnection.getInterApplicationBus().publish("someTopic", message);
  1. Subscribes to a topic with InterApplicationBus
desktopConnection.getInterApplicationBus().subscribe("*", "someTopic", newBusListener() {
publicvoidonMessageReceived(StringsourceUuid, Stringtopic, Objectpayload) {
JSONObjectmessage = (JSONObject) payload;
}
});

Run the example of embedding HTML5 application into a Java Swing window

  1. Clone this repository

  2. Go to release directory and start embed.bat ( the default embedded url is https://openfin.co. Pass the url you wish to load if you want something different e.g. embed.bat https://www.mydomain.com )

  3. Once the java app starts, click on "Launch OpenFin" button, which should start OpenFin Runtime and embed the OpenFin application that points to https://openfin.co (or your custom url if you specified one)

  4. Click "Shutdown OpenFin" button to close HTML5 application and the Java Swing window

If there is a problem rendering the url please check your windows display settings to see ensure scaling is set to 100%.

Source Code Review for embedded OpenFin application

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/WindowEmbedDemo.java

  1. create a canvas and place it where the HTML5 application should be embedded.
embedCanvas = newjava.awt.Canvas();
panel.add(embedCanvas, BorderLayout.CENTER);
  1. listen to the canvas resize event, and resize embedded HTML5 application accordingly.
embedCanvas.addComponentListener(newComponentAdapter() {
@OverridepublicvoidcomponentResized(ComponentEventevent) {
super.componentResized(event);
DimensionnewSize = event.getComponent().getSize();
try {
if (startupHtml5app != null) {
startupHtml5app.getWindow().embedComponentSizeChange((int)newSize.getWidth(), (int)newSize.getHeight());
}
} catch (Exceptione) {
e.printStackTrace();
}
}
});
  1. launch and connect to OpenFin runtime
this.desktopConnection = newDesktopConnection(appUuid);
DesktopStateListenerlistener = newDesktopStateListener() {...};
RuntimeConfigurationconfiguration = newRuntimeConfiguration();
configuration.setRuntimeVersion(desktopVersion);
desktopConnection.connect(configuration, listener, 60);
  1. create HTML5 application
ApplicationOptionsoptions = newApplicationOptions(startupUuid, startupUuid, openfin_app_url);
WindowOptionsmainWindowOptions = newWindowOptions();
options.setMainWindowOptions(mainWindowOptions);
DemoUtils.runApplication(options, this.desktopConnection, newAckListener() {...});
  1. embed HTML5 application into the canvas
startupHtml5app = Application.wrap(this.startupUuid, this.desktopConnection);
Windowhtml5Wnd = startupHtml5app.getWindow();
longparentHWndId = Native.getComponentID(this.embedCanvas);
html5Wnd.embedInto(parentHWndId, this.embedCanvas.getWidth(), this.embedCanvas.getHeight(), newAckListener() {...});

More Info

More information and API documentation can be found at https://openfin.co/java-api/

Disclaimers

  • This is a starter example and intended to demonstrate to app providers a sample of how to approach an implementation. There are potentially other ways to approach it and alternatives could be considered.
  • Its possible that the repo is not actively maintained.

License

MIT

The code in this repository is covered by the included license.

However, if you run this code, it may call on the OpenFin RVM or OpenFin Runtime, which are covered by OpenFin’s Developer, Community, and Enterprise licenses. You can learn more about OpenFin licensing at the links listed below or just email us at support@openfin.co with questions.

https://openfin.co/developer-agreement/
https://openfin.co/licensing/

Support

Please enter an issue in the repo for any questions or problems.
Alternatively, please contact us at support@openfin.co

About

Examples for OpenFin Java adapter

Resources

Stars

19 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - openfin/java-example: Examples for OpenFin Java adapter · GitHub
Skip to content
This repository was archived by the owner on Apr 16, 2026. It is now read-only.

Repository files navigation

Java Adapter Example

Overview

The following repo contains examples for OpenFin's Java adapter.

Guidelines

Run the example of connecting to OpenFin and creating applications

  1. Clone this repository

  2. Go to release directory and start run.bat

  3. Once the java app starts, click on Start button, which should start OpenFin Runtime. The java app will wait and try to connect to OpenFin Runtime.

  4. Once OpenFin Runtime is started and Java app connects successfully, "Create Application" button is enabled. You can click on the button to bring up a dialog for entering configuration of any HTML5 app. By default, the dialog is pre-populated with configuration for Hello OpenFin demo app.

  5. You can use buttons in Window Control section to move and re-size HTML5 window of Hello OpenFin app.

  6. Click "Create Application" button, which should start a dialog with all the fields pre-populated for our Hello OpenFin demo HTML5 application. Just click on "Create" button.

  7. After Hello OpenFin starts, you can use the buttons under Window Control of Java app to control Hello OpenFin window.

Source Code Review

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/OpenFinDesktopDemo.java. The followings overview of how it communicates with OpenFin Runtime with API calls supported by the Java adapter:

  1. Create connection object:
this.desktopConnection = newDesktopConnection("OpenFinDesktopDemo");

This code just creates an instance of DesktopConnection and it does not try to connect to runtime.

  1. Launch and connect to stable version of OpenFin runtime:
// create an instance of RuntimeConfiguration and configure Runtime by setting properties in RuntimeConfigurationthis.runtimeConfiguration = newRuntimeConfiguration();
// launch and connect to OpenFin RuntimedesktopConnection.connect(this.runtimeConfiguration, listener, 10000);

listener is an instance of DesktopStateListener which provides callback on status of connections to runtime.

  1. Create new application when clicking on Create App:
Applicationapp = newApplication(options, desktopConnection, newAckListener() {
@OverridepublicvoidonSuccess(Ackack) {
Applicationapplication = (Application) ack.getSource();
application.run(); // run the app
}
@OverridepublicvoidonError(Ackack) {
}
});

options is an instance of ApplicationOptions, which is populated from App Create dialog. AckListener interface provides callback for the operation.

Once the application is created successfully, you can take actions on its window:

  1. Change opacity:
WindowOptionsoptions = newWindowOptions();
options.setOpacity(newOpacityValue);
application.getWindow().updateOptions(options, null);
  1. Change Window size
application.getWindow().resizeBy(10, 10, "top-left");
  1. Publishes messages to a topic with InterApplicationBus
org.json.JSONObjectmessage = createSomeJsonMessage();
desktopConnection.getInterApplicationBus().publish("someTopic", message);
  1. Subscribes to a topic with InterApplicationBus
desktopConnection.getInterApplicationBus().subscribe("*", "someTopic", newBusListener() {
publicvoidonMessageReceived(StringsourceUuid, Stringtopic, Objectpayload) {
JSONObjectmessage = (JSONObject) payload;
}
});

Run the example of embedding HTML5 application into a Java Swing window

  1. Clone this repository

  2. Go to release directory and start embed.bat ( the default embedded url is https://openfin.co. Pass the url you wish to load if you want something different e.g. embed.bat https://www.mydomain.com )

  3. Once the java app starts, click on "Launch OpenFin" button, which should start OpenFin Runtime and embed the OpenFin application that points to https://openfin.co (or your custom url if you specified one)

  4. Click "Shutdown OpenFin" button to close HTML5 application and the Java Swing window

If there is a problem rendering the url please check your windows display settings to see ensure scaling is set to 100%.

Source Code Review for embedded OpenFin application

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/WindowEmbedDemo.java

  1. create a canvas and place it where the HTML5 application should be embedded.
embedCanvas = newjava.awt.Canvas();
panel.add(embedCanvas, BorderLayout.CENTER);
  1. listen to the canvas resize event, and resize embedded HTML5 application accordingly.
embedCanvas.addComponentListener(newComponentAdapter() {
@OverridepublicvoidcomponentResized(ComponentEventevent) {
super.componentResized(event);
DimensionnewSize = event.getComponent().getSize();
try {
if (startupHtml5app != null) {
startupHtml5app.getWindow().embedComponentSizeChange((int)newSize.getWidth(), (int)newSize.getHeight());
}
} catch (Exceptione) {
e.printStackTrace();
}
}
});
  1. launch and connect to OpenFin runtime
this.desktopConnection = newDesktopConnection(appUuid);
DesktopStateListenerlistener = newDesktopStateListener() {...};
RuntimeConfigurationconfiguration = newRuntimeConfiguration();
configuration.setRuntimeVersion(desktopVersion);
desktopConnection.connect(configuration, listener, 60);
  1. create HTML5 application
ApplicationOptionsoptions = newApplicationOptions(startupUuid, startupUuid, openfin_app_url);
WindowOptionsmainWindowOptions = newWindowOptions();
options.setMainWindowOptions(mainWindowOptions);
DemoUtils.runApplication(options, this.desktopConnection, newAckListener() {...});
  1. embed HTML5 application into the canvas
startupHtml5app = Application.wrap(this.startupUuid, this.desktopConnection);
Windowhtml5Wnd = startupHtml5app.getWindow();
longparentHWndId = Native.getComponentID(this.embedCanvas);
html5Wnd.embedInto(parentHWndId, this.embedCanvas.getWidth(), this.embedCanvas.getHeight(), newAckListener() {...});

More Info

More information and API documentation can be found at https://openfin.co/java-api/

Disclaimers

  • This is a starter example and intended to demonstrate to app providers a sample of how to approach an implementation. There are potentially other ways to approach it and alternatives could be considered.
  • Its possible that the repo is not actively maintained.

License

MIT

The code in this repository is covered by the included license.

However, if you run this code, it may call on the OpenFin RVM or OpenFin Runtime, which are covered by OpenFin’s Developer, Community, and Enterprise licenses. You can learn more about OpenFin licensing at the links listed below or just email us at support@openfin.co with questions.

https://openfin.co/developer-agreement/
https://openfin.co/licensing/

Support

Please enter an issue in the repo for any questions or problems.
Alternatively, please contact us at support@openfin.co

About

Examples for OpenFin Java adapter

Resources

Stars

19 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - openfin/java-example: Examples for OpenFin Java adapter · GitHub
Skip to content
This repository was archived by the owner on Apr 16, 2026. It is now read-only.

Repository files navigation

Java Adapter Example

Overview

The following repo contains examples for OpenFin's Java adapter.

Guidelines

Run the example of connecting to OpenFin and creating applications

  1. Clone this repository

  2. Go to release directory and start run.bat

  3. Once the java app starts, click on Start button, which should start OpenFin Runtime. The java app will wait and try to connect to OpenFin Runtime.

  4. Once OpenFin Runtime is started and Java app connects successfully, "Create Application" button is enabled. You can click on the button to bring up a dialog for entering configuration of any HTML5 app. By default, the dialog is pre-populated with configuration for Hello OpenFin demo app.

  5. You can use buttons in Window Control section to move and re-size HTML5 window of Hello OpenFin app.

  6. Click "Create Application" button, which should start a dialog with all the fields pre-populated for our Hello OpenFin demo HTML5 application. Just click on "Create" button.

  7. After Hello OpenFin starts, you can use the buttons under Window Control of Java app to control Hello OpenFin window.

Source Code Review

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/OpenFinDesktopDemo.java. The followings overview of how it communicates with OpenFin Runtime with API calls supported by the Java adapter:

  1. Create connection object:
this.desktopConnection = newDesktopConnection("OpenFinDesktopDemo");

This code just creates an instance of DesktopConnection and it does not try to connect to runtime.

  1. Launch and connect to stable version of OpenFin runtime:
// create an instance of RuntimeConfiguration and configure Runtime by setting properties in RuntimeConfigurationthis.runtimeConfiguration = newRuntimeConfiguration();
// launch and connect to OpenFin RuntimedesktopConnection.connect(this.runtimeConfiguration, listener, 10000);

listener is an instance of DesktopStateListener which provides callback on status of connections to runtime.

  1. Create new application when clicking on Create App:
Applicationapp = newApplication(options, desktopConnection, newAckListener() {
@OverridepublicvoidonSuccess(Ackack) {
Applicationapplication = (Application) ack.getSource();
application.run(); // run the app
}
@OverridepublicvoidonError(Ackack) {
}
});

options is an instance of ApplicationOptions, which is populated from App Create dialog. AckListener interface provides callback for the operation.

Once the application is created successfully, you can take actions on its window:

  1. Change opacity:
WindowOptionsoptions = newWindowOptions();
options.setOpacity(newOpacityValue);
application.getWindow().updateOptions(options, null);
  1. Change Window size
application.getWindow().resizeBy(10, 10, "top-left");
  1. Publishes messages to a topic with InterApplicationBus
org.json.JSONObjectmessage = createSomeJsonMessage();
desktopConnection.getInterApplicationBus().publish("someTopic", message);
  1. Subscribes to a topic with InterApplicationBus
desktopConnection.getInterApplicationBus().subscribe("*", "someTopic", newBusListener() {
publicvoidonMessageReceived(StringsourceUuid, Stringtopic, Objectpayload) {
JSONObjectmessage = (JSONObject) payload;
}
});

Run the example of embedding HTML5 application into a Java Swing window

  1. Clone this repository

  2. Go to release directory and start embed.bat ( the default embedded url is https://openfin.co. Pass the url you wish to load if you want something different e.g. embed.bat https://www.mydomain.com )

  3. Once the java app starts, click on "Launch OpenFin" button, which should start OpenFin Runtime and embed the OpenFin application that points to https://openfin.co (or your custom url if you specified one)

  4. Click "Shutdown OpenFin" button to close HTML5 application and the Java Swing window

If there is a problem rendering the url please check your windows display settings to see ensure scaling is set to 100%.

Source Code Review for embedded OpenFin application

Source code for the example is located in /src/main/java/com/openfin/desktop/demo/WindowEmbedDemo.java

  1. create a canvas and place it where the HTML5 application should be embedded.
embedCanvas = newjava.awt.Canvas();
panel.add(embedCanvas, BorderLayout.CENTER);
  1. listen to the canvas resize event, and resize embedded HTML5 application accordingly.
embedCanvas.addComponentListener(newComponentAdapter() {
@OverridepublicvoidcomponentResized(ComponentEventevent) {
super.componentResized(event);
DimensionnewSize = event.getComponent().getSize();
try {
if (startupHtml5app != null) {
startupHtml5app.getWindow().embedComponentSizeChange((int)newSize.getWidth(), (int)newSize.getHeight());
}
} catch (Exceptione) {
e.printStackTrace();
}
}
});
  1. launch and connect to OpenFin runtime
this.desktopConnection = newDesktopConnection(appUuid);
DesktopStateListenerlistener = newDesktopStateListener() {...};
RuntimeConfigurationconfiguration = newRuntimeConfiguration();
configuration.setRuntimeVersion(desktopVersion);
desktopConnection.connect(configuration, listener, 60);
  1. create HTML5 application
ApplicationOptionsoptions = newApplicationOptions(startupUuid, startupUuid, openfin_app_url);
WindowOptionsmainWindowOptions = newWindowOptions();
options.setMainWindowOptions(mainWindowOptions);
DemoUtils.runApplication(options, this.desktopConnection, newAckListener() {...});
  1. embed HTML5 application into the canvas
startupHtml5app = Application.wrap(this.startupUuid, this.desktopConnection);
Windowhtml5Wnd = startupHtml5app.getWindow();
longparentHWndId = Native.getComponentID(this.embedCanvas);
html5Wnd.embedInto(parentHWndId, this.embedCanvas.getWidth(), this.embedCanvas.getHeight(), newAckListener() {...});

More Info

More information and API documentation can be found at https://openfin.co/java-api/

Disclaimers

  • This is a starter example and intended to demonstrate to app providers a sample of how to approach an implementation. There are potentially other ways to approach it and alternatives could be considered.
  • Its possible that the repo is not actively maintained.

License

MIT

The code in this repository is covered by the included license.

However, if you run this code, it may call on the OpenFin RVM or OpenFin Runtime, which are covered by OpenFin’s Developer, Community, and Enterprise licenses. You can learn more about OpenFin licensing at the links listed below or just email us at support@openfin.co with questions.

https://openfin.co/developer-agreement/
https://openfin.co/licensing/

Support

Please enter an issue in the repo for any questions or problems.
Alternatively, please contact us at support@openfin.co

About

Examples for OpenFin Java adapter

Resources

Stars

19 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages