Package org.odftoolkit.odfdom.dom.element.table

Examples of org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement


    }
  }

  TableTableColumnElement getColumnElementByIndex(int colIndex) {
    int result = 0;
    TableTableColumnElement columnEle = null;
    for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
      if (n instanceof TableTableHeaderColumnsElement) {
        TableTableHeaderColumnsElement headers = (TableTableHeaderColumnsElement) n;
        for (Node m : new DomNodeList(headers.getChildNodes())) {
          if (m instanceof TableTableColumnElement) {
            columnEle = (TableTableColumnElement) m;
            if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
              result += 1;
            } else {
              result += columnEle.getTableNumberColumnsRepeatedAttribute();
            }
          }
          if (result > colIndex) {
            break;
          }
        }
      }
      if (n instanceof TableTableColumnElement) {
        columnEle = (TableTableColumnElement) n;
        if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
          result += 1;
        } else {
          result += columnEle.getTableNumberColumnsRepeatedAttribute();
        }
      }
      if (result > colIndex) {
        break;
      }
View Full Code Here


    }
    // 2.1 create header column elements
    if (headerColumnNumber > 0) {
      TableTableHeaderColumnsElement headercolumns = (TableTableHeaderColumnsElement) OdfXMLFactory
          .newOdfElement(dom, OdfName.newName(OdfDocumentNamespace.TABLE, "table-header-columns"));
      TableTableColumnElement headercolumn = (TableTableColumnElement) OdfXMLFactory.newOdfElement(dom, OdfName
          .newName(OdfDocumentNamespace.TABLE, "table-column"));
      if (headerColumnNumber > 1) {
        headercolumn.setTableNumberColumnsRepeatedAttribute(headerColumnNumber);
      } else {
        headercolumn.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
      }
      headercolumns.appendChild(headercolumn);
      newTEle.appendChild(headercolumns);
      headercolumn.setStyleName(columnStylename);
    }
    // 2.2 create common column elements
    TableTableColumnElement columns = (TableTableColumnElement) OdfXMLFactory.newOdfElement(dom, OdfName.newName(
        OdfDocumentNamespace.TABLE, "table-column"));
    int tableNumberColumnsRepeatedValue = numCols - headerColumnNumber;
    if (tableNumberColumnsRepeatedValue > 1) {
      columns.setTableNumberColumnsRepeatedAttribute(tableNumberColumnsRepeatedValue);
    }
    columns.setStyleName(columnStylename);
    newTEle.appendChild(columns);

    // 3. create row elements
    // 3.0 create 4 kinds of styles
    OdfStyle lefttopStyle = null, leftbottomStyle = null, righttopStyle = null, rightbottomStyle = null;
