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); } }
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); } } }
@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; }