Skip to content

Commit 33ec32b

Browse files
committed
ADAP-51: updated docking example to use release/openfin-snap-dock-1.0.0.0.jar
1 parent 26b3f8e commit 33ec32b

7 files changed

Lines changed: 299 additions & 126 deletions

File tree

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@
4343
<artifactId>openfin-desktop-java-adapter</artifactId>
4444
<version>5.44.2.4</version>
4545
</dependency>
46+
<dependency>
47+
<groupId>co.openfin</groupId>
48+
<artifactId>openfin-snap-dock</artifactId>
49+
<version>1.0.0.0</version>
50+
</dependency>
4651
<dependency>
4752
<groupId>tablelayout</groupId>
4853
<artifactId>TableLayout</artifactId>
@@ -129,6 +134,7 @@
129134
<plugin>
130135
<groupId>org.apache.maven.plugins</groupId>
131136
<artifactId>maven-surefire-plugin</artifactId>
137+
<version>2.19.1</version>
132138
<configuration>
133139
<skipTests>${skipTests}</skipTests>
134140
</configuration>

release/SimpleDockingExample.html

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<title>Simple OpenFin app</title>
5+
<script type="text/javascript" language="javascript">
6+
function init() {
7+
var undockButton = document.getElementById('undockButton');
8+
undockButton.addEventListener('click', undock);
9+
undockButton.style.display = 'none';
10+
11+
fin.desktop.main(function () {
12+
var w = fin.desktop.Window.getCurrent();
13+
document.getElementById("status").innerHTML = "Connected to OpenFin Runtime " + w.app_uuid + ":" + w.name;
14+
15+
fin.desktop.InterApplicationBus.subscribe("*", "window-docked", onWindowDocked);
16+
fin.desktop.InterApplicationBus.subscribe('*', 'window-undocked', onWindowUnDocked);
17+
});
18+
}
19+
20+
function onWindowDocked(event) {
21+
var w = fin.desktop.Window.getCurrent();
22+
if (w.app_uuid == event.applicationUuid && w.name == event.windowName) {
23+
document.getElementById('undockButton').style.display = 'block';
24+
}
25+
}
26+
27+
function onWindowUnDocked(event) {
28+
var w = fin.desktop.Window.getCurrent();
29+
if (w.app_uuid == event.applicationUuid && w.name == event.windowName) {
30+
document.getElementById('undockButton').style.display = 'none';
31+
}
32+
}
33+
34+
function undock() {
35+
var w = fin.desktop.Window.getCurrent();
36+
fin.desktop.InterApplicationBus.publish('undock-window', {
37+
applicationUuid: w.app_uuid,
38+
windowName: w.name
39+
});
40+
}
41+
42+
</script>
43+
</head>
44+
<body onload='init();' >
45+
<div>Simple OpenFin app</div>
46+
<div id="status"></div>
47+
<button id="undockButton">Undock</button>
48+
</body>
49+
</html>

release/docking.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
java -cp openfin-desktop-java-example-5.44.2.4.jar;openfin-desktop-java-adapter-5.44.2.4.jar;TableLayout-20050920.jar;jna-4.1.0.jar;jna-platform-4.1.0.jar;json-20140107.jar;slf4j-api-1.7.5.jar;slf4j-jdk14-1.6.1.jar -Djava.util.logging.config.file=logging.properties -Dcom.openfin.temp=%LocalAppData%\OpenFin\temp com.openfin.desktop.demo.OpenFinDockingDemo
1+
java -cp openfin-desktop-java-example-5.44.2.4.jar;openfin-desktop-java-adapter-5.44.2.4.jar;openfin-snap-dock-1.0.0.0.jar;TableLayout-20050920.jar;jna-4.1.0.jar;jna-platform-4.1.0.jar;json-20140107.jar;slf4j-api-1.7.5.jar;slf4j-jdk14-1.6.1.jar -Djava.util.logging.config.file=logging.properties -Dcom.openfin.temp=%LocalAppData%\OpenFin\temp com.openfin.desktop.demo.OpenFinDockingDemo
5.43 KB
Binary file not shown.
18 KB
Binary file not shown.
Lines changed: 128 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package com.openfin.desktop.demo;
22

33
import com.openfin.desktop.*;
4+
import org.json.JSONObject;
45
import org.slf4j.Logger;
56
import org.slf4j.LoggerFactory;
67

8+
import java.util.Objects;
79
import java.util.concurrent.CountDownLatch;
10+
import java.util.concurrent.ExecutionException;
811
import java.util.concurrent.TimeUnit;
912
import java.util.concurrent.atomic.AtomicReference;
1013