View Full Code Here

   */
  public Column appendColumn() {
    List<Column> columnList = getColumnList();
    int columnCount = columnList.size();

    TableTableColumnElement newColumn;
    OdfElement positonElement = getRowElementByIndex(0);
    if (positonElement.getParentNode() instanceof TableTableHeaderRowsElement) {
      positonElement = (OdfElement) positonElement.getParentNode();
    }

    // Moved before column elements inserted
    // insert cells firstly
    // Or else, wrong column number will be gotten in updateCellRepository,
    // which will cause a NPE.
    // insertCellBefore()->splitRepeatedRows()->updateRowRepository()->updateCellRepository()
    List<Row> rowList = getRowList();
    for (int i = 0; i < rowList.size();) {
      Row row1 = rowList.get(i);
      row1.insertCellBefore(row1.getCellByIndex(columnCount - 1), null);
      i = i + row1.getRowsRepeatedNumber();
    }

    // insert columns secondly
    if (columnList.size() == 0) // no column, create a new column
    {
      OdfStyle columnStyle = mTableElement.getAutomaticStyles().newStyle(OdfStyleFamily.TableColumn);
      String columnStylename = columnStyle.getStyleNameAttribute();
      columnStyle.setProperty(StyleTableColumnPropertiesElement.ColumnWidth, DEFAULT_TABLE_WIDTH + "in");
      columnStyle.setProperty(StyleTableColumnPropertiesElement.RelColumnWidth, DEFAULT_REL_TABLE_WIDTH + "*");

      newColumn = (TableTableColumnElement) OdfXMLFactory.newOdfElement((OdfFileDom) mTableElement
          .getOwnerDocument(), OdfName.newName(OdfDocumentNamespace.TABLE, "table-column"));
      newColumn.setStyleName(columnStylename);
      mTableElement.insertBefore(newColumn, positonElement);
    } else { // has column, append a same column as the last one.
      TableTableColumnElement refColumn = columnList.get(columnList.size() - 1).getOdfElement();
      newColumn = (TableTableColumnElement) refColumn.cloneNode(true);
      String tableNameSpace = OdfDocumentNamespace.TABLE.getUri();
      newColumn.removeAttributeNS(tableNameSpace, "number-columns-repeated");
      mTableElement.insertBefore(newColumn, positonElement);
    }

View Full Code Here

      }
      refColumn = getColumnByIndex(index);
      positionCol = refColumn;
      // add a single column element to describe columns.
      if (isUseRepeat()) {
        TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement().cloneNode(
            true);
        if (columnCount > 1) {
          newColumnEle.setTableNumberColumnsRepeatedAttribute(columnCount);
        } else {
          newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
        }
        mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
        for (int i = 0; i < columnCount; i++) {
          list.add(getColumnInstance(newColumnEle, i));
        }
      } else {
        for (int i = 0; i < columnCount; i++) {
          TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement()
              .cloneNode(true);
          mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
          newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
          list.add(getColumnInstance(newColumnEle, 0));
        }
      }
      return list;
    }

    // 1. insert the cell
    int iRowCount = getRowCount();
    for (int i = iRowCount - 1; i >= 0;) {
      Row row = getRowByIndex(i);
      Cell refCell = row.getCellByIndex(index - 1);
      Cell positionCell = null;
      positionCell = row.getCellByIndex(index);
      row.insertCellBefore(refCell, positionCell, columnCount);
      i = i - row.getRowsRepeatedNumber();
    }

    refColumn = getColumnByIndex(index - 1);
    positionCol = getColumnByIndex(index);
    // 2. insert a <table:table-column>
    if (refColumn.getOdfElement() == positionCol.getOdfElement()) {
      TableTableColumnElement column = refColumn.getOdfElement();
      int repeatedCount = column.getTableNumberColumnsRepeatedAttribute();
      TableTableColumnElement columnEle = positionCol.getOdfElement();
      // add a single column element to describe columns.
      if (isUseRepeat()) {
        column.setTableNumberColumnsRepeatedAttribute(repeatedCount + columnCount);
        Column startCol = getColumnInstance(positionCol.getOdfElement(), 0);
        for (int i = repeatedCount + columnCount - 1; i >= columnCount + (index - startCol.getColumnIndex()); i--) {
          updateColumnRepository(columnEle, i - columnCount, columnEle, i);
        }
        for (int i = 0; i < columnCount; i++) {
          list.add(getColumnInstance(column, refColumn.mnRepeatedIndex + 1 + i));
        }
      } else {
        TableTableColumnElement newBeforeColumnEle = (TableTableColumnElement) refColumn.getOdfElement()
            .cloneNode(true);
        if (index > 1) {
          newBeforeColumnEle.setTableNumberColumnsRepeatedAttribute(index);
        } else {
          newBeforeColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
        }
        mTableElement.insertBefore(newBeforeColumnEle, positionCol.getOdfElement());
        for (int i = 0; i < index; i++) {
          updateColumnRepository(columnEle, i, newBeforeColumnEle, i);
        }
        int newAfterCount = repeatedCount - index;
        if (newAfterCount > 1) {
          positionCol.setColumnsRepeatedNumber(newAfterCount);
        } else {
          positionCol.getOdfElement().removeAttributeNS(tableNameSpace, "number-columns-repeated");
        }
        for (int i = repeatedCount - 1; i >= index; i--) {
          updateColumnRepository(columnEle, i, columnEle, i - index);
        }
        for (int i = 0; i < columnCount; i++) {
          TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement()
              .cloneNode(true);
          newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
          mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
          list.add(getColumnInstance(newColumnEle, 0));
        }
      }
    } else {
      // add a single column element to describe columns.
      if (isUseRepeat()) {
        TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement().cloneNode(
            true);
        if (columnCount > 1) {
          newColumnEle.setTableNumberColumnsRepeatedAttribute(columnCount);
        } else {
          newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
        }
        mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
        for (int i = 0; i < columnCount; i++) {
          list.add(getColumnInstance(newColumnEle, i));
        }
      } else {
        for (int i = 0; i < columnCount; i++) {
          TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement()
              .cloneNode(true);
          newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
          mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
          list.add(getColumnInstance(newColumnEle, 0));
        }
      }
    }
