public void showItem() { if (!this.editorPanel.getViewer().isLanguageFunctionAvailable()) { return; } this.highlight = this.editorPanel .getEditor() .addHighlight(this.position, this.position + this.word.length(), null, true); final FindSynonymsActionHandler _this = this; QTextEditor editor = this.editorPanel.getEditor(); Rectangle r = null; try { r = editor.modelToView(this.position); } catch (Exception e) { // BadLocationException! Environment.logError("Location: " + this.position + " is not valid", e); UIUtils.showErrorMessage(this.editorPanel, "Unable to display synonyms."); return; } int y = r.y; // Show a panel of all the items. final QPopup p = this.popup; p.setOpaque(false); Synonyms syns = null; try { syns = this.projectViewer.getSynonymProvider().getSynonyms(this.word); } catch (Exception e) { UIUtils.showErrorMessage(this.editorPanel, "Unable to display synonyms."); Environment.logError("Unable to lookup synonyms for: " + word, e); return; } if ((syns.words.size() == 0) && (this.word.toLowerCase().endsWith("ed"))) { // Trim off the ed and try again. try { syns = this.projectViewer.getSynonyms(this.word.substring(0, this.word.length() - 2)); } catch (Exception e) { UIUtils.showErrorMessage(this.editorPanel, "Unable to display synonyms."); Environment.logError("Unable to lookup synonyms for: " + word, e); return; } } if ((syns.words.size() == 0) && (this.word.toLowerCase().endsWith("s"))) { // Trim off the ed and try again. try { syns = this.projectViewer.getSynonyms(this.word.substring(0, this.word.length() - 1)); } catch (Exception e) { UIUtils.showErrorMessage(this.editorPanel, "Unable to display synonyms."); Environment.logError("Unable to lookup synonyms for: " + word, e); return; } } StringBuilder sb = new StringBuilder(); if (syns.words.size() > 0) { sb.append("6px"); for (int i = 0; i < syns.words.size(); i++) { if (sb.length() > 0) { sb.append(", "); } sb.append("p, 3px, [p,90px], 5px"); } /* if (syns.words.size () > 0) { sb.append (",5px"); } */ } else { sb.append("6px, p, 6px"); } FormLayout summOnly = new FormLayout("3px, fill:380px:grow, 3px", sb.toString()); PanelBuilder pb = new PanelBuilder(summOnly); CellConstraints cc = new CellConstraints(); int ind = 2; Map<String, String> names = new HashMap(); names.put(Synonyms.ADJECTIVE + "", "Adjectives"); names.put(Synonyms.NOUN + "", "Nouns"); names.put(Synonyms.VERB + "", "Verbs"); names.put(Synonyms.ADVERB + "", "Adverbs"); names.put(Synonyms.OTHER + "", "Other"); if (syns.words.size() == 0) { JLabel l = new JLabel("No synonyms found."); l.setFont(l.getFont().deriveFont(Font.ITALIC)); pb.add(l, cc.xy(2, 2)); } // Determine what type of word we are looking for. for (Synonyms.Part i : syns.words) { JLabel l = new JLabel(names.get(i.type + "")); l.setFont(l.getFont().deriveFont(Font.ITALIC)); l.setFont(l.getFont().deriveFont((float) UIUtils.getEditorFontSize(10))); l.setBorder( new CompoundBorder( new MatteBorder(0, 0, 1, 0, Environment.getBorderColor()), new EmptyBorder(0, 0, 3, 0))); pb.add(l, cc.xy(2, ind)); ind += 2; HTMLEditorKit kit = new HTMLEditorKit(); HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument(); JTextPane t = new JTextPane(doc); t.setEditorKit(kit); t.setEditable(false); t.setOpaque(false); StringBuilder buf = new StringBuilder( "<style>a { text-decoration: none; } a:hover { text-decoration: underline; }</style><span style='color: #000000; font-size: " + ((int) UIUtils.getEditorFontSize(10) /*t.getFont ().getSize () + 2*/) + "pt; font-family: " + t.getFont().getFontName() + ";'>"); for (int x = 0; x < i.words.size(); x++) { String w = (String) i.words.get(x); buf.append("<a class='x' href='http://" + w + "'>" + w + "</a>"); if (x < (i.words.size() - 1)) { buf.append(", "); } } buf.append("</span>"); t.setText(buf.toString()); t.addHyperlinkListener( new HyperlinkAdapter() { public void hyperlinkUpdate(HyperlinkEvent ev) { if (ev.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { QTextEditor ed = _this.editorPanel.getEditor(); ed.replaceText( _this.position, _this.position + _this.word.length(), ev.getURL().getHost()); ed.removeHighlight(_this.highlight); _this.popup.setVisible(false); _this.projectViewer.fireProjectEvent( ProjectEvent.SYNONYM, ProjectEvent.REPLACE, ev.getURL().getHost()); } } }); // Annoying that we have to do this but it prevents the text from being too small. t.setSize(new Dimension(380, Short.MAX_VALUE)); JScrollPane sp = new JScrollPane(t); t.setCaretPosition(0); sp.setOpaque(false); sp.getVerticalScrollBar().setValue(0); /* sp.setPreferredSize (t.getPreferredSize ()); sp.setMaximumSize (new Dimension (380, 75)); */ sp.getViewport().setOpaque(false); sp.setOpaque(false); sp.setBorder(null); sp.getViewport().setBackground(Color.WHITE); sp.setAlignmentX(Component.LEFT_ALIGNMENT); pb.add(sp, cc.xy(2, ind)); ind += 2; } JPanel pan = pb.getPanel(); pan.setOpaque(true); pan.setBackground(Color.WHITE); this.popup.setContent(pan); // r.y -= this.editorPanel.getScrollPane ().getVerticalScrollBar ().getValue (); Point po = SwingUtilities.convertPoint(editor, r.x, r.y, this.editorPanel); r.x = po.x; r.y = po.y; // Subtract the insets of the editorPanel. Insets ins = this.editorPanel.getInsets(); r.x -= ins.left; r.y -= ins.top; this.editorPanel.showPopupAt(this.popup, r, "above", true); }
@Override public void mouseDragged(MouseEvent e) { if (!myDragging) return; MouseEvent event = SwingUtilities.convertMouseEvent(e.getComponent(), e, MyDivider.this); final ToolWindowAnchor anchor = myInfo.getAnchor(); final Point point = event.getPoint(); final Container windowPane = InternalDecorator.this.getParent(); myLastPoint = SwingUtilities.convertPoint(MyDivider.this, point, windowPane); myLastPoint.x = Math.min(Math.max(myLastPoint.x, 0), windowPane.getWidth()); myLastPoint.y = Math.min(Math.max(myLastPoint.y, 0), windowPane.getHeight()); final Rectangle bounds = InternalDecorator.this.getBounds(); if (anchor == ToolWindowAnchor.TOP) { InternalDecorator.this.setBounds(0, 0, bounds.width, myLastPoint.y); } else if (anchor == ToolWindowAnchor.LEFT) { InternalDecorator.this.setBounds(0, 0, myLastPoint.x, bounds.height); } else if (anchor == ToolWindowAnchor.BOTTOM) { InternalDecorator.this.setBounds( 0, myLastPoint.y, bounds.width, windowPane.getHeight() - myLastPoint.y); } else if (anchor == ToolWindowAnchor.RIGHT) { InternalDecorator.this.setBounds( myLastPoint.x, 0, windowPane.getWidth() - myLastPoint.x, bounds.height); } InternalDecorator.this.validate(); e.consume(); }
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(final MouseEvent e) { if (e.isPopupTrigger()) { Point pt = SwingUtilities.convertPoint((Component) e.getSource(), e.getX(), e.getY(), frame); popup.show(frame, pt.x, pt.y); return; } }
/** Display the forwards window history in a menu. */ private void onShowForwardHistory() { UIScrollableMenu hist = new UIScrollableMenu( LanguageProperties.getString( LanguageProperties.TOOLBARS_BUNDLE, "UIToolBarMain.forwardHistory"), 0); //$NON-NLS-1$ Vector views = history.getForwardHistory(); int currentIndex = history.getCurrentPosition(); int count = views.size(); if (count == 0) return; JMenuItem item = null; for (int i = 0; i < count; i++) { View view = (View) views.elementAt(i); item = new JMenuItem(view.getLabel()); final View fview = view; final int fi = (currentIndex + 1) + i; item.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { if (history.goToHistoryItem(fi)) oParent.addViewToDesktop(fview, fview.getLabel()); } }); hist.add(item); } JPopupMenu pop = hist.getPopupMenu(); pop.pack(); Point loc = pbShowForwardHistory.getLocation(); Dimension size = pbShowForwardHistory.getSize(); Dimension popsize = hist.getPreferredSize(); Point finalP = SwingUtilities.convertPoint(tbrToolBar.getParent(), loc, oParent.getDesktop()); int x = 0; int y = 0; if (oManager.getLeftToolBarController().containsBar(tbrToolBar)) { x = finalP.x + size.width; y = finalP.y; } else if (oManager.getRightToolBarController().containsBar(tbrToolBar)) { x = finalP.x - popsize.width; y = finalP.y; } else if (oManager.getTopToolBarController().containsBar(tbrToolBar)) { x = finalP.x; y = finalP.y + size.width; } else if (oManager.getBottomToolBarController().containsBar(tbrToolBar)) { x = finalP.x; y = finalP.y - popsize.height; } hist.setPopupMenuVisible(true); pop.show(oParent.getDesktop(), x, y); }
/** * @param aEvent * @param aStartPoint */ protected void handleZoomRegion(final MouseEvent aEvent, final Point aStartPoint) { // For now, disabled by default as it isn't 100% working yet... if (Boolean.FALSE.equals(Boolean.valueOf(System.getProperty("zoomregionenabled", "false")))) { return; } final JComponent source = (JComponent) aEvent.getComponent(); final boolean dragging = (aEvent.getID() == MouseEvent.MOUSE_DRAGGED); final GhostGlassPane glassPane = (GhostGlassPane) SwingUtilities.getRootPane(source).getGlassPane(); Rectangle viewRect; final JScrollPane scrollPane = SwingComponentUtils.getAncestorOfClass(JScrollPane.class, source); if (scrollPane != null) { final JViewport viewport = scrollPane.getViewport(); viewRect = SwingUtilities.convertRectangle(viewport, viewport.getVisibleRect(), glassPane); } else { viewRect = SwingUtilities.convertRectangle(source, source.getVisibleRect(), glassPane); } final Point start = SwingUtilities.convertPoint(source, aStartPoint, glassPane); final Point current = SwingUtilities.convertPoint(source, aEvent.getPoint(), glassPane); if (dragging) { if (!glassPane.isVisible()) { glassPane.setVisible(true); glassPane.setRenderer(new RubberBandRenderer(), start, current, viewRect); } else { glassPane.updateRenderer(start, current, viewRect); } glassPane.repaintPartially(); } else /* if ( !dragging ) */ { // Fire off a signal to the zoom controller to do its job... this.controller.getZoomController().zoomRegion(aStartPoint, aEvent.getPoint()); glassPane.setVisible(false); } }
public static void setRelativeBounds( @NotNull Component parent, @NotNull Rectangle bounds, @NotNull Component child, @NotNull Container validationParent) { validationParent.add(parent); parent.setBounds(bounds); parent.validate(); child.setLocation(SwingUtilities.convertPoint(child, 0, 0, parent)); validationParent.remove(parent); }
private void processDrag(final MouseEvent e) { if (myDragCancelled) return; if (!isDraggingNow()) { if (myPressedPoint == null) return; if (isWithinDeadZone(e)) return; myDragPane = findLayeredPane(e); if (myDragPane == null) return; final BufferedImage image = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB); paint(image.getGraphics()); myDragButtonImage = new JLabel(new ImageIcon(image)) { public String toString() { return "Image for: " + StripeButton.this.toString(); } }; myDragPane.add(myDragButtonImage, JLayeredPane.POPUP_LAYER); myDragButtonImage.setSize(myDragButtonImage.getPreferredSize()); setVisible(false); myPane.startDrag(); myDragKeyEventDispatcher = new DragKeyEventDispatcher(); KeyboardFocusManager.getCurrentKeyboardFocusManager() .addKeyEventDispatcher(myDragKeyEventDispatcher); } if (!isDraggingNow()) return; Point xy = SwingUtilities.convertPoint(e.getComponent(), e.getPoint(), myDragPane); if (myPressedPoint != null) { xy.x -= myPressedPoint.x; xy.y -= myPressedPoint.y; } myDragButtonImage.setLocation(xy); SwingUtilities.convertPointToScreen(xy, myDragPane); final Stripe stripe = myPane.getStripeFor(new Rectangle(xy, myDragButtonImage.getSize()), (Stripe) getParent()); if (stripe == null) { if (myLastStripe != null) { myLastStripe.resetDrop(); } } else { if (myLastStripe != null && myLastStripe != stripe) { myLastStripe.resetDrop(); } stripe.processDropButton(this, myDragButtonImage, xy); } myLastStripe = stripe; }
/** * 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(); }
private void setDispatchComponent(MouseEvent e) { // Get location Point spreadPoint = e.getPoint(); int row = grid.rowAtPoint(spreadPoint); int column = grid.columnAtPoint(spreadPoint); // Get editor component Component editorComponent = grid.getEditorComponent(); // Get dispatchComponent Point editorPoint = SwingUtilities.convertPoint(grid, spreadPoint, editorComponent); dispatchComponent = SwingUtilities.getDeepestComponentAt(editorComponent, editorPoint.x, editorPoint.y); }
@Nullable private ActionListener findActionListenerAt(Point point) { if (!myHasActiveClickListeners || !isStatusVisible()) return null; point = SwingUtilities.convertPoint(myMouseTarget, point, myOwner); Rectangle b = getTextComponentBound(); if (b.contains(point)) { int index = myComponent.findFragmentAt(point.x - b.x); if (index >= 0 && index < myClickListeners.size()) { return myClickListeners.get(index); } } return null; }
/** * Obtains the deepest component below the glass pane at the specified point. * * @param pt The point. * @return The deepest component, or <code>null</code> if there is no component at the specified * point. */ protected Component getDeepestComponent(Point pt) { // Get hold of the content pane, since this contains the components // that we want to relay mouse events to SwingUtilities.getRoot(glassPane); Container contentPane = glassPane.getRootPane().getContentPane(); // Convert the mouse point from the glass pane coordinate system // into the coordinate system of the content pane. Point contentPanePt = SwingUtilities.convertPoint(glassPane, pt, contentPane); // Find the deepest component - i.e. the one that should get the mouse // event. Component deepestComponent = SwingUtilities.getDeepestComponentAt(contentPane, contentPanePt.x, contentPanePt.y); return deepestComponent; }
/** * 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); } } } } }
public void mousePressed(MouseEvent ev) { JRootPane rootPane = getRootPane(); if (rootPane.getWindowDecorationStyle() == JRootPane.NONE) { return; } Point dragWindowOffset = ev.getPoint(); Window w = (Window) ev.getSource(); if (w != null) { w.toFront(); } Point convertedDragWindowOffset = SwingUtilities.convertPoint(w, dragWindowOffset, getTitlePane()); Frame f = null; Dialog d = null; if (w instanceof Frame) { f = (Frame) w; } else if (w instanceof Dialog) { d = (Dialog) w; } int frameState = (f != null) ? f.getExtendedState() : 0; if (getTitlePane() != null && getTitlePane().contains(convertedDragWindowOffset)) { if ((f != null && ((frameState & Frame.MAXIMIZED_BOTH) == 0) || (d != null)) && dragWindowOffset.y >= BORDER_DRAG_THICKNESS && dragWindowOffset.x >= BORDER_DRAG_THICKNESS && dragWindowOffset.x < w.getWidth() - BORDER_DRAG_THICKNESS) { isMovingWindow = true; dragOffsetX = dragWindowOffset.x; dragOffsetY = dragWindowOffset.y; } } else if (f != null && f.isResizable() && ((frameState & Frame.MAXIMIZED_BOTH) == 0) || (d != null && d.isResizable())) { dragOffsetX = dragWindowOffset.x; dragOffsetY = dragWindowOffset.y; dragWidth = w.getWidth(); dragHeight = w.getHeight(); dragCursor = getCursor(calculateCorner(w, dragWindowOffset.x, dragWindowOffset.y)); } }
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); } } } } }
/** * Shows/hides the security panel. * * @param isVisible <tt>true</tt> to show the security panel, <tt>false</tt> to hide it */ public void setSecurityPanelVisible(final boolean isVisible) { if (!SwingUtilities.isEventDispatchThread()) { SwingUtilities.invokeLater( new Runnable() { public void run() { setSecurityPanelVisible(isVisible); } }); return; } final JFrame callFrame = callRenderer.getCallContainer().getCallWindow().getFrame(); final JPanel glassPane = (JPanel) callFrame.getGlassPane(); if (!isVisible) { // Need to hide the security panel explicitly in order to keep the // fade effect. securityPanel.setVisible(false); glassPane.setVisible(false); glassPane.removeAll(); } else { glassPane.setLayout(null); glassPane.addMouseListener( new MouseListener() { public void mouseClicked(MouseEvent e) { redispatchMouseEvent(glassPane, e); } public void mouseEntered(MouseEvent e) { redispatchMouseEvent(glassPane, e); } public void mouseExited(MouseEvent e) { redispatchMouseEvent(glassPane, e); } public void mousePressed(MouseEvent e) { redispatchMouseEvent(glassPane, e); } public void mouseReleased(MouseEvent e) { redispatchMouseEvent(glassPane, e); } }); Point securityLabelPoint = securityStatusLabel.getLocation(); Point newPoint = SwingUtilities.convertPoint( securityStatusLabel.getParent(), securityLabelPoint.x, securityLabelPoint.y, callFrame); securityPanel.setBeginPoint(new Point((int) newPoint.getX() + 15, 0)); securityPanel.setBounds(0, (int) newPoint.getY() - 5, this.getWidth(), 130); glassPane.add(securityPanel); // Need to show the security panel explicitly in order to keep the // fade effect. securityPanel.setVisible(true); glassPane.setVisible(true); glassPane.addComponentListener( new ComponentAdapter() { /** Invoked when the component's size changes. */ @Override public void componentResized(ComponentEvent e) { if (glassPane.isVisible()) { glassPane.setVisible(false); callFrame.removeComponentListener(this); } } }); } }
/** * Causes the popup to be displayed at the specified location. * * @param component The component whose cooredinate system is to be used. * @param x The horizontal location of the popup * @param y The vertical location of the popup. */ public void showPopup(JComponent component, int x, int y) { // Get the root (JFrame probably) Component rootComp = SwingUtilities.getRoot(component); // Determine where to place the popup // (Left or right, top or bottom of the mouse cursor // We want to fit the popup within the top level frame int componentMaxX = (int) rootComp.getSize().width; int componentMaxY = (int) rootComp.getSize().height; int xPosOnRoot = SwingUtilities.convertPoint(component, x, y, rootComp).x; int yPosOnRoot = SwingUtilities.convertPoint(component, x, y, rootComp).y; // Display to the right of the mouse cursor, unless // there is not enough room int deltaX = xPosOnRoot + content.getWidth() - componentMaxX; if (deltaX > 0) { xPosOnRoot -= deltaX; if (xPosOnRoot < 0) { xPosOnRoot = 0; } } int deltaY = yPosOnRoot + content.getHeight() - componentMaxY; if (deltaY > 0) { yPosOnRoot -= deltaY; if (yPosOnRoot < 0) { yPosOnRoot = 0; } } // Convert root pos back to component pos int xPos = SwingUtilities.convertPoint(rootComp, xPosOnRoot, yPosOnRoot, component).x; int yPos = SwingUtilities.convertPoint(rootComp, xPosOnRoot, yPosOnRoot, component).y; JRootPane rootPane = component.getRootPane(); rootPane.setGlassPane(glassPane); // Convert the mouse point from the invoking component coordinate // system to the glassPane coordinate system Point pt = SwingUtilities.convertPoint(component, xPos, yPos, glassPane); // Set the location of the popup in the glass pane content.setLocation(pt); // Show the glass pane. glassPane.setVisible(true); // If the popup is set to hide automatically after a specified // amount of time, then reset the timer. if (HIDE_ON_TIMER == true) { timer.stop(); timer.start(); } }
private void setDispatchComponent(MouseEvent e) { Component editorComponent = getEditorComponent(); Point p = e.getPoint(); Point p2 = SwingUtilities.convertPoint(JListMutable.this, p, editorComponent); dispatchComponent = SwingUtilities.getDeepestComponentAt(editorComponent, p2.x, p2.y); }
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; }
@Override protected void paintComponent(Graphics g) { JRibbonFrame ribbonFrame = (JRibbonFrame) SwingUtilities.getWindowAncestor(this); if (!ribbonFrame.isShowingKeyTips()) return; // don't show keytips on inactive windows if (!ribbonFrame.isActive()) return; Collection<KeyTipManager.KeyTipLink> keyTips = KeyTipManager.defaultManager().getCurrentlyShownKeyTips(); if (keyTips != null) { Graphics2D g2d = (Graphics2D) g.create(); RenderingUtils.installDesktopHints(g2d); for (KeyTipManager.KeyTipLink keyTip : keyTips) { // don't display keytips on components in popup panels if (SwingUtilities.getAncestorOfClass(JPopupPanel.class, keyTip.comp) != null) continue; // don't display key tips on hidden components Rectangle compBounds = keyTip.comp.getBounds(); if (!keyTip.comp.isShowing() || (compBounds.getWidth() == 0) || (compBounds.getHeight() == 0)) continue; Dimension pref = KeyTipRenderingUtilities.getPrefSize(g2d.getFontMetrics(), keyTip.keyTipString); Point prefCenter = keyTip.prefAnchorPoint; Point loc = SwingUtilities.convertPoint(keyTip.comp, prefCenter, this); Container bandControlPanel = SwingUtilities.getAncestorOfClass(AbstractBandControlPanel.class, keyTip.comp); if (bandControlPanel != null) { // special case for controls in threesome // ribbon band rows if (hasClientPropertySetToTrue(keyTip.comp, BasicBandControlPanelUI.TOP_ROW)) { loc = SwingUtilities.convertPoint(keyTip.comp, prefCenter, bandControlPanel); loc.y = 0; loc = SwingUtilities.convertPoint(bandControlPanel, loc, this); // prefCenter.y = 0; } if (hasClientPropertySetToTrue(keyTip.comp, BasicBandControlPanelUI.MID_ROW)) { loc = SwingUtilities.convertPoint(keyTip.comp, prefCenter, bandControlPanel); loc.y = bandControlPanel.getHeight() / 2; loc = SwingUtilities.convertPoint(bandControlPanel, loc, this); // prefCenter.y = keyTip.comp.getHeight() / 2; } if (hasClientPropertySetToTrue(keyTip.comp, BasicBandControlPanelUI.BOTTOM_ROW)) { loc = SwingUtilities.convertPoint(keyTip.comp, prefCenter, bandControlPanel); loc.y = bandControlPanel.getHeight(); loc = SwingUtilities.convertPoint(bandControlPanel, loc, this); // prefCenter.y = keyTip.comp.getHeight(); } } KeyTipRenderingUtilities.renderKeyTip( g2d, this, new Rectangle( loc.x - pref.width / 2, loc.y - pref.height / 2, pref.width, pref.height), keyTip.keyTipString, keyTip.enabled); } g2d.dispose(); } }