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