コード例 #1
0
ファイル: SolverViewFrame.java プロジェクト: oiml/pcgen
 private void update() {
   updateObjects();
   ScopeInstance scope = scopeFacet.get(activeIdentifier, selectedScope, activeObject);
   if (variableLibraryFacet.isLegalVariableName(
       activeIdentifier.getDatasetID(), scope.getLegalScope(), varNameText)) {
     displayInfo(scope);
   } else {
     // TODO Update a status bar
     System.err.println(selectedScope.getName() + " does not have a variable: " + varNameText);
   }
 }
コード例 #2
0
ファイル: SolverViewFrame.java プロジェクト: oiml/pcgen
 private void updateObjects() {
   if (activeIdentifier != null) {
     Collection<VarScoped> objects = scopeFacet.getObjectsWithVariables(activeIdentifier);
     objectChooser.removeAllItems();
     String scopeName = selectedScope.getName();
     for (VarScoped cdo : objects) {
       if (cdo.getLocalScopeName().equals(scopeName)) {
         if (scopeFacet.get(activeIdentifier, selectedScope, cdo) != null) {
           objectChooser.addItem(new ObjectNameDisplayer(cdo));
         }
       }
     }
     if (objectChooser.getItemCount() != 0) {
       objectChooser.setSelectedIndex(0);
     }
   }
 }
コード例 #3
0
ファイル: LocalToken.java プロジェクト: cpmeister/pcgen
  @Override
  protected ParseResult parseNonEmptyToken(LoadContext context, DatasetVariable dv, String value) {
    int pipeLoc = value.indexOf(Constants.PIPE);
    if (pipeLoc == -1) {
      return new ParseResult.Fail(
          getTokenName() + " expected 2 pipe delimited arguments, found no pipe: " + value);
    }
    if (pipeLoc != value.lastIndexOf(Constants.PIPE)) {
      return new ParseResult.Fail(
          getTokenName() + " expected only 2 pipe delimited arguments, found: " + value);
    }
    String fullscope = value.substring(0, pipeLoc);
    String fvName = value.substring(pipeLoc + 1);
    String format;
    String varName;
    int equalLoc = fvName.indexOf('=');
    if (equalLoc != fvName.lastIndexOf('=')) {
      return new ParseResult.Fail(
          getTokenName() + " expected only 2 equal delimited arguments, found: " + value);
    }
    if (equalLoc == -1) {
      // Defaults to NUMBER
      format = "NUMBER";
      varName = fvName;
    } else {
      format = fvName.substring(0, equalLoc);
      varName = fvName.substring(equalLoc + 1);
    }
    if (dv.getDisplayName() != null) {
      return new ParseResult.Fail(getTokenName() + " must be the first token on the line");
    }

    VariableContext varContext = context.getVariableContext();
    FormatManager<?> formatManager;
    try {
      formatManager = context.getReferenceContext().getFormatManager(format);
    } catch (IllegalArgumentException e) {
      return new ParseResult.Fail(
          getTokenName()
              + " does not support format "
              + format
              + ", found in "
              + value
              + " due to "
              + e.getMessage());
    }
    LegalScope lvs = varContext.getScope(fullscope);

    if (!DatasetVariable.isLegalName(varName)) {
      return new ParseResult.Fail(varName + " is not a valid variable name");
    }
    boolean legal = varContext.assertLegalVariableID(lvs, formatManager, varName);
    if (!legal) {
      Set<LegalScope> known = varContext.getKnownLegalScopes(varName);
      StringBuilder sb = new StringBuilder();
      for (LegalScope v : known) {
        sb.append(v.getName());
        sb.append(", ");
      }
      return new ParseResult.Fail(
          getTokenName()
              + " found a var defined in incompatible variable scopes: "
              + varName
              + " was requested in "
              + fullscope
              + " but was previously in "
              + sb.toString(),
          context);
    }
    dv.setName(varName);
    dv.setFormat(format);
    dv.setScopeName(fullscope);
    return ParseResult.SUCCESS;
  }