/*\r
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
\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
+ rtl = editor.lang.dir == 'rtl';\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
\r
return {\r
title : langCell.title,\r
- minWidth : CKEDITOR.env.ie && CKEDITOR.env.quirks ? 550 : 480,\r
- minHeight : CKEDITOR.env.ie ? ( CKEDITOR.env.quirks ? 180 : 150 ) : 140,\r
+ minWidth : CKEDITOR.env.ie && CKEDITOR.env.quirks? 450 : 410,\r
+ minHeight : CKEDITOR.env.ie && CKEDITOR.env.quirks? 230 : 200,\r
contents : [\r
{\r
id : 'info',\r
{\r
type : 'text',\r
id : 'width',\r
- label : langTable.width,\r
- widths : [ '71%', '29%' ],\r
- labelLayout : 'horizontal',\r
+ width: '100px',\r
+ label : langCommon.width,\r
validate : validate[ 'number' ]( langCell.invalidWidth ),\r
\r
// Extra labelling of width unit type.\r
{\r
type : 'select',\r
id : 'widthType',\r
- labelLayout : 'horizontal',\r
- widths : [ '0%', '100%' ],\r
label : editor.lang.table.widthUnit,\r
- labelStyle: 'display:none',\r
+ labelStyle: 'visibility:hidden',\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
{\r
type : 'text',\r
id : 'height',\r
- label : langTable.height,\r
+ label : langCommon.height,\r
+ width: '100px',\r
'default' : '',\r
- widths : [ '71%', '29%' ],\r
- labelLayout : 'horizontal',\r
validate : validate[ 'number' ]( langCell.invalidHeight ),\r
\r
// Extra labelling of height unit type.\r
{\r
id : 'htmlHeightType',\r
type : 'html',\r
- html : langTable.widthPx\r
+ html : '<br />'+ langTable.widthPx\r
}\r
]\r
},\r
- spacer(),\r
+ spacer,\r
{\r
type : 'select',\r
id : 'wordWrap',\r
- labelLayout : 'horizontal',\r
label : langCell.wordWrap,\r
- widths : [ '50%', '50%' ],\r
'default' : 'yes',\r
items :\r
[\r
element.removeAttribute( 'noWrap' );\r
}\r
},\r
- spacer(),\r
+ spacer,\r
{\r
type : 'select',\r
id : 'hAlign',\r
- labelLayout : 'horizontal',\r
label : langCell.hAlign,\r
- widths : [ '50%', '50%' ],\r
'default' : '',\r
items :\r
[\r
[ langCommon.notSet, '' ],\r
- [ langTable.alignLeft, 'left' ],\r
- [ langTable.alignCenter, 'center' ],\r
- [ langTable.alignRight, 'right' ]\r
+ [ langCommon.alignLeft, 'left' ],\r
+ [ langCommon.alignCenter, 'center' ],\r
+ [ langCommon.alignRight, 'right' ]\r
],\r
setup : function( element )\r
{\r
{\r
type : 'select',\r
id : 'vAlign',\r
- labelLayout : 'horizontal',\r
label : langCell.vAlign,\r
- widths : [ '50%', '50%' ],\r
'default' : '',\r
items :\r
[\r
[ langCommon.notSet, '' ],\r
- [ langCell.alignTop, 'top' ],\r
- [ langCell.alignMiddle, 'middle' ],\r
- [ langCell.alignBottom, 'bottom' ],\r
+ [ langCommon.alignTop, 'top' ],\r
+ [ langCommon.alignMiddle, 'middle' ],\r
+ [ langCommon.alignBottom, 'bottom' ],\r
[ langCell.alignBaseline, 'baseline' ]\r
],\r
setup : function( element )\r
}\r
]\r
},\r
- spacer(),\r
+ spacer,\r
{\r
type : 'vbox',\r
padding : 0,\r
type : 'select',\r
id : 'cellType',\r
label : langCell.cellType,\r
- labelLayout : 'horizontal',\r
- widths : [ '50%', '50%' ],\r
'default' : 'td',\r
items :\r
[\r
selectedCell.renameNode( this.getValue() );\r
}\r
},\r
- spacer(),\r
+ spacer,\r
{\r
type : 'text',\r
id : 'rowSpan',\r
label : langCell.rowSpan,\r
- labelLayout : 'horizontal',\r
- widths : [ '50%', '50%' ],\r
'default' : '',\r
validate : validate.integer( langCell.invalidRowSpan ),\r
setup : function( selectedCell )\r
type : 'text',\r
id : 'colSpan',\r
label : langCell.colSpan,\r
- labelLayout : 'horizontal',\r
- widths : [ '50%', '50%' ],\r
'default' : '',\r
validate : validate.integer( langCell.invalidColSpan ),\r
setup : function( element )\r
selectedCell.removeAttribute( 'colSpan' );\r
}\r
},\r
- spacer(),\r
+ spacer,\r
{\r
type : 'hbox',\r
padding : 0,\r
- widths : [ '80%', '20%' ],\r
+ widths : [ '60%', '40%' ],\r
children :\r
[\r
{\r
type : 'text',\r
id : 'bgColor',\r
label : langCell.bgColor,\r
- labelLayout : 'horizontal',\r
- widths : [ '70%', '30%' ],\r
'default' : '',\r
setup : function( element )\r
{\r
{\r
type : 'button',\r
id : 'bgColorChoose',\r
+ "class" : 'colorChooser',\r
label : langCell.chooseColor,\r
- style : 'margin-left: 10px',\r
+ onLoad : function()\r
+ {\r
+ // Stick the element to the bottom (#5587)\r
+ this.getElement().getParent().setStyle( 'vertical-align', 'bottom' );\r
+ },\r
onClick : function()\r
{\r
var self = this;\r
}\r
]\r
},\r
- spacer(),\r
+ spacer,\r
{\r
type : 'hbox',\r
padding : 0,\r
- widths : [ '80%', '20%' ],\r
+ widths : [ '60%', '40%' ],\r
children :\r
[\r
{\r
type : 'text',\r
id : 'borderColor',\r
label : langCell.borderColor,\r
- labelLayout : 'horizontal',\r
- widths : [ '70%', '30%' ],\r
'default' : '',\r
setup : function( element )\r
{\r
{\r
type : 'button',\r
id : 'borderColorChoose',\r
+ "class" : 'colorChooser',\r
label : langCell.chooseColor,\r
- style : 'margin-left: 10px',\r
+ style : ( rtl ? 'margin-right' : 'margin-left' ) + ': 10px',\r
+ onLoad : function()\r
+ {\r
+ // Stick the element to the bottom (#5587)\r
+ this.getElement().getParent().setStyle( 'vertical-align', 'bottom' );\r
+ },\r
onClick : function()\r
{\r
var self = this;\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