<NME> Codeview.js
<BEF> define([
  'materialnote/base/core/agent',
  'materialnote/base/core/dom'
], function (agent, dom) {

  var CodeMirror;
  if (agent.hasCodeMirror) {
    if (agent.isSupportAmd) {
      require(['codemirror'], function (cm) {
        CodeMirror = cm;
      });
    } else {
      CodeMirror = window.CodeMirror;
    }
  }

  /**
   * @class Codeview
   */
  var Codeview = function (context) {
    var $editor = context.layoutInfo.editor;
    var $editable = context.layoutInfo.editable;
    var $codable = context.layoutInfo.codable;
    var options = context.options;

    this.sync = function () {
      var isCodeview = this.isActivated();
      if (isCodeview && agent.hasCodeMirror) {
        $codable.data('cmEditor').save();
      }
    };

    /**
     * @return {Boolean}
     */
    this.isActivated = function () {
      return $editor.hasClass('codeview');
    };

    /**
     * toggle codeview
     */
    this.toggle = function () {
      if (this.isActivated()) {
        this.deactivate();
      } else {
        this.activate();
      }
      context.triggerEvent('codeview.toggled');
    };

    /**
     * activate code view
     */
    this.activate = function () {
      $codable.val(dom.html($editable, options.prettifyHtml));
      $codable.height($editable.height());

      context.invoke('toolbar.updateCodeview', true);
      $editor.addClass('codeview');
      $codable.focus();

      // activate CodeMirror as codable
      if (agent.hasCodeMirror) {
        var cmEditor = CodeMirror.fromTextArea($codable[0], options.codemirror);

        // CodeMirror TernServer
        if (options.codemirror.tern) {
          var server = new CodeMirror.TernServer(options.codemirror.tern);
          cmEditor.ternServer = server;
          cmEditor.on('cursorActivity', function (cm) {
            server.updateArgHints(cm);
          });
        }

        // CodeMirror hasn't Padding.
        cmEditor.setSize(null, $editable.outerHeight());
        $codable.data('cmEditor', cmEditor);
      }
    };

    /**
     * deactivate code view
     */
    this.deactivate = function () {
      // deactivate CodeMirror as codable
      if (agent.hasCodeMirror) {
        var cmEditor = $codable.data('cmEditor');
        $codable.val(cmEditor.getValue());
        cmEditor.toTextArea();
      }

      var value = dom.value($codable, options.prettifyHtml) || dom.emptyPara;
      var isChange = $editable.html() !== value;

      $editable.html(value);
      $editable.height(options.height ? $codable.height() : 'auto');
      $editor.removeClass('codeview');

      if (isChange) {
        context.triggerEvent('change', $editable.html(), $editable);
      }

      $editable.focus();

      context.invoke('toolbar.updateCodeview', false);
    };

    this.destroy = function () {
      if (this.isActivated()) {
        this.deactivate();
      }
    };
  };

  return Codeview;
});

<MSG> fixed btn disabling on codeview