View Full Code Here

    Column firstColumn;
    for (int i = 0; i < deleteColCount; i++) {
      firstColumn = getColumnByIndex(startIndex);
      int repeatedAttr = firstColumn.getColumnsRepeatedNumber();
      if (repeatedAttr == 1) {
        TableTableColumnElement columnEle = OdfElement.findNextChildNode(TableTableColumnElement.class,
            firstColumn.getOdfElement());
        mTableElement.removeChild(firstColumn.getOdfElement());
        if (i < (deleteColCount - 1)) {
          firstColumn = this.getColumnInstance(columnEle, 0);
        }
View Full Code Here

   *
   * @return a list of table columns
   */
  public List<Column> getColumnList() {
    ArrayList<Column> list = new ArrayList<Column>();
    TableTableColumnElement colEle = null;
    for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
      if (n instanceof TableTableHeaderColumnsElement) {
        TableTableHeaderColumnsElement headers = (TableTableHeaderColumnsElement) n;
        for (Node m : new DomNodeList(headers.getChildNodes())) {
          if (m instanceof TableTableColumnElement) {
            colEle = (TableTableColumnElement) m;
            int columnsRepeatedNumber = colEle.getTableNumberColumnsRepeatedAttribute();
            for (int i = 0; i < columnsRepeatedNumber; i++) {
              list.add(getColumnInstance(colEle, i));
            }
          }
        }
      }
      if (n instanceof TableTableColumnElement) {
        colEle = (TableTableColumnElement) n;
        int columnsRepeatedNumber = colEle.getTableNumberColumnsRepeatedAttribute();
        for (int i = 0; i < columnsRepeatedNumber; i++) {
          list.add(getColumnInstance(colEle, i));
        }
      }
    }
View Full Code Here

    }
  }

  TableTableColumnElement getColumnElementByIndex(int colIndex) {
    int result = 0;
    TableTableColumnElement columnEle = null;
    for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
      if (n instanceof TableTableHeaderColumnsElement) {
        TableTableHeaderColumnsElement headers = (TableTableHeaderColumnsElement) n;
        for (Node m : new DomNodeList(headers.getChildNodes())) {
          if (m instanceof TableTableColumnElement) {
            columnEle = (TableTableColumnElement) m;
            if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
              result += 1;
            } else {
              result += columnEle.getTableNumberColumnsRepeatedAttribute();
            }
          }
          if (result > colIndex) {
            break;
          }
        }
      }
      if (n instanceof TableTableColumnElement) {
        columnEle = (TableTableColumnElement) n;
        if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
          result += 1;
        } else {
          result += columnEle.getTableNumberColumnsRepeatedAttribute();
        }
      }
      if (result > colIndex) {
        break;
      }
