@Override public boolean onMouseClick(NUIMouseClickEvent event) { for (HyperlinkBox hyperlinkBox : hyperlinkBoxes) { if (hyperlinkBox.box.contains(event.getRelativeMousePosition())) { for (BrowserHyperlinkListener browserHyperlinkListener : listenerList) { browserHyperlinkListener.hyperlinkClicked(hyperlinkBox.hyperlink); } break; } } return true; } });
protected final int getWorldIndex(int x, int z) { if (!worldRegion.contains(x, z)) { throw new IllegalArgumentException(String.format("Out of bounds: (%d, %d) for region %s", x, z, worldRegion.toString())); } return x - worldRegion.minX() + worldRegion.sizeX() * (z - worldRegion.minY()); } }
protected final int getRelativeIndex(int x, int z) { if (!relativeRegion.contains(x, z)) { throw new IllegalArgumentException(String.format("Out of bounds: (%d, %d) for region %s", x, z, relativeRegion.toString())); } return x - relativeRegion.minX() + relativeRegion.sizeX() * (z - relativeRegion.minY()); }
@Test public void testContains() { Rect2i a = Rect2i.createFromMinAndMax(0, 0, 0, 0); assertTrue(a.contains(0, 0)); assertFalse(a.contains(1, 0)); assertFalse(a.contains(0, 1)); assertFalse(a.contains(1, 1)); assertFalse(a.contains(-1, 0)); assertFalse(a.contains(0, -1)); assertFalse(a.contains(-1, 1)); assertFalse(a.contains(1, -1)); assertFalse(a.contains(-1, -1)); }
while (iter.hasNext()) { InteractionRegion next = iter.next(); if (next.region.contains(position)) { Vector2i relPos = new Vector2i(position); relPos.sub(next.offset);
@Override public boolean processMouseWheel(int wheelTurns, Vector2i pos) { for (InteractionRegion next : mouseOverRegions) { if (next.region.contains(pos)) { Vector2i relPos = new Vector2i(pos); relPos.sub(next.region.min()); if (next.listener.onMouseWheel(new NUIMouseWheelEvent(mouse, keyboard, relPos, wheelTurns))) { clickedRegion = next; nuiManager.setFocus(next.element); return true; } } } return false; }
@Test public void testEncompass() { // encompass self assertTrue(Rect2i.createFromMinAndSize(5, 5, 47, 57).contains(Rect2i.createFromMinAndSize(5, 5, 47, 57))); assertTrue(Rect2i.createFromMinAndSize(5, 5, 47, 57).contains(Rect2i.createFromMinAndSize(45, 35, 5, 20))); assertTrue(Rect2i.createFromMinAndSize(5, 5, 47, 57).contains(Rect2i.createFromMinAndSize(50, 60, 2, 2))); assertFalse(Rect2i.createFromMinAndSize(5, 5, 47, 57).contains(Rect2i.createFromMinAndSize(50, 60, 3, 2))); assertFalse(Rect2i.createFromMinAndSize(5, 5, 47, 57).contains(Rect2i.createFromMinAndSize(50, 60, 2, 3))); }
@Override public boolean processMouseClick(MouseInput button, Vector2i pos) { TabbingManager.focusSetThrough = false; TabbingManager.resetCurrentNum(); boolean possibleDoubleClick = lastClickPosition.gridDistance(pos) < MAX_DOUBLE_CLICK_DISTANCE && lastClickButton == button && time.getGameTimeInMs() - lastClickTime < DOUBLE_CLICK_TIME; lastClickPosition.set(pos); lastClickButton = button; lastClickTime = time.getGameTimeInMs(); for (InteractionRegion next : mouseOverRegions) { if (next.region.contains(pos)) { Vector2i relPos = new Vector2i(pos); relPos.sub(next.offset); if (possibleDoubleClick && nuiManager.getFocus() == next.element) { if (next.listener.onMouseDoubleClick(createDoubleClickEvent(button, relPos))) { clickedRegion = next; return true; } } else if (next.listener.onMouseClick(createClickEvent(button, relPos))) { clickedRegion = next; nuiManager.setFocus(next.element); return true; } } } return false; }