static void attach(JPDADebugger d, ToolTipSupport tts) { DebuggerStateChangeListener dscl = new DebuggerStateChangeListener(tts); d.addPropertyChangeListener(JPDADebugger.PROP_STATE, dscl); tts.addPropertyChangeListener(propListener -> { if (ToolTipSupport.PROP_STATUS.equals(propListener.getPropertyName()) && !tts.isToolTipVisible()) { d.removePropertyChangeListener(JPDADebugger.PROP_STATE, dscl); } }); }
@Override protected void handleToolTipClose(DebuggerEngine engine, ToolTipSupport tts) { JPDADebugger d = engine.lookupFirst(null, JPDADebugger.class); if (d == null) { return ; } PropertyChangeListener l = (PropertyChangeEvent evt) -> { int state = ((Integer) evt.getNewValue()); if (JPDADebugger.STATE_DISCONNECTED == state || JPDADebugger.STATE_RUNNING == state) { SwingUtilities.invokeLater(() -> tts.setToolTipVisible(false) ); } }; d.addPropertyChangeListener(JPDADebugger.PROP_STATE, l); tts.addPropertyChangeListener(pl -> { if (ToolTipSupport.PROP_STATUS.equals(pl.getPropertyName()) && !tts.isToolTipVisible()) { d.removePropertyChangeListener(JPDADebugger.PROP_STATE, l); } }); }