Changeset 460
- Timestamp:
- 07/18/07 01:49:26 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
FCKeditor/branches/developers/martinkou/editor/plugins/dragresizetable/fckplugin.js
r459 r460 127 127 evt = window.event ; 128 128 FCKDragTableHandler._MouseMoveMode = 0 ; 129 if ( FCKBrowserInfo.IsIE ) 130 FCKDragTableHandler._ResizeBar.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 10 ; 131 else 132 FCKDragTableHandler._ResizeBar.style.opacity = 0.1 ; 129 FCKDragTableHandler._HideResizeBar() ; 130 131 if ( ! FCKDragTableHandler._LeftCell ) 132 return ; 133 134 // First, get the mouse coordiantes relative to the outer window, and calculate the delta value. 135 var mouse = { "x" : evt.clientX, "y" : evt.clientY } ; 136 var mouseNode = evt.srcElement || evt.originalTarget ; 137 var mouseDocument = mouseNode.ownerDocument ; 138 if ( mouseDocument == FCK.EditorDocument ) 139 { 140 var offset = FCKDragTableHandler._GetDocumentPosition( window, FCK.EditingArea.IFrame ) ; 141 mouse.x += offset.x ; 142 mouse.y += offset.y ; 143 } 144 var deltaX = mouse.x - FCKDragTableHandler._OriginalX ; 145 146 // Then, build an array of current column width values. 147 // This algorithm can be very slow if the cells have insane colSpan values. (e.g. colSpan=1000). 148 var table = FCKTools.GetElementAscensor( FCKDragTableHandler._LeftCell, "table" ) ; 149 var colArray = [] ; 150 for ( var r = 0 ; r < table.rows.length ; r++ ) 151 { 152 var colIndex = 0 ; 153 var row = table.rows.item( r ) ; 154 for ( var c = 0 ; c < row.cells.length ; c++ ) 155 { 156 var cell = row.cells.item( c ) ; 157 var width = FCKDragTableHandler._GetCellWidth( table, cell ) ; 158 var colSpan = parseInt( cell.colSpan ) ; 159 if ( colSpan != colSpan ) 160 colSpan = 1 ; 161 if ( colArray.length < colIndex + colSpan ) 162 { 163 for ( var i = 0 ; i < colSpan ; i++ ) 164 colArray.push( { "width" : width / colSpan, "colSpan" : colSpan } ) ; 165 } 166 else 167 { 168 for ( var i = colIndex ; i < colIndex + colSpan ; i++ ) 169 { 170 var guessItem = colArray[i] ; 171 if ( guessItem.colSpan > colSpan ) 172 { 173 guessItem.width = width / colSpan ; 174 guessItem.colSpan = colSpan ; 175 } 176 } 177 } 178 colIndex += colSpan ; 179 } 180 } 181 182 // Find out the equivalent column index of the two cells selected for resizing. 183 var row = FCKTools.GetElementAscensor( FCKDragTableHandler._LeftCell, "tr" ) ; 184 var colIndex = 0 ; 185 for ( var i = 0 ; i <= FCKDragTableHandler._LeftCell.cellIndex ; i++ ) 186 { 187 var colSpan = parseInt( row.cells.item( i ).colSpan ) ; 188 if ( colSpan != colSpan ) 189 colSpan = 1 ; 190 colIndex += colSpan ; 191 } 192 193 // Note that colIndex must be at least 1 here, so it's safe to subtract 1 from it. 194 colIndex-- ; 195 196 // Modify the widths in the colArray according to the mouse coordinate delta value. 197 colArray[colIndex].width += deltaX ; 198 colArray[colIndex + 1].width -= deltaX ; 199 200 // Clear all cell widths, delete all <col> elements from the table. 201 for ( var r = 0 ; r < table.rows.length ; r++ ) 202 { 203 var row = table.rows.item( r ) ; 204 for ( var c = 0 ; c < row.cells.length ; c++ ) 205 { 206 var cell = row.cells.item( c ) ; 207 cell.width = "" ; 208 cell.style.width = "" ; 209 } 210 } 211 var colElements = table.getElementsByTagName( "col" ) ; 212 for ( var i = colElements.length - 1 ; i >= 0 ; i-- ) 213 colElements[i].parentNode.removeChild( colElements[i] ) ; 214 215 // Find the place for adding new <col> elements. 216 colParent = table ; 217 218 // Generate <col> elements. 219 for ( var i = colArray.length - 1 ; i >= 0 ; i-- ) 220 { 221 var col = FCK.EditorDocument.createElement( "col" ) ; 222 col.width = colArray[i].width ; 223 colParent.insertBefore( col, colParent.childNodes[0] ) ; 224 } 133 225 }, 134 226 "_ResizeBarMouseMoveListener" : function( evt ) … … 317 409 318 410 var paddingBar = FCKDragTableHandler._ResizeBar ; 411 if ( FCKBrowserInfo.IsIE ) 412 paddingBar.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 10 ; 413 else 414 paddingBar.style.opacity = 0.1 ; 319 415 var offset = FCKDragTableHandler._GetDocumentPosition( window, FCK.EditingArea.IFrame ) ; 320 paddingBar.style.top = ( offset.y + FCKDragTableHandler._Get DocumentPosition( w, table ).y ) + "px" ;416 paddingBar.style.top = ( offset.y + FCKDragTableHandler._GetWindowPosition( w, table ).y ) + "px" ; 321 417 paddingBar.style.height = table.offsetHeight + "px" ; 322 418 var bw = parseInt( table.border ) ; … … 334 430 var visibleBar = document.createElement( "div" ) ; 335 431 visibleBar.style.position = "absolute" ; 336 visibleBar.style.backgroundColor = " blue" ;432 visibleBar.style.backgroundColor = "blue" ; 337 433 visibleBar.style.width = barWidth + "px" ; 338 434 visibleBar.style.height = table.offsetHeight + "px" ;
Note: See TracChangeset
for help on using the changeset viewer.
