/*\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
\r
function onSelectionChange( evt )\r
{\r
+ if ( evt.editor.readOnly )\r
+ return;\r
+\r
var command = evt.editor.getCommand( this.name );\r
command.state = getState.call( this, evt.editor, evt.data.path );\r
command.fire( 'state' );\r
var editor = e.editor;\r
\r
var range = new CKEDITOR.dom.range( editor.document );\r
- range.setStartBefore( e.data );\r
- range.setEndAfter( e.data );\r
+ range.setStartBefore( e.data.node );\r
+ range.setEndAfter( e.data.node );\r
\r
var walker = new CKEDITOR.dom.walker( range ),\r
node;\r
if ( node.type == CKEDITOR.NODE_ELEMENT )\r
{\r
// A child with the defined dir is to be ignored.\r
- if ( !node.equals( e.data ) && node.getDirection() )\r
+ if ( !node.equals( e.data.node ) && node.getDirection() )\r
{\r
range.setStartAfter( node );\r
walker = new CKEDITOR.dom.walker( range );\r
}\r
\r
// Switch the alignment.\r
+ var classes = editor.config.justifyClasses;\r
+ if ( classes )\r
+ {\r
+ // The left align class.\r
+ if ( node.hasClass( classes[ 0 ] ) )\r
+ {\r
+ node.removeClass( classes[ 0 ] );\r
+ node.addClass( classes[ 2 ] );\r
+ }\r
+ // The right align class.\r
+ else if ( node.hasClass( classes[ 2 ] ) )\r
+ {\r
+ node.removeClass( classes[ 2 ] );\r
+ node.addClass( classes[ 0 ] );\r
+ }\r
+ }\r
+\r
+ // Always switch CSS margins.\r
var style = 'text-align';\r
var align = node.getStyle( style );\r
\r
iterator = ranges[ i ].createIterator();\r
iterator.enlargeBr = enterMode != CKEDITOR.ENTER_BR;\r
\r
- while ( ( block = iterator.getNextParagraph() ) )\r
+ while ( ( block = iterator.getNextParagraph( enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ) ) )\r
{\r
block.removeAttribute( 'align' );\r
block.removeStyle( 'text-align' );\r
requires : [ 'domiterator' ]\r
});\r
})();\r
+\r
+ /**\r
+ * List of classes to use for aligning the contents. If it's null, no classes will be used\r
+ * and instead the corresponding CSS values will be used. The array should contain 4 members, in the following order: left, center, right, justify.\r
+ * @name CKEDITOR.config.justifyClasses\r
+ * @type Array\r
+ * @default null\r
+ * @example\r
+ * // Use the classes 'AlignLeft', 'AlignCenter', 'AlignRight', 'AlignJustify'\r
+ * config.justifyClasses = [ 'AlignLeft', 'AlignCenter', 'AlignRight', 'AlignJustify' ];\r
+ */\r