Package org.zkoss.zss.ui.impl

Examples of org.zkoss.zss.ui.impl.MergeMatrixHelper


       */
      response("mergeCell" + Utils.nextUpdateId(), new AuMergeCell(Spreadsheet.this, "", Utils.getSheetUuid(sheet), result.toString()));
    }

    public void addMergeCell(Worksheet sheet, int left, int top, int right,  int bottom) {
      MergeMatrixHelper mmhelper = this.getMergeMatrixHelper(sheet);

      Set toadd = new HashSet();
      Set torem = new HashSet();
      mmhelper.addMergeRange(left, top, right, bottom, toadd, torem);
      for (Iterator iter = torem.iterator(); iter.hasNext();) {
        MergedRect rect = (MergedRect) iter.next();
        log.debug("(A)remove merge:" + rect);
        updateMergeCell0(sheet, rect, "remove");
      }
View Full Code Here


        int lCol = selection.getLeft();
        int bRow = selection.getBottom();
        int rCol = selection.getRight();
       
        boolean merged = false;
        MergeMatrixHelper mergeHelper = _spreadsheet.getMergeMatrixHelper(sheet);
        for (int r = tRow; r <= bRow; r++) {
          for (int c = lCol; c <= rCol; c++) {
            MergedRect rect = mergeHelper.getMergeRange(r, c);
            if (rect != null) {
              merged = true;
              break;
            }
          }
View Full Code Here

      HeaderPositionHelper rowHelper = getRowPositionHelper(sheet);
      smartUpdate("csc", getSizeHelperStr(colHelper));
      smartUpdate("csr", getSizeHelperStr(rowHelper));
     
      // generate merge range information
      MergeMatrixHelper mmhelper = getMergeMatrixHelper(sheet);
      Iterator iter = mmhelper.getRanges().iterator();
      StringBuffer merr = new StringBuffer();
      while (iter.hasNext()) {
        MergedRect block = (MergedRect) iter.next();
        int left = block.getLeft();
        int top = block.getTop();
View Full Code Here

    renderer.render("csc", getSizeHelperStr(colHelper));
    renderer.render("csr", getSizeHelperStr(rowHelper));

    // generate merge range information

    MergeMatrixHelper mmhelper = getMergeMatrixHelper(sheet);
    Iterator iter = mmhelper.getRanges().iterator();
    StringBuffer merr = new StringBuffer();
    while (iter.hasNext()) {
      MergedRect block = (MergedRect) iter.next();
      int left = block.getLeft();
      int top = block.getTop();
View Full Code Here

      helpers = new HelperContainer<MergeMatrixHelper>();
      setAttribute(MERGE_MATRIX_KEY, helpers);
    }
   
    final String sheetId = ((SheetCtrl)sheet).getUuid();
    MergeMatrixHelper mmhelper = helpers.getHelper(sheetId);
    int fzr = getRowfreeze();
    int fzc = getColumnfreeze();
    if (mmhelper == null) {
      final int sz = sheet.getNumMergedRegions();
      final List<int[]> mergeRanges = new ArrayList<int[]>(sz);
      for(int j = sz - 1; j >= 0; --j) {
        final CellRangeAddress addr = sheet.getMergedRegion(j);
        mergeRanges.add(new int[] {addr.getFirstColumn(), addr.getFirstRow(), addr.getLastColumn(), addr.getLastRow()});
      }
      helpers.putHelper(sheetId, mmhelper = new MergeMatrixHelper(mergeRanges, fzr, fzc));
    } else {
      mmhelper.update(fzr, fzc);
    }
    return mmhelper;
  }
View Full Code Here

    Worksheet sheet = getSelectedSheet();

    HeaderPositionHelper colHelper = this.getColumnPositionHelper(sheet);
    HeaderPositionHelper rowHelper = this.getRowPositionHelper(sheet);
    MergeMatrixHelper mmhelper = this.getMergeMatrixHelper(sheet);

    boolean hiderow = isHiderowhead();
    boolean hidecol = isHidecolumnhead();
    boolean showgrid = sheet.isDisplayGridlines();

    int th = hidecol ? 1 : this.getTopheadheight();
    int lw = hiderow ? 1 : this.getLeftheadwidth();
    int cp = this._cellpadding;//
    int rh = this.getRowheight();
    int cw = this.getColumnwidth();
    int lh = 20;// default line height;

    if (lh > rh) {
      lh = rh;
    }

    String sheetPrefix = " .s" + getSelectedSheetId();
    String name = "#" + getUuid();

    int cellwidth;// default
    int cellheight;// default
    Execution exe = Executions.getCurrent();

    boolean isGecko = exe.isGecko();
    boolean isIE = exe.isExplorer();
    // boolean isIE7 = exe.isExplorer7();

    if (isGecko) {// firefox
      cellwidth = cw;
      cellheight = rh;
    } else {
      cellwidth = cw - 2 * cp - 1;// 1 is border width
      cellheight = rh - 1;// 1 is border width
    }

    int celltextwidth = cw - 2 * cp - 1;// 1 is border width

    StringBuffer sb = new StringBuffer();

    // zcss.setRule(name+" .zsdata",["padding-top","padding-left"],[th+"px",lw+"px"],true,sid);
    sb.append(name).append(" .zsdata{");
    sb.append("padding-top:").append(th).append("px;");
    sb.append("padding-left:").append(lw).append("px;");
    sb.append("}");

    // zcss.setRule(name+" .zsrow","height",rh+"px",true,sid);
    sb.append(name).append(" .zsrow{");
    sb.append("height:").append(rh).append("px;");
    sb.append("}");

    // zcss.setRule(name+" .zscell",["padding","height","width","line-height"],["0px "+cp+"px 0px "+cp+"px",cellheight+"px",cellwidth+"px",lh+"px"],true,sid);
    sb.append(name).append(" .zscell{");
    sb.append("padding:").append("0px " + cp + "px 0px " + cp + "px;");
    sb.append("height:").append(cellheight).append("px;");
    sb.append("width:").append(cellwidth).append("px;");
    if (!showgrid) {
      sb.append("border-bottom:1px solid #FFFFFF;")
        .append("border-right:1px solid #FFFFFF;");
    }
    // sb.append("line-height:").append(lh).append("px;\n");
    sb.append("}");

    // zcss.setRule(name+" .zscelltxt",["width","height"],[celltextwidth+"px",cellheight+"px"],true,sid);
    sb.append(name).append(" .zscelltxt{");
    sb.append("width:").append(celltextwidth).append("px;");
    sb.append("height:").append(cellheight).append("px;");
    sb.append("}");

    // zcss.setRule(name+" .zstop",["left","height","line-height"],[lw+"px",(th-2)+"px",lh+"px"],true,sid);

    int toph = th - 1;
    int topheadh = (isGecko) ? toph : toph - 1;
    int cornertoph = th - 1;
    // int topblocktop = toph;
    int fzr = getRowfreeze();
    int fzc = getColumnfreeze();

    if (fzr > -1) {
      toph = toph + rowHelper.getStartPixel(fzr + 1);
    }

    sb.append(name).append(" .zstop{");
    sb.append("left:").append(lw).append("px;");
    sb.append("height:").append(fzr > -1 ? toph - 1 : toph).append("px;");
    // sb.append("line-height:").append(toph).append("px;\n");
    sb.append("}");

    sb.append(name).append(" .zstopi{");
    sb.append("height:").append(toph).append("px;");
    sb.append("}");

    sb.append(name).append(" .zstophead{");
    sb.append("height:").append(topheadh).append("px;");
    sb.append("}");

    sb.append(name).append(" .zscornertop{");
    sb.append("left:").append(lw).append("px;");
    sb.append("height:").append(cornertoph).append("px;");
    sb.append("}");

    // relative, so needn't set top position.
    /*
     * sb.append(name).append(" .zstopblock{\n");
     * sb.append("top:").append(topblocktop).append("px;\n");
     * sb.append("}\n");
     */

    // zcss.setRule(name+" .zstopcell",["padding","height","width","line-height"],["0px "+cp+"px 0px "+cp+"px",th+"px",cellwidth+"px",lh+"px"],true,sid);
    sb.append(name).append(" .zstopcell{");
    sb.append("padding:").append("0px " + cp + "px 0px " + cp + "px;");
    sb.append("height:").append(topheadh).append("px;");
    sb.append("width:").append(cellwidth).append("px;");
    sb.append("line-height:").append(topheadh).append("px;");
    sb.append("}");

    // zcss.setRule(name+" .zstopcelltxt","width", celltextwidth
    // +"px",true,sid);
    sb.append(name).append(" .zstopcelltxt{");
    sb.append("width:").append(celltextwidth).append("px;");
    sb.append("}");

    // zcss.setRule(name+" .zsleft",["top","width"],[th+"px",(lw-2)+"px"],true,sid);

    int leftw = lw - 1;
    int leftheadw = leftw;
    int leftblockleft = leftw;

    if (fzc > -1) {
      leftw = leftw + colHelper.getStartPixel(fzc + 1);
    }

    sb.append(name).append(" .zsleft{");
    sb.append("top:").append(th).append("px;");
    sb.append("width:").append(fzc > -1 ? leftw - 1 : leftw)
        .append("px;");
    sb.append("}");

    sb.append(name).append(" .zslefti{");
    sb.append("width:").append(leftw).append("px;");
    sb.append("}");

    sb.append(name).append(" .zslefthead{");
    sb.append("width:").append(leftheadw).append("px;");
    sb.append("}");

    sb.append(name).append(" .zsleftblock{");
    sb.append("left:").append(leftblockleft).append("px;");
    sb.append("}");

    sb.append(name).append(" .zscornerleft{");
    sb.append("top:").append(th).append("px;");
    sb.append("width:").append(leftheadw).append("px;");
    sb.append("}");

    // zcss.setRule(name+" .zsleftcell",["height","line-height"],[(rh-1)+"px",(rh)+"px"],true,sid);//for
    // middle the text, i use row leight instead of lh
    sb.append(name).append(" .zsleftcell{");
    sb.append("height:").append(rh - 1).append("px;");
    sb.append("line-height:").append(rh - 1).append("px;");
    sb.append("}");

    // zcss.setRule(name+" .zscorner",["width","height"],[(lw-2)+"px",(th-2)+"px"],true,sid);

    sb.append(name).append(" .zscorner{");
    sb.append("width:").append(fzc > -1 ? leftw : leftw + 1)
        .append("px;");
    sb.append("height:").append(fzr > -1 ? toph : toph + 1).append("px;");
    sb.append("}");

    sb.append(name).append(" .zscorneri{");
    sb.append("width:").append(lw - 2).append("px;");
    sb.append("height:").append(th - 2).append("px;");
    sb.append("}");

    sb.append(name).append(" .zscornerblock{");
    sb.append("left:").append(lw).append("px;");
    sb.append("top:").append(th).append("px;");
    sb.append("}");

    // zcss.setRule(name+" .zshboun","height",th+"px",true,sid);
    sb.append(name).append(" .zshboun{");
    sb.append("height:").append(th).append("px;");
    sb.append("}");

    // zcss.setRule(name+" .zshboun","height",th+"px",true,sid);
/*    sb.append(name).append(" .zshboun{\n");
    sb.append("height:").append(th).append("px;\n");
    sb.append("}\n");
*/
    // zcss.setRule(name+" .zshbouni","height",th+"px",true,sid);
    sb.append(name).append(" .zshbouni{");
    sb.append("height:").append(th).append("px;");
    sb.append("}");

    sb.append(name).append(" .zsfztop{");
    sb.append("border-bottom-style:").append(fzr > -1 ? "solid" : "none")
        .append(";");
    sb.append("}");
    sb.append(name).append(" .zsfzcorner{");
    sb.append("border-bottom-style:").append(fzr > -1 ? "solid" : "none")
        .append(";");
    sb.append("}");

    sb.append(name).append(" .zsfzleft{");
    sb.append("border-right-style:").append(fzc > -1 ? "solid" : "none")
        .append(";");
    sb.append("}");
    sb.append(name).append(" .zsfzcorner{");
    sb.append("border-right-style:").append(fzc > -1 ? "solid" : "none")
        .append(";");
    sb.append("}");

    // TODO transparent border mode
    boolean transparentBorder = false;
    if (transparentBorder) {
      sb.append(name).append(" .zscell {");
      sb.append("border-right-color: transparent;");
      sb.append("border-bottom-color: transparent;");
      if (isIE) {
        /** for IE6 **/
        String color_to_transparent = "tomato";
        sb.append("_border-color:" + color_to_transparent + ";");
        sb.append("_filter:chroma(color=" + color_to_transparent + ");");
      }
      sb.append("}");
    }

    List<HeaderPositionInfo> infos = colHelper.getInfos();
    for (HeaderPositionInfo info : infos) {
      boolean hidden = info.hidden;
      int index = info.index;
      int width = hidden ? 0 : info.size;
      int cid = info.id;

      celltextwidth = width - 2 * cp - 1;// 1 is border width

      // bug 1989680
      if (celltextwidth < 0)
        celltextwidth = 0;

      if (!isGecko) {
        cellwidth = celltextwidth;
      } else {
        cellwidth = width;
      }

      if (width <= 0) {
        sb.append(name).append(" .zsw").append(cid).append("{");
        sb.append("display:none;");
        sb.append("}");

      } else {
        sb.append(name).append(" .zsw").append(cid).append("{");
        sb.append("width:").append(cellwidth).append("px;");
        sb.append("}");

        sb.append(name).append(" .zswi").append(cid).append("{");
        sb.append("width:").append(celltextwidth).append("px;");
        sb.append("}");
      }
    }

    infos = rowHelper.getInfos();
    for (HeaderPositionInfo info : infos) {
      boolean hidden = info.hidden;
      int index = info.index;
      int height = hidden ? 0 : info.size;
      int cid = info.id;
      cellheight = height;
      if (!isGecko) {
        cellheight = height - 1;// 1 is border width
      }

      if (height <= 0) {

        sb.append(name).append(" .zsh").append(cid).append("{\n");
        sb.append("display:none;");
        sb.append("}");

        sb.append(name).append(" .zslh").append(cid).append("{");
        sb.append("display:none;");
        sb.append("}");

      } else {
        sb.append(name).append(" .zsh").append(cid).append("{");
        sb.append("height:").append(height).append("px;");
        sb.append("}");

        sb.append(name).append(" .zshi").append(cid).append("{");
        sb.append("height:").append(cellheight).append("px;");
        sb.append("}");

        int h2 = (height < 1) ? 0 : height - 1;

        sb.append(name).append(" .zslh").append(cid).append("{");
        sb.append("height:").append(h2).append("px;");
        sb.append("line-height:").append(h2).append("px;");
        sb.append("}");

      }
    }
    //TODO: seems no need
    sb.append(".zs_header{}");// for indicating add new rule before this

    // merge size;
    List ranges = mmhelper.getRanges();
    Iterator iter = ranges.iterator();
    final int defaultSize = colHelper.getDefaultSize();
    final int defaultRowSize = rowHelper.getDefaultSize();

    while (iter.hasNext()) {
View Full Code Here

  private DesktopWorkbenchContext getDesktopWorkbenchContext() {
    return Zssapp.getDesktopWorkbenchContext(self);
  }
 
  private boolean isMergedCell(int tRow, int lCol, int bRow, int rCol) {
    MergeMatrixHelper mmhelper = spreadsheet.getMergeMatrixHelper(spreadsheet.getSelectedSheet());
    for (final Iterator iter = mmhelper.getRanges().iterator(); iter
        .hasNext();) {
      MergedRect block = (MergedRect) iter.next();
      int bt = block.getTop();
      int bl = block.getLeft();
      int bb = block.getBottom();
View Full Code Here

   
    int row_top = getRowBegin(ss).intValue();
    int row_bottom = getRowEnd(ss).intValue();
   
    Worksheet sheet = ss.getSelectedSheet();
    MergeMatrixHelper mmhelper = ((SpreadsheetCtrl)ss.getExtraCtrl()).getMergeMatrixHelper(sheet);
    Set blocks = mmhelper.getRangesByColumn(max);
    Iterator iter = blocks.iterator();
    while(iter.hasNext()){
      Rect rect = (Rect)iter.next();
      int top = rect.getTop();
      //int left = rect.getLeft();
View Full Code Here

TOP

Related Classes of org.zkoss.zss.ui.impl.MergeMatrixHelper

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.