public List<String> getMacroNames(boolean secure) { Set<Integer> keys = getMacroPropertiesMap(secure).keySet(); List<String> list = new ArrayList<String>(); for (int key : keys) { MacroButtonProperties prop = (MacroButtonProperties) macroPropertiesMap.get(key); list.add(prop.getLabel()); } return list; }
void processMacro(JSONObject data) { // FIXME: need to check parameters. // FIXME: need to check permissions. if ("callMacro".equalsIgnoreCase(data.getString("command"))) { Token token = findTokenFromId(data.getString("tokenId")); MacroButtonProperties macro = token.getMacro(data.getInt("macroIndex"), false); macro.executeMacro(token.getId()); } }
public void deleteAllMacros(Boolean secure) { List<MacroButtonProperties> tempMacros = new ArrayList<MacroButtonProperties>(getMacroList(true)); for (MacroButtonProperties nextProp : tempMacros) { getMacroPropertiesMap(secure).remove(nextProp.getIndex()); } MapTool.getFrame().resetTokenPanels(); MapTool.serverCommand() .putToken(MapTool.getFrame().getCurrentZoneRenderer().getZone().getId(), this); }
// avoid this; it loads the first macro with this label, but there could be more than one macro // with that label public MacroButtonProperties getMacro(String label, boolean secure) { Set<Integer> keys = getMacroPropertiesMap(secure).keySet(); for (int key : keys) { MacroButtonProperties prop = (MacroButtonProperties) macroPropertiesMap.get(key); if (prop.getLabel().equals(label)) { return prop; } } return null; }
/** * Constructor to create a new token from a transfer object containing its property values. This * is used to read in a new token from other apps that don't have access to the <code>Token</code> * class. * * @param td Read the values from this transfer object. */ public Token(TokenTransferData td) { imageAssetMap = new HashMap<String, MD5Key>(); state = new HashMap<String, Object>(); if (td.getLocation() != null) { x = td.getLocation().x; y = td.getLocation().y; } snapToScale = getBoolean(td, TokenTransferData.SNAP_TO_SCALE, true); scaleX = getInt(td, TokenTransferData.WIDTH, 1); scaleY = getInt(td, TokenTransferData.HEIGHT, 1); snapToGrid = getBoolean(td, TokenTransferData.SNAP_TO_GRID, true); isVisible = td.isVisible(); visibleOnlyToOwner = getBoolean(td, TokenTransferData.VISIBLE_OWNER_ONLY, false); name = td.getName(); ownerList = td.getPlayers(); ownerType = getInt( td, TokenTransferData.OWNER_TYPE, ownerList == null ? OWNER_TYPE_ALL : OWNER_TYPE_LIST); tokenShape = (String) td.get(TokenTransferData.TOKEN_TYPE); facing = td.getFacing(); notes = (String) td.get(TokenTransferData.NOTES); gmNotes = (String) td.get(TokenTransferData.GM_NOTES); gmName = (String) td.get(TokenTransferData.GM_NAME); // Get the image and portrait for the token Asset asset = createAssetFromIcon(td.getToken()); if (asset != null) imageAssetMap.put(null, asset.getId()); asset = createAssetFromIcon((ImageIcon) td.get(TokenTransferData.PORTRAIT)); if (asset != null) portraitImage = asset.getId(); // Get the macros @SuppressWarnings("unchecked") Map<String, Object> macros = (Map<String, Object>) td.get(TokenTransferData.MACROS); macroMap = new HashMap<String, String>(); for (String macroName : macros.keySet()) { Object macro = macros.get(macroName); if (macro instanceof String) { macroMap.put(macroName, (String) macro); } else if (macro instanceof Map) { @SuppressWarnings("unchecked") MacroButtonProperties mbp = new MacroButtonProperties(this, (Map<String, String>) macro); getMacroPropertiesMap(false).put(mbp.getIndex(), mbp); } // endif } // endfor loadOldMacros(); // Get all of the non maptool specific state for (String key : td.keySet()) { if (key.startsWith(TokenTransferData.MAPTOOL)) continue; setProperty(key, td.get(key)); } // endfor }
public void replaceMacroList(List<MacroButtonProperties> newMacroList) { // used by the token edit dialog, which will handle resetting panels and putting token to zone macroPropertiesMap.clear(); for (MacroButtonProperties macro : newMacroList) { if (macro.getLabel() == null || macro.getLabel().trim().length() == 0 || macro.getCommand().trim().length() == 0) { continue; } macroPropertiesMap.put(macro.getIndex(), macro); // Allows the token macro panels to update only if a macro changes fireModelChangeEvent(new ModelChangeEvent(this, ChangeEvent.MACRO_CHANGED, id)); } }
private void loadOldMacros() { if (macroMap == null) { return; } MacroButtonProperties prop; Set<String> oldMacros = macroMap.keySet(); for (String macro : oldMacros) { prop = new MacroButtonProperties(getMacroNextIndex()); prop.setLabel(macro); prop.setCommand(macroMap.get(macro)); prop.setApplyToTokens(true); macroPropertiesMap.put(prop.getIndex(), prop); } macroMap = null; if (log.isDebugEnabled()) log.debug("Token.loadOldMacros() set up " + macroPropertiesMap.size() + " new macros."); }
public void deleteMacroButtonProperty(MacroButtonProperties prop) { getMacroPropertiesMap(false).remove(prop.getIndex()); MapTool.getFrame().resetTokenPanels(); MapTool.serverCommand() .putToken(MapTool.getFrame().getCurrentZoneRenderer().getZone().getId(), this); // Lets the token macro panels update only if a macro changes fireModelChangeEvent(new ModelChangeEvent(this, ChangeEvent.MACRO_CHANGED, id)); }
void sendTokenRegisterdProperties(MTWebSocket mtws, String inResponseTo, JSONObject data) { String tokenId = data.getString("tokenId"); Token token = findTokenFromId(tokenId); if (token == null) { System.out.println("DEBUG: sendTokenInfo(): Unable to find token " + tokenId); return; // FIXME: log this error } JSONObject jobj = new JSONObject(); jobj.put("tokenId", tokenId); jobj.put("name", token.getName()); jobj.put("label", token.getLabel()); jobj.put("notes", token.getNotes()); JSONObject jprop = new JSONObject(); for (TokenProperty tp : MapTool.getCampaign().getTokenPropertyList(token.getPropertyType())) { JSONObject jp = new JSONObject(); jp.put("name", tp.getName()); if (tp.getShortName() != null) { jp.put("shortName", tp.getShortName()); } if (tp.getDefaultValue() != null) { jp.put("defaultValue", tp.getDefaultValue()); } jp.put("value", token.getProperty(tp.getName())); jp.put("showOnStatSheet", tp.isShowOnStatSheet()); jprop.put(tp.getName(), jp); } jobj.put("properties", jprop); JSONArray jmacros = new JSONArray(); for (MacroButtonProperties macro : token.getMacroList(false)) { JSONObject jmb = new JSONObject(); jmb.put("label", macro.getLabel()); jmb.put("tooltip", macro.getEvaluatedToolTip()); jmb.put("index", macro.getIndex()); jmb.put("fontColor", macro.getFontColorAsHtml()); jmb.put("displayGroup", macro.getGroupForDisplay()); jmb.put("group", macro.getGroup()); jmb.put("index", macro.getIndex()); jmb.put("autoExecute", macro.getAutoExecute()); jmb.put("maxWidth", macro.getMaxWidth()); jmb.put("minWidth", macro.getMinWidth()); jmb.put("applyToTokens", macro.getApplyToTokens()); jmacros.add(jmb); } jobj.put("macros", jmacros); mtws.sendMessage("tokenInfo", inResponseTo, jobj); }