public void setValueAt(Object value, int rowIndex, int column) {
    // System.out.println("SetValue at: "+rowIndex+","+column+" to "+value);
    // System.out.println("  current value at: "+rowIndex+","+column+" is "+getValueAt(rowIndex,
    // column));
    if (column != 3 || !(value instanceof Boolean)) return;
    Boolean boolValue = (Boolean) value;
    if (shown.get(rowIndex).equals(boolValue)) return;

    if (boolValue) {
      domainManager.setIgnoreSelection(true);
      // System.out.println("Selection ignored");
      // Show the structure & select the domain/site
      svHandler.openStructure(CyUtils.getName(domainManager.getCurrentNetwork(), cyId), chain);
      svHandler.select(chain, (String) getValueAt(rowIndex, 2));
      // System.out.println("Selection not ignored");
      domainManager.setIgnoreSelection(false);
    } else {
      domainManager.setIgnoreSelection(true);
      // Unselect the domain/site
      svHandler.unSelect(chain, (String) getValueAt(rowIndex, 2));
      domainManager.setIgnoreSelection(false);
    }
    shown.set(rowIndex, boolValue);
  }