package sk.stuba.fiit.perconik.core.resources;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IWorkbenchPartReference;
import sk.stuba.fiit.perconik.core.listeners.EditorListener;
import sk.stuba.fiit.perconik.core.listeners.PartListener;
enum EditorHandler implements Handler<EditorListener> {
INSTANCE;
private static final class PartFilter extends InternalFilter<EditorListener> implements PartListener {
PartFilter(final EditorListener listener) {
super(listener);
}
public void partOpened(final IWorkbenchPartReference reference) {
if (reference instanceof IEditorReference) {
this.listener.editorOpened((IEditorReference) reference);
}
}
public void partClosed(final IWorkbenchPartReference reference) {
if (reference instanceof IEditorReference) {
this.listener.editorClosed((IEditorReference) reference);
}
}
public void partActivated(final IWorkbenchPartReference reference) {
if (reference instanceof IEditorReference) {
this.listener.editorActivated((IEditorReference) reference);
}
}
public void partDeactivated(final IWorkbenchPartReference reference) {
if (reference instanceof IEditorReference) {
this.listener.editorDeactivated((IEditorReference) reference);
}
}
public void partVisible(final IWorkbenchPartReference reference) {
if (reference instanceof IEditorReference) {
this.listener.editorVisible((IEditorReference) reference);
}
}
public void partHidden(final IWorkbenchPartReference reference) {
if (reference instanceof IEditorReference) {
this.listener.editorHidden((IEditorReference) reference);
}
}
public void partBroughtToTop(final IWorkbenchPartReference reference) {
if (reference instanceof IEditorReference) {
this.listener.editorBroughtToTop((IEditorReference) reference);
}
}
public void partInputChanged(final IWorkbenchPartReference reference) {
if (reference instanceof IEditorReference) {
this.listener.editorInputChanged((IEditorReference) reference);
}
}
}
public void register(final EditorListener listener) {
PartHandler.INSTANCE.register(new PartFilter(listener));
}
public void unregister(final EditorListener listener) {
PartHandler.INSTANCE.unregister(new PartFilter(listener));
}
}