Java源码示例:net.runelite.api.events.MenuOptionClicked

示例1
private void onMenuOptionClicked(MenuOptionClicked ev)
{
	if (!pickerSelected)
	{
		return;
	}

	onPickerDeselect();
	client.setSpellSelected(false);
	ev.consume();

	Object target = getWidgetOrWidgetItemForMenuOption(ev.getMenuOpcode().getId(), ev.getParam0(), ev.getParam1());
	if (target == null)
	{
		return;
	}
	if (target instanceof WidgetItem)
	{
		WidgetItem iw = (WidgetItem) target;
		setSelectedWidget(iw.getWidget(), iw.getIndex(), true);
	}
	else
	{
		setSelectedWidget((Widget) target, -1, true);
	}
}
 
示例2
@Subscribe
private void onMenuOptionClicked(final MenuOptionClicked event)
{
	if (event.getMenuOpcode() != MenuOpcode.RUNELITE)
	{
		return;
	}

	final String selectedMenu = Text.removeTags(event.getTarget());

	if (event.getOption().equals(MENU_SET))
	{
		setTag(event.getIdentifier(), selectedMenu);
	}
	else if (event.getOption().equals(MENU_REMOVE))
	{
		unsetTag(event.getIdentifier());
	}
}
 
示例3
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
	if (!event.getOption().contains(MARK) && !event.getOption().contains(UNMARK))
	{
		return;
	}

	int group = 1;
	Matcher m = GROUP_MATCHER.matcher(event.getOption());
	if (m.matches())
	{
		group = Integer.parseInt(m.group(1));
	}

	Tile target = client.getSelectedSceneTile();

	if (target == null)
	{
		return;
	}
	markTile(target.getLocalLocation(), group);
}
 
示例4
@Test
public void testItem()
{
	when(client.getWidget(anyInt(), anyInt())).thenReturn(mock(Widget.class));
	when(itemManager.getItemDefinition(anyInt())).thenReturn(mock(ItemDefinition.class));

	MenuOptionClicked menuOptionClicked = new MenuOptionClicked(
		"Examine",
		"Something",
		ItemID.ABYSSAL_WHIP,
		MenuOpcode.EXAMINE_ITEM.getId(),
		123,
		456,
		false
	);
	examinePlugin.onMenuOptionClicked(menuOptionClicked);

	ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.ITEM_EXAMINE, "", "A weapon from the abyss.", "", 0);
	examinePlugin.onChatMessage(chatMessage);

	// This passes due to not mocking the ItemDefinition for the whip
	verify(examineClient).submitItem(anyInt(), anyString());
}
 
示例5
@Test
public void testLargeStacks()
{
	when(client.getWidget(anyInt(), anyInt())).thenReturn(mock(Widget.class));
	when(itemManager.getItemDefinition(anyInt())).thenReturn(mock(ItemDefinition.class));

	MenuOptionClicked menuOptionClicked = new MenuOptionClicked(
		"Examine",
		"Something",
		ItemID.ABYSSAL_WHIP,
		MenuOpcode.EXAMINE_ITEM.getId(),
		123,
		456,
		false
	);

	examinePlugin.onMenuOptionClicked(menuOptionClicked);

	ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.ITEM_EXAMINE, "", "100000 x Abyssal whip", "", 0);
	examinePlugin.onChatMessage(chatMessage);

	verify(examineClient, never()).submitItem(anyInt(), anyString());
}
 
示例6
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked menuOpt)
{
	if (!inHerbiboarArea || started || MenuOpcode.GAME_OBJECT_FIRST_OPTION != menuOpt.getMenuOpcode())
	{
		return;
	}

	switch (Text.removeTags(menuOpt.getTarget()))
	{
		case "Rock":
		case "Mushroom":
		case "Driftwood":
			startPoint = WorldPoint.fromScene(client, menuOpt.getParam0(), menuOpt.getParam1(), client.getPlane());
	}
}
 
示例7
private void onMenuOptionClicked(MenuOptionClicked event)
{
	if (event.getOpcode() != MenuOpcode.RUNELITE.getId() ||
		!event.getOption().equals(TRANSLATE))
	{
		return;
	}

	String name =
		Text.toJagexName(
			Text.removeTags(event.getTarget(), true)
				.toLowerCase()
		);

	playerNames.add(name);

	config.playerNames(Text.toCSV(playerNames));
}
 
