Sheet sheet = getSelectedSheet();
HeaderPositionHelper colHelper = this.getColumnPositionHelper(sheet);
HeaderPositionHelper rowHelper = this.getRowPositionHelper(sheet);
MergeMatrixHelper mmhelper = this.getMergeMatrixHelper(sheet);
boolean hiderow = isHiderowhead();
boolean hidecol = isHidecolumnhead();
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 sheetid = getUuid();
String name ="#"+sheetid;
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{\n");
sb.append("padding-top:").append(th).append("px;\n");
sb.append("padding-left:").append(lw).append("px;\n");
sb.append("}\n");
//zcss.setRule(name+" .zsrow","height",rh+"px",true,sid);
sb.append(name).append(" .zsrow{\n");
sb.append("height:").append(rh).append("px;\n");
sb.append("}\n");
//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{\n");
sb.append("padding:").append("0px "+cp+"px 0px "+cp+"px;\n");
sb.append("height:").append(cellheight).append("px;\n");
sb.append("width:").append(cellwidth).append("px;\n");
//sb.append("line-height:").append(lh).append("px;\n");
sb.append("}\n");
//zcss.setRule(name+" .zscelltxt",["width","height"],[celltextwidth+"px",cellheight+"px"],true,sid);
sb.append(name).append(" .zscelltxt{\n");
sb.append("width:").append(celltextwidth).append("px;\n");
sb.append("height:").append(cellheight).append("px;\n");
sb.append("}\n");
//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{\n");
sb.append("left:").append(lw).append("px;\n");
sb.append("height:").append(fzr>-1?toph-1:toph).append("px;\n");
//sb.append("line-height:").append(toph).append("px;\n");
sb.append("}\n");
sb.append(name).append(" .zstopi{\n");
sb.append("height:").append(toph).append("px;\n");
sb.append("}\n");
sb.append(name).append(" .zstophead{\n");
sb.append("height:").append(topheadh).append("px;\n");
sb.append("}\n");
sb.append(name).append(" .zscornertop{\n");
sb.append("left:").append(lw).append("px;\n");
sb.append("height:").append(cornertoph).append("px;\n");
sb.append("}\n");
//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{\n");
sb.append("padding:").append("0px "+cp+"px 0px "+cp+"px;\n");
sb.append("height:").append(topheadh).append("px;\n");
sb.append("width:").append(cellwidth).append("px;\n");
sb.append("line-height:").append(topheadh).append("px;\n");
sb.append("}\n");
//zcss.setRule(name+" .zstopcelltxt","width", celltextwidth +"px",true,sid);
sb.append(name).append(" .zstopcelltxt{\n");
sb.append("width:").append(celltextwidth).append("px;\n");
sb.append("}\n");
//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{\n");
sb.append("top:").append(th).append("px;\n");
sb.append("width:").append(fzc>-1?leftw-1:leftw).append("px;\n");
sb.append("}\n");
sb.append(name).append(" .zslefti{\n");
sb.append("width:").append(leftw).append("px;\n");
sb.append("}\n");
sb.append(name).append(" .zslefthead{\n");
sb.append("width:").append(leftheadw).append("px;\n");
sb.append("}\n");
sb.append(name).append(" .zsleftblock{\n");
sb.append("left:").append(leftblockleft).append("px;\n");
sb.append("}\n");
sb.append(name).append(" .zscornerleft{\n");
sb.append("top:").append(th).append("px;\n");
sb.append("width:").append(leftheadw).append("px;\n");
sb.append("}\n");
//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{\n");
sb.append("height:").append(rh-1).append("px;\n");
sb.append("line-height:").append(rh-1).append("px;\n");
sb.append("}\n");
//zcss.setRule(name+" .zscorner",["width","height"],[(lw-2)+"px",(th-2)+"px"],true,sid);
sb.append(name).append(" .zscorner{\n");
sb.append("width:").append(fzc>-1?leftw:leftw+1).append("px;\n");
sb.append("height:").append(fzr>-1?toph:toph+1).append("px;\n");
sb.append("}\n");
sb.append(name).append(" .zscorneri{\n");
sb.append("width:").append(lw-2).append("px;\n");
sb.append("height:").append(th-2).append("px;\n");
sb.append("}\n");
sb.append(name).append(" .zscornerblock{\n");
sb.append("left:").append(lw).append("px;\n");
sb.append("top:").append(th).append("px;\n");
sb.append("}\n");
//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+" .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{\n");
sb.append("height:").append(th).append("px;\n");
sb.append("}\n");
sb.append(name).append(" .zsfztop{\n");
sb.append("border-bottom-style:").append(fzr>-1?"solid":"none").append(";");
sb.append("}\n");
sb.append(name).append(" .zsfzcorner{\n");
sb.append("border-bottom-style:").append(fzr>-1?"solid":"none").append(";");
sb.append("}\n");
sb.append(name).append(" .zsfzleft{\n");
sb.append("border-right-style:").append(fzc>-1?"solid":"none").append(";");
sb.append("}\n");
sb.append(name).append(" .zsfzcorner{\n");
sb.append("border-right-style:").append(fzc>-1?"solid":"none").append(";");
sb.append("}\n");
//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("}\n");
}
int cs[][] = colHelper.getCostomizedSize();
for(int i=0;i<cs.length;i++){
int index = cs[i][0];
int width = cs[i][1];
int cid = cs[i][2];
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("{\n");
sb.append("display:none;\n");
sb.append("}\n");
}else{
sb.append(name).append(" .zsw").append(cid).append("{\n");
sb.append("width:").append(cellwidth).append("px;\n");
sb.append("}\n");
sb.append(name).append(" .zswi").append(cid).append("{\n");
sb.append("width:").append(celltextwidth).append("px;\n");
sb.append("}\n");
}
}
cs = rowHelper.getCostomizedSize();
for(int i=0;i<cs.length;i++){
int index = cs[i][0];
int height = cs[i][1];
int cid = cs[i][2];
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("}\n");
sb.append(name).append(" .zslh").append(cid).append("{\n");
sb.append("display:none;");
sb.append("}\n");
}else{
sb.append(name).append(" .zsh").append(cid).append("{\n");
sb.append("height:").append(height).append("px;");
sb.append("}\n");
sb.append(name).append(" .zshi").append(cid).append("{\n");
sb.append("height:").append(cellheight).append("px;");
sb.append("}\n");
int h2 = (height<1)?0:height-1;
sb.append(name).append(" .zslh").append(cid).append("{\n");
sb.append("height:").append(h2).append("px;");
sb.append("line-height:").append(h2).append("px;");
sb.append("}\n");
}
}
sb.append(".zs_header{}\n");//for indicating add new rule before this
//merge size;
List ranges = mmhelper.getRanges();
Iterator iter = ranges.iterator();
while(iter.hasNext()){
MergedRect block = (MergedRect)iter.next();
int left = block.getLeft();