@Override public final void mousePressed(final MouseEvent e) { if (!isEnabled() || !isFocusable()) return; requestFocusInWindow(); caret(true); if (SwingUtilities.isMiddleMouseButton(e)) copy(); final boolean shift = e.isShiftDown(); final boolean selected = editor.selected(); if (SwingUtilities.isLeftMouseButton(e)) { final int c = e.getClickCount(); if (c == 1) { // selection mode if (shift) editor.startSelection(true); select(e.getPoint(), !shift); } else if (c == 2) { editor.selectWord(); } else { editor.selectLine(); } } else if (!selected) { select(e.getPoint(), true); } }
/** * Assigns the specified list entries and selects the first entry. * * @param elements result elements * @param srch content search string */ void setElements(final TokenSet elements, final String srch) { SwingUtilities.invokeLater( new Runnable() { @Override public void run() { // set new values and selections final int is = elements.size(); final String[] list = new String[is]; for (int i = 0; i < is; i++) list[i] = Token.string(elements.key(i + 1)); if (changed(list)) { // check which old values had been selected final List<String> values = getSelectedValuesList(); final IntList il = new IntList(); for (final String value : values) { final byte[] val = Token.token(value); for (int i = 0; i < is; i++) { if (Token.eq(val, elements.key(i + 1))) { il.add(i); break; } } } setListData(list); setSelectedIndices(il.finish()); } search = srch; } }); }
@Override public final void mouseDragged(final MouseEvent e) { if (!SwingUtilities.isLeftMouseButton(e)) return; // selection mode select(e.getPoint(), false); final int y = Math.max(20, Math.min(e.getY(), getHeight() - 20)); if (y != e.getY()) scroll.pos(scroll.pos() + e.getY() - y); }
@Override public void mouseReleased(final MouseEvent e) { if (linkListener == null) return; if (SwingUtilities.isLeftMouseButton(e)) { editor.endSelection(); // evaluate link if (!editor.selected()) { final TextIterator iter = rend.jump(e.getPoint()); final String link = iter.link(); if (link != null) linkListener.linkClicked(link); } } }
@Override public void mouseClicked(final MouseEvent e) { if (!SwingUtilities.isMiddleMouseButton(e)) return; new PasteCmd().execute(gui); }