示例8
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked menu)
{
	if (!inMlm)
	{
		return;
	}

	if (MINE_SPOTS.contains(menu.getIdentifier()) && menu.getMenuOpcode() == MenuOpcode.GAME_OBJECT_FIRST_OPTION)
	{
		resetIdleChecks();
		int veinX = menu.getParam0();
		int veinY = menu.getParam1();
		targetVeinLocation = WorldPoint.fromScene(client, veinX, veinY, client.getPlane());
	}
}
 
示例9
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked event)
{
	final String menuOption = event.getOption();

	// The menu option for clear history is "<col=ffff00>Public:</col> Clear history"
	if (menuOption.endsWith(CLEAR_HISTORY))
	{
		clearChatboxHistory(ChatboxTab.of(event.getParam1()));
	}
	else if (COPY_TO_CLIPBOARD.equals(menuOption) && !Strings.isNullOrEmpty(currentMessage))
	{
		final StringSelection stringSelection = new StringSelection(Text.removeTags(currentMessage));
		Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
	}
}
 
示例10
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked menuOptionClicked)
{
	if (menuOptionClicked.getMenuAction() != MenuAction.RUNELITE_INFOBOX)
	{
		return;
	}

	InfoBox infoBox = hoveredComponent.getInfoBox();
	OverlayMenuEntry overlayMenuEntry = infoBox.getMenuEntries().stream()
		.filter(me -> me.getOption().equals(menuOptionClicked.getMenuOption()))
		.findAny()
		.orElse(null);
	if (overlayMenuEntry != null)
	{
		eventBus.post(new InfoBoxMenuClicked(overlayMenuEntry, infoBox));
	}
}
 
示例11
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked event)
{
	MenuAction menuAction = event.getMenuAction();
	if (menuAction != MenuAction.RUNELITE_OVERLAY && menuAction != MenuAction.RUNELITE_OVERLAY_CONFIG)
	{
		return;
	}

	event.consume();

	Overlay overlay = overlays.get(event.getId());
	if (overlay != null)
	{
		List<OverlayMenuEntry> menuEntries = overlay.getMenuEntries();
		OverlayMenuEntry overlayMenuEntry = menuEntries.stream()
			.filter(me -> me.getOption().equals(event.getMenuOption()))
			.findAny()
			.orElse(null);
		if (overlayMenuEntry != null)
		{
			eventBus.post(new OverlayMenuClicked(overlayMenuEntry, overlay));
		}
	}
}
 
示例12
@Subscribe
public void onMenuOptionClicked(final MenuOptionClicked event)
{
	if (event.getMenuAction() != MenuAction.RUNELITE)
	{
		return;
	}

	final String selectedMenu = Text.removeTags(event.getMenuTarget());

	if (event.getMenuOption().equals(MENU_SET))
	{
		setTag(event.getId(), selectedMenu);
	}
	else if (event.getMenuOption().equals(MENU_REMOVE))
	{
		unsetTag(event.getId());
	}
}
 
示例13
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked menuOpt)
{
	if (!inHerbiboarArea || started || MenuAction.GAME_OBJECT_FIRST_OPTION != menuOpt.getMenuAction())
	{
		return;
	}

	switch (Text.removeTags(menuOpt.getMenuTarget()))
	{
		case "Rock":
		case "Mushroom":
		case "Driftwood":
			startPoint = WorldPoint.fromScene(client, menuOpt.getActionParam(), menuOpt.getWidgetId(), client.getPlane());
	}
}
 
示例14
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked event)
{
	if (event.getMenuAction().getId() != MenuAction.RUNELITE.getId() ||
		!(event.getMenuOption().equals(MARK) || event.getMenuOption().equals(UNMARK)))
	{
		return;
	}

	Tile target = client.getSelectedSceneTile();
	if (target == null)
	{
		return;
	}
	markTile(target.getLocalLocation());
}
 
