package org.esa.snap.netbeans.docwin; import org.openide.windows.TopComponent; import java.lang.reflect.InvocationTargetException; import java.util.logging.Logger; /** * Implementation of a {@link NotifiableComponent} based on reflection. * * @author Norman Fomferra * @since 1.0 */ class NotifiableComponentImpl implements NotifiableComponent { private final TopComponent topComponent; public NotifiableComponentImpl(TopComponent topComponent) { this.topComponent = topComponent; } public void componentOpened() { invoke("componentOpened"); } @Override public void componentClosed() { invoke("componentClosed"); } @Override public void componentShowing() { invoke("componentShowing"); } @Override public void componentHidden() { invoke("componentHidden"); } @Override public void componentActivated() { invoke("componentActivated"); } @Override public void componentDeactivated() { invoke("componentDeactivated"); } private void invoke(String name) { try { topComponent.getClass().getMethod(name).invoke(topComponent); } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { Logger.getLogger(NotifiableComponentImpl.class.getName()).warning(e.getMessage()); } } }