public void collapseColInfoRecords(int columnIdx) { if (columnIdx == 0) return; ColumnInfoRecord previousCol = (ColumnInfoRecord) records.get(columnIdx - 1); ColumnInfoRecord currentCol = (ColumnInfoRecord) records.get(columnIdx); boolean adjacentColumns = previousCol.getLastColumn() == currentCol.getFirstColumn() - 1; if (!adjacentColumns) return; boolean columnsMatch = previousCol.getXFIndex() == currentCol.getXFIndex() && previousCol.getOptions() == currentCol.getOptions() && previousCol.getColumnWidth() == currentCol.getColumnWidth(); if (columnsMatch) { previousCol.setLastColumn(currentCol.getLastColumn()); records.remove(columnIdx); } }
public void setColumn( short column, Short xfIndex, Short width, Integer level, Boolean hidden, Boolean collapsed) { ColumnInfoRecord ci = null; int k = 0; for (k = 0; k < records.size(); k++) { ci = (ColumnInfoRecord) records.get(k); if ((ci.getFirstColumn() <= column) && (column <= ci.getLastColumn())) { break; } ci = null; } if (ci != null) { boolean styleChanged = xfIndex != null && ci.getXFIndex() != xfIndex.shortValue(); boolean widthChanged = width != null && ci.getColumnWidth() != width.shortValue(); boolean levelChanged = level != null && ci.getOutlineLevel() != level.intValue(); boolean hiddenChanged = hidden != null && ci.getHidden() != hidden.booleanValue(); boolean collapsedChanged = collapsed != null && ci.getCollapsed() != collapsed.booleanValue(); boolean columnChanged = styleChanged || widthChanged || levelChanged || hiddenChanged || collapsedChanged; if (!columnChanged) { // do nothing...nothing changed. } else if ((ci.getFirstColumn() == column) && (ci.getLastColumn() == column)) { // if its only for this cell then setColumnInfoFields(ci, xfIndex, width, level, hidden, collapsed); } else if ((ci.getFirstColumn() == column) || (ci.getLastColumn() == column)) { // okay so the width is different but the first or last column == the column we'return // setting // we'll just divide the info and create a new one if (ci.getFirstColumn() == column) { ci.setFirstColumn((short) (column + 1)); } else { ci.setLastColumn((short) (column - 1)); } ColumnInfoRecord nci = (ColumnInfoRecord) createColInfo(); nci.setFirstColumn(column); nci.setLastColumn(column); nci.setOptions(ci.getOptions()); nci.setXFIndex(ci.getXFIndex()); setColumnInfoFields(nci, xfIndex, width, level, hidden, collapsed); insertColumn(k, nci); } else { // split to 3 records short lastcolumn = ci.getLastColumn(); ci.setLastColumn((short) (column - 1)); ColumnInfoRecord nci = (ColumnInfoRecord) createColInfo(); nci.setFirstColumn(column); nci.setLastColumn(column); nci.setOptions(ci.getOptions()); nci.setXFIndex(ci.getXFIndex()); setColumnInfoFields(nci, xfIndex, width, level, hidden, collapsed); insertColumn(++k, nci); nci = (ColumnInfoRecord) createColInfo(); nci.setFirstColumn((short) (column + 1)); nci.setLastColumn(lastcolumn); nci.setOptions(ci.getOptions()); nci.setXFIndex(ci.getXFIndex()); nci.setColumnWidth(ci.getColumnWidth()); insertColumn(++k, nci); } } else { // okay so there ISN'T a column info record that cover's this column so lets create one! ColumnInfoRecord nci = (ColumnInfoRecord) createColInfo(); nci.setFirstColumn(column); nci.setLastColumn(column); setColumnInfoFields(nci, xfIndex, width, level, hidden, collapsed); insertColumn(k, nci); } }