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

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


            return table.getColumnInstance((TableTableColumnElement) aNextNode, 0);
          } else if (aNextNode instanceof TableTableColumnsElement
              || aNextNode instanceof TableTableHeaderColumnsElement
              || aNextNode instanceof TableTableColumnGroupElement) {
            XPath xpath = ((OdfFileDom) maColumnElement.getOwnerDocument()).getXPath();
            TableTableColumnElement firstCol = (TableTableColumnElement) xpath.evaluate("//table:table-column[first()]", aNextNode, XPathConstants.NODE);
            if (firstCol != null) {
              return table.getColumnInstance(firstCol, 0);
            }
          } else {
            aCurNode = aNextNode;
View Full Code Here


   * @return the index of the column
   */
  public int getColumnIndex() {
    int result = 0;
    OdfTable table = getTable();
    TableTableColumnElement columnEle;
    TableTableElement mTableElement = table.getOdfElement();
    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 == getOdfElement()) {
              return result + mnRepeatedIndex;
            }
            if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
              result += 1;
            } else {
              result += columnEle.getTableNumberColumnsRepeatedAttribute();
            }
          }
        }
      }
      if (n instanceof TableTableColumnElement) {
        columnEle = (TableTableColumnElement) n;
        if (columnEle == getOdfElement()) {
          break;
        }
        if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
          result += 1;
        } else {
          result += columnEle.getTableNumberColumnsRepeatedAttribute();
        }
      }
    }
    return result + mnRepeatedIndex;
  }
