package sk.stuba.fiit.perconik.core.resources; import org.eclipse.ui.IWorkbenchWindow; import sk.stuba.fiit.perconik.core.listeners.PageListener; import sk.stuba.fiit.perconik.core.listeners.WindowListener; final class PageHook extends InternalHook<IWorkbenchWindow, PageListener> implements WindowListener { PageHook(final PageListener listener) { super(new WindowHandler(listener)); } static final class Support extends AbstractHookSupport<PageHook, IWorkbenchWindow, PageListener> { public Hook<IWorkbenchWindow, PageListener> create(final PageListener listener) { return new PageHook(listener); } } private static final class WindowHandler extends InternalHandler<IWorkbenchWindow, PageListener> { WindowHandler(final PageListener listener) { super(IWorkbenchWindow.class, listener); } public void register(final IWorkbenchWindow window) { window.addPageListener(this.listener); } public void unregister(final IWorkbenchWindow window) { window.removePageListener(this.listener); } } @Override void preRegisterInternal() { Hooks.addWindowsAsynchronouslyTo(this); } public void windowOpened(final IWorkbenchWindow window) { this.add(window); } public void windowClosed(final IWorkbenchWindow window) { this.remove(window); } public void windowActivated(final IWorkbenchWindow window) {} public void windowDeactivated(final IWorkbenchWindow window) {} }