+PlinnStylesCombo.prototype.onRender = function() {
+ var self = this;
+ this.editor.on('selectionChange', function(evt){self.checkSelection(evt);});
+};
+
+PlinnStylesCombo.prototype.checkSelection = function(evt) {
+ if (evt.data.selection.getRanges().length > 1) {
+ this.disable();
+ }
+ else {
+ this.enable();
+ }
+};
+
+PlinnStylesCombo.prototype.loadStyle = function(definition) {
+ this.styles.push(definition);
+ this.styles[definition.name] = definition;
+};
+
+PlinnStylesCombo.prototype.init = function() {
+ var i, style;
+ for (i=0 ; i < this.styles.length ; i++) {
+ style = this.styles[i];
+ this.add(style.name,
+ '<div class="' + style.className + '">' +
+ style.name +
+ '</div>',
+ style.name
+ );
+ }
+};
+
+PlinnStylesCombo.prototype.onClick = function(value) {
+ this.editor.focus();
+ this.editor.fire('saveSnapshot');
+ var style = this.styles[value]
+ var className = style.className;
+ var ranges = this.editor.getSelection().getRanges();
+ var element = this.editor.elementPath().lastElement;
+ if(ranges.length === 1) {
+ var start = ranges[0].startContainer;
+ var end = ranges[0].endContainer;
+ if(start.$ !== end.$) {
+ // selection is a fragment that need to be wrapped in container to apply style
+ element = new CKEDITOR.dom.element('div');
+ element.append(ranges[0].cloneContents());
+ this.editor.insertElement(element);
+ }
+ }
+ if (element.hasClass(className)) {
+ element.removeClass(className);
+ }
+ else {
+ element.addClass(className);
+ }
+ this.editor.fire('saveSnapshot');
+};