@@ -205,42 +205,49 @@ public void run() {
205205
206206 private void dockToStartupApp () {
207207 try {
208- Window w = Window .wrap (startupUuid , javaWindowName , controller );
209- w .joinGroup (Window .wrap (startupUuid , startupUuid , controller ));
208+ externalWindowObserver = new ExternalWindowObserver (controller .getPort (), startupUuid , javaWindowName , jFrame ,
209+ new AckListener () {
210+ @ Override
211+ public void onSuccess (Ack ack ) {
212+ if (ack .isSuccessful ()) {
213+ try {
214+ Window w = Window .wrap (startupUuid , javaWindowName , controller );
215+ w .joinGroup (Window .wrap (startupUuid , startupUuid , controller ));
216+ dock .setEnabled (false );
217+ undock .setEnabled (true );
218+ } catch (Exception e ) {
219+ e .printStackTrace ();
220+ }
221+ }
222+ }
223+ @ Override
224+ public void onError (Ack ack ) {
225+ }
226+ });
210227 } catch (Exception e ) {
211228 e .printStackTrace ();
212229 }
213- dock .setEnabled (false );
214- undock .setEnabled (true );
215230 }
216231
217232 private void undockFromStartupApp () {
218233 try {
219234 Window w = Window .wrap (startupUuid , javaWindowName , controller );
220235 w .leaveGroup ();
236+ externalWindowObserver .dispose ();
221237 } catch (Exception e ) {
222238 e .printStackTrace ();
223239 }
224240 dock .setEnabled (true );
225241 undock .setEnabled (false );
226242 }
227243
228- private void registerExternalWindow () {
229- try {
230- externalWindowObserver = new ExternalWindowObserver (controller .getPort (), startupUuid , javaWindowName , jFrame );
231- } catch (Exception e ) {
232- e .printStackTrace ();
233- }
234-
235- }
236244 private void runStartAction () {
237245 try {
238246 DesktopStateListener listener = new DesktopStateListener () {
239247 @ Override
240248 public void onReady () {
241249 updateMessagePanel ("Connection authorized." );
242250 setMainButtonsEnabled (true );
243- registerExternalWindow ();
244251 }
245252
246253 @ Override
0 commit comments