@Override public void addEditorMouseListener(@NotNull final EditorMouseListener listener) { assert isValid(); EditorMouseListener wrapper = new EditorMouseListener() { @Override public void mousePressed(EditorMouseEvent e) { listener.mousePressed( new EditorMouseEvent(EditorWindow.this, e.getMouseEvent(), e.getArea())); } @Override public void mouseClicked(EditorMouseEvent e) { listener.mouseClicked( new EditorMouseEvent(EditorWindow.this, e.getMouseEvent(), e.getArea())); } @Override public void mouseReleased(EditorMouseEvent e) { listener.mouseReleased( new EditorMouseEvent(EditorWindow.this, e.getMouseEvent(), e.getArea())); } @Override public void mouseEntered(EditorMouseEvent e) { listener.mouseEntered( new EditorMouseEvent(EditorWindow.this, e.getMouseEvent(), e.getArea())); } @Override public void mouseExited(EditorMouseEvent e) { listener.mouseExited( new EditorMouseEvent(EditorWindow.this, e.getMouseEvent(), e.getArea())); } }; myEditorMouseListeners.registerWrapper(listener, wrapper); myDelegate.addEditorMouseListener(wrapper); }