public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
    // if code reaches here, then value can be modified
    Field field = null;
    String fieldName = null;
    if (columnIndex == IS_QUERYABLE) {
      fieldName = (String) getValueAt(rowIndex, this.NAME);
      field = pnlSchema.findFieldInMaps(fieldName);
      if (field != null) {
        field.setQueryable(((Boolean) aValue).booleanValue());

        // need to add field to the modified fields map to keep track of
        // it when figuring out which fields can be added to new tables
        if (pnlSchema.getCommittedField(fieldName) != null
            && pnlSchema.getNQInitField(fieldName) != null) {
          pnlSchema.addModifiedField(field);
        }
      }
    }
    super.setValueAt(aValue, rowIndex, columnIndex);
  }
  private boolean canAttributeChange(int row, int column) {
    boolean change = false;
    // Logic for allowing the user to edit the queryable attribute
    // -- User can change a NQ committed field to Q but CAN NOT
    // change a Q committed field to NQ.  While on the Set Up
    // Schema panel, the user should be able to change the
    // queryable attribute for new fields as long as they are NOT
    // part of a table.
    String fieldName = (String) getValueAt(row, this.NAME);
    Field field = pnlSchema.getNewField(fieldName);
    if (field != null) {
      // new field so can change from Q to NQ and back to Q provided
      // the field is not in a table
      change = isFieldNotInTable(field);
    } else {
      field = pnlSchema.getCommittedField(fieldName);
      if (field != null) {
        // committed field so determine if original state
        // was NQ or Q....if NQ, then its state can be changed
        // from NQ to Q and back to NQ provided it is NOT part
        // of a table and the changes haven't been committed
        Field initField = pnlSchema.getNQInitField(fieldName);
        if (initField != null) {
          // The original state of the committed field is NQ
          change = isFieldNotInTable(field);
        }
      } else {
        field = pnlSchema.getModifiedField(fieldName);
        if (field != null) {
          change = isFieldNotInTable(field);
        }
      }
    } // end of else

    return change;
  }
 public void setPanel(PnlConfigMetadataSchema schema) {
   pnlSchema = schema;
   panelType = schema.getPanelType();
 }