<DFF> @@ -1,117 +1,117 @@
 define([
-  'materialnote/base/core/agent',
-  'materialnote/base/core/dom'
+    'materialnote/base/core/agent',
+    'materialnote/base/core/dom'
 ], function (agent, dom) {
 
-  var CodeMirror;
-  if (agent.hasCodeMirror) {
-    if (agent.isSupportAmd) {
-      require(['codemirror'], function (cm) {
-        CodeMirror = cm;
-      });
-    } else {
-      CodeMirror = window.CodeMirror;
-    }
-  }
-
-  /**
-   * @class Codeview
-   */
-  var Codeview = function (context) {
-    var $editor = context.layoutInfo.editor;
-    var $editable = context.layoutInfo.editable;
-    var $codable = context.layoutInfo.codable;
-    var options = context.options;
-
-    this.sync = function () {
-      var isCodeview = this.isActivated();
-      if (isCodeview && agent.hasCodeMirror) {
-        $codable.data('cmEditor').save();
-      }
-    };
-
-    /**
-     * @return {Boolean}
-     */
-    this.isActivated = function () {
-      return $editor.hasClass('codeview');
-    };
-
-    /**
-     * toggle codeview
-     */
-    this.toggle = function () {
-      if (this.isActivated()) {
-        this.deactivate();
-      } else {
-        this.activate();
-      }
-      context.triggerEvent('codeview.toggled');
-    };
-
-    /**
-     * activate code view
-     */
-    this.activate = function () {
-      $codable.val(dom.html($editable, options.prettifyHtml));
-      $codable.height($editable.height());
-
-      context.invoke('toolbar.updateCodeview', true);
-      $editor.addClass('codeview');
-      $codable.focus();
-
-      // activate CodeMirror as codable
-      if (agent.hasCodeMirror) {
-        var cmEditor = CodeMirror.fromTextArea($codable[0], options.codemirror);
-
-        // CodeMirror TernServer
-        if (options.codemirror.tern) {
-          var server = new CodeMirror.TernServer(options.codemirror.tern);
-          cmEditor.ternServer = server;
-          cmEditor.on('cursorActivity', function (cm) {
-            server.updateArgHints(cm);
-          });
+    var CodeMirror;
+    if (agent.hasCodeMirror) {
+        if (agent.isSupportAmd) {
+            require(['codemirror'], function (cm) {
+                CodeMirror = cm;
+            });
+        } else {
+            CodeMirror = window.CodeMirror;
         }
-
-        // CodeMirror hasn't Padding.
-        cmEditor.setSize(null, $editable.outerHeight());
-        $codable.data('cmEditor', cmEditor);
-      }
-    };
+    }
 
     /**
-     * deactivate code view
-     */
-    this.deactivate = function () {
-      // deactivate CodeMirror as codable
-      if (agent.hasCodeMirror) {
-        var cmEditor = $codable.data('cmEditor');
-        $codable.val(cmEditor.getValue());
-        cmEditor.toTextArea();
-      }
-
-      var value = dom.value($codable, options.prettifyHtml) || dom.emptyPara;
-      var isChange = $editable.html() !== value;
-
-      $editable.html(value);
-      $editable.height(options.height ? $codable.height() : 'auto');
-      $editor.removeClass('codeview');
-
-      if (isChange) {
-        context.triggerEvent('change', $editable.html(), $editable);
-      }
-
-      $editable.focus();
-
-      context.invoke('toolbar.updateCodeview', false);
-    };
-
-    this.destroy = function () {
-      if (this.isActivated()) {
-        this.deactivate();
-      }
+    * @class Codeview
+    */
+    var Codeview = function (context) {
+        var $editor = context.layoutInfo.editor;
+        var $editable = context.layoutInfo.editable;
+        var $codable = context.layoutInfo.codable;
+        var options = context.options;
+
+        this.sync = function () {
+            var isCodeview = this.isActivated();
+            if (isCodeview && agent.hasCodeMirror) {
+                $codable.data('cmEditor').save();
+            }
+        };
+
+        /**
+        * @return {Boolean}
+        */
+        this.isActivated = function () {
+            return $editor.hasClass('codeview');
+        };
+
+        /**
+        * toggle codeview
+        */
+        this.toggle = function () {
+            if (this.isActivated()) {
+                this.deactivate();
+            } else {
+                this.activate();
+            }
+            context.triggerEvent('codeview.toggled');
+        };
+
+        /**
+        * activate code view
+        */
+        this.activate = function () {
+            $codable.val(dom.html($editable, options.prettifyHtml));
+            $codable.height($editable.height());
+
+            context.invoke('toolbar.updateCodeview', true);
+            $editor.addClass('codeview');
+            $codable.focus();
+
+            // activate CodeMirror as codable
+            if (agent.hasCodeMirror) {
+                var cmEditor = CodeMirror.fromTextArea($codable[0], options.codemirror);
+
+                // CodeMirror TernServer
+                if (options.codemirror.tern) {
+                    var server = new CodeMirror.TernServer(options.codemirror.tern);
+                    cmEditor.ternServer = server;
+                    cmEditor.on('cursorActivity', function (cm) {
+                        server.updateArgHints(cm);
+                    });
+                }
+
+                // CodeMirror hasn't Padding.
+                cmEditor.setSize(null, $editable.outerHeight());
+                $codable.data('cmEditor', cmEditor);
+            }
+        };
+
+        /**
+        * deactivate code view
+        */
+        this.deactivate = function () {
+            // deactivate CodeMirror as codable
+            if (agent.hasCodeMirror) {
+                var cmEditor = $codable.data('cmEditor');
+                $codable.val(cmEditor.getValue());
+                cmEditor.toTextArea();
+            }
+
+            var value = dom.value($codable, options.prettifyHtml) || dom.emptyPara;
+            var isChange = $editable.html() !== value;
+
+            $editable.html(value);
+            $editable.height(options.height ? $codable.height() : 'auto');
+            $editor.removeClass('codeview');
+
+            if (isChange) {
+                context.triggerEvent('change', $editable.html(), $editable);
+            }
+
+            $editable.focus();
+
+            context.invoke('toolbar.updateCodeview', false);
+        };
+
+        this.destroy = function () {
+            if (this.isActivated()) {
+                this.deactivate();
+            }
+        };
     };
-  };
 
-  return Codeview;
+    return Codeview;
 });

fixed btn disabling on codeview