package sk.stuba.fiit.perconik.core.resources; import org.eclipse.ui.IWorkbenchWindow; import sk.stuba.fiit.perconik.core.listeners.SelectionListener; import sk.stuba.fiit.perconik.core.listeners.WindowListener; final class SelectionHook extends InternalHook<IWorkbenchWindow, SelectionListener> implements WindowListener { SelectionHook(final SelectionListener listener) { super(new WindowHandler(listener)); } static final class Support extends AbstractHookSupport<SelectionHook, IWorkbenchWindow, SelectionListener> { public Hook<IWorkbenchWindow, SelectionListener> create(final SelectionListener listener) { return new SelectionHook(listener); } } private static final class WindowHandler extends InternalHandler<IWorkbenchWindow, SelectionListener> { WindowHandler(final SelectionListener listener) { super(IWorkbenchWindow.class, listener); } public void register(final IWorkbenchWindow window) { window.getSelectionService().addSelectionListener(this.listener); } public void unregister(final IWorkbenchWindow window) { window.getSelectionService().removeSelectionListener(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) {} }