/** * Create listener for property change on TopComponent.Registry * * @return */ private PropertyChangeListener createRegistryListener() { return (PropertyChangeEvent evt) -> { if (TopComponent.Registry.PROP_CURRENT_NODES.equals(evt.getPropertyName()) || TopComponent.Registry.PROP_OPENED.equals(evt.getPropertyName()) || TopComponent.Registry.PROP_ACTIVATED.equals(evt.getPropertyName())) { if (TopComponent.Registry.PROP_ACTIVATED.equals(evt.getPropertyName()) || TopComponent.Registry.PROP_OPENED.equals(evt.getPropertyName())) { // listen to Lookup changes of showing editor windows watchOpenedTCs(); } if (TopComponent.Registry.PROP_ACTIVATED.equals(evt.getPropertyName())) { // switch lookup listener for the activated TC switchLookupListener(); } run(); } }; }
public synchronized void propertyChange(PropertyChangeEvent evt) { String propName = evt.getPropertyName(); if (TopComponent.Registry.PROP_ACTIVATED.equals(propName)) { TopComponent activated = (TopComponent) evt.getNewValue(); if (activated instanceof CloneableEditorSupport.Pane) editorActivated(); else editorDeactivated(); } else if (EditorUI.COMPONENT_PROPERTY.equals(propName)) { JTextComponent component = (JTextComponent) evt.getNewValue(); if (component != null) { // just installed component.addPropertyChangeListener(this); if (component.isDisplayable()) { startTCRegistryListening(); } } else { // just deinstalled component = (JTextComponent) evt.getOldValue(); component.removePropertyChangeListener(this); stopTCRegistryListening(); } reset(); } else if ("editorKit".equals(propName)) { // NOI18N reset(); } else if ("ancestor".equals(propName)) { // NOI18N if (((Component) evt.getSource()).isDisplayable()) { // now displayable startTCRegistryListening(); } else { // not displayable stopTCRegistryListening(); } } }