340 synchronized (this) { 341 stagePulseList.putAll(stagePulseListeners); 342 scenePulseList.putAll(scenePulseListeners); 343 postScenePulseList.putAll(postScenePulseListeners); 344 } 345 for (Map.Entry<TKPulseListener,AccessControlContext> entry : stagePulseList.entrySet()) { 346 runPulse(entry.getKey(), entry.getValue()); 347 } 348 for (Map.Entry<TKPulseListener,AccessControlContext> entry : scenePulseList.entrySet()) { 349 runPulse(entry.getKey(), entry.getValue()); 350 } 351 for (Map.Entry<TKPulseListener,AccessControlContext> entry : postScenePulseList.entrySet()) { 352 runPulse(entry.getKey(), entry.getValue()); 353 } 354 355 if (lastTkPulseListener != null) { 356 runPulse(lastTkPulseListener, lastTkPulseAcc); 357 } 358 } 359 public void addStageTkPulseListener(TKPulseListener listener) { 360 synchronized (this) { 361 AccessControlContext acc = AccessController.getContext(); 362 stagePulseListeners.put(listener, acc); 363 } 364 } 365 public void removeStageTkPulseListener(TKPulseListener listener) { 366 synchronized (this) { 367 stagePulseListeners.remove(listener); 368 } 369 } 370 public void addSceneTkPulseListener(TKPulseListener listener) { 371 synchronized (this) { 372 AccessControlContext acc = AccessController.getContext(); 373 scenePulseListeners.put(listener, acc); 374 } 375 } 376 public void removeSceneTkPulseListener(TKPulseListener listener) { 377 synchronized (this) { 378 scenePulseListeners.remove(listener); 379 } 380 } 381 public void addPostSceneTkPulseListener(TKPulseListener listener) { 382 synchronized (this) { 383 AccessControlContext acc = AccessController.getContext(); 384 postScenePulseListeners.put(listener, acc); 385 } 386 } 387 public void removePostSceneTkPulseListener(TKPulseListener listener) { 388 synchronized (this) { 389 postScenePulseListeners.remove(listener); 390 } 391 } 392 393 public void addTkListener(TKListener listener) { 394 AccessControlContext acc = AccessController.getContext(); 395 toolkitListeners.put(listener, acc); 396 } 397 398 public void removeTkListener(TKListener listener) { 399 toolkitListeners.remove(listener); 400 } 401 402 private TKPulseListener lastTkPulseListener = null; 403 private AccessControlContext lastTkPulseAcc = null; 404 public void setLastTkPulseListener(TKPulseListener listener) { 405 lastTkPulseAcc = AccessController.getContext(); 406 lastTkPulseListener = listener; 407 } 408 409 public void addShutdownHook(Runnable hook) { 410 synchronized (shutdownHooks) { 411 shutdownHooks.add(hook); 412 } 413 } 414 415 public void removeShutdownHook(Runnable hook) { 416 synchronized (shutdownHooks) { 417 shutdownHooks.remove(hook); 418 } 419 } 420 421 protected void notifyShutdownHooks() { 422 List<Runnable> hooks; 423 synchronized (shutdownHooks) { 424 hooks = new ArrayList<Runnable>(shutdownHooks); 425 shutdownHooks.clear(); 426 } 427 428 for (Runnable hook : hooks) { 429 hook.run(); | 340 synchronized (this) { 341 stagePulseList.putAll(stagePulseListeners); 342 scenePulseList.putAll(scenePulseListeners); 343 postScenePulseList.putAll(postScenePulseListeners); 344 } 345 for (Map.Entry<TKPulseListener,AccessControlContext> entry : stagePulseList.entrySet()) { 346 runPulse(entry.getKey(), entry.getValue()); 347 } 348 for (Map.Entry<TKPulseListener,AccessControlContext> entry : scenePulseList.entrySet()) { 349 runPulse(entry.getKey(), entry.getValue()); 350 } 351 for (Map.Entry<TKPulseListener,AccessControlContext> entry : postScenePulseList.entrySet()) { 352 runPulse(entry.getKey(), entry.getValue()); 353 } 354 355 if (lastTkPulseListener != null) { 356 runPulse(lastTkPulseListener, lastTkPulseAcc); 357 } 358 } 359 public void addStageTkPulseListener(TKPulseListener listener) { 360 if (listener == null) { 361 return; 362 } 363 synchronized (this) { 364 AccessControlContext acc = AccessController.getContext(); 365 stagePulseListeners.put(listener, acc); 366 } 367 } 368 public void removeStageTkPulseListener(TKPulseListener listener) { 369 synchronized (this) { 370 stagePulseListeners.remove(listener); 371 } 372 } 373 public void addSceneTkPulseListener(TKPulseListener listener) { 374 if (listener == null) { 375 return; 376 } 377 synchronized (this) { 378 AccessControlContext acc = AccessController.getContext(); 379 scenePulseListeners.put(listener, acc); 380 } 381 } 382 public void removeSceneTkPulseListener(TKPulseListener listener) { 383 synchronized (this) { 384 scenePulseListeners.remove(listener); 385 } 386 } 387 public void addPostSceneTkPulseListener(TKPulseListener listener) { 388 if (listener == null) { 389 return; 390 } 391 synchronized (this) { 392 AccessControlContext acc = AccessController.getContext(); 393 postScenePulseListeners.put(listener, acc); 394 } 395 } 396 public void removePostSceneTkPulseListener(TKPulseListener listener) { 397 synchronized (this) { 398 postScenePulseListeners.remove(listener); 399 } 400 } 401 402 public void addTkListener(TKListener listener) { 403 if (listener == null) { 404 return; 405 } 406 AccessControlContext acc = AccessController.getContext(); 407 toolkitListeners.put(listener, acc); 408 } 409 410 public void removeTkListener(TKListener listener) { 411 toolkitListeners.remove(listener); 412 } 413 414 private TKPulseListener lastTkPulseListener = null; 415 private AccessControlContext lastTkPulseAcc = null; 416 public void setLastTkPulseListener(TKPulseListener listener) { 417 lastTkPulseAcc = AccessController.getContext(); 418 lastTkPulseListener = listener; 419 } 420 421 public void addShutdownHook(Runnable hook) { 422 if (hook == null) { 423 return; 424 } 425 synchronized (shutdownHooks) { 426 shutdownHooks.add(hook); 427 } 428 } 429 430 public void removeShutdownHook(Runnable hook) { 431 synchronized (shutdownHooks) { 432 shutdownHooks.remove(hook); 433 } 434 } 435 436 protected void notifyShutdownHooks() { 437 List<Runnable> hooks; 438 synchronized (shutdownHooks) { 439 hooks = new ArrayList<Runnable>(shutdownHooks); 440 shutdownHooks.clear(); 441 } 442 443 for (Runnable hook : hooks) { 444 hook.run(); |