Esempio n. 1
0
 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;
 }
Esempio n. 2
0
  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());
    }
  }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
 // 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;
 }
Esempio n. 5
0
  /**
   * 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
  }
Esempio n. 6
0
  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));
    }
  }
Esempio n. 7
0
 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.");
 }
Esempio n. 8
0
  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));
  }
Esempio n. 9
0
  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);
  }