/** * A chat room was selected. Opens the chat room in the chat window. * * @param e the <tt>MouseEvent</tt> instance containing details of the event that has just * occurred. */ public void mousePressed(MouseEvent e) { // Select the object under the right button click. if ((e.getModifiers() & InputEvent.BUTTON2_MASK) != 0 || (e.getModifiers() & InputEvent.BUTTON3_MASK) != 0 || (e.isControlDown() && !e.isMetaDown())) { int ix = this.chatRoomList.rowAtPoint(e.getPoint()); if (ix != -1) { this.chatRoomList.setRowSelectionInterval(ix, ix); } } Object o = this.chatRoomsTableModel.getValueAt(this.chatRoomList.getSelectedRow()); Point selectedCellPoint = e.getPoint(); SwingUtilities.convertPointToScreen(selectedCellPoint, chatRoomList); if ((e.getModifiers() & InputEvent.BUTTON3_MASK) != 0) { JPopupMenu rightButtonMenu; if (o instanceof ChatRoomWrapper) rightButtonMenu = new ChatRoomRightButtonMenu((ChatRoomWrapper) o); else return; rightButtonMenu.setInvoker(this); rightButtonMenu.setLocation(selectedCellPoint); rightButtonMenu.setVisible(true); } }
public void mousePressed(MouseEvent evt) { requestFocus(); // Focus events not fired sometimes? setCaretVisible(true); focusedComponent = JEditTextArea.this; if ((evt.getModifiers() & InputEvent.BUTTON3_MASK) != 0 && popup != null) { popup.show(painter, evt.getX(), evt.getY()); return; } int line = yToLine(evt.getY()); int offset = xToOffset(line, evt.getX()); int dot = getLineStartOffset(line) + offset; switch (evt.getClickCount()) { case 1: doSingleClick(evt, line, offset, dot); break; case 2: // It uses the bracket matching stuff, so // it can throw a BLE try { doDoubleClick(evt, line, offset, dot); } catch (BadLocationException bl) { bl.printStackTrace(); } break; case 3: doTripleClick(evt, line, offset, dot); break; } }
public void mouseReleased(MouseEvent e) { int[] mouseCurent = new int[2]; mouseCurent[0] = e.getX(); mouseCurent[1] = e.getY(); if (e.getModifiers() == MouseEvent.BUTTON1_MASK) { double d[][] = plotViewer.plotPanel.plotCanvas.centerData; // plotViewer.plotPanel.addPlot("SCATTER", "Cluster Center", Color.BLACK, d); // increase the center data storage memory if (clickedNum == 0) { cluster2DCenters = new double[1][2]; cluster2DCenters[0] = d[0]; clickedNum++; } else { double bak[][] = new double[clickedNum][2]; bak = copy(cluster2DCenters); clickedNum++; cluster2DCenters = new double[clickedNum][2]; for (int i = 0; i < clickedNum - 1; i++) { cluster2DCenters[i] = copy(bak[i]); } cluster2DCenters[clickedNum - 1] = d[0]; } } }
public void mouseClicked(MouseEvent ev) { Window w = (Window) ev.getSource(); Frame f = null; if (w instanceof Frame) { f = (Frame) w; } else { return; } Point convertedPoint = SwingUtilities.convertPoint(w, ev.getPoint(), getTitlePane()); int state = f.getExtendedState(); if (getTitlePane() != null && getTitlePane().contains(convertedPoint)) { if ((ev.getClickCount() % 2) == 0 && ((ev.getModifiers() & InputEvent.BUTTON1_MASK) != 0)) { if (f.isResizable()) { if ((state & Frame.MAXIMIZED_BOTH) != 0) { f.setExtendedState(state & ~Frame.MAXIMIZED_BOTH); } else { f.setExtendedState(state | Frame.MAXIMIZED_BOTH); } return; } } } }
public void mouseReleased(MouseEvent e) { lastInteractionTime = System.currentTimeMillis(); if (enabled && !readOnly && lastPressEvent != null && dragInProgress) { if (enableMouseDrags && !e.getPoint().equals(lastPressEvent.getPoint())) { dragInProgress = false; // Generate the command string String s = "Mouse " + MouseCommand.MOUSE_DRAG; // Insert the button identifier if other than left button was pressed if (e.getButton() != MouseEvent.BUTTON1) { s += " " + MouseCommand.PARAM_BUTTON_SHORT + "=" + parser.buttonToString(e.getButton()); } // Insert modifiers if there are any String modifiers = parser.modifiersToString(e.getModifiers()); if (modifiers.length() > 0) { s += " " + MouseCommand.PARAM_MODIFIER + "=" + modifiers; } // Generate coordinates s += " " + MouseCommand.PARAM_FROM + "=" + parser.pointToString(lastPressEvent.getPoint()); s += " " + MouseCommand.PARAM_TO + "=" + parser.pointToString(e.getPoint()); // Insert the command to the current editor insertLine(s, false, true, false); insertEvent(e); } } }
public void mousePressed(MouseEvent e) { Point p = e.getPoint(); int mods = e.getModifiers(); if (odometer != null) { String output = " (" + p.x + ", " + p.y + ")"; odometer.setText(output); } }
public void mouseDragged(MouseEvent e) { int m = e.getModifiers(); int type = DnDEvent.DND_ONE; if (e.isControlDown()) type = DnDEvent.DND_LINE; else if (((m & InputEvent.BUTTON2_MASK) != 0) || ((m & InputEvent.BUTTON3_MASK) != 0)) type = DnDEvent.DND_END; if (startPoint == null) startPoint = new Point(e.getX(), e.getY()); fireDragToolbar(e.getX() - startPoint.x, (e.getY() - startPoint.y), type); dragging = true; }
public void mousePressed(MouseEvent e) { if (ctx != null) { // save the current selection set operator prevSetOp = ctx.getSetOperator(tm).getSetOperator(); // set the selection set operator ctx.getSetOperator(tm).setFromInputEventMask(e.getModifiers()); } start = e.getPoint(); current = e.getPoint(); selecting = true; repaint(); }
/** Called by our adapter when the mouse is clicked. */ protected void mouseClicked(MouseEvent evt) { int modifiers = evt.getModifiers(); // if this is a right button click, and we're in piecen placing // mode, generate a PLACE_NOTHING notification instead if (_placingPiecen && (modifiers & MouseEvent.BUTTON3_MASK) != 0) { // stop piecen placement _placingPiecen = false; // clear out any placed piecen because we're placing nothing if (_placedTile != null && _placedTile.piecen != null) { _placedTile.piecen = null; repaintTile(_placedTile); } // tell the controller we're done _ctrl.placeNothing(); } else { // ignore non-button one presses other than cancel piecen // placement if ((modifiers & MouseEvent.BUTTON1_MASK) == 0) { return; } } // if we have a placing tile and it's in a valid position, we want // to dispatch an action letting the controller know that the user // placed it if (_placingTile != null && _validPlacement) { // move the placing tile to the placed tile _placedTile = _placingTile; _placingTile = null; // inherit claims on the placed tile TileUtil.inheritClaims(_tiles, _placedTile); // post the action _ctrl.tilePlaced(_placedTile); // move into placing piecen mode _placingPiecen = true; // recompute our dimensions (which will relayout or repaint) computeDimensions(); } // if we're placing a piecen and the piecen is in a valid position, we // want to let the controller know that the user placed it if (_placingPiecen && _placedTile != null && _placedTile.piecen != null) { _ctrl.piecenPlaced(_placedTile.piecen); // clear out placing piecen mode _placingPiecen = false; } }
public void onMouseClicked(final MouseEvent e) { final ConstraintHitData hitData = findHit(e); if (ConstraintHit.LINE == hitData.getConstraintHit()) { refreshSelection(hitData.getConstraintView(), InputEvent.BUTTON1_MASK == e.getModifiers()); SwingUtilities.invokeLater( new Runnable() { public void run() { hitData.getConstraintView().mouseClicked(e); } }); } }
// {{{ mouseClicked() method @Override public void mouseClicked(MouseEvent evt) { Point p = evt.getPoint(); int row = table.rowAtPoint(p); int column = table.columnAtPoint(p); if (row == -1) return; if (column == 0) { VFSDirectoryEntryTableModel.Entry entry = (VFSDirectoryEntryTableModel.Entry) table.getModel().getValueAt(row, 0); if (FileCellRenderer.ExpansionToggleBorder.isExpansionToggle(entry.level, p.x)) { return; } } if ((evt.getModifiers() & InputEvent.BUTTON1_MASK) != 0 && evt.getClickCount() % 2 == 0) { browser.filesActivated( evt.isShiftDown() ? VFSBrowser.M_OPEN_NEW_VIEW : VFSBrowser.M_OPEN, true); } else if (GUIUtilities.isMiddleButton(evt.getModifiers())) { if (evt.isShiftDown()) table.getSelectionModel().addSelectionInterval(row, row); else table.getSelectionModel().setSelectionInterval(row, row); browser.filesActivated( evt.isShiftDown() ? VFSBrowser.M_OPEN_NEW_VIEW : VFSBrowser.M_OPEN, true); } } // }}}
@Override public void mousePressed(MouseEvent e) { if (!layerMovingAndChangingCurrentEnabled) return; // click, moved from mouseClicked due // to problems with focus and stuff if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0) { Point p = e.getPoint(); CPArtwork artwork = controller.getArtwork(); int layerIndex = getLayerNb(p); if (layerIndex >= 0 && layerIndex < artwork.getLayersNb()) { CPLayer layer = artwork.getLayer(layerIndex); if (p.x < eyeW) { artwork.setLayerVisibility(layerIndex, !layer.isVisible()); artwork.finalizeUndo(); } else { artwork.setActiveLayerNumber(layerIndex); artwork.finalizeUndo(); } } } if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0) { Dimension d = getSize(); CPArtwork artwork = controller.getArtwork(); Object[] layers = artwork.getLayers(); int layerOver = (d.height - e.getPoint().y) / layerH; if (layerOver < layers.length) { layerDrag = true; layerDragY = e.getPoint().y; layerDragNb = layerOver; repaint(); } } }
void forwardEventToParent(MouseEvent e) { getParent() .dispatchEvent( new MouseEvent( getParent(), e.getID(), e.getWhen(), e.getModifiers(), e.getX(), e.getY(), e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger(), MouseEvent.NOBUTTON)); }
@Override public void mouseReleased(MouseEvent evt) { if (evt.getClickCount() % 2 != 0 && !GUIUtilities.isMiddleButton(evt.getModifiers())) return; int row = parentDirectories.locationToIndex(evt.getPoint()); if (row != -1) { Object obj = parentDirectories.getModel().getElementAt(row); if (obj instanceof VFSFile) { VFSFile dirEntry = (VFSFile) obj; if (!GUIUtilities.isPopupTrigger(evt)) { browser.setDirectory(dirEntry.getPath()); if (browser.getMode() == VFSBrowser.BROWSER) focusOnFileView(); } } } }
@Override public void mouseMoved(final EditorMouseEvent e) { if (e.isConsumed() || !myProject.isInitialized() || myProject.isDisposed()) { return; } MouseEvent mouseEvent = e.getMouseEvent(); if (isMouseOverTooltip(mouseEvent.getLocationOnScreen()) || ScreenUtil.isMovementTowards( myPrevMouseLocation, mouseEvent.getLocationOnScreen(), getHintBounds())) { myPrevMouseLocation = mouseEvent.getLocationOnScreen(); return; } myPrevMouseLocation = mouseEvent.getLocationOnScreen(); Editor editor = e.getEditor(); if (editor.getProject() != null && editor.getProject() != myProject) return; PsiDocumentManager documentManager = PsiDocumentManager.getInstance(myProject); PsiFile psiFile = documentManager.getPsiFile(editor.getDocument()); Point point = new Point(mouseEvent.getPoint()); if (documentManager.isCommitted(editor.getDocument())) { // when document is committed, try to check injected stuff - it's fast int offset = editor.logicalPositionToOffset(editor.xyToLogicalPosition(point)); editor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, psiFile, offset); } LogicalPosition pos = editor.xyToLogicalPosition(point); int offset = editor.logicalPositionToOffset(pos); int selStart = editor.getSelectionModel().getSelectionStart(); int selEnd = editor.getSelectionModel().getSelectionEnd(); myStoredModifiers = mouseEvent.getModifiers(); BrowseMode browseMode = getBrowseMode(myStoredModifiers); cancelPreviousTooltip(); if (browseMode == BrowseMode.None || offset >= selStart && offset < selEnd) { disposeHighlighter(); return; } myTooltipProvider = new TooltipProvider(editor, pos); myTooltipProvider.execute(browseMode); }
/** * Propagates certain mouse events, such as MOUSE_CLICKED, MOUSE_RELEASED etc. to the deepest * component. * * @param e The MouseEvent to be propagated. */ protected void propagateMouseListenerEvent(MouseEvent e) { if (POPUP_IS_MODAL == false) { Component deepestComponent = getDeepestComponent(e.getPoint()); if (deepestComponent != null) { MouseListener[] mouseListeners = deepestComponent.getMouseListeners(); int eventID; // Get the event type eventID = e.getID(); Point pt = e.getPoint(); Point convertedPt = SwingUtilities.convertPoint(glassPane, e.getPoint(), deepestComponent); MouseEvent evt = new MouseEvent( deepestComponent, e.getID(), System.currentTimeMillis(), e.getModifiers(), convertedPt.x, convertedPt.y, e.getClickCount(), e.isPopupTrigger(), e.getButton()); // Distibute the event to the component's listeners. for (int i = 0; i < mouseListeners.length; i++) { // Forward the appropriate mouse event if (eventID == MouseEvent.MOUSE_PRESSED) { mouseListeners[i].mousePressed(evt); } else if (eventID == MouseEvent.MOUSE_RELEASED) { mouseListeners[i].mouseReleased(evt); } else if (eventID == MouseEvent.MOUSE_CLICKED) { mouseListeners[i].mouseClicked(evt); } } } } }
private void dispatchEvent(MouseEvent me) { if (rect != null && rect.contains(me.getX(), me.getY())) { Point pt = me.getPoint(); pt.translate(-offset, 0); comp.setBounds(rect); comp.dispatchEvent( new MouseEvent( comp, me.getID(), me.getWhen(), me.getModifiers(), pt.x, pt.y, me.getClickCount(), me.isPopupTrigger(), me.getButton())); if (!comp.isValid()) container.repaint(); } }
public void onMousePressed(final MouseEvent e) { final ConstraintHitData hitData = findHit(e); if (ConstraintHit.LINE == hitData.getConstraintHit()) { _lastPressedConstraintView = hitData.getConstraintView(); if (InputEvent.BUTTON3_MASK == e.getModifiers()) { refreshSelection(hitData.getConstraintView(), false); SwingUtilities.invokeLater( new Runnable() { public void run() { hitData.getConstraintView().mousePressed(e); } }); } else { hitData.getConstraintView().mousePressed(e); } } else if (ConstraintHit.NONE == hitData.getConstraintHit()) { maybeShowPopup(e); } }
public void mouseMoved(final EditorMouseEvent e) { if (e.isConsumed() || !myProject.isInitialized()) { return; } MouseEvent mouseEvent = e.getMouseEvent(); Editor editor = e.getEditor(); if (editor.getProject() != null && editor.getProject() != myProject) return; PsiFile psiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(editor.getDocument()); Point point = new Point(mouseEvent.getPoint()); if (!PsiDocumentManager.getInstance(myProject).isUncommited(editor.getDocument())) { // when document is committed, try to check injected stuff - it's fast editor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit( editor, psiFile, editor.logicalPositionToOffset(editor.xyToLogicalPosition(point))); } LogicalPosition pos = editor.xyToLogicalPosition(point); int offset = editor.logicalPositionToOffset(pos); int selStart = editor.getSelectionModel().getSelectionStart(); int selEnd = editor.getSelectionModel().getSelectionEnd(); myStoredModifiers = mouseEvent.getModifiers(); BrowseMode browseMode = getBrowseMode(myStoredModifiers); if (myTooltipProvider != null) { myTooltipProvider.dispose(); } if (browseMode == BrowseMode.None || offset >= selStart && offset < selEnd) { disposeHighlighter(); myTooltipProvider = null; return; } myTooltipProvider = new TooltipProvider(editor, pos); myTooltipProvider.execute(browseMode); }
protected void propagateMouseMotionListenerEvents(MouseEvent e) { if (FORWARD_MOUSE_MOTION_EVENTS == true) { // Get the correct component Component deepestComponent = getDeepestComponent(e.getPoint()); if (deepestComponent != null) { // Distribute the event to the components listeners MouseMotionListener[] mouseMotionListeners = deepestComponent.getMouseMotionListeners(); // Get the event type int eventID = e.getID(); Point pt = e.getPoint(); Point convertedPt = SwingUtilities.convertPoint(glassPane, e.getPoint(), deepestComponent); MouseEvent evt = new MouseEvent( deepestComponent, e.getID(), System.currentTimeMillis(), e.getModifiers(), convertedPt.x, convertedPt.y, e.getClickCount(), e.isPopupTrigger(), e.getButton()); for (int i = 0; i < mouseMotionListeners.length; i++) { if (eventID == MouseEvent.MOUSE_MOVED) { mouseMotionListeners[i].mouseMoved(e); } else if (eventID == MouseEvent.MOUSE_DRAGGED) { mouseMotionListeners[i].mouseDragged(e); } } } } }
// {{{ mousePressed() method @Override public void mousePressed(MouseEvent evt) { Point p = evt.getPoint(); if (evt.getSource() != table) { p.x -= table.getX(); p.y -= table.getY(); } int row = table.rowAtPoint(p); int column = table.columnAtPoint(p); if (column == 0 && row != -1) { VFSDirectoryEntryTableModel.Entry entry = (VFSDirectoryEntryTableModel.Entry) table.getModel().getValueAt(row, 0); if (FileCellRenderer.ExpansionToggleBorder.isExpansionToggle(entry.level, p.x)) { table.toggleExpanded(row); return; } } if (GUIUtilities.isMiddleButton(evt.getModifiers())) { if (row == -1) /* nothing */ ; else if (evt.isShiftDown()) table.getSelectionModel().addSelectionInterval(row, row); else table.getSelectionModel().setSelectionInterval(row, row); } else if (GUIUtilities.isPopupTrigger(evt)) { if (popup != null && popup.isVisible()) { popup.setVisible(false); popup = null; return; } if (row == -1) showFilePopup(null, table, evt.getPoint()); else { if (!table.getSelectionModel().isSelectedIndex(row)) table.getSelectionModel().setSelectionInterval(row, row); showFilePopup(getSelectedFiles(), table, evt.getPoint()); } } } // }}}
/** * Re-dispatches glass pane mouse events only in case they occur on the security panel. * * @param glassPane the glass pane * @param e the mouse event in question */ private void redispatchMouseEvent(Component glassPane, MouseEvent e) { Point glassPanePoint = e.getPoint(); Point securityPanelPoint = SwingUtilities.convertPoint(glassPane, glassPanePoint, securityPanel); Component component; Point componentPoint; if (securityPanelPoint.y > 0) { component = securityPanel; componentPoint = securityPanelPoint; } else { Container contentPane = callRenderer.getCallContainer().getCallWindow().getFrame().getContentPane(); Point containerPoint = SwingUtilities.convertPoint(glassPane, glassPanePoint, contentPane); component = SwingUtilities.getDeepestComponentAt(contentPane, containerPoint.x, containerPoint.y); componentPoint = SwingUtilities.convertPoint(contentPane, glassPanePoint, component); } if (component != null) component.dispatchEvent( new MouseEvent( component, e.getID(), e.getWhen(), e.getModifiers(), componentPoint.x, componentPoint.y, e.getClickCount(), e.isPopupTrigger())); e.consume(); }
@Override public void mouseReleased(MouseEvent e) { if (layerDrag && (e.getModifiers() & InputEvent.BUTTON1_MASK) != 0) { Dimension d = getSize(); CPArtwork artwork = controller.getArtwork(); Object[] layers = artwork.getLayers(); layerDrag = true; layerDragY = e.getPoint().y; int layerOver = (d.height - layerDragY) / layerH; if (layerOver >= 0 && layerOver <= layers.length && layerOver != layerDragNb && layerOver != layerDragNb + 1) { artwork.moveLayer(layerDragNb, layerOver); artwork.finalizeUndo(); } layerDrag = false; layerDragReally = false; repaint(); } }
void jTextPaneDisplayMessages_mouseClicked(MouseEvent e) { if ((e.getModifiers() & Event.META_MASK) == Event.META_MASK) { jPopupMenuMessageArea.show(jTextPaneDisplayMessages, e.getX(), e.getY()); } }
/** * This method gets called when user performs a mouse click. It decodes whether it is a single * click or part of a multiple click (double click, triple click etc.) and inserts appropriate * command to the current editor. * * @param e a MouseEvent describing the mouse click. */ public void mouseClicked(MouseEvent e) { if (enabled && !readOnly) { if (timer != null && timer.isRunning()) { timer.stop(); } if (enableMouseClicks) { int count = 1; MouseEvent e2; long lastEventTime = e.getWhen(); // This cycle is to determine multiple clicks like double click, triple click etc. // We go through the vector of events and check whether there are events corresponding to // multiple clicks. for (int i = 0; i < events.size() && events.get(i) instanceof MouseEvent; i++) { e2 = (MouseEvent) events.get(i); // The events are considered to be a multiple click when: // 1. Coordinates are equal // 2. Modifiers are equal // 3. Button is equal // 4. Delay between two subsequent clicks is lower than given number of miliseconds if (e2.getX() == e.getX() && e2.getY() == e.getY() && e2.getModifiers() == e.getModifiers() && (lastEventTime - e2.getWhen() < mouseMultiDelay) && e.getButton() == e2.getButton() && e2.getID() == e.getID()) { count++; lastEventTime = e2.getWhen(); } else { break; } } // Generate the command string String s = "Mouse " + MouseCommand.MOUSE_CLICK; // Insert the button identifier if other than left button was pressed if (e.getButton() != MouseEvent.BUTTON1) { s += " " + MouseCommand.PARAM_BUTTON_SHORT + "=" + parser.buttonToString(e.getButton()); } // Insert modifiers if there are any String modifiers = parser.modifiersToString(e.getModifiers()); if (modifiers.length() > 0) { s += " " + MouseCommand.PARAM_MODIFIER + "=" + modifiers; } // Generate the count parameter if (count > 1) { s += " " + MouseCommand.PARAM_COUNT + "=" + count; } // This will determine whether this click is preceded by a mouse // move command with the same coordinates. // It will be replaced if yes. boolean replaceLastMove = false; // if (enableMouseMoves) { // if (events.size() > 0 && events.get(events.size() - 1) instanceof // MouseEvent) { // MouseEvent me = (MouseEvent) events.get(events.size() - 1); // if (me.getID() == MouseEvent.MOUSE_MOVED && e.getX() == me.getX() // && e.getY() == me.getY()) { // replaceLastMove = true; // } // } // } // Generate coordinates s += " " + MouseCommand.PARAM_TO + "=" + parser.pointToString(e.getPoint()); // Insert the command to the current editor insertLine(s, count > 1 || replaceLastMove, true, false); dragInProgress = false; } insertEvent(e); } }
/** * Listens for double clicks to open the chat room. * * @param e */ public void mouseClicked(MouseEvent e) { if (((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0) && (e.getClickCount() > 1)) openChatForSelection(); }
private void doSingleClick(MouseEvent evt, int line, int offset, int dot) { if ((evt.getModifiers() & InputEvent.SHIFT_MASK) != 0) { rectSelect = (evt.getModifiers() & InputEvent.CTRL_MASK) != 0; select(getMarkPosition(), dot); } else setCaretPosition(dot); }
/** Checks to see if the event was to show the popup menu */ private void maybeShowPopup(MouseEvent e) { if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) { popup.show(userList, e.getX(), e.getY()); } }
public void mouseDragged(MouseEvent evt) { if (popup != null && popup.isVisible()) return; setSelectionRectangular((evt.getModifiers() & InputEvent.CTRL_MASK) != 0); select(getMarkPosition(), xyToOffset(evt.getX(), evt.getY())); }
private MouseEvent transformMouseEvent(MouseEvent event) { if (event == null) { throw new IllegalArgumentException("MouseEvent is null"); } MouseEvent newEvent; if (event instanceof MouseWheelEvent) { MouseWheelEvent mouseWheelEvent = (MouseWheelEvent) event; newEvent = new MouseWheelEvent( mouseWheelEvent.getComponent(), mouseWheelEvent.getID(), mouseWheelEvent.getWhen(), mouseWheelEvent.getModifiers(), mouseWheelEvent.getX(), mouseWheelEvent.getY(), mouseWheelEvent.getClickCount(), mouseWheelEvent.isPopupTrigger(), mouseWheelEvent.getScrollType(), mouseWheelEvent.getScrollAmount(), mouseWheelEvent.getWheelRotation()); } else { newEvent = new MouseEvent( event.getComponent(), event.getID(), event.getWhen(), event.getModifiers(), event.getX(), event.getY(), event.getClickCount(), event.isPopupTrigger(), event.getButton()); } if (view != null && at.getDeterminant() != 0) { Rectangle viewBounds = getTransformedSize(); Insets insets = JXTransformer.this.getInsets(); int xgap = (getWidth() - (viewBounds.width + insets.left + insets.right)) / 2; int ygap = (getHeight() - (viewBounds.height + insets.top + insets.bottom)) / 2; double x = newEvent.getX() + viewBounds.getX() - insets.left; double y = newEvent.getY() + viewBounds.getY() - insets.top; Point2D p = new Point2D.Double(x - xgap, y - ygap); Point2D tp; try { tp = at.inverseTransform(p, null); } catch (NoninvertibleTransformException ex) { // can't happen, we check it before throw new AssertionError("NoninvertibleTransformException"); } // Use transformed coordinates to get the current component mouseCurrentComponent = SwingUtilities.getDeepestComponentAt(view, (int) tp.getX(), (int) tp.getY()); if (mouseCurrentComponent == null) { mouseCurrentComponent = JXTransformer.this; } Component tempComponent = mouseCurrentComponent; if (mouseDraggedComponent != null) { tempComponent = mouseDraggedComponent; } Point point = SwingUtilities.convertPoint(view, (int) tp.getX(), (int) tp.getY(), tempComponent); newEvent.setSource(tempComponent); newEvent.translatePoint(point.x - event.getX(), point.y - event.getY()); } return newEvent; }