public String getTextForGesture(long parId, Point topLeft, Point bottomRight) { try { Paragraph p = lockManager.getParFromId(parId); int parY = documentPanel.textPane.modelToView(p.getOffset()).y; topLeft.y = topLeft.y + parY; bottomRight.y = bottomRight.y + parY; int startOffset = documentPanel.textPane.viewToModel(topLeft); int endOffset = documentPanel.textPane.viewToModel(bottomRight); while (startOffset > 0 && Character.isLetterOrDigit((document.getText(startOffset - 1, 1).charAt(0)))) startOffset--; while (endOffset < document.getLength() && Character.isLetterOrDigit((document.getText(endOffset, 1).charAt(0)))) endOffset++; String text = document.getText(startOffset, endOffset - startOffset); return text; } catch (Exception e) { System.out.println("EditorClient: addGestureAction. error identifying text"); e.printStackTrace(); return ""; } // return "PLACEBO"; }
/** * Returns the closest point to @param p. Works recursively. Compares current point with p, then * checks which tree to explore sub-trees * * @param t * @param p * @param best * @param bestDistance * @param cd * @return Point nearest to p */ private Point nearest(TreeNode t, Point p, Point best, double bestDistance, boolean cd) { if (p == null) return best; if (t == null) return best; nodesTouchedOnNearest++; // System.out.println(t.p.toString()); double distance = squaredDistance(t.p, p); if (distance < bestDistance) { best = t.p; bestDistance = distance; } Point result; if (cd) { if (p.x() < t.p.x()) result = nearest(t.left, p, best, bestDistance, !cd); else if (p.x() > t.p.x()) result = nearest(t.right, p, best, bestDistance, !cd); else { // They must be equal, cut on y if (p.y() < t.p.y()) result = nearest(t.left, p, best, bestDistance, !cd); else result = nearest(t.right, p, best, bestDistance, !cd); } } else { if (p.y() < t.p.y()) result = nearest(t.left, p, best, bestDistance, !cd); else if (p.y() > t.p.y()) result = nearest(t.right, p, best, bestDistance, !cd); else { // They must be equal, cut on x if (p.x() < t.p.x()) result = nearest(t.left, p, best, bestDistance, !cd); else result = nearest(t.right, p, best, bestDistance, !cd); } } distance = squaredDistance(result, p); if (distance < bestDistance) { best = result; bestDistance = distance; } return best; }
// draw method public synchronized void draw(Graphics2D g) { int w = s.getWidth(); int h = s.getHeight(); image.x %= w; image.y %= h; if (image.x < 0) { image.x += w; } else { } if (image.y < 0) { image.y += h; } else { } int x = image.x; int y = image.y; g.drawImage(bg, x, y, null); g.drawImage(bg, x - w, y, null); g.drawImage(bg, x, y - h, null); g.drawImage(bg, x - w, y - h, null); }
// This method returns true of p lies in the rectangle outlined by sw, se, nw, ne private boolean subTreeInRange(Point sw, Point se, Point nw, Point ne, Point p) { if (sw.x() < p.x() && p.x() < se.x()) { if (sw.y() < p.y() && p.y() < nw.y()) { return true; } } return false; }
public Point getLocation() { if (inEditMode) { tmpLoc.x = defLoc.x; tmpLoc.y = defLoc.y; } else { tmpLoc.x = curLoc.x; tmpLoc.y = curLoc.y; } return tmpLoc; }
private boolean boxOverlaps(TreeNode t, Point sw, Point ne) { Point nw = new Point(sw.x(), ne.y()); Point se = new Point(ne.x(), sw.y()); Point myNw = new Point(t.minX.p.x(), t.maxY.p.y()); Point mySe = new Point(t.maxX.p.x(), t.minY.p.y()); if (myNw.x() >= nw.x() || myNw.y() >= nw.y() || mySe.x() <= se.x() || mySe.y() <= se.y()) { return true; } return false; }
/** * Returns an point which has been adjusted to take into account of the desktop bounds, taskbar * and multi-monitor configuration. * * <p>This adustment may be cancelled by invoking the application with * -Djavax.swing.adjustPopupLocationToFit=false */ Point adjustPopupLocationToFitScreen(int xPosition, int yPosition) { Point popupLocation = new Point(xPosition, yPosition); if (popupPostionFixDisabled == true || GraphicsEnvironment.isHeadless()) { return popupLocation; } // Get screen bounds Rectangle scrBounds; GraphicsConfiguration gc = getCurrentGraphicsConfiguration(popupLocation); Toolkit toolkit = Toolkit.getDefaultToolkit(); if (gc != null) { // If we have GraphicsConfiguration use it to get screen bounds scrBounds = gc.getBounds(); } else { // If we don't have GraphicsConfiguration use primary screen scrBounds = new Rectangle(toolkit.getScreenSize()); } // Calculate the screen size that popup should fit Dimension popupSize = JPopupMenu.this.getPreferredSize(); long popupRightX = (long) popupLocation.x + (long) popupSize.width; long popupBottomY = (long) popupLocation.y + (long) popupSize.height; int scrWidth = scrBounds.width; int scrHeight = scrBounds.height; if (!canPopupOverlapTaskBar()) { // Insets include the task bar. Take them into account. Insets scrInsets = toolkit.getScreenInsets(gc); scrBounds.x += scrInsets.left; scrBounds.y += scrInsets.top; scrWidth -= scrInsets.left + scrInsets.right; scrHeight -= scrInsets.top + scrInsets.bottom; } int scrRightX = scrBounds.x + scrWidth; int scrBottomY = scrBounds.y + scrHeight; // Ensure that popup menu fits the screen if (popupRightX > (long) scrRightX) { popupLocation.x = scrRightX - popupSize.width; if (popupLocation.x < scrBounds.x) { popupLocation.x = scrBounds.x; } } if (popupBottomY > (long) scrBottomY) { popupLocation.y = scrBottomY - popupSize.height; if (popupLocation.y < scrBounds.y) { popupLocation.y = scrBounds.y; } } return popupLocation; }
public void reshape(int x, int y, int w, int h) { if (inEditMode) { defLoc.x = x; defLoc.y = y; defDim.width = w; defDim.height = h; } curLoc.x = x; curLoc.y = y; curDim.width = w; curDim.height = h; super.reshape(x, y, w, h); }
public synchronized void mouseMoved(MouseEvent e) { if (centering && center.x == e.getX() && center.y == e.getY()) { centering = false; } else { int dx = e.getX() - mouse.x; int dy = e.getY() - mouse.y; image.x += dx; image.y += dy; recenterMouse(); } mouse.x = e.getX(); mouse.y = e.getY(); }
/** * Calls the given treeNode. * * @param treeNode the <tt>TreeNode</tt> to call */ private void call(TreeNode treeNode, JButton button, boolean isVideo, boolean isDesktopSharing) { if (!(treeNode instanceof ContactNode)) return; UIContact contactDescriptor = ((ContactNode) treeNode).getContactDescriptor(); Point location = new Point(button.getX(), button.getY() + button.getHeight()); SwingUtilities.convertPointToScreen(location, treeContactList); location.y = location.y + treeContactList.getPathBounds(treeContactList.getSelectionPath()).y; location.x += 8; location.y -= 8; CallManager.call(contactDescriptor, isVideo, isDesktopSharing, treeContactList, location); }
/** * Calculates location of caret and displays the suggestion popup at the location. * * @param listModel * @param subWord */ protected void showSuggestion(DefaultListModel<CompletionCandidate> listModel, String subWord) { // new Exception(System.currentTimeMillis() + "").printStackTrace(System.out); hideSuggestion(); if (listModel.size() == 0) { Messages.log("TextArea: No suggestions to show."); } else { int position = getCaretPosition(); Point location = new Point(); try { location.x = offsetToX(getCaretLine(), position - getLineStartOffset(getCaretLine())); location.y = lineToY(getCaretLine()) + getPainter().getFontMetrics().getHeight() + getPainter().getFontMetrics().getDescent(); // log("TA position: " + location); } catch (Exception e2) { e2.printStackTrace(); return; } suggestion = new CompletionPanel(this, position, subWord, listModel, location, editor); requestFocusInWindow(); } }
// Private method for deleting a node. Called from the public delete method. Works recursively // Method works by recursively deleting a node, and then once backing out of the recursion all // data members are updated for each node private boolean delete(TreeNode t, Point p, boolean cd) { boolean status = false; // Base case, not found so return false if (t == null) return false; if (t.p.equals(p)) { // Found the node, now delete it if (t.right != null) { TreeNode min = findMin(t.right, cd); swapData(t, min); status = delete(min, min.p, min.cd); } else if (t.left != null) { TreeNode min = findMin(t.left, cd); swapData(t, min); t.right = t.left; t.left = null; status = delete(min, min.p, min.cd); } else { // At a leaf, remove the node size--; status = deleteFromParent(t); } } else if (cd) { if (p.x() < t.p.x()) status = delete(t.left, p, !cd); else if (p.x() > t.p.x()) status = delete(t.right, p, !cd); else { // They must be equal, cut on y if (p.y() < t.p.y()) status = delete(t.left, p, !cd); else status = delete(t.right, p, !cd); } } else { if (p.y() < t.p.y()) status = delete(t.left, p, !cd); else if (p.y() > t.p.y()) status = delete(t.right, p, !cd); else { // They must be equal, cut on x if (p.x() < t.p.x()) status = delete(t.left, p, !cd); else status = delete(t.right, p, !cd); } } // Backing out of recursion, need to update data members updateMinMaxOnDeleteAndRebuild(t); t.height = maxHeight(t.left, t.right) + 1; // Check if becoming unbalanced if (unbalanced(t)) { Point[] points = collectSatanSpawn(t); TDTree newSubTree = new TDTree(points, cd); swapDataMembers(t, newSubTree.root); } return status; } // End private delete method
/** * Set the offset from the center for this <code>MetSymbol</code>. * * @param x x offset * @param y y offset */ public void setOffset(int x, int y) { if (offset != null) { offset.x = x; offset.y = y; } bounds.x = x; bounds.y = y; }
/** {@inheritDoc} */ @Override public void mouseDragged(final MouseEvent aEvent) { final MouseEvent event = convertEvent(aEvent); final Point point = event.getPoint(); // Update the selected channel while dragging... this.controller.setSelectedChannel(point); if (getModel().isCursorMode() && (this.movingCursor >= 0)) { this.controller.moveCursor(this.movingCursor, getCursorDropPoint(point)); aEvent.consume(); } else { if ((this.lastClickPosition == null) && ((aEvent.getModifiersEx() & InputEvent.BUTTON1_DOWN_MASK) != 0)) { this.lastClickPosition = new Point(point); } final JScrollPane scrollPane = getAncestorOfClass(JScrollPane.class, (Component) aEvent.getSource()); if ((scrollPane != null) && (this.lastClickPosition != null)) { final JViewport viewPort = scrollPane.getViewport(); final Component signalView = this.controller.getSignalDiagram().getSignalView(); boolean horizontalOnly = (aEvent.getModifiersEx() & InputEvent.ALT_DOWN_MASK) != 0; boolean verticalOnly = horizontalOnly && ((aEvent.getModifiersEx() & InputEvent.SHIFT_DOWN_MASK) != 0); int dx = aEvent.getX() - this.lastClickPosition.x; int dy = aEvent.getY() - this.lastClickPosition.y; Point scrollPosition = viewPort.getViewPosition(); int newX = scrollPosition.x; if (!verticalOnly) { newX -= dx; } int newY = scrollPosition.y; if (verticalOnly || !horizontalOnly) { newY -= dy; } int diagramWidth = signalView.getWidth(); int viewportWidth = viewPort.getWidth(); int maxX = diagramWidth - viewportWidth - 1; scrollPosition.x = Math.max(0, Math.min(maxX, newX)); int diagramHeight = signalView.getHeight(); int viewportHeight = viewPort.getHeight(); int maxY = diagramHeight - viewportHeight; scrollPosition.y = Math.max(0, Math.min(maxY, newY)); viewPort.setViewPosition(scrollPosition); } // Use UNCONVERTED/ORIGINAL mouse event! handleZoomRegion(aEvent, this.lastClickPosition); } }
public void updatePosition() { Point position = new Point(spaceOccupied.x, spaceOccupied.y); // Insert random behavior. During // each update, a sprite has about // one chance in 10 of making a // random change to its // motionVector. When a change // occurs, the motionVector // coordinate values are forced to // fall between -7 and 7. This // puts a cap on the maximum speed // for a sprite. if (rand.nextInt() % 10 == 0) { Point randomOffset = new Point(rand.nextInt() % 3, rand.nextInt() % 3); motionVector.x += randomOffset.x; if (motionVector.x >= 7) motionVector.x -= 7; if (motionVector.x <= -7) motionVector.x += 7; motionVector.y += randomOffset.y; if (motionVector.y >= 7) motionVector.y -= 7; if (motionVector.y <= -7) motionVector.y += 7; } // end if // Move the sprite on the screen position.translate(motionVector.x, motionVector.y); // Bounce off the walls boolean bounceRequired = false; Point tempMotionVector = new Point(motionVector.x, motionVector.y); // Handle walls in x-dimension if (position.x < bounds.x) { bounceRequired = true; position.x = bounds.x; // reverse direction in x tempMotionVector.x = -tempMotionVector.x; } else if ((position.x + spaceOccupied.width) > (bounds.x + bounds.width)) { bounceRequired = true; position.x = bounds.x + bounds.width - spaceOccupied.width; // reverse direction in x tempMotionVector.x = -tempMotionVector.x; } // end else if // Handle walls in y-dimension if (position.y < bounds.y) { bounceRequired = true; position.y = bounds.y; tempMotionVector.y = -tempMotionVector.y; } else if ((position.y + spaceOccupied.height) > (bounds.y + bounds.height)) { bounceRequired = true; position.y = bounds.y + bounds.height - spaceOccupied.height; tempMotionVector.y = -tempMotionVector.y; } // end else if if (bounceRequired) // save new motionVector setMotionVector(tempMotionVector); // update spaceOccupied setSpaceOccupied(position); } // end updatePosition()
public void reshape(int x, int y, int w, int h) { if (inEditMode) { defLoc.x = x; defLoc.y = y; defDim.width = w; defDim.height = h; } curLoc.x = x; curLoc.y = y; curDim.width = w; curDim.height = h; if (!inEditMode) { if ((h != nHeight) || (h < rHeight)) { adjustFont(w, h); } } super.reshape(x, y, w, h); }
@Override public Point getLocationOnScreen() { Dimension headerCorrectionSize = myLocateByContent ? myHeaderPanel.getPreferredSize() : null; Point screenPoint = myContent.getLocationOnScreen(); if (headerCorrectionSize != null) { screenPoint.y -= headerCorrectionSize.height; } return screenPoint; }
public static Window moveTo( JComponent content, Point screenPoint, final Dimension headerCorrectionSize) { setDefaultCursor(content); final Window wnd = SwingUtilities.getWindowAncestor(content); if (headerCorrectionSize != null) { screenPoint.y -= headerCorrectionSize.height; } wnd.setLocation(screenPoint); return wnd; }
// Recursive method for determining if a point is in the tree // This function works very similar to the insert method private boolean contains(TreeNode t, Point p, boolean even) { if (p == null) return false; if (t == null) return false; if (t.p.equals(p)) return true; // Found the point, return true if (even) { if (p.x() < t.p.x()) return contains(t.left, p, !even); else if (p.x() > t.p.x()) return contains(t.right, p, !even); else { // They must be equal, cut on y if (p.y() < t.p.y()) return contains(t.left, p, !even); else return contains(t.right, p, !even); } } else { if (p.y() < t.p.y()) return contains(t.left, p, !even); else if (p.y() > t.p.y()) return contains(t.right, p, !even); else { // They must be equal, cut on x if (p.x() < t.p.x()) return contains(t.left, p, !even); else return contains(t.right, p, !even); } } } // End contains method
public void setSizeRatio(double x, double y) { xRatio = x; yRatio = y; if (x > 1.0) xRatio = x - 1.0; if (y > 1.0) yRatio = y - 1.0; if (defDim.width <= 0) defDim = getPreferredSize(); curLoc.x = (int) ((double) defLoc.x * xRatio); curLoc.y = (int) ((double) defLoc.y * yRatio); curDim.width = (int) ((double) defDim.width * xRatio); curDim.height = (int) ((double) defDim.height * yRatio); if (!inEditMode) setBounds(curLoc.x, curLoc.y, curDim.width, curDim.height); }
// recenter the mouse using the robot public synchronized void recenterMouse() { Window w = s.getFullScreenWindow(); if (robot != null && w.isShowing()) { center.x = w.getWidth() / 2; center.y = w.getHeight() / 2; SwingUtilities.convertPointToScreen(center, w); centering = true; robot.mouseMove(center.x, center.y); } }
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; }
/** * Calculates the drop point for the cursor under the given coordinate. * * @param aCoordinate the coordinate to return the channel drop point for, cannot be <code>null * </code>. * @return a drop point, never <code>null</code>. */ private Point getCursorDropPoint(final Point aCoordinate) { Point dropPoint = new Point(aCoordinate); if (getModel().isSnapCursorMode()) { final MeasurementInfo signalHover = getModel().getSignalHover(aCoordinate); if ((signalHover != null) && !signalHover.isEmpty()) { dropPoint.x = signalHover.getMidSamplePos().intValue(); } } dropPoint.y = 0; return dropPoint; }
/** Constrains a point to the current grid. */ protected Point constrainPoint(Point p) { // constrain to view size Dimension size = getSize(); // p.x = Math.min(size.width, Math.max(1, p.x)); // p.y = Math.min(size.height, Math.max(1, p.y)); p.x = Geom.range(1, size.width, p.x); p.y = Geom.range(1, size.height, p.y); if (fConstrainer != null) { return fConstrainer.constrainPoint(p); } return p; }
public void setSizeRatio(double x, double y) { double rx = x; double ry = y; if (rx > 1.0) rx = x - 1.0; if (ry > 1.0) ry = y - 1.0; if (defDim.width <= 0) defDim = getPreferredSize(); curLoc.x = (int) ((double) defLoc.x * rx); curLoc.y = (int) ((double) defLoc.y * ry); curDim.width = (int) ((double) defDim.width * rx); curDim.height = (int) ((double) defDim.height * ry); if (!inEditMode) setBounds(curLoc.x, curLoc.y, curDim.width, curDim.height); twin.setSizeRatio(x, y); }
public void setEditMode(boolean s) { twin.setEditMode(s); setOpaque(s); if (s) { addMouseListener(ml); curLoc.x = defLoc.x; curLoc.y = defLoc.y; defDim = getPreferredSize(); curDim.width = defDim.width; curDim.height = defDim.height; } else removeMouseListener(ml); inEditMode = s; }
/** * Returns the component in the currently selected path which contains sourcePoint. * * @param source The component in whose coordinate space sourcePoint is given * @param sourcePoint The point which is being tested * @return The component in the currently selected path which contains sourcePoint (relative to * the source component's coordinate space. If sourcePoint is not inside a component on the * currently selected path, null is returned. */ public Component componentForPoint(Component source, Point sourcePoint) { int screenX, screenY; Point p = sourcePoint; int i, c, j, d; Component mc; Rectangle r2; int cWidth, cHeight; MenuElement menuElement; MenuElement subElements[]; Vector<MenuElement> tmp; int selectionSize; SwingUtilities.convertPointToScreen(p, source); screenX = p.x; screenY = p.y; tmp = (Vector<MenuElement>) selection.clone(); selectionSize = tmp.size(); for (i = selectionSize - 1; i >= 0; i--) { menuElement = (MenuElement) tmp.elementAt(i); subElements = menuElement.getSubElements(); for (j = 0, d = subElements.length; j < d; j++) { if (subElements[j] == null) continue; mc = subElements[j].getComponent(); if (!mc.isShowing()) continue; if (mc instanceof JComponent) { cWidth = mc.getWidth(); cHeight = mc.getHeight(); } else { r2 = mc.getBounds(); cWidth = r2.width; cHeight = r2.height; } p.x = screenX; p.y = screenY; SwingUtilities.convertPointFromScreen(p, mc); /** * Return the deepest component on the selection path in whose bounds the event's point * occurs */ if (p.x >= 0 && p.x < cWidth && p.y >= 0 && p.y < cHeight) { return mc; } } } return null; }
public void flecha(Graphics papel, int x1, int y1, int x2, int y2) { double ang = 0.0, angSep = 0.0; double tx = 0, ty = 0; int dist = 0; Point punto1 = null, punto2 = null; punto2 = new Point(x1, y1); punto1 = new Point(x2, y2); dist = 15; ty = -(punto1.y - punto2.y) * 1.0; tx = (punto1.x - punto2.x) * 1.0; ang = Math.atan(ty / tx); if (tx < 0) ang += Math.PI; Point p1 = new Point(), p2 = new Point(), punto = punto2; angSep = 25.0; p1.x = (int) (punto.x + dist * Math.cos(ang - Math.toRadians(angSep))); p1.y = (int) (punto.y - dist * Math.sin(ang - Math.toRadians(angSep))); p2.x = (int) (punto.x + dist * Math.cos(ang + Math.toRadians(angSep))); p2.y = (int) (punto.y - dist * Math.sin(ang + Math.toRadians(angSep))); Graphics2D g2D = (Graphics2D) papel; papel.setColor(Color.black); g2D.setStroke(new BasicStroke(1.2f)); papel.drawLine(punto1.x, punto1.y, punto.x, punto.y); int x[] = {p1.x, punto.x, p2.x}; int y[] = {p1.y, punto.y, p2.y}; Polygon myTri = new Polygon(x, y, 3); papel.setColor(Color.BLACK); papel.drawPolygon(myTri); papel.fillPolygon(myTri); }
/** Handles mouse dragged event */ public void mouseDragged(MouseEvent ev) { Window w = (Window) ev.getSource(); if (isMovingWindow) { Point windowPt; try { windowPt = (Point) AccessController.doPrivileged(getLocationAction); windowPt.x = windowPt.x - dragOffsetX; windowPt.y = windowPt.y - dragOffsetY; w.setLocation(windowPt); windowMoved = true; } catch (PrivilegedActionException e) { } } }
public static Point getLocationForCaret(JTextComponent pathTextField) { Point point; int position = pathTextField.getCaretPosition(); try { final Rectangle rec = pathTextField.modelToView(position); point = new Point((int) rec.getMaxX(), (int) rec.getMaxY()); } catch (BadLocationException e) { point = pathTextField.getCaret().getMagicCaretPosition(); } SwingUtilities.convertPointToScreen(point, pathTextField); point.y += 2; return point; }