@@ -14,22 +17,132 @@
1417
public class DemoUtils {
1518
private static Logger logger = LoggerFactory.getLogger(DemoUtils.class.getName());
1619

17-
public static void addEventListener(Window window, String evenType, EventListener eventListener) throws Exception {
20+
public static void addEventListener(Application application, String evenType, EventListener eventListener, AckListener ackListener) throws Exception {
1821
logger.debug("addEventListener " + evenType);
19-
CountDownLatch latch = new CountDownLatch(1);
20-
window.addEventListener(evenType, eventListener, null);
21-
// window.addEventListener(evenType, eventListener, new AckListener() {
22-
// @Override
23-
// public void onSuccess(Ack ack) {
24-
// latch.countDown();
25-
// logger.debug("addEventListener ack " + ack.isSuccessful());
26-
// }
27-
// @Override
28-
// public void onError(Ack ack) {
29-
// logger.error(String.format("Error adding event listener %s %s", evenType, ack.getReason()));
30-
// }
31-
// });
32-
// latch.await(5, TimeUnit.SECONDS);
22+
application.addEventListener(evenType, eventListener, new AckListener() {
23+
@Override
24+
public void onSuccess(Ack ack) {
25+
logger.debug("addEventListener ack " + ack.isSuccessful());
26+
ackSuccess(ackListener, application);
27+
}
28+
@Override
29+
public void onError(Ack ack) {
30+
logger.error(String.format("Error adding event listener %s %s", evenType, ack.getReason()));
31+
ackError(ackListener, ack.getReason());
32+
}
33+
});
34+
}
35+
36+
public static void runApplication(ApplicationOptions options, DesktopConnection desktopConnection, AckListener ackListener) throws Exception {
37+
AtomicReference<Application> appRef = new AtomicReference<>();
38+
Application application = createApplication(options, desktopConnection, new AckListener() {
39+
@Override
40+
public void onSuccess(Ack ack) {
41+
try {
42+
runApplication(appRef.get(), true, ackListener);
43+
} catch (Exception e) {
44+
logger.error("Error running application", e);
45+
ackError(ackListener, e.getMessage());
46+
}
47+
}
48+
@Override
49+
public void onError(Ack ack) {
50+
logger.error(String.format("onError %s", ack.getReason()));
51+
ackError(ackListener, ack.getReason());
52+
}
53+
});
54+
appRef.set(application);
55+
}
56+
57+
public static void runApplication(Application application, boolean checkAppConnected, AckListener ackListener) throws Exception {
58+
EventListener listener = new EventListener() {
59+
@Override
60+
public void eventReceived(ActionEvent actionEvent) {
61+
if (actionEvent.getType().equals("started")) {
62+
if (!checkAppConnected) {
63+
ackSuccess(ackListener, application);
64+
}
65+
}
66+
else if (actionEvent.getType().equals("app-connected")) {
67+
if (checkAppConnected) {
68+
ackSuccess(ackListener, application);
69+
}
70+
}
71+
}
72+
};
73+
74+
AckListener eventAddAck = new AckListener() {
75+
@Override
76+
public void onSuccess(Ack ack) {
77+
application.run(new AckListener() {
78+
@Override
79+
public void onSuccess(Ack ack) {
80+
logger.debug(String.format("Successful run %s", application.getOptions().getUUID()));
81+
}
82+
@Override
83+
public void onError(Ack ack) {
84+
ackError(ackListener, ack.getReason());
85+
logger.error("Error running application", ack.getReason());
86+
}
87+
});
88+
}
89+
@Override
90+
public void onError(Ack ack) {
91+
logger.error(String.format("Error adding event listener %s", ack.getReason()));
92+
}
93+
};
94+
if (checkAppConnected) {
95+
addEventListener(application.getWindow(), "app-connected", listener, eventAddAck);
96+
} else {
97+
addEventListener(application, "started", listener, eventAddAck);
98+
}
99+
100+
}
101+
102+
public static Application createApplication(ApplicationOptions options, DesktopConnection desktopConnection, AckListener ackListener) throws Exception {
103+
Application application = new Application(options, desktopConnection, new AckListener() {
104+
@Override
105+
public void onSuccess(Ack ack) {
106+
ackSuccess(ackListener, options);
107+
}
108+
109+
@Override
110+
public void onError(Ack ack) {
111+
logger.error("Error creating application", ack.getReason());
112+
ackError(ackListener, ack.getReason());
113+
}
114+
});
115+
return application;
116+
}
117+
118+
public static void addEventListener(Window window, String evenType, EventListener eventListener, AckListener ackListener) throws Exception {
119+
logger.debug("addEventListener " + evenType);
120+
window.addEventListener(evenType, eventListener, new AckListener() {
121+
@Override
122+
public void onSuccess(Ack ack) {
123+
logger.debug("addEventListener ack " + ack.isSuccessful());
124+
ackSuccess(ackListener, window);
125+
}
126+
@Override
127+
public void onError(Ack ack) {
128+
logger.error(String.format("Error adding event listener %s %s", evenType, ack.getReason()));
129+
ackError(ackListener, ack.getReason());
130+
}
131+
});
132+
}
133+
134+
public static void ackSuccess(AckListener ackListener, Object source) {
135+
if (ackListener != null) {
136+
ackListener.onSuccess(new Ack(new JSONObject(), source));
137+
}
138+
}
139+
140+
public static void ackError(AckListener ackListener, String reason) {
141+
if (ackListener != null) {
142+
JSONObject obj = new JSONObject();
143+
obj.put("reason", reason);
144+
ackListener.onError(new Ack(obj, null));
145+
}
33146
}
34147

35148
}

0 commit comments

Comments
 (0)