public void addTerminalMouseListener()

in ui/src/com/jediterm/terminal/ui/TerminalPanel.java [1053:1120]


  public void addTerminalMouseListener(final TerminalMouseListener listener) {
    addMouseListener(new MouseAdapter() {
      @Override
      public void mousePressed(MouseEvent e) {
        if (mySettingsProvider.enableMouseReporting() && isRemoteMouseAction(e)) {
          Point p = panelToCharCoords(e.getPoint());
          listener.mousePressed(p.x, p.y, new AwtMouseEvent(e));
        }
      }

      @Override
      public void mouseReleased(MouseEvent e) {
        if (mySettingsProvider.enableMouseReporting() && isRemoteMouseAction(e)) {
          Point p = panelToCharCoords(e.getPoint());
          listener.mouseReleased(p.x, p.y, new AwtMouseEvent(e));
        }
      }
    });

    addMouseWheelListener(e -> {
      if (mySettingsProvider.enableMouseReporting() && isRemoteMouseAction(e)) {
        updateSelection(null);
        Point p = panelToCharCoords(e.getPoint());
        listener.mouseWheelMoved(p.x, p.y, new AwtMouseWheelEvent(e));
      }
      else if (myTerminalTextBuffer.isUsingAlternateBuffer() &&
        mySettingsProvider.simulateMouseScrollWithArrowKeysInAlternativeScreen() &&
        !e.isShiftDown() /* skip horizontal scrolls */
      ) {
        //Send Arrow keys instead
        Integer key;
        if (e.getWheelRotation() < 0) {
          key = KeyEvent.VK_UP;
        }
        else if (e.getWheelRotation() > 0) {
          key = KeyEvent.VK_DOWN;
        }
        else {
          key = null;
        }
        if (key != null) {
          byte[] arrowKeys = myTerminalStarter.getTerminal().getCodeForKey(key, 0);
          for (int i = 0; i < Math.abs(e.getUnitsToScroll()); i++) {
            myTerminalStarter.sendBytes(arrowKeys, false);
          }
          e.consume();
        }
      }
    });

    addMouseMotionListener(new MouseMotionAdapter() {
      @Override
      public void mouseMoved(MouseEvent e) {
        if (mySettingsProvider.enableMouseReporting() && isRemoteMouseAction(e)) {
          Point p = panelToCharCoords(e.getPoint());
          listener.mouseMoved(p.x, p.y, new AwtMouseEvent(e));
        }
      }

      @Override
      public void mouseDragged(MouseEvent e) {
        if (mySettingsProvider.enableMouseReporting() && isRemoteMouseAction(e)) {
          Point p = panelToCharCoords(e.getPoint());
          listener.mouseDragged(p.x, p.y, new AwtMouseEvent(e));
        }
      }
    });
  }