View Full Code Here

    }
    // 2.1 create header column elements
    if (headerColumnNumber > 0) {
      TableTableHeaderColumnsElement headercolumns = (TableTableHeaderColumnsElement) OdfXMLFactory
          .newOdfElement(dom, OdfName.newName(OdfDocumentNamespace.TABLE, "table-header-columns"));
      TableTableColumnElement headercolumn = (TableTableColumnElement) OdfXMLFactory.newOdfElement(dom, OdfName
          .newName(OdfDocumentNamespace.TABLE, "table-column"));
      if (headerColumnNumber > 1) {
        headercolumn.setTableNumberColumnsRepeatedAttribute(headerColumnNumber);
      } else {
        headercolumn.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
      }
      headercolumns.appendChild(headercolumn);
      newTEle.appendChild(headercolumns);
      headercolumn.setStyleName(columnStylename);
    }
    // 2.2 create common column elements
    TableTableColumnElement columns = (TableTableColumnElement) OdfXMLFactory.newOdfElement(dom, OdfName.newName(
        OdfDocumentNamespace.TABLE, "table-column"));
    int tableNumberColumnsRepeatedValue = numCols - headerColumnNumber;
    if (tableNumberColumnsRepeatedValue > 1) {
      columns.setTableNumberColumnsRepeatedAttribute(tableNumberColumnsRepeatedValue);
    }
    columns.setStyleName(columnStylename);
    newTEle.appendChild(columns);

    // 3. create row elements
    // 3.0 create 4 kinds of styles
    OdfStyle lefttopStyle = null, leftbottomStyle = null, righttopStyle = null, rightbottomStyle = null;
