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

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


      newRow = createDefaultRow(columnCount, true);
      mTableElement.appendChild(newRow);
    } else {
      newRow = (TableTableRowElement) OdfXMLFactory.newOdfElement((OdfFileDom) mTableElement.getOwnerDocument(),
          OdfName.newName(OdfDocumentNamespace.TABLE, "table-row"));
      TableTableCellElementBase cellElement = (TableTableCellElementBase) refRowElement.getFirstChild();
      int i = 1;
      while (cellElement != null && i <= columnCount) {
        // covered element
        String tableNameSpace = OdfDocumentNamespace.TABLE.getUri();
        if (cellElement instanceof TableCoveredTableCellElement) {
          TableCoveredTableCellElement coveredCellEle = (TableCoveredTableCellElement) cellElement;
          // find cover cell element
          TableTableRowElement aRowEle = (TableTableRowElement) (coveredCellEle.getParentNode()
              .getPreviousSibling());
          while (aRowEle != null) {
            // the cover cell and the first covered cell must have
            // the same column index.
            TableTableCellElementBase coverCellEle = (TableTableCellElementBase) (aRowEle.getFirstChild());
            int j = coverCellEle.getTableNumberColumnsRepeatedAttribute();
            while (j < i) {
              coverCellEle = (TableTableCellElementBase) (coverCellEle.getNextSibling());
              if (coverCellEle instanceof TableTableCellElement) {
                j += (coverCellEle.getTableNumberColumnsRepeatedAttribute() * (((TableTableCellElement) coverCellEle)
                    .getTableNumberColumnsSpannedAttribute()));
              } else {
                j += coverCellEle.getTableNumberColumnsRepeatedAttribute();
              }
            }
            // find the cover cell, now start cell clone.
            if (coverCellEle instanceof TableTableCellElement) {
              TableTableCellElement newCellEle = (TableTableCellElement) (coverCellEle.cloneNode(true));
              cleanCell(newCellEle);
              newCellEle.removeAttributeNS(tableNameSpace, "number-rows-spanned");
              newRow.appendChild(newCellEle);
              // deal with the following covered cell, spread
              // sheet need change these covered cell to cell.
              if (mIsSpreadsheet) {
                // update column repeated number.
                int columnsSpannedNumber = newCellEle.getTableNumberColumnsSpannedAttribute();
                newCellEle.removeAttributeNS(tableNameSpace, "number-columns-spanned");
                int newColumnRepeatedNumber = newCellEle.getTableNumberColumnsRepeatedAttribute()
                    * columnsSpannedNumber;
                if (newColumnRepeatedNumber > 1) {
                  newCellEle.setTableNumberColumnsRepeatedAttribute(newColumnRepeatedNumber);
                } else {
                  newCellEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
                }
                // ignore the following covered cell of
                // reference row.
                // added by Daisy because of a bug in demo4
                // cellElement is a covered cell. coverCellEle
                // is its cover cell.
                // below codes will count
                // newColumnRepeatedNumber covered cell.
                int tempi = newColumnRepeatedNumber;
                while (tempi > 0) {
                  int iColumnRepeatedNumber = cellElement.getTableNumberColumnsRepeatedAttribute();
                  if (iColumnRepeatedNumber > tempi) {
                    // split covered cell
                    if (cellElement instanceof TableCoveredTableCellElement) {
                      cellElement.setTableNumberColumnsRepeatedAttribute(iColumnRepeatedNumber
                          - tempi);
                      TableTableCellElementBase newCoveredCellEle = (TableTableCellElementBase) cellElement
                          .cloneNode(true);
                      cleanCell(newCoveredCellEle);
                      if (tempi > 1) {
                        newCoveredCellEle.setTableNumberColumnsRepeatedAttribute(tempi);
                      } else {
                        newCoveredCellEle.removeAttributeNS(
                            OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
                      }
                      refRowElement.insertBefore(newCoveredCellEle, cellElement);
                      cellElement = newCoveredCellEle;
                    }
                  }
                  tempi = tempi - cellElement.getTableNumberColumnsRepeatedAttribute();
                  i = i + cellElement.getTableNumberColumnsRepeatedAttribute();
                  if (!(cellElement instanceof TableCoveredTableCellElement) && (tempi > 0)){
                    Logger.getLogger(Table.class.getName()).log(Level.FINE,  "Not covered cell was ignored");
                  }
                  cellElement = (TableTableCellElementBase) (cellElement.getNextSibling());
                  // while ((cellElement != null) &&
                  // (cellElement instanceof
                  // TableCoveredTableCellElement)) {
                  // cellElement = (TableTableCellElementBase)
                  // (cellElement.getNextSibling());
                  // }
                }
                // i += newColumnRepeatedNumber;
              } else {
                // clone the following covered cell of reference
                // row.
                // added by Daisy because of a bug in demo4
                cellElement = (TableTableCellElementBase) cellElement.getNextSibling();
                i += cellElement.getTableNumberColumnsRepeatedAttribute();
                int newColumnSpanNumber = newCellEle.getTableNumberColumnsSpannedAttribute();
                while ((cellElement != null) && (cellElement instanceof TableCoveredTableCellElement)
                    && (newColumnSpanNumber > 1)) {
                  TableCoveredTableCellElement newCoveredCellElement = (TableCoveredTableCellElement) cellElement
                      .cloneNode(true);
                  cleanCell(newCoveredCellElement);
                  newRow.appendChild(newCoveredCellElement);
                  i += cellElement.getTableNumberColumnsRepeatedAttribute();
                  cellElement = (TableTableCellElementBase) cellElement.getNextSibling();
                  newColumnSpanNumber--;
                }
              }
              break;
            }
            // continue find cover cell
            Node preNode = aRowEle.getPreviousSibling();
            if (preNode instanceof TableTableRowElement) {
              aRowEle = (TableTableRowElement) preNode;
            } else {
              // </table:table-header-rows>
              aRowEle = (TableTableRowElement) (preNode.getLastChild());
            }
          }
        } else {
          TableTableCellElement newCellEle = (TableTableCellElement) cellElement.cloneNode(true);
          cleanCell(newCellEle);
          newRow.appendChild(newCellEle);
          Integer tableNumberColumnsRepeated = newCellEle.getTableNumberColumnsRepeatedAttribute();
          Integer tableNumberColumnsSpanned = newCellEle.getTableNumberColumnsSpannedAttribute();
          i += tableNumberColumnsRepeated * tableNumberColumnsSpanned;
          cellElement = (TableTableCellElementBase) cellElement.getNextSibling();
          if (tableNumberColumnsSpanned > 1) {
            int j = 1;
            if (mIsSpreadsheet) {
              newCellEle.removeAttributeNS(tableNameSpace, "number-columns-spanned");
              int newColumnRepeatedNumber = tableNumberColumnsRepeated * tableNumberColumnsSpanned;
              if (newColumnRepeatedNumber > 1) {
                newCellEle.setTableNumberColumnsRepeatedAttribute(newColumnRepeatedNumber);
              } else {
                newCellEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
              }
              // cellElement is not a covered cell.
              // below codes will count
              // (newColumnRepeatedNumber-1) covered cell.
              int tempi = newColumnRepeatedNumber;
              while (tempi > 1) {
                int iColumnRepeatedNumber = cellElement.getTableNumberColumnsRepeatedAttribute();
                if (iColumnRepeatedNumber > tempi + 1) {
                  // split covered cell
                  if (cellElement instanceof TableCoveredTableCellElement) {
                    cellElement.setTableNumberColumnsRepeatedAttribute(iColumnRepeatedNumber
                        - tempi + 1);
                    TableTableCellElementBase newCoveredCellEle = (TableTableCellElementBase) cellElement
                        .cloneNode(true);
                    cleanCell(newCoveredCellEle);
                    newCoveredCellEle.setTableNumberColumnsRepeatedAttribute(tempi - 1);
                    refRowElement.insertBefore(newCoveredCellEle, cellElement);
                    cellElement = newCoveredCellEle;
                  }
                }
                tempi = tempi - cellElement.getTableNumberColumnsRepeatedAttribute();
                if (!(cellElement instanceof TableCoveredTableCellElement) && (tempi > 1)){
                  Logger.getLogger(Table.class.getName()).log(Level.FINE,  "Not covered cell was ignored");
                }
                cellElement = (TableTableCellElementBase) (cellElement.getNextSibling());
              }
            } else {
              while ((j < tableNumberColumnsSpanned) && (cellElement != null)) {
                int iColumnRepeatedNumber = cellElement.getTableNumberColumnsRepeatedAttribute();
                if (iColumnRepeatedNumber > tableNumberColumnsSpanned - j) {
                  // split covered cell
                  if (cellElement instanceof TableCoveredTableCellElement) {
                    cellElement.setTableNumberColumnsRepeatedAttribute(iColumnRepeatedNumber
                        - tableNumberColumnsSpanned + j);
                    TableTableCellElementBase newCoveredCellEle = (TableTableCellElementBase) cellElement
                        .cloneNode(true);
                    cleanCell(newCoveredCellEle);
                    newCoveredCellEle
                        .setTableNumberColumnsRepeatedAttribute(tableNumberColumnsSpanned - j);
                    refRowElement.insertBefore(newCoveredCellEle, cellElement);
                    cellElement = newCoveredCellEle;
                  }
                }
                TableTableCellElementBase newCoveredCellEle = (TableTableCellElementBase) cellElement
                    .cloneNode(true);
                cleanCell(newCoveredCellEle);
                newRow.appendChild(newCoveredCellEle);
                j += newCoveredCellEle.getTableNumberColumnsRepeatedAttribute();
                cellElement = (TableTableCellElementBase) cellElement.getNextSibling();
              }
            }
          }
        }
View Full Code Here


    // clean style name
    if (isCleanStyle) {
      for (Column column : resultList) {
        int length = column.getCellCount();
        for (int i = 0; i < length; i++) {
          TableTableCellElementBase cellElement = column.getCellByIndex(i).mCellElement;
          cellElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "style-name");
        }
      }
    }
    return resultList;
  }
View Full Code Here

  private TextSelection createSelection(OdfElement containerElement, int nextIndex) {
    TextSelection item = null;
    Node parent = containerElement.getParentNode();
    while (parent != null) {
      if (TableTableCellElementBase.class.isInstance(parent)) {
        TableTableCellElementBase cellElement = (TableTableCellElementBase) parent;
        Cell cell = Cell.getInstance(cellElement);
        item = new CellSelection(mNextText, containerElement, nextIndex, cell);
        break;
      } else {
        OdfName odfName = ((OdfElement) parent).getOdfName();
View Full Code Here

    //2.if the cell is the column repeated cell
    //this repeated cell has to be separated
    int repeateNum = getColumnsRepeatedNumber();
    if (repeateNum > 1) {
      //change this repeated column to several single columns
      TableTableCellElementBase ownerCellElement = null;
      int repeatedColIndex = mnRepeatedColIndex;
      Node refElement = mCellElement;
      for (int i = repeateNum - 1; i >= 0; i--) {
        TableTableCellElementBase newCell = (TableTableCellElementBase) mCellElement.cloneNode(true);
        newCell.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
        row.getOdfElement().insertBefore(newCell, refElement);
        refElement = newCell;
        if (repeatedColIndex == i) {
          ownerCellElement = newCell;
        } else {
View Full Code Here

   * @param fromCell  another cell whose content will be appended to this cell
   */
  void appendContentFrom(OdfTableCell fromCell) {
    splitRepeatedCells();
    OdfWhitespaceProcessor textProcess = new OdfWhitespaceProcessor();
    TableTableCellElementBase cell = fromCell.getOdfElement();
    Node node = cell.getFirstChild();
    while (node != null) {
      if (node instanceof OdfTextParagraph) {
        if (!textProcess.getText(node).equals("")) {
          mCellElement.appendChild(node.cloneNode(true));
        }
View Full Code Here

      Vector<Cell> oldList = null;
      if (cellRepository.containsKey(mCellElement)) {
        oldList = cellRepository.remove(mCellElement);
      }
      int offetAfterCurrentCell = repeateNum - mnRepeatedColIndex - 1;
      TableTableCellElementBase currentCellElement = mCellElement;
      TableTableCellElementBase newBeforeCellElement = null;
      TableTableCellElementBase newAfterCellElement = null;
      if (mnRepeatedColIndex > 0) {
        newBeforeCellElement = (TableTableCellElementBase) mCellElement.cloneNode(true);
        if (mnRepeatedColIndex > 1) {
          newBeforeCellElement.setTableNumberColumnsRepeatedAttribute(mnRepeatedColIndex);
        } else {
          newBeforeCellElement.removeAttributeNS(tableNamespaceURI, "number-columns-repeated");
        }
        // insert new before repeated cell
        ownerRowElement.insertBefore(newBeforeCellElement, currentCellElement);
        // update cell cache
        if (oldList != null) {
          Vector<Cell> newBeforeList = new Vector<Cell>(mnRepeatedColIndex);
          for (int i = 0; i < mnRepeatedColIndex && i < oldList.size(); i++) {
            Cell beforeCell = oldList.get(i);
            if (beforeCell != null) {
              beforeCell.mCellElement = newBeforeCellElement;
              newBeforeList.add(i, beforeCell);
            }
          }
          cellRepository.put(newBeforeCellElement, newBeforeList);
        }
      }
      currentCellElement.removeAttributeNS(tableNamespaceURI, "number-columns-repeated");
      if (offetAfterCurrentCell > 0) {
        newAfterCellElement = (TableTableCellElementBase) currentCellElement.cloneNode(true);
        ownerRowElement.insertBefore(newAfterCellElement, currentCellElement);
        currentCellElement = newAfterCellElement;
        newAfterCellElement = (TableTableCellElementBase) currentCellElement.getNextSibling();
        if (offetAfterCurrentCell > 1) {
          newAfterCellElement.setTableNumberColumnsRepeatedAttribute(offetAfterCurrentCell);
        }
        // update cell cache
        if (oldList != null) {
          Vector<Cell> newAfterList = new Vector<Cell>(offetAfterCurrentCell);
          for (int i = mnRepeatedColIndex + 1; i < repeateNum && i < oldList.size(); i++) {
View Full Code Here

   * @param fromCell
   *            another cell whose content will be appended to this cell
   */
  void appendContentFrom(Cell fromCell) {
    splitRepeatedCells();
    TableTableCellElementBase cell = fromCell.getOdfElement();
    Node node = cell.getFirstChild();
    while (node != null) {
      if (node instanceof OdfTextParagraph) {
        if (!TextExtractor.getText((OdfTextParagraph) node).equals("")) {
          mCellElement.appendChild(node.cloneNode(true));
        }
View Full Code Here

      newRow = createDefaultRow(columnCount, true);
      mTableElement.appendChild(newRow);
    } else {
      newRow = (TableTableRowElement) OdfXMLFactory.newOdfElement((OdfFileDom) mTableElement.getOwnerDocument(),
          OdfName.newName(OdfDocumentNamespace.TABLE, "table-row"));
      TableTableCellElementBase cellElement = (TableTableCellElementBase) refRowElement.getFirstChild();
      int i = 1;
      while (cellElement != null && i <= columnCount) {
        // covered element
        String tableNameSpace = OdfDocumentNamespace.TABLE.getUri();
        if (cellElement instanceof TableCoveredTableCellElement) {
          TableCoveredTableCellElement coveredCellEle = (TableCoveredTableCellElement) cellElement;
          // find cover cell element
          TableTableRowElement aRowEle = (TableTableRowElement) (coveredCellEle.getParentNode()
              .getPreviousSibling());
          while (aRowEle != null) {
            // the cover cell and the first covered cell must have
            // the same column index.
            TableTableCellElementBase coverCellEle = (TableTableCellElementBase) (aRowEle.getFirstChild());
            int j = coverCellEle.getTableNumberColumnsRepeatedAttribute();
            while (j < i) {
              coverCellEle = (TableTableCellElementBase) (coverCellEle.getNextSibling());
              if (coverCellEle instanceof TableTableCellElement) {
                j += (coverCellEle.getTableNumberColumnsRepeatedAttribute() * (((TableTableCellElement) coverCellEle)
                    .getTableNumberColumnsSpannedAttribute()));
              } else {
                j += coverCellEle.getTableNumberColumnsRepeatedAttribute();
              }
            }
            // find the cover cell, now start cell clone.
            if (coverCellEle instanceof TableTableCellElement) {
              TableTableCellElement newCellEle = (TableTableCellElement) (coverCellEle.cloneNode(true));
              cleanCell(newCellEle);
              newCellEle.removeAttributeNS(tableNameSpace, "number-rows-spanned");
              newRow.appendChild(newCellEle);
              // deal with the following covered cell, spread
              // sheet need change these covered cell to cell.
              if (mIsSpreadsheet) {
                // update column repeated number.
                int columnsSpannedNumber = newCellEle.getTableNumberColumnsSpannedAttribute();
                newCellEle.removeAttributeNS(tableNameSpace, "number-columns-spanned");
                int newColumnRepeatedNumber = newCellEle.getTableNumberColumnsRepeatedAttribute()
                    * columnsSpannedNumber;
                if (newColumnRepeatedNumber > 1) {
                  newCellEle.setTableNumberColumnsRepeatedAttribute(newColumnRepeatedNumber);
                } else {
                  newCellEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
                }
                // ignore the following covered cell of
                // reference row.
                // added by Daisy because of a bug in demo4
                // cellElement is a covered cell. coverCellEle
                // is its cover cell.
                // below codes will count
                // newColumnRepeatedNumber covered cell.
                int tempi = newColumnRepeatedNumber;
                while (tempi > 0) {
                  int iColumnRepeatedNumber = cellElement.getTableNumberColumnsRepeatedAttribute();
                  if (iColumnRepeatedNumber > tempi) {
                    // split covered cell
                    if (cellElement instanceof TableCoveredTableCellElement) {
                      cellElement.setTableNumberColumnsRepeatedAttribute(iColumnRepeatedNumber
                          - tempi);
                      TableTableCellElementBase newCoveredCellEle = (TableTableCellElementBase) cellElement
                          .cloneNode(true);
                      cleanCell(newCoveredCellEle);
                      if (tempi > 1) {
                        newCoveredCellEle.setTableNumberColumnsRepeatedAttribute(tempi);
                      } else {
                        newCoveredCellEle.removeAttributeNS(
                            OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
                      }
                      refRowElement.insertBefore(newCoveredCellEle, cellElement);
                      cellElement = newCoveredCellEle;
                    }
                  }
                  tempi = tempi - cellElement.getTableNumberColumnsRepeatedAttribute();
                  i = i + cellElement.getTableNumberColumnsRepeatedAttribute();
                  if (!(cellElement instanceof TableCoveredTableCellElement) && (tempi > 0)){
                    Logger.getLogger(Table.class.getName()).log(Level.FINE,  "Not covered cell was ignored");
                  }
                  cellElement = (TableTableCellElementBase) (cellElement.getNextSibling());
                  // while ((cellElement != null) &&
                  // (cellElement instanceof
                  // TableCoveredTableCellElement)) {
                  // cellElement = (TableTableCellElementBase)
                  // (cellElement.getNextSibling());
                  // }
                }
                // i += newColumnRepeatedNumber;
              } else {
                // clone the following covered cell of reference
                // row.
                // added by Daisy because of a bug in demo4
                cellElement = (TableTableCellElementBase) cellElement.getNextSibling();
                i += cellElement.getTableNumberColumnsRepeatedAttribute();
                int newColumnSpanNumber = newCellEle.getTableNumberColumnsSpannedAttribute();
                while ((cellElement != null) && (cellElement instanceof TableCoveredTableCellElement)
                    && (newColumnSpanNumber > 1)) {
                  TableCoveredTableCellElement newCoveredCellElement = (TableCoveredTableCellElement) cellElement
                      .cloneNode(true);
                  cleanCell(newCoveredCellElement);
                  newRow.appendChild(newCoveredCellElement);
                  i += cellElement.getTableNumberColumnsRepeatedAttribute();
                  cellElement = (TableTableCellElementBase) cellElement.getNextSibling();
                  newColumnSpanNumber--;
                }
              }
              break;
            }
            // continue find cover cell
            Node preNode = aRowEle.getPreviousSibling();
            if (preNode instanceof TableTableRowElement) {
              aRowEle = (TableTableRowElement) preNode;
            } else {
              // </table:table-header-rows>
              aRowEle = (TableTableRowElement) (preNode.getLastChild());
            }
          }
        } else {
          TableTableCellElement newCellEle = (TableTableCellElement) cellElement.cloneNode(true);
          cleanCell(newCellEle);
          newRow.appendChild(newCellEle);
          Integer tableNumberColumnsRepeated = newCellEle.getTableNumberColumnsRepeatedAttribute();
          Integer tableNumberColumnsSpanned = newCellEle.getTableNumberColumnsSpannedAttribute();
          i += tableNumberColumnsRepeated * tableNumberColumnsSpanned;
          cellElement = (TableTableCellElementBase) cellElement.getNextSibling();
          if (tableNumberColumnsSpanned > 1) {
            int j = 1;
            if (mIsSpreadsheet) {
              newCellEle.removeAttributeNS(tableNameSpace, "number-columns-spanned");
              int newColumnRepeatedNumber = tableNumberColumnsRepeated * tableNumberColumnsSpanned;
              if (newColumnRepeatedNumber > 1) {
                newCellEle.setTableNumberColumnsRepeatedAttribute(newColumnRepeatedNumber);
              } else {
                newCellEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
              }
              // cellElement is not a covered cell.
              // below codes will count
              // (newColumnRepeatedNumber-1) covered cell.
              int tempi = newColumnRepeatedNumber;
              while (tempi > 1) {
                int iColumnRepeatedNumber = cellElement.getTableNumberColumnsRepeatedAttribute();
                if (iColumnRepeatedNumber > tempi + 1) {
                  // split covered cell
                  if (cellElement instanceof TableCoveredTableCellElement) {
                    cellElement.setTableNumberColumnsRepeatedAttribute(iColumnRepeatedNumber
                        - tempi + 1);
                    TableTableCellElementBase newCoveredCellEle = (TableTableCellElementBase) cellElement
                        .cloneNode(true);
                    cleanCell(newCoveredCellEle);
                    newCoveredCellEle.setTableNumberColumnsRepeatedAttribute(tempi - 1);
                    refRowElement.insertBefore(newCoveredCellEle, cellElement);
                    cellElement = newCoveredCellEle;
                  }
                }
                tempi = tempi - cellElement.getTableNumberColumnsRepeatedAttribute();
                if (!(cellElement instanceof TableCoveredTableCellElement) && (tempi > 1)){
                  Logger.getLogger(Table.class.getName()).log(Level.FINE,  "Not covered cell was ignored");
                }
                cellElement = (TableTableCellElementBase) (cellElement.getNextSibling());
              }
            } else {
              while ((j < tableNumberColumnsSpanned) && (cellElement != null)) {
                int iColumnRepeatedNumber = cellElement.getTableNumberColumnsRepeatedAttribute();
                if (iColumnRepeatedNumber > tableNumberColumnsSpanned - j) {
                  // split covered cell
                  if (cellElement instanceof TableCoveredTableCellElement) {
                    cellElement.setTableNumberColumnsRepeatedAttribute(iColumnRepeatedNumber
                        - tableNumberColumnsSpanned + j);
                    TableTableCellElementBase newCoveredCellEle = (TableTableCellElementBase) cellElement
                        .cloneNode(true);
                    cleanCell(newCoveredCellEle);
                    newCoveredCellEle
                        .setTableNumberColumnsRepeatedAttribute(tableNumberColumnsSpanned - j);
                    refRowElement.insertBefore(newCoveredCellEle, cellElement);
                    cellElement = newCoveredCellEle;
                  }
                }
                TableTableCellElementBase newCoveredCellEle = (TableTableCellElementBase) cellElement
                    .cloneNode(true);
                cleanCell(newCoveredCellEle);
                newRow.appendChild(newCoveredCellEle);
                j += newCoveredCellEle.getTableNumberColumnsRepeatedAttribute();
                cellElement = (TableTableCellElementBase) cellElement.getNextSibling();
              }
            }
          }
        }
View Full Code Here

      Vector<Cell> oldList = null;
      if (cellRepository.containsKey(mCellElement)) {
        oldList = cellRepository.remove(mCellElement);
      }
      int offetAfterCurrentCell = repeateNum - mnRepeatedColIndex - 1;
      TableTableCellElementBase currentCellElement = mCellElement;
      TableTableCellElementBase newBeforeCellElement = null;
      TableTableCellElementBase newAfterCellElement = null;
      if (mnRepeatedColIndex > 0) {
        newBeforeCellElement = (TableTableCellElementBase) mCellElement.cloneNode(true);
        if (mnRepeatedColIndex > 1) {
          newBeforeCellElement.setTableNumberColumnsRepeatedAttribute(mnRepeatedColIndex);
        } else {
          newBeforeCellElement.removeAttributeNS(tableNamespaceURI, "number-columns-repeated");
        }
        // insert new before repeated cell
        ownerRowElement.insertBefore(newBeforeCellElement, currentCellElement);
        // update cell cache
        if (oldList != null) {
          Vector<Cell> newBeforeList = new Vector<Cell>(mnRepeatedColIndex);
          for (int i = 0; i < mnRepeatedColIndex && i < oldList.size(); i++) {
            Cell beforeCell = oldList.get(i);
            if (beforeCell != null) {
              beforeCell.mCellElement = newBeforeCellElement;
              newBeforeList.add(i, beforeCell);
            }
          }
          cellRepository.put(newBeforeCellElement, newBeforeList);
        }
      }
      currentCellElement.removeAttributeNS(tableNamespaceURI, "number-columns-repeated");
      if (offetAfterCurrentCell > 0) {
        newAfterCellElement = (TableTableCellElementBase) currentCellElement.cloneNode(true);
        ownerRowElement.insertBefore(newAfterCellElement, currentCellElement);
        currentCellElement = newAfterCellElement;
        newAfterCellElement = (TableTableCellElementBase) currentCellElement.getNextSibling();
        if (offetAfterCurrentCell > 1) {
          newAfterCellElement.setTableNumberColumnsRepeatedAttribute(offetAfterCurrentCell);
        }
        // update cell cache
        if (oldList != null) {
          Vector<Cell> newAfterList = new Vector<Cell>(offetAfterCurrentCell);
          for (int i = mnRepeatedColIndex + 1; i < repeateNum && i < oldList.size(); i++) {
View Full Code Here

   * @param fromCell
   *            another cell whose content will be appended to this cell
   */
  void appendContentFrom(Cell fromCell) {
    splitRepeatedCells();
    TableTableCellElementBase cell = fromCell.getOdfElement();
    Node node = cell.getFirstChild();
    while (node != null) {
      if (node instanceof OdfTextParagraph) {
        if (!TextExtractor.getText((OdfTextParagraph) node).equals("")) {
          mCellElement.appendChild(node.cloneNode(true));
        }
View Full Code Here

TOP

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

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.