X-Git-Url: https://jasonwoof.com/gitweb/?p=ckeditor.git;a=blobdiff_plain;f=_source%2Fplugins%2Ftable%2Fdialogs%2Ftable.js;h=55a45e1c15431cfb73bb5fe2f1bbed30648f0922;hp=ddd47f5f4256b25049a1c304fc86b9d9d6fb8317;hb=e371ddf8abcb89013e20e6d0dd746adec344d0e5;hpb=055b6b0792ce7dc53d47af606b367c04b927c2ab diff --git a/_source/plugins/table/dialogs/table.js b/_source/plugins/table/dialogs/table.js index ddd47f5..55a45e1 100644 --- a/_source/plugins/table/dialogs/table.js +++ b/_source/plugins/table/dialogs/table.js @@ -18,12 +18,62 @@ For licensing, see LICENSE.html or http://ckeditor.com/license function tableDialog( editor, command ) { - var makeElement = function( name ){ return new CKEDITOR.dom.element( name, editor.document ); }; + var makeElement = function( name ) + { + return new CKEDITOR.dom.element( name, editor.document ); + }; + + var dialogadvtab = editor.plugins.dialogadvtab; return { title : editor.lang.table.title, minWidth : 310, minHeight : CKEDITOR.env.ie ? 310 : 280, + + onLoad : function() + { + var dialog = this, + isUpdating; + + var styles = dialog.getContentElement( 'advanced', 'advStyles' ); + + if ( styles ) + { + styles.on( 'change', function( evt ) + { + if ( isUpdating ) + return; + + // Flag to avoid recursion. + isUpdating = 1; + + // Synchronize width value. + var width = this.getStyle( 'width', '' ), + txtWidth = dialog.getContentElement( 'info', 'txtWidth' ), + cmbWidthType = dialog.getContentElement( 'info', 'cmbWidthType' ), + isPx = 1; + + if ( width ) + { + isPx = ( width.length < 3 || width.substr( width.length - 1 ) != '%' ); + width = parseInt( width, 10 ); + } + + txtWidth && txtWidth.setValue( width ); + cmbWidthType && cmbWidthType.setValue( isPx ? 'pixels' : 'percents' ); + + // Synchronize height value. + var height = this.getStyle( 'height', '' ), + txtHeight = dialog.getContentElement( 'info', 'txtHeight' ); + + height && ( height = parseInt( height, 10 ) ); + txtHeight && txtHeight.setValue( height ); + + isUpdating = 0; + }); + } + }, + onShow : function() { // Detect if there's a selected table. @@ -33,7 +83,9 @@ For licensing, see LICENSE.html or http://ckeditor.com/license var rowsInput = this.getContentElement( 'info', 'txtRows' ), colsInput = this.getContentElement( 'info', 'txtCols' ), - widthInput = this.getContentElement( 'info', 'txtWidth' ); + widthInput = this.getContentElement( 'info', 'txtWidth' ), + heightInput = this.getContentElement( 'info', 'txtHeight' ); + if ( command == 'tableProperties' ) { if ( ( selectedTable = editor.getSelection().getSelectedElement() ) ) @@ -70,6 +122,11 @@ For licensing, see LICENSE.html or http://ckeditor.com/license colsInput && colsInput.enable(); rowsInput && rowsInput.select(); } + + // Call the onChange method for the widht and height fields so + // they get reflected into the Advanced tab. + widthInput && widthInput.onChange(); + heightInput && heightInput.onChange(); }, onOk : function() { @@ -380,7 +437,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license id : 'txtWidth', style : 'width:5em', label : editor.lang.table.width, - 'default' : 200, + 'default' : 500, validate : CKEDITOR.dialog.validate['number']( editor.lang.table.invalidWidth ), // Extra labelling of width unit type. @@ -394,6 +451,21 @@ For licensing, see LICENSE.html or http://ckeditor.com/license inputElement.setAttribute( 'aria-labelledby', [ ariaLabelledByAttr, labelElement.$.id ].join( ' ' ) ); }, + onChange : function() + { + var styles = this.getDialog().getContentElement( 'advanced', 'advStyles' ); + + if ( styles ) + { + var value = this.getValue(); + + if ( value ) + value += this.getDialog().getContentElement( 'info', 'cmbWidthType' ).getValue() == 'percents' ? '%' : 'px'; + + styles.updateStyle( 'width', value ); + } + }, + setup : function( selectedTable ) { var widthMatch = widthPattern.exec( selectedTable.$.style.width ); @@ -421,6 +493,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license if ( widthMatch ) this.setValue( widthMatch[2] == 'px' ? 'pixels' : 'percents' ); }, + onChange : function() + { + this.getDialog().getContentElement( 'info', 'txtWidth' ).onChange(); + }, commit : commitValue } ] @@ -449,6 +525,17 @@ For licensing, see LICENSE.html or http://ckeditor.com/license inputElement.setAttribute( 'aria-labelledby', [ ariaLabelledByAttr, labelElement.$.id ].join( ' ' ) ); }, + onChange : function() + { + var styles = this.getDialog().getContentElement( 'advanced', 'advStyles' ); + + if ( styles ) + { + var value = this.getValue(); + styles.updateStyle( 'height', value && ( value + 'px' ) ); + } + }, + setup : function( selectedTable ) { var heightMatch = heightPattern.exec( selectedTable.$.style.height ); @@ -582,7 +669,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license ] } ] - } + }, + dialogadvtab && dialogadvtab.createAdvancedTab( editor ) ] }; }