private void onMouseExited(MouseEvent event) { BoundableRenderable oldTarget = this.mousePressTarget; if (oldTarget != null) { this.mousePressTarget = null; oldTarget.onMouseDisarmed(event); } }
/* (non-Javadoc) * @see org.xamjwg.html.renderer.BoundableRenderable#onMouseDisarmed(java.awt.event.MouseEvent) */ public void onMouseDisarmed(MouseEvent event) { BoundableRenderable ar = this.armedRenderable; if (ar != null) { ar.onMouseDisarmed(event); this.armedRenderable = null; } }
private void onMouseClick(MouseEvent event) { Point point = event.getPoint(); BoundableRenderable r = this.rblock.getRenderable(point); if (r != null) { Rectangle bounds = r.getBounds(); r.onMouseClick(event, point.x - bounds.x, point.y - bounds.y); } }
/* (non-Javadoc) * @see org.xamjwg.html.renderer.BoundableRenderable#onMouseClick(java.awt.event.MouseEvent, int, int) */ public void onMouseClick(MouseEvent event, int x, int y) { Iterator i = this.blocks.iterator(); while (i.hasNext()) { Object r = i.next(); if (r instanceof BoundableRenderable) { BoundableRenderable br = (BoundableRenderable) r; Rectangle bounds = br.getBounds(); if (bounds.contains(x, y)) { br.onMouseClick(event, x - bounds.x, y - bounds.y); } } } }
private Rectangle getAbsoluteBounds(BoundableRenderable br) { int x = 0; int y = 0; Renderable parent = br; while (parent instanceof BoundableRenderable) { BoundableRenderable current = (BoundableRenderable) parent; Rectangle bounds = current.getBounds(); x += bounds.x; y += bounds.y; parent = current.getParent(); } Rectangle oldBounds = br.getBounds(); return new Rectangle(x, y, oldBounds.width, oldBounds.height); }
private void onMouseReleased(MouseEvent event) { Point point = event.getPoint(); BoundableRenderable r = this.rblock.getRenderable(point); if (r != null) { Rectangle bounds = r.getBounds(); r.onMouseReleased(event, point.x - bounds.x, point.y - bounds.y); } BoundableRenderable oldTarget = this.mousePressTarget; if (oldTarget != null) { this.mousePressTarget = null; if (oldTarget != r) { oldTarget.onMouseDisarmed(event); } } }
/* (non-Javadoc) * @see org.xamjwg.html.renderer.BoundableRenderable#getRenderablePoint(int, int) */ public RenderablePoint getRenderablePoint(int x, int y) { Iterator i = this.blocks.iterator(); while (i.hasNext()) { Object r = i.next(); if (r instanceof BoundableRenderable) { BoundableRenderable br = (BoundableRenderable) r; Rectangle bounds = br.getBounds(); if (bounds.contains(x, y)) { RenderablePoint rp = br.getRenderablePoint(x - bounds.x, y - bounds.y); if (rp != null) { return rp; } } } } return null; }
/* (non-Javadoc) * @see org.xamjwg.html.renderer.BoundableRenderable#onMouseReleased(java.awt.event.MouseEvent, int, int) */ public void onMouseReleased(MouseEvent event, int x, int y) { Iterator i = this.blocks.iterator(); boolean found = false; while (i.hasNext()) { Object r = i.next(); if (r instanceof BoundableRenderable) { BoundableRenderable br = (BoundableRenderable) r; Rectangle bounds = br.getBounds(); if (bounds.contains(x, y)) { found = true; br.onMouseReleased(event, x - bounds.x, y - bounds.y); BoundableRenderable oldArmedRenderable = this.armedRenderable; if (oldArmedRenderable != null && br != oldArmedRenderable) { oldArmedRenderable.onMouseDisarmed(event); this.armedRenderable = null; } } } } if (!found) { BoundableRenderable oldArmedRenderable = this.armedRenderable; if (oldArmedRenderable != null) { oldArmedRenderable.onMouseDisarmed(event); this.armedRenderable = null; } } }
private void onMousePressed(MouseEvent event) { this.requestFocus(); Point point = event.getPoint(); BoundableRenderable r = this.rblock.getRenderable(point); if (r != null) { this.mousePressTarget = r; Rectangle bounds = r.getBounds(); int rx = point.x - bounds.x; int ry = point.y - bounds.y; r.onMousePressed(event, rx, ry); RenderablePoint rp = r.getRenderablePoint(rx, ry); if (rp != null) { this.frameContext.resetSelection(rp); } else { this.frameContext.resetSelection(null); } } else { this.frameContext.resetSelection(null); } }
/** * Find renderable. * * @param renderables the renderables * @param x the x * @param y the y * @param firstIndex the first index * @param length the length * @param vertical the vertical * @return the boundable renderable */ private static BoundableRenderable findRenderable( Renderable[] renderables, int x, int y, int firstIndex, int length, boolean vertical) { if (length == 0) { return null; } if (length == 1) { Renderable r = renderables[firstIndex]; if (!(r instanceof BoundableRenderable)) { return null; } BoundableRenderable br = (BoundableRenderable) r; Rectangle rbounds = br.getBounds(); return rbounds.contains(x, y) ? br : null; } else { int middleIndex = firstIndex + (length / 2); Renderable r = renderables[middleIndex]; Rectangle rbounds; if (r instanceof BoundableRenderable) { rbounds = ((BoundableRenderable) r).getBounds(); } else { BoundableRenderable rleft = findRenderable(renderables, x, y, firstIndex, middleIndex - firstIndex, vertical); if (rleft != null) { return rleft; } return findRenderable( renderables, x, y, middleIndex + 1, length - ((middleIndex - firstIndex) + 1), vertical); } if (rbounds.contains(x, y)) { return (BoundableRenderable) r; } if (vertical) { if (y < rbounds.y) { return findRenderable(renderables, x, y, firstIndex, middleIndex - firstIndex, vertical); } else { return findRenderable( renderables, x, y, middleIndex + 1, length - ((middleIndex - firstIndex) + 1), vertical); } } else { if (x < rbounds.x) { return findRenderable(renderables, x, y, firstIndex, middleIndex - firstIndex, vertical); } else { return findRenderable( renderables, x, y, middleIndex + 1, length - ((middleIndex - firstIndex) + 1), vertical); } } } }