View Full Code Here

   */
  public Column appendColumn() {
    List<Column> columnList = getColumnList();
    int columnCount = columnList.size();

    TableTableColumnElement newColumn;
    OdfElement positonElement = getRowElementByIndex(0);
    if (positonElement.getParentNode() instanceof TableTableHeaderRowsElement) {
      positonElement = (OdfElement) positonElement.getParentNode();
    }

    // Moved before column elements inserted
    // insert cells firstly
    // Or else, wrong column number will be gotten in updateCellRepository,
    // which will cause a NPE.
    // insertCellBefore()->splitRepeatedRows()->updateRowRepository()->updateCellRepository()
    List<Row> rowList = getRowList();
    for (int i = 0; i < rowList.size();) {
      Row row1 = rowList.get(i);
      row1.insertCellBefore(row1.getCellByIndex(columnCount - 1), null);
      i = i + row1.getRowsRepeatedNumber();
    }

    // insert columns secondly
    if (columnList.size() == 0) // no column, create a new column
    {
      OdfStyle columnStyle = mTableElement.getAutomaticStyles().newStyle(OdfStyleFamily.TableColumn);
      String columnStylename = columnStyle.getStyleNameAttribute();
      columnStyle.setProperty(StyleTableColumnPropertiesElement.ColumnWidth, DEFAULT_TABLE_WIDTH + "in");
      columnStyle.setProperty(StyleTableColumnPropertiesElement.RelColumnWidth, DEFAULT_REL_TABLE_WIDTH + "*");

      newColumn = (TableTableColumnElement) OdfXMLFactory.newOdfElement((OdfFileDom) mTableElement
          .getOwnerDocument(), OdfName.newName(OdfDocumentNamespace.TABLE, "table-column"));
      newColumn.setStyleName(columnStylename);
      mTableElement.insertBefore(newColumn, positonElement);
    } else { // has column, append a same column as the last one.
      TableTableColumnElement refColumn = columnList.get(columnList.size() - 1).getOdfElement();
      newColumn = (TableTableColumnElement) refColumn.cloneNode(true);
      String tableNameSpace = OdfDocumentNamespace.TABLE.getUri();
      newColumn.removeAttributeNS(tableNameSpace, "number-columns-repeated");
      mTableElement.insertBefore(newColumn, positonElement);
    }

View Full Code Here

      }
      refColumn = getColumnByIndex(index);
      positionCol = refColumn;
      // add a single column element to describe columns.
      if (isUseRepeat()) {
        TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement().cloneNode(
            true);
        if (columnCount > 1) {
          newColumnEle.setTableNumberColumnsRepeatedAttribute(columnCount);
        } else {
          newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
        }
        mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
        for (int i = 0; i < columnCount; i++) {
          list.add(getColumnInstance(newColumnEle, i));
        }
      } else {
        for (int i = 0; i < columnCount; i++) {
          TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement()
              .cloneNode(true);
          mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
          newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
          list.add(getColumnInstance(newColumnEle, 0));
        }
      }
      return list;
    }

    // 1. insert the cell
    int iRowCount = getRowCount();
    for (int i = iRowCount - 1; i >= 0;) {
      Row row = getRowByIndex(i);
      Cell refCell = row.getCellByIndex(index - 1);
      Cell positionCell = null;
      positionCell = row.getCellByIndex(index);
      row.insertCellBefore(refCell, positionCell, columnCount);
      i = i - row.getRowsRepeatedNumber();
    }

    refColumn = getColumnByIndex(index - 1);
    positionCol = getColumnByIndex(index);
    // 2. insert a <table:table-column>
    if (refColumn.getOdfElement() == positionCol.getOdfElement()) {
      TableTableColumnElement column = refColumn.getOdfElement();
      int repeatedCount = column.getTableNumberColumnsRepeatedAttribute();
      TableTableColumnElement columnEle = positionCol.getOdfElement();
      // add a single column element to describe columns.
      if (isUseRepeat()) {
        column.setTableNumberColumnsRepeatedAttribute(repeatedCount + columnCount);
        Column startCol = getColumnInstance(positionCol.getOdfElement(), 0);
        for (int i = repeatedCount + columnCount - 1; i >= columnCount + (index - startCol.getColumnIndex()); i--) {
          updateColumnRepository(columnEle, i - columnCount, columnEle, i);
        }
        for (int i = 0; i < columnCount; i++) {
          list.add(getColumnInstance(column, refColumn.mnRepeatedIndex + 1 + i));
        }
      } else {
        TableTableColumnElement newBeforeColumnEle = (TableTableColumnElement) refColumn.getOdfElement()
            .cloneNode(true);
        if (index > 1) {
          newBeforeColumnEle.setTableNumberColumnsRepeatedAttribute(index);
        } else {
          newBeforeColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
        }
        mTableElement.insertBefore(newBeforeColumnEle, positionCol.getOdfElement());
        for (int i = 0; i < index; i++) {
          updateColumnRepository(columnEle, i, newBeforeColumnEle, i);
        }
        int newAfterCount = repeatedCount - index;
        if (newAfterCount > 1) {
          positionCol.setColumnsRepeatedNumber(newAfterCount);
        } else {
          positionCol.getOdfElement().removeAttributeNS(tableNameSpace, "number-columns-repeated");
        }
        for (int i = repeatedCount - 1; i >= index; i--) {
          updateColumnRepository(columnEle, i, columnEle, i - index);
        }
        for (int i = 0; i < columnCount; i++) {
          TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement()
              .cloneNode(true);
          newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
          mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
          list.add(getColumnInstance(newColumnEle, 0));
        }
      }
    } else {
      // add a single column element to describe columns.
      if (isUseRepeat()) {
        TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement().cloneNode(
            true);
        if (columnCount > 1) {
          newColumnEle.setTableNumberColumnsRepeatedAttribute(columnCount);
        } else {
          newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
        }
        mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
        for (int i = 0; i < columnCount; i++) {
          list.add(getColumnInstance(newColumnEle, i));
        }
      } else {
        for (int i = 0; i < columnCount; i++) {
          TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement()
              .cloneNode(true);
          newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
          mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
          list.add(getColumnInstance(newColumnEle, 0));
        }
      }
    }
View Full Code Here

TOP

Related Classes of org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.