\r
CKEDITOR.dialog.add( 'cellProperties', function( editor )\r
{\r
- var langTable = editor.lang.table;\r
- var langCell = langTable.cell;\r
- var langCommon = editor.lang.common;\r
- var validate = CKEDITOR.dialog.validate;\r
- var widthPattern = /^(\d+(?:\.\d+)?)(px|%)$/,\r
- heightPattern = /^(\d+(?:\.\d+)?)px$/;\r
- var bind = CKEDITOR.tools.bind;\r
-\r
- function spacer()\r
- {\r
- return { type : 'html', html : ' ' };\r
- }\r
+ var langTable = editor.lang.table,\r
+ langCell = langTable.cell,\r
+ langCommon = editor.lang.common,\r
+ validate = CKEDITOR.dialog.validate,\r
+ widthPattern = /^(\d+(?:\.\d+)?)(px|%)$/,\r
+ heightPattern = /^(\d+(?:\.\d+)?)px$/,\r
+ bind = CKEDITOR.tools.bind,\r
+ spacer = { type : 'html', html : ' ' };\r
\r
/**\r
*\r
var onOk = function()\r
{\r
releaseHandlers( this );\r
- callback( this );\r
+ callback( this, this._.parentDialog );\r
+ this._.parentDialog.changeFocus( true );\r
};\r
var onCancel = function()\r
{\r
releaseHandlers( this );\r
- };\r
- var bindToDialog = function( dialog )\r
- {\r
- dialog.on( 'ok', onOk );\r
- dialog.on( 'cancel', onCancel );\r
+ this._.parentDialog.changeFocus();\r
};\r
var releaseHandlers = function( dialog )\r
{\r
dialog.removeListener( 'ok', onOk );\r
dialog.removeListener( 'cancel', onCancel );\r
};\r
+ var bindToDialog = function( dialog )\r
+ {\r
+ dialog.on( 'ok', onOk );\r
+ dialog.on( 'cancel', onCancel );\r
+ };\r
editor.execCommand( dialogName );\r
if ( editor._.storedDialogs.colordialog )\r
bindToDialog( editor._.storedDialogs.colordialog );\r
widths : [ '71%', '29%' ],\r
labelLayout : 'horizontal',\r
validate : validate[ 'number' ]( langCell.invalidWidth ),\r
+\r
+ // Extra labelling of width unit type.\r
+ onLoad : function()\r
+ {\r
+ var widthType = this.getDialog().getContentElement( 'info', 'widthType' ),\r
+ labelElement = widthType.getElement(),\r
+ inputElement = this.getInputElement(),\r
+ ariaLabelledByAttr = inputElement.getAttribute( 'aria-labelledby' );\r
+\r
+ inputElement.setAttribute( 'aria-labelledby', [ ariaLabelledByAttr, labelElement.$.id ].join( ' ' ) );\r
+ },\r
+\r
setup : function( element )\r
{\r
var widthAttr = parseInt( element.getAttribute( 'width' ), 10 ),\r
id : 'widthType',\r
labelLayout : 'horizontal',\r
widths : [ '0%', '100%' ],\r
- label : '',\r
+ label : editor.lang.table.widthUnit,\r
+ labelStyle: 'display:none',\r
'default' : 'px',\r
items :\r
[\r
],\r
setup : function( selectedCell )\r
{\r
- var widthMatch = widthPattern.exec( selectedCell.$.style.width );\r
+ var widthMatch = widthPattern.exec( selectedCell.getStyle( 'width' ) || selectedCell.getAttribute( 'width' ) );\r
if ( widthMatch )\r
this.setValue( widthMatch[2] );\r
}\r
widths : [ '71%', '29%' ],\r
labelLayout : 'horizontal',\r
validate : validate[ 'number' ]( langCell.invalidHeight ),\r
+\r
+ // Extra labelling of height unit type.\r
+ onLoad : function()\r
+ {\r
+ var heightType = this.getDialog().getContentElement( 'info', 'htmlHeightType' ),\r
+ labelElement = heightType.getElement(),\r
+ inputElement = this.getInputElement(),\r
+ ariaLabelledByAttr = inputElement.getAttribute( 'aria-labelledby' );\r
+\r
+ inputElement.setAttribute( 'aria-labelledby', [ ariaLabelledByAttr, labelElement.$.id ].join( ' ' ) );\r
+ },\r
+\r
setup : function( element )\r
{\r
var heightAttr = parseInt( element.getAttribute( 'height' ), 10 ),\r
}\r
},\r
{\r
+ id : 'htmlHeightType',\r
type : 'html',\r
html : langTable.widthPx\r
}\r
]\r
},\r
- spacer(),\r
+ spacer,\r
{\r
type : 'select',\r
id : 'wordWrap',\r
element.removeAttribute( 'noWrap' );\r
}\r
},\r
- spacer(),\r
+ spacer,\r
{\r
type : 'select',\r
id : 'hAlign',\r
}\r
]\r
},\r
- spacer(),\r
+ spacer,\r
{\r
type : 'vbox',\r
padding : 0,\r
selectedCell.renameNode( this.getValue() );\r
}\r
},\r
- spacer(),\r
+ spacer,\r
{\r
type : 'text',\r
id : 'rowSpan',\r
selectedCell.removeAttribute( 'colSpan' );\r
}\r
},\r
- spacer(),\r
+ spacer,\r
{\r
type : 'hbox',\r
padding : 0,\r
}\r
]\r
},\r
- spacer(),\r
+ spacer,\r
{\r
type : 'hbox',\r
padding : 0,\r
},\r
onOk : function()\r
{\r
+ var selection = this._.editor.getSelection(),\r
+ bookmarks = selection.createBookmarks();\r
+\r
var cells = this.cells;\r
for ( var i = 0 ; i < cells.length ; i++ )\r
this.commitContent( cells[ i ] );\r
+\r
+ selection.selectBookmarks( bookmarks );\r
+\r
+ // Force selectionChange event because of alignment style.\r
+ var firstElement = selection.getStartElement();\r
+ var currentPath = new CKEDITOR.dom.elementPath( firstElement );\r
+\r
+ this._.editor._.selectionPreviousPath = currentPath;\r
+ this._.editor.fire( 'selectionChange', { selection : selection, path : currentPath, element : firstElement } );\r
}\r
};\r
} );\r