View Full Code Here

    Table table = getTable();
    TableTableElement tableEle = table.getOdfElement();
    int repeateNum = getColumnsRepeatedNumber();
    if (repeateNum > 1) {
      // change this repeated column to several single columns
      TableTableColumnElement ownerColumnElement = null;
      String columnWidthStr = null;
      long columnWidth = 0;
      int repeatedColumnIndex = mnRepeatedIndex;
      Node refElement = maColumnElement;
      maColumnElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
      String originalWidth = maColumnElement.getProperty(OdfTableColumnProperties.ColumnWidth);
      String originalRelWidth = maColumnElement.getProperty(OdfTableColumnProperties.RelColumnWidth);
      if (originalWidth != null) {
        columnWidthStr = Length.mapToUnit(originalWidth, Unit.MILLIMETER);
        columnWidth = PositiveLength.parseLong(columnWidthStr, Unit.MILLIMETER);
      }
      for (int i = repeateNum - 1; i >= 0; i--) {
        TableTableColumnElement newColumn = (TableTableColumnElement) OdfXMLFactory.newOdfElement(
            (OdfFileDom) maColumnElement.getOwnerDocument(), OdfName.newName(OdfDocumentNamespace.TABLE,
                "table-column"));
        if (originalWidth != null && originalWidth.length() > 0) {
          newColumn.setProperty(OdfTableColumnProperties.ColumnWidth, originalWidth);
        }
        if (originalRelWidth != null && originalRelWidth.length() > 0) {
          long relWidth = (long) ((DEFAULT_REL_TABLE_WIDTH / table.getWidth()) *  columnWidth);
          newColumn.setProperty(OdfTableColumnProperties.RelColumnWidth, String.valueOf(relWidth) + "*");
        }
        tableEle.insertBefore(newColumn, refElement);
        refElement = newColumn;
        if (repeatedColumnIndex == i) {
          ownerColumnElement = newColumn;
View Full Code Here

                    .intValue() - 1);
          } else if (aPrevNode instanceof TableTableColumnsElement
              || aPrevNode instanceof TableTableHeaderColumnsElement
              || aPrevNode instanceof TableTableColumnGroupElement) {
            XPath xpath = ((OdfFileDom) maColumnElement.getOwnerDocument()).getXPath();
            TableTableColumnElement lastCol = (TableTableColumnElement) xpath.evaluate(
                "//table:table-column[last()]", aPrevNode, XPathConstants.NODE);
            if (lastCol != null) {
              return table.getColumnInstance(lastCol, lastCol.getTableNumberColumnsRepeatedAttribute()
                  .intValue() - 1);
            }
          } else {
            aCurNode = aPrevNode;
            aPrevNode = aPrevNode.getPreviousSibling();
View Full Code Here

            return table.getColumnInstance((TableTableColumnElement) aNextNode, 0);
          } else if (aNextNode instanceof TableTableColumnsElement
              || aNextNode instanceof TableTableHeaderColumnsElement
              || aNextNode instanceof TableTableColumnGroupElement) {
            XPath xpath = ((OdfFileDom) maColumnElement.getOwnerDocument()).getXPath();
            TableTableColumnElement firstCol = (TableTableColumnElement) xpath.evaluate(
                "//table:table-column[first()]", aNextNode, XPathConstants.NODE);
            if (firstCol != null) {
              return table.getColumnInstance(firstCol, 0);
            }
          } else {
View Full Code Here

   * @return the index of the column
   */
  public int getColumnIndex() {
    int result = 0;
    Table table = getTable();
    TableTableColumnElement columnEle;
    TableTableElement mTableElement = table.getOdfElement();
    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 == getOdfElement()) {
              return result + mnRepeatedIndex;
            }
            if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
              result += 1;
            } else {
              result += columnEle.getTableNumberColumnsRepeatedAttribute();
            }
          }
        }
      }
      if (n instanceof TableTableColumnElement) {
        columnEle = (TableTableColumnElement) n;
        if (columnEle == getOdfElement()) {
          break;
        }
        if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
          result += 1;
        } else {
          result += columnEle.getTableNumberColumnsRepeatedAttribute();
        }
      }
    }
    return result + mnRepeatedIndex;
  }
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

        new DecimalFormat("000.0000").format(DEFAULT_TABLE_WIDTH / numCols) + "in");
    columnStyle.setProperty(StyleTableColumnPropertiesElement.RelColumnWidth, Math.round(DEFAULT_REL_TABLE_WIDTH / numCols) + "*");
    // 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"));
      headercolumn.setTableNumberColumnsRepeatedAttribute(headerColumnNumber);
      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"));
    columns.setTableNumberColumnsRepeatedAttribute(numCols - headerColumnNumber);
    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 OdfTableColumn appendColumn() {
    List<OdfTableColumn> 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<OdfTableRow> rowList = getRowList();
    for (int i = 0; i < rowList.size();) {
      OdfTableRow 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);
      newColumn.setTableNumberColumnsRepeatedAttribute(1);//chagne to remove attribute
      mTableElement.insertBefore(newColumn, positonElement);
    }

    return getColumnInstance(newColumn, 0);
View Full Code Here

      }

      refColumn = getColumnByIndex(index);
      positionCol = refColumn;

      TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement().cloneNode(true);
      newColumnEle.setTableNumberColumnsRepeatedAttribute(new Integer(columnCount));
      mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());

      for (int i = 0; i < columnCount; i++) {
        list.add(getColumnInstance(newColumnEle, i));
      }
      return list;
    }

    //1. insert the cell
    int iRowCount = getRowCount();
    for (int i = iRowCount - 1; i >= 0;) {
      OdfTableRow row = getRowByIndex(i);
      OdfTableCell refCell = row.getCellByIndex(index - 1);
      OdfTableCell 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 = getColumnInstance(column, 0).getColumnsRepeatedNumber();
      getColumnInstance(column, 0).setColumnsRepeatedNumber((repeatedCount + columnCount));
      TableTableColumnElement columnEle = positionCol.getOdfElement();
      OdfTableColumn 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 newColumnEle = (TableTableColumnElement) refColumn.getOdfElement().cloneNode(true);
      newColumnEle.setTableNumberColumnsRepeatedAttribute(new Integer(columnCount));
      mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());

      for (int i = 0; i < columnCount; i++) {
        list.add(getColumnInstance(newColumnEle, i));
      }
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.