示例15
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked event)
{
	final String menuOption = event.getMenuOption();

	// The menu option for clear history is "<col=ffff00>Public:</col> Clear history"
	if (menuOption.endsWith(CLEAR_HISTORY))
	{
		clearChatboxHistory(ChatboxTab.of(event.getWidgetId()));
	}
	else if (COPY_TO_CLIPBOARD.equals(menuOption) && !Strings.isNullOrEmpty(currentMessage))
	{
		final StringSelection stringSelection = new StringSelection(Text.removeTags(currentMessage));
		Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
	}
}
 
示例16
@Test
public void testItem()
{
	when(client.getWidget(anyInt(), anyInt())).thenReturn(mock(Widget.class));
	when(itemManager.getItemComposition(anyInt())).thenReturn(mock(ItemComposition.class));

	MenuOptionClicked menuOptionClicked = new MenuOptionClicked();
	menuOptionClicked.setMenuOption("Examine");
	menuOptionClicked.setMenuAction(MenuAction.EXAMINE_ITEM);
	menuOptionClicked.setId(ItemID.ABYSSAL_WHIP);
	examinePlugin.onMenuOptionClicked(menuOptionClicked);

	ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.ITEM_EXAMINE, "", "A weapon from the abyss.", "", 0);
	examinePlugin.onChatMessage(chatMessage);

	// This passes due to not mocking the ItemComposition for the whip
	verify(examineClient).submitItem(anyInt(), anyString());
}
 
示例17
@Test
public void testLargeStacks()
{
	when(client.getWidget(anyInt(), anyInt())).thenReturn(mock(Widget.class));
	when(itemManager.getItemComposition(anyInt())).thenReturn(mock(ItemComposition.class));

	MenuOptionClicked menuOptionClicked = new MenuOptionClicked();
	menuOptionClicked.setMenuOption("Examine");
	menuOptionClicked.setMenuAction(MenuAction.EXAMINE_ITEM);
	menuOptionClicked.setId(ItemID.ABYSSAL_WHIP);
	examinePlugin.onMenuOptionClicked(menuOptionClicked);

	ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.ITEM_EXAMINE, "", "100000 x Abyssal whip", "", 0);
	examinePlugin.onChatMessage(chatMessage);

	verify(examineClient, never()).submitItem(anyInt(), anyString());
}
 
示例18
private void checkQuestClicked(MenuOptionClicked ev)
{
	boolean quickguide = false;
	switch (ev.getOption())
	{
		case MENUOP_QUICKGUIDE:
			quickguide = true;
			//fallthrough;
		case MENUOP_GUIDE:
			ev.consume();
			String quest = Text.removeTags(ev.getTarget());
			HttpUrl.Builder ub = WIKI_BASE.newBuilder()
				.addPathSegment("w")
				.addPathSegment(quest)
				.addQueryParameter(UTM_SOURCE_KEY, UTM_SOURCE_VALUE);
			if (quickguide)
			{
				ub.addPathSegment("Quick_guide");
			}
			LinkBrowser.browse(ub.build().toString());
			break;
		case MENUOP_WIKI:
			LinkBrowser.browse(WIKI_BASE.newBuilder()
				.addPathSegment("w")
				.addPathSegment(Text.removeTags(ev.getTarget()))
				.addQueryParameter(UTM_SOURCE_KEY, UTM_SOURCE_VALUE)
				.build().toString());
	}
}
 
示例19
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
	if (!isInGame() && getRole() != null)
	{
		return;
	}

	String target = Text.removeTags(event.getTarget()).toLowerCase();

	if (getRole() == Role.HEALER && (target.startsWith("poisoned meat -> penance healer")
		|| target.startsWith("poisoned tofu -> penance healer")
		|| target.startsWith("poisoned worms -> penance healer")))
	{
		lastHealerPoisoned = event.getIdentifier();
		poisonUsed = StringUtils.substringBefore(target.replace("oned", "."), " ->");
	}

	// INW
	/*
	String option = Text.removeTags(event.getMenuOption());
	if (option.startsWith("Tell-"))
	{
		lastClickedTell = getRole().getCallFromTell(option);
	}
	else if (usingGloryHorn && option.equals("Call"))
	{

	}
	*/
}
 
示例20
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked menuOpt)
{
	if (MenuOpcode.GAME_OBJECT_FIRST_OPTION == menuOpt.getMenuOpcode() && menuOpt.getTarget().contains("Bookshelf"))
	{
		lastBookcaseClick = WorldPoint.fromScene(client, menuOpt.getParam0(), menuOpt.getParam1(), client.getPlane());
	}
}
 
示例21
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
	if (WidgetInfo.TO_GROUP(event.getParam1()) == WidgetInfo.FRIENDS_LIST.getGroupId())
	{
		if (Strings.isNullOrEmpty(event.getTarget()))
		{
			return;
		}

		final String sanitizedTarget = Text.removeTags(event.getTarget());

		if (event.getOption().equals(ADD_TAG))
		{
			event.consume();
			final ChatboxTextInput build = chatboxPanelManager.openTextInput("Enter the tag").value("")
				.onDone((content) ->
				{
					if (content == null)
					{
						return;
					}
					content = Text.removeTags(content).trim();
					setTag(sanitizedTarget, content);
				}).build();
		}
		if (event.getOption().equals(DELETE_TAG))
		{
			event.consume();
			client.getLogger().info(sanitizedTarget);
			taggedFriends.forEach((k, v) -> client.getLogger().info(k + ": ", v));
			deleteTag(sanitizedTarget);
		}
	}

}
 
示例22
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
	if (!client.isKeyPressed(KeyCode.KC_SHIFT) || client.isMenuOpen() || party.getMembers().isEmpty() || !config.pings())
	{
		return;
	}

	Tile selectedSceneTile = client.getSelectedSceneTile();
	if (selectedSceneTile == null)
	{
		return;
	}

	boolean isOnCanvas = false;

	for (MenuEntry menuEntry : client.getMenuEntries())
	{
		if (menuEntry == null)
		{
			continue;
		}

		if ("walk here".equalsIgnoreCase(menuEntry.getOption()))
		{
			isOnCanvas = true;
			break;
		}
	}

	if (!isOnCanvas)
	{
		return;
	}

	event.consume();
	final TilePing tilePing = new TilePing(selectedSceneTile.getWorldLocation());
	tilePing.setMemberId(party.getLocalMember().getMemberId());
	wsClient.send(tilePing);
}
 
示例23
@Subscribe
public void onMenuOptionClicked(final MenuOptionClicked event)
{
	if (event.getOption() != null && event.getOption().equals("Read"))
	{
		final ItemDefinition itemDefinition = itemManager.getItemDefinition(event.getIdentifier());

		if (itemDefinition != null && (itemDefinition.getName().startsWith("Clue scroll") || itemDefinition.getName().startsWith("Challenge scroll")))
		{
			clueItemId = itemDefinition.getId();
			updateClue(MapClue.forItemId(clueItemId));
		}
	}
}
 
示例24
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
	if (event.getMenuOpcode() != MenuOpcode.RUNELITE
		|| !(event.getOption().equals(MARK) || event.getOption().equals(UNMARK)))
	{
		return;
	}

	Scene scene = client.getScene();
	Tile[][][] tiles = scene.getTiles();
	final int x = event.getParam0();
	final int y = event.getParam1();
	final int z = client.getPlane();
	final Tile tile = tiles[z][x][y];

	TileObject object = findTileObject(tile, event.getIdentifier());
	if (object == null)
	{
		return;
	}

	// object.getId() is always the base object id, getObjectDefinition transforms it to
	// the correct object we see
	ObjectDefinition objectDefinition = getObjectDefinition(object.getId());
	String name = objectDefinition.getName();
	// Name is probably never "null" - however prevent adding it if it is, as it will
	// become ambiguous as objects with no name are assigned name "null"
	if (Strings.isNullOrEmpty(name) || name.equals("null"))
	{
		return;
	}

	markObject(objectDefinition, name, object);
}
 
示例25
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked ev)
{
	if (ev.getMenuOpcode() == MenuOpcode.RUNELITE && ev.getOption().equals(MENUOP_SLAYERMUSIQ))
	{
		ev.consume();
		String quest = Text.removeTags(ev.getTarget());
		QuestGuideLinks.tryOpenGuide(quest, chatMessageManager);
	}
}
 
示例26
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
	if (WidgetInfo.TO_GROUP(event.getParam1()) == WidgetInfo.FRIENDS_LIST.getGroupId())
	{
		if (Strings.isNullOrEmpty(event.getTarget()))
		{
			return;
		}

		// Handle clicks on "Add Note" or "Edit Note"
		if (event.getOption().equals(ADD_NOTE) || event.getOption().equals(EDIT_NOTE))
		{
			event.consume();

			//Friends have color tags
			final String sanitizedTarget = Text.toJagexName(Text.removeTags(event.getTarget()));
			final String note = getFriendNote(sanitizedTarget);

			// Open the new chatbox input dialog
			chatboxPanelManager.openTextInput(String.format(NOTE_PROMPT_FORMAT, sanitizedTarget, CHARACTER_LIMIT))
				.value(Strings.nullToEmpty(note))
				.onDone((content) ->
				{
					if (content == null)
					{
						return;
					}

					content = Text.removeTags(content).trim();
					log.debug("Set note for '{}': '{}'", sanitizedTarget, content);
					setFriendNote(sanitizedTarget, content);
				}).build();
		}
	}

}
 
示例27
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
	//TODO: should work hopefully
	if (event.getMenuOpcode() != MenuOpcode.RUNELITE || event.getParam1() != WidgetInfo.INVENTORY.getId())
	{
		return;
	}

	ItemContainer inventoryItemContainer = client.getItemContainer(InventoryID.INVENTORY);
	Item[] inventoryItems = new Item[0];
	if (inventoryItemContainer != null)
	{
		inventoryItems = inventoryItemContainer.getItems();
	}

	switch (event.getOption().toLowerCase())
	{
		case FILL_OPTION:
			int coalInInventoryCount = (int) Arrays.stream(inventoryItems).filter(i -> i.getId() == ItemID.COAL).count();
			updateAmountOfCoalInBag(coalInInventoryCount);
			break;

		case EMPTY_OPTION:
			int emptyInventorySpaceCount = (int) Arrays.stream(inventoryItems).filter(i -> i.getId() != -1).count();
			int difference = MAX_INVENTORY_SPACE - emptyInventorySpaceCount;
			updateAmountOfCoalInBag(-difference);
			break;
	}
}
 
示例28
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked click)
{
	if (click.getMenuOpcode() != MenuOpcode.RUNELITE ||
		!(click.getOption().equals(TAG) || click.getOption().equals(UNTAG)))
	{
		return;
	}

	final int id = click.getIdentifier();
	final boolean removed = npcTags.remove(id);
	final NPC[] cachedNPCs = client.getCachedNPCs();
	final NPC npc = cachedNPCs[id];

	if (npc == null || npc.getName() == null)
	{
		return;
	}

	if (removed)
	{
		MemorizedNpc mn = memorizedNpcs.get(npc.getIndex());
		if (mn != null && isNpcMemorizationUnnecessary(mn))
		{
			memorizedNpcs.remove(npc.getIndex());
			rebuildAllNpcs();
		}
	}
	else
	{
		npcTags.add(id);
		rebuildAllNpcs();
	}

	click.consume();
}
 
示例29
@Subscribe
public void onMenuOptionClicked(MenuOptionClicked event)
{
	if (input != null)
	{
		input.triggerClose();
	}
}
 
示例30
@Subscribe
private void onMenuOptionClicked(MenuOptionClicked event)
{
	if (event.getMenuOpcode().getId() != MenuOpcode.RUNELITE.getId()
		|| TO_GROUP(event.getParam1()) != WidgetID.SKILLS_GROUP_ID)
	{
		return;
	}

	final Skill skill;
	try
	{
		skill = Skill.valueOf(Text.removeTags(event.getTarget()).toUpperCase());
	}
	catch (IllegalArgumentException ex)
	{
		log.debug(null, ex);
		return;
	}

	switch (event.getOption())
	{
		case MENUOP_ADD_CANVAS_TRACKER:
			addOverlay(skill);
			break;
		case MENUOP_REMOVE_CANVAS_TRACKER:
			removeOverlay(skill);
			break;
	}
}