You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by an...@apache.org on 2016/02/25 09:05:39 UTC

ignite git commit: IGNITE-2711 Fixed insert in editor.

Repository: ignite
Updated Branches:
  refs/heads/ignite-843-rc2 23b94aa02 -> f189e84b4


IGNITE-2711 Fixed insert in editor.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f189e84b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f189e84b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f189e84b

Branch: refs/heads/ignite-843-rc2
Commit: f189e84b46f406907d6f6ecdaa4e0e00b2763f48
Parents: 23b94aa
Author: Andrey <an...@gridgain.com>
Authored: Thu Feb 25 14:48:33 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Feb 25 14:48:33 2016 +0700

----------------------------------------------------------------------
 .../app/directives/bs-affix-update.directive.js |  34 +++
 .../bs-affix-update.directive.js                |  34 ---
 .../ui-ace-docker/ui-ace-docker.directive.js    |  12 +-
 .../directives/ui-ace-docker/ui-ace-docker.jade |   2 +-
 .../ui-ace-java/ui-ace-java.directive.js        |  12 +-
 .../app/directives/ui-ace-java/ui-ace-java.jade |   2 +-
 .../ui-ace-pojos/ui-ace-pojos.directive.js      |  12 +-
 .../directives/ui-ace-pojos/ui-ace-pojos.jade   |   2 +-
 .../ui-ace-pom/ui-ace-pom.directive.js          |  12 +-
 .../app/directives/ui-ace-pom/ui-ace-pom.jade   |   2 +-
 .../js/app/directives/ui-ace-tabs.directive.js  |  25 ++
 .../ui-ace-xml/ui-ace-xml.directive.js          |  12 +-
 .../app/directives/ui-ace-xml/ui-ace-xml.jade   |   2 +-
 .../app/directives/ui-ace/ui-ace.directive.js   |  25 --
 .../control-center-web/src/main/js/app/index.js |   9 +-
 .../src/main/js/app/modules/ace.module.js       | 266 +++++++++++++++++++
 .../states/configuration/clusters/atomic.jade   |   2 +-
 .../states/configuration/clusters/binary.jade   |   2 +-
 .../configuration/clusters/communication.jade   |   2 +-
 .../configuration/clusters/connector.jade       |   2 +-
 .../configuration/clusters/deployment.jade      |   2 +-
 .../configuration/clusters/discovery.jade       |   2 +-
 .../states/configuration/clusters/events.jade   |   2 +-
 .../states/configuration/clusters/general.jade  |   2 +-
 .../states/configuration/clusters/igfs.jade     |   2 +-
 .../configuration/clusters/marshaller.jade      |   2 +-
 .../states/configuration/clusters/metrics.jade  |   2 +-
 .../clusters/preview-panel.directive.js         |  12 +-
 .../states/configuration/clusters/ssl.jade      |   2 +-
 .../states/configuration/clusters/swap.jade     |   2 +-
 .../states/configuration/clusters/thread.jade   |   2 +-
 .../states/configuration/clusters/time.jade     |   2 +-
 .../configuration/clusters/transactions.jade    |   4 +-
 .../summary/summary-tabs.directive.js           |  10 +-
 .../control-center-web/src/main/js/config.js    |  12 +-
 .../src/main/js/controllers/common-module.js    |   2 +-
 .../src/main/js/controllers/sql-controller.js   |   6 -
 .../control-center-web/src/main/js/package.json |   6 -
 .../main/js/views/configuration/summary.jade    |   4 +-
 .../src/main/js/views/sql/sql.jade              |   2 +-
 40 files changed, 403 insertions(+), 148 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/bs-affix-update.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/bs-affix-update.directive.js b/modules/control-center-web/src/main/js/app/directives/bs-affix-update.directive.js
new file mode 100644
index 0000000..dbf78e5
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/directives/bs-affix-update.directive.js
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, aither express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import angular from 'angular';
+
+export default ['igniteBsAffixUpdate', ['$window', '$timeout', ($window, $timeout) => {
+    let update = null;
+
+    const link = ({$last}) => {
+        if ($last) {
+            update && $timeout.cancel(update);
+            update = $timeout(() => angular.element($window).triggerHandler('resize'), 1000);
+        }
+    };
+
+    return {
+        restrict: 'A',
+        link
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/bs-affix-update/bs-affix-update.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/bs-affix-update/bs-affix-update.directive.js b/modules/control-center-web/src/main/js/app/directives/bs-affix-update/bs-affix-update.directive.js
deleted file mode 100644
index dbf78e5..0000000
--- a/modules/control-center-web/src/main/js/app/directives/bs-affix-update/bs-affix-update.directive.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, aither express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import angular from 'angular';
-
-export default ['igniteBsAffixUpdate', ['$window', '$timeout', ($window, $timeout) => {
-    let update = null;
-
-    const link = ({$last}) => {
-        if ($last) {
-            update && $timeout.cancel(update);
-            update = $timeout(() => angular.element($window).triggerHandler('resize'), 1000);
-        }
-    };
-
-    return {
-        restrict: 'A',
-        link
-    };
-}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.directive.js
index 2698e14..47a52df 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.directive.js
@@ -19,12 +19,12 @@ import template from './ui-ace-docker.jade!';
 import controller from './ui-ace-docker.controller';
 
 export default ['igniteUiAceDocker', [() => {
-    const link = ($scope, $el, $attrs, [igniteUiAce]) => {
-        if (igniteUiAce.onLoad)
-            $scope.onLoad = igniteUiAce.onLoad;
+    const link = ($scope, $el, $attrs, [igniteUiAceTabs]) => {
+        if (igniteUiAceTabs.onLoad)
+            $scope.onLoad = igniteUiAceTabs.onLoad;
 
-        if (igniteUiAce.onChange)
-            $scope.onChange = igniteUiAce.onChange;
+        if (igniteUiAceTabs.onChange)
+            $scope.onChange = igniteUiAceTabs.onChange;
     };
 
     return {
@@ -41,6 +41,6 @@ export default ['igniteUiAceDocker', [() => {
         template,
         controller,
         controllerAs: 'ctrl',
-        require: ['?^igniteUiAce']
+        require: ['?^igniteUiAceTabs']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.jade b/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.jade
index 88ca37d..f634aed 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.jade
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-docker/ui-ace-docker.jade
@@ -28,4 +28,4 @@ div
             | . For more information about using Ignite with Docker please read&nbsp;
             +hard-link('http://apacheignite.readme.io/docs/docker-deployment', 'documentation')
             |.
-    div(ng-if='ctrl.data' ui-ace='{onLoad: onLoad, mode: "dockerfile"}' ng-model='ctrl.data')
+    div(ng-if='ctrl.data' ignite-ace='{onLoad: onLoad, mode: "dockerfile"}' ng-model='ctrl.data')

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js
index 04d1810..072ac8f 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.directive.js
@@ -19,20 +19,20 @@ import template from './ui-ace-java.jade!';
 import controller from './ui-ace-java.controller';
 
 export default ['igniteUiAceJava', ['GeneratorJava', (generator) => {
-    const link = (scope, $el, attrs, [ctrl, igniteUiAce, formCtrl, ngModelCtrl]) => {
+    const link = (scope, $el, attrs, [ctrl, igniteUiAceTabs, formCtrl, ngModelCtrl]) => {
         if (formCtrl && ngModelCtrl)
             formCtrl.$removeControl(ngModelCtrl);
 
-        if (igniteUiAce && igniteUiAce.onLoad) {
+        if (igniteUiAceTabs && igniteUiAceTabs.onLoad) {
             scope.onLoad = (editor) => {
-                igniteUiAce.onLoad(editor);
+                igniteUiAceTabs.onLoad(editor);
 
                 scope.$watch('cluster', () => editor.attractAttention = false);
             };
         }
 
-        if (igniteUiAce && igniteUiAce.onChange)
-            scope.onChange = igniteUiAce.onChange;
+        if (igniteUiAceTabs && igniteUiAceTabs.onChange)
+            scope.onChange = igniteUiAceTabs.onChange;
 
         const render = (data) => {
             delete ctrl.data;
@@ -123,6 +123,6 @@ export default ['igniteUiAceJava', ['GeneratorJava', (generator) => {
         template,
         controller,
         controllerAs: 'ctrl',
-        require: ['igniteUiAceJava', '?^igniteUiAce', '?^form', '?ngModel']
+        require: ['igniteUiAceJava', '?^igniteUiAceTabs', '?^form', '?ngModel']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.jade b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.jade
index 6c027c8..5acffb8 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.jade
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-java/ui-ace-java.jade
@@ -15,7 +15,7 @@
     limitations under the License.
 
 div(ng-if='ctrl.data' 
-    ui-ace='{onLoad: onLoad, \
+    ignite-ace='{onLoad: onLoad, \
              onChange: onChange, \
              renderOptions: renderOptions, \
              mode: "java"}' 

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.directive.js
index 9d437f0..6222dc0 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.directive.js
@@ -19,12 +19,12 @@ import template from './ui-ace-pojos.jade!';
 import controller from './ui-ace-pojos.controller';
 
 export default ['igniteUiAcePojos', [() => {
-    const link = ($scope, $el, $attrs, [igniteUiAce]) => {
-        if (igniteUiAce.onLoad)
-            $scope.onLoad = igniteUiAce.onLoad;
+    const link = ($scope, $el, $attrs, [igniteUiAceTabs]) => {
+        if (igniteUiAceTabs.onLoad)
+            $scope.onLoad = igniteUiAceTabs.onLoad;
 
-        if (igniteUiAce.onChange)
-            $scope.onChange = igniteUiAce.onChange;
+        if (igniteUiAceTabs.onChange)
+            $scope.onChange = igniteUiAceTabs.onChange;
     };
 
     return {
@@ -41,6 +41,6 @@ export default ['igniteUiAcePojos', [() => {
         template,
         controller,
         controllerAs: 'ctrl',
-        require: ['?^igniteUiAce']
+        require: ['?^igniteUiAceTabs']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.jade b/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.jade
index f2f48b6..3e82f12 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.jade
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-pojos/ui-ace-pojos.jade
@@ -37,4 +37,4 @@ div
                 input(type='checkbox' ng-model='ctrl.includeKeyFields')
                 | Include key fields
             +check-tooltip("Generate key fields in POJO value class")
-    div(ng-if='ctrl.data' ui-ace='{onLoad: onLoad, mode: "java"}' ng-model='ctrl.data')
+    div(ng-if='ctrl.data' ignite-ace='{onLoad: onLoad, mode: "java"}' ng-model='ctrl.data')

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.directive.js
index 7aa75ba..3d68ba9 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.directive.js
@@ -19,12 +19,12 @@ import template from './ui-ace-pom.jade!';
 import controller from './ui-ace-pom.controller';
 
 export default ['igniteUiAcePom', [() => {
-    const link = ($scope, $el, $attrs, [igniteUiAce]) => {
-        if (igniteUiAce.onLoad)
-            $scope.onLoad = igniteUiAce.onLoad;
+    const link = ($scope, $el, $attrs, [igniteUiAceTabs]) => {
+        if (igniteUiAceTabs.onLoad)
+            $scope.onLoad = igniteUiAceTabs.onLoad;
 
-        if (igniteUiAce.onChange)
-            $scope.onChange = igniteUiAce.onChange;
+        if (igniteUiAceTabs.onChange)
+            $scope.onChange = igniteUiAceTabs.onChange;
     };
 
     return {
@@ -36,6 +36,6 @@ export default ['igniteUiAcePom', [() => {
         template,
         controller,
         controllerAs: 'ctrl',
-        require: ['?^igniteUiAce']
+        require: ['?^igniteUiAceTabs']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.jade b/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.jade
index 8e263ab..b973a74 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.jade
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-pom/ui-ace-pom.jade
@@ -14,4 +14,4 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-div(ng-if='ctrl.data' ui-ace='{onLoad: onLoad, mode: "xml"}' ng-model='ctrl.data')
+div(ng-if='ctrl.data' ignite-ace='{onLoad: onLoad, mode: "xml"}' ng-model='ctrl.data')

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-tabs.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-tabs.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-tabs.directive.js
new file mode 100644
index 0000000..dd13d83
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-tabs.directive.js
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default ['igniteUiAceTabs', [() => {
+    const controller = () => {};
+
+    return {
+        restrict: 'AE',
+        controller
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js
index c6c7879..6b6e1df 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.directive.js
@@ -19,20 +19,20 @@ import template from './ui-ace-xml.jade!';
 import controller from './ui-ace-xml.controller';
 
 export default ['igniteUiAceXml', ['GeneratorXml', (generator) => {
-    const link = (scope, $el, attrs, [ctrl, igniteUiAce, formCtrl, ngModelCtrl]) => {
+    const link = (scope, $el, attrs, [ctrl, igniteUiAceTabs, formCtrl, ngModelCtrl]) => {
         if (formCtrl && ngModelCtrl)
             formCtrl.$removeControl(ngModelCtrl);
 
-        if (igniteUiAce && igniteUiAce.onLoad) {
+        if (igniteUiAceTabs && igniteUiAceTabs.onLoad) {
             scope.onLoad = (editor) => {
-                igniteUiAce.onLoad(editor);
+                igniteUiAceTabs.onLoad(editor);
 
                 scope.$watch('cluster', () => editor.attractAttention = false);
             };
         }
 
-        if (igniteUiAce && igniteUiAce.onChange)
-            scope.onChange = igniteUiAce.onChange;
+        if (igniteUiAceTabs && igniteUiAceTabs.onChange)
+            scope.onChange = igniteUiAceTabs.onChange;
 
         const render = (data) => {
             delete ctrl.data;
@@ -122,6 +122,6 @@ export default ['igniteUiAceXml', ['GeneratorXml', (generator) => {
         template,
         controller,
         controllerAs: 'ctrl',
-        require: ['igniteUiAceXml', '?^igniteUiAce', '?^form', '?ngModel']
+        require: ['igniteUiAceXml', '?^igniteUiAceTabs', '?^form', '?ngModel']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.jade b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.jade
index 585cbdd..0dd627a 100644
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.jade
+++ b/modules/control-center-web/src/main/js/app/directives/ui-ace-xml/ui-ace-xml.jade
@@ -14,4 +14,4 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-div(ng-if='ctrl.data' ui-ace='{onLoad: onLoad, onChange: onChange, mode: "xml"}' ng-model='ctrl.data')
+div(ng-if='ctrl.data' ignite-ace='{onLoad: onLoad, onChange: onChange, mode: "xml"}' ng-model='ctrl.data')

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/directives/ui-ace/ui-ace.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/directives/ui-ace/ui-ace.directive.js b/modules/control-center-web/src/main/js/app/directives/ui-ace/ui-ace.directive.js
deleted file mode 100644
index 4873b94..0000000
--- a/modules/control-center-web/src/main/js/app/directives/ui-ace/ui-ace.directive.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-export default ['igniteUiAce', [() => {
-    const controller = () => {};
-
-    return {
-        restrict: 'AE',
-        controller
-    };
-}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/index.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/index.js b/modules/control-center-web/src/main/js/app/index.js
index fca3027..eb76256 100644
--- a/modules/control-center-web/src/main/js/app/index.js
+++ b/modules/control-center-web/src/main/js/app/index.js
@@ -38,7 +38,6 @@ import 'angular-drag-and-drop-lists';
 import 'angular-nvd3';
 import 'angular-retina';
 import 'angular-strap';
-import 'angular-ui-ace';
 import 'angular-tree-control';
 import 'angular-smart-table';
 
@@ -78,19 +77,20 @@ import './modules/configuration/configuration.module';
 import './modules/getting-started/GettingStarted.provider';
 import './modules/dialog/dialog.module';
 import './modules/Version/Version.provider';
+import './modules/ace.module';
 // endignite
 
 // Directives.
 import igniteLoading from './directives/loading/loading.directive';
 import igniteInformation from './directives/information/information.directive';
-import igniteUiAce from './directives/ui-ace/ui-ace.directive';
+import igniteUiAceTabs from './directives/ui-ace-tabs.directive';
 import igniteUiAceXml from './directives/ui-ace-xml/ui-ace-xml.directive';
 import igniteUiAceJava from './directives/ui-ace-java/ui-ace-java.directive';
 import igniteUiAcePom from './directives/ui-ace-pom/ui-ace-pom.directive';
 import igniteUiAceDocker from './directives/ui-ace-docker/ui-ace-docker.directive';
 import igniteUiAcePojos from './directives/ui-ace-pojos/ui-ace-pojos.directive';
 import igniteFormFieldJavaClass from './directives/form-field-java-class/form-field-java-class.directive';
-import igniteBsAffixUpdate from './directives/bs-affix-update/bs-affix-update.directive';
+import igniteBsAffixUpdate from './directives/bs-affix-update.directive';
 
 // Services.
 import cleanup from './services/cleanup/cleanup.service';
@@ -114,6 +114,7 @@ angular
     'ignite-console.Form',
     'ignite-console.JavaTypes',
     'ignite-console.QueryNotebooks',
+    'ignite-console.ace',
     // States.
     'ignite-console.states.login',
     'ignite-console.states.logout',
@@ -132,7 +133,7 @@ angular
 // Directives.
 .directive(...igniteLoading)
 .directive(...igniteInformation)
-.directive(...igniteUiAce)
+.directive(...igniteUiAceTabs)
 .directive(...igniteUiAceXml)
 .directive(...igniteUiAceJava)
 .directive(...igniteUiAcePom)

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/ace.module.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/ace.module.js b/modules/control-center-web/src/main/js/app/modules/ace.module.js
new file mode 100644
index 0000000..35d94e1
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/ace.module.js
@@ -0,0 +1,266 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import angular from 'angular';
+
+angular
+    .module('ignite-console.ace', [])
+    .constant('igniteAceConfig', {})
+    .directive('igniteAce', ['igniteAceConfig', (aceConfig) => {
+        if (angular.isUndefined(window.ace))
+            throw new Error('ignite-ace need ace to work... (o rly?)');
+
+        /**
+         * Sets editor options such as the wrapping mode or the syntax checker.
+         *
+         * The supported options are:
+         *
+         *   <ul>
+         *     <li>showGutter</li>
+         *     <li>useWrapMode</li>
+         *     <li>onLoad</li>
+         *     <li>theme</li>
+         *     <li>mode</li>
+         *   </ul>
+         *
+         * @param acee
+         * @param session ACE editor session
+         * @param {object} opts Options to be set
+         */
+        const setOptions = (acee, session, opts) => {
+            // sets the ace worker path, if running from concatenated
+            // or minified source
+            if (angular.isDefined(opts.workerPath)) {
+                const config = window.ace.require('ace/config');
+
+                config.set('workerPath', opts.workerPath);
+            }
+
+            // ace requires loading
+            if (angular.isDefined(opts.require))
+                opts.require.forEach((n) => window.ace.require(n));
+
+            // Boolean options
+            if (angular.isDefined(opts.showGutter))
+                acee.renderer.setShowGutter(opts.showGutter);
+
+            if (angular.isDefined(opts.useWrapMode))
+                session.setUseWrapMode(opts.useWrapMode);
+
+            if (angular.isDefined(opts.showInvisibles))
+                acee.renderer.setShowInvisibles(opts.showInvisibles);
+
+            if (angular.isDefined(opts.showIndentGuides))
+                acee.renderer.setDisplayIndentGuides(opts.showIndentGuides);
+
+            if (angular.isDefined(opts.useSoftTabs))
+                session.setUseSoftTabs(opts.useSoftTabs);
+
+            if (angular.isDefined(opts.showPrintMargin))
+                acee.setShowPrintMargin(opts.showPrintMargin);
+
+            // commands
+            if (angular.isDefined(opts.disableSearch) && opts.disableSearch) {
+                acee.commands.addCommands([{
+                    name: 'unfind',
+                    bindKey: {
+                        win: 'Ctrl-F',
+                        mac: 'Command-F'
+                    },
+                    exec: () => false,
+                    readOnly: true
+                }]);
+            }
+
+            // Basic options
+            if (angular.isString(opts.theme))
+                acee.setTheme('ace/theme/' + opts.theme);
+
+            if (angular.isString(opts.mode))
+                session.setMode('ace/mode/' + opts.mode);
+
+            // Advanced options
+            if (angular.isDefined(opts.firstLineNumber)) {
+                if (angular.isNumber(opts.firstLineNumber))
+                    session.setOption('firstLineNumber', opts.firstLineNumber);
+                else if (angular.isFunction(opts.firstLineNumber))
+                    session.setOption('firstLineNumber', opts.firstLineNumber());
+            }
+
+            // advanced options
+            if (angular.isDefined(opts.advanced)) {
+                for (const key in opts.advanced) {
+                    if (opts.advanced.hasOwnProperty(key)) {
+                        // create a javascript object with the key and value
+                        const obj = {name: key, value: opts.advanced[key]};
+
+                        // try to assign the option to the ace editor
+                        acee.setOption(obj.name, obj.value);
+                    }
+                }
+            }
+
+            // advanced options for the renderer
+            if (angular.isDefined(opts.rendererOptions)) {
+                for (const key in opts.rendererOptions) {
+                    if (opts.rendererOptions.hasOwnProperty(key)) {
+                        // create a javascript object with the key and value
+                        const obj = {name: key, value: opts.rendererOptions[key]};
+
+                        // try to assign the option to the ace editor
+                        acee.renderer.setOption(obj.name, obj.value);
+                    }
+                }
+            }
+
+            // onLoad callbacks
+            angular.forEach(opts.callbacks, (cb) => {
+                if (angular.isFunction(cb))
+                    cb(acee);
+            });
+        };
+
+        return {
+            restrict: 'EA',
+            require: '?ngModel',
+            link: (scope, elm, attrs, ngModel) => {
+
+                /**
+                 * Corresponds the igniteAceConfig ACE configuration.
+                 * @type object
+                 */
+                const options = aceConfig.ace || {};
+
+                /**
+                 * igniteAceConfig merged with user options via json in attribute or data binding
+                 * @type object
+                 */
+                let opts = angular.extend({}, options, scope.$eval(attrs.igniteAce));
+
+                /**
+                 * ACE editor
+                 * @type object
+                 */
+                const acee = window.ace.edit(elm[0]);
+
+                /**
+                 * ACE editor session.
+                 * @type object
+                 * @see [EditSession]{@link http://ace.c9.io/#nav=api&api=edit_session}
+                 */
+                const session = acee.getSession();
+
+                /**
+                 * Reference to a change listener created by the listener factory.
+                 * @function
+                 * @see listenerFactory.onChange
+                 */
+                let onChangeListener;
+
+                /**
+                 * Creates a change listener which propagates the change event
+                 * and the editor session to the callback from the user option
+                 * onChange. It might be exchanged during runtime, if this
+                 * happens the old listener will be unbound.
+                 *
+                 * @param callback callback function defined in the user options
+                 * @see onChangeListener
+                 */
+                const onChangeFactory = (callback) => {
+                    return (e) => {
+                        const newValue = session.getValue();
+
+                        if (ngModel && newValue !== ngModel.$viewValue &&
+                                // HACK make sure to only trigger the apply outside of the
+                                // digest loop 'cause ACE is actually using this callback
+                                // for any text transformation !
+                            !scope.$$phase && !scope.$root.$$phase)
+                            scope.$eval(() => ngModel.$setViewValue(newValue));
+
+                        if (angular.isDefined(callback)) {
+                            scope.$evalAsync(() => {
+                                if (angular.isFunction(callback))
+                                    callback([e, acee]);
+                                else
+                                    throw new Error('ignite-ace use a function as callback.');
+                            });
+                        }
+                    };
+                };
+
+                attrs.$observe('readonly', (value) => acee.setReadOnly(!!value || value === ''));
+
+                // Value Blind.
+                if (ngModel) {
+                    ngModel.$formatters.push((value) => {
+                        if (angular.isUndefined(value) || value === null)
+                            return '';
+
+                        if (angular.isObject(value) || angular.isArray(value))
+                            throw new Error('ignite-ace cannot use an object or an array as a model');
+
+                        return value;
+                    });
+
+                    ngModel.$render = () => session.setValue(ngModel.$viewValue);
+                }
+
+                // Listen for option updates.
+                const updateOptions = (current, previous) => {
+                    if (current === previous)
+                        return;
+
+                    opts = angular.extend({}, options, scope.$eval(attrs.igniteAce));
+
+                    opts.callbacks = [opts.onLoad];
+
+                    // Also call the global onLoad handler.
+                    if (opts.onLoad !== options.onLoad)
+                        opts.callbacks.unshift(options.onLoad);
+
+                    // Unbind old change listener.
+                    session.removeListener('change', onChangeListener);
+
+                    // Bind new change listener.
+                    onChangeListener = onChangeFactory(opts.onChange);
+
+                    session.on('change', onChangeListener);
+
+                    setOptions(acee, session, opts);
+                };
+
+                scope.$watch(attrs.igniteAce, updateOptions, /* deep watch */ true);
+
+                // Set the options here, even if we try to watch later,
+                // if this line is missing things go wrong (and the tests will also fail).
+                updateOptions(options);
+
+                elm.on('$destroy', () => {
+                    acee.session.$stopWorker();
+
+                    acee.destroy();
+                });
+
+                scope.$watch(() => [elm[0].offsetWidth, elm[0].offsetHeight],
+                    () => {
+                        acee.resize();
+
+                        acee.renderer.updateFull();
+                    }, true);
+            }
+        };
+    }]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade
index d442d5c..03921ba 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade
@@ -72,7 +72,7 @@ form.panel.panel-default(name='atomics' novalidate)
                             data-ng-model='#{model}.backups'
                             data-placeholder='0'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade
index 6e78df3..301125b 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade
@@ -145,7 +145,7 @@ form.panel.panel-default(name='binary' novalidate)
                         | Compact footer
                         ignite-form-field-tooltip
                             | When enabled, Ignite will not write fields metadata when serializing objects(this will increase serialization performance), because internally #[b BinaryMarshaller] already distribute metadata inside cluster
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade
index f695714..9678ced 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade
@@ -333,7 +333,7 @@ form.panel.panel-default(name='communication' novalidate)
                             data-name='comAddressResolver'
                             data-ng-model='#{model}.addressResolver'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade
index 3f1a17c..b4dd86c 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade
@@ -294,7 +294,7 @@ form.panel.panel-default(name='connector' novalidate)
                             data-ng-required='#{model}.sslEnabled'
                             data-ng-disabled='!#{model}.enabled || !#{model}.sslEnabled'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade
index adf7fb7..b3e8287 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade
@@ -182,7 +182,7 @@ form.panel.panel-default(name='#{form}' novalidate)
             
                         .group-content-empty(ng-if='!(#{exclude}.length) && !group.add.length')
                             | Not defined
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade
index 261e36a..b404464 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade
@@ -304,7 +304,7 @@ form.panel.panel-default(name='discovery' novalidate)
                         | Client reconnect disabled
                         ignite-form-field-tooltip
                             | Client reconnect disabled
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/events.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/events.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/events.jade
index 6db5113..c4a5484 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/events.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/events.jade
@@ -41,7 +41,7 @@ form.panel.panel-default(name='events' novalidate)
                             data-ng-model='#{model}.includeEventTypes'
                             data-placeholder='Choose recorded event types'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
index 8958cbd..2f78db2 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
@@ -93,7 +93,7 @@ form.panel.panel-default(name='general' novalidate)
                             ng-if='#{model}.discovery.kind === "SharedFs"')
                         ignite-configuration-clusters-general-discovery-vm(
                             ng-if='#{model}.discovery.kind === "Vm"')
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/igfs.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/igfs.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/igfs.jade
index e0db188..7b63358 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/igfs.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/igfs.jade
@@ -41,7 +41,7 @@ form.panel.panel-default(name='igfs' novalidate)
                             data-ng-disabled='!igfss.length'
                             data-placeholder='{{ igfss.length ? "Choose IGFS": "No IGFS configured" }}'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/marshaller.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/marshaller.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/marshaller.jade
index b181fee..f8219e6 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/marshaller.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/marshaller.jade
@@ -119,7 +119,7 @@ form.panel.panel-default(name='marshaller' novalidate)
                             data-placeholder='max(8, availableProcessors) * 2'
                         )
 
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/metrics.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/metrics.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/metrics.jade
index 7ced27d..b40ea2a 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/metrics.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/metrics.jade
@@ -75,7 +75,7 @@ form.panel.panel-default(name='metrics' novalidate)
                             data-ng-model='#{model}.metricsUpdateFrequency'
                             data-placeholder='2000'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/preview-panel.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/preview-panel.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/preview-panel.directive.js
index 61407fe..fb67326 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/preview-panel.directive.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/preview-panel.directive.js
@@ -205,13 +205,13 @@ export default ['previewPanel', ['$interval', '$timeout', ($interval, $timeout)
     };
 
 
-    const link = (scope, $element, $attrs, [igniteUiAce1, igniteUiAce2]) => {
-        const igniteUiAce = igniteUiAce1 || igniteUiAce2;
+    const link = (scope, $element, $attrs, [igniteUiAceTabs1, igniteUiAceTabs2]) => {
+        const igniteUiAceTabs = igniteUiAceTabs1 || igniteUiAceTabs2;
 
-        if (!igniteUiAce)
+        if (!igniteUiAceTabs)
             return;
 
-        igniteUiAce.onLoad = (editor) => {
+        igniteUiAceTabs.onLoad = (editor) => {
             editor.setReadOnly(true);
             editor.setOption('highlightActiveLine', false);
             editor.setAutoScrollEditorIntoView(true);
@@ -228,12 +228,12 @@ export default ['previewPanel', ['$interval', '$timeout', ($interval, $timeout)
             editor.setTheme('ace/theme/chrome');
         };
 
-        igniteUiAce.onChange = onChange;
+        igniteUiAceTabs.onChange = onChange;
     };
 
     return {
         restrict: 'C',
         link,
-        require: ['?igniteUiAce', '?^igniteUiAce']
+        require: ['?igniteUiAceTabs', '?^igniteUiAceTabs']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/ssl.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/ssl.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/ssl.jade
index 7ef96e7..2a91f83 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/ssl.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/ssl.jade
@@ -220,7 +220,7 @@ form.panel.panel-default(name='#{form}' novalidate)
                             data-ng-disabled='!#{enabled}'
                         )                        
  
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/swap.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/swap.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/swap.jade
index 83698ce..9676c94 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/swap.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/swap.jade
@@ -118,7 +118,7 @@ form.panel.panel-default(name='swapSpaceSpi' novalidate)
                                 )
 
 
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/thread.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/thread.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/thread.jade
index 0e49742..1a5f780 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/thread.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/thread.jade
@@ -81,7 +81,7 @@ form.panel.panel-default(name='thread' novalidate)
                             data-placeholder='1'
                             data-min='1'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/time.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/time.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/time.jade
index 63badbd..a6eac16 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/time.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/time.jade
@@ -79,7 +79,7 @@ form.panel.panel-default(name='time' novalidate)
                             data-placeholder='100'
                             data-min='1'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/transactions.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/transactions.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/transactions.jade
index a4b4971..ff5166a 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/transactions.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/transactions.jade
@@ -107,7 +107,7 @@ form.panel.panel-default(name='transactionConfiguration' novalidate)
                             data-ng-model='#{model}.txManagerFactory'
                             data-placeholder='Enter fully qualified class name'
                         )
-            ignite-ui-ace.col-sm-6
+            ignite-ui-ace-tabs.col-sm-6
                 .preview-panel(ng-init='mode = false')
                     .preview-legend
                         a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML
@@ -118,4 +118,4 @@ form.panel.panel-default(name='transactionConfiguration' novalidate)
                     .preview-content(ng-if='!mode')
                         ignite-ui-ace-xml(data-cluster='backupItem' data-generator='clusterTransactions' ng-model='$parent.data')
                     .preview-content-empty(ng-if='!data')
-                        label All Defaults
\ No newline at end of file
+                        label All Defaults

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary-tabs.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary-tabs.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary-tabs.directive.js
index e38b6fd..f8094af 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary-tabs.directive.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/summary/summary-tabs.directive.js
@@ -16,13 +16,13 @@
  */
 
 export default ['summaryTabs', [() => {
-    const link = (scope, $element, $attrs, [igniteUiAce1, igniteUiAce2]) => {
-        const igniteUiAce = igniteUiAce1 || igniteUiAce2;
+    const link = (scope, $element, $attrs, [igniteUiAceTabs1, igniteUiAceTabs2]) => {
+        const igniteUiAceTabs = igniteUiAceTabs1 || igniteUiAceTabs2;
 
-        if (!igniteUiAce)
+        if (!igniteUiAceTabs)
             return;
 
-        igniteUiAce.onLoad = (editor) => {
+        igniteUiAceTabs.onLoad = (editor) => {
             editor.setReadOnly(true);
             editor.setOption('highlightActiveLine', false);
             editor.setAutoScrollEditorIntoView(true);
@@ -45,6 +45,6 @@ export default ['summaryTabs', [() => {
         priority: 1000,
         restrict: 'C',
         link,
-        require: ['?igniteUiAce', '?^igniteUiAce']
+        require: ['?igniteUiAceTabs', '?^igniteUiAceTabs']
     };
 }]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/config.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/config.js b/modules/control-center-web/src/main/js/config.js
index d5be50e..8000eac 100644
--- a/modules/control-center-web/src/main/js/config.js
+++ b/modules/control-center-web/src/main/js/config.js
@@ -45,7 +45,7 @@ System.config({
     "file-saver": "github:eligrey/FileSaver.js@master",
     "font-awesome": "npm:font-awesome@4.5.0",
     "jade": "github:johnsoftek/plugin-jade@0.5.1",
-    "jquery": "github:components/jquery@2.2.0",
+    "jquery": "github:components/jquery@2.2.1",
     "json": "github:systemjs/plugin-json@0.1.0",
     "jszip": "github:Stuk/jszip@2.5.0",
     "lodash": "npm:lodash@3.10.1",
@@ -75,7 +75,7 @@ System.config({
       "angular": "github:angular/bower-angular@1.5.0"
     },
     "github:angular/bower-angular@1.5.0": {
-      "jquery": "github:components/jquery@2.2.0"
+      "jquery": "github:components/jquery@2.2.1"
     },
     "github:darthwade/angular-loading@0.1.4": {
       "spinjs": "github:fgnass/spin.js@2.3.2"
@@ -140,7 +140,7 @@ System.config({
       "css": "github:systemjs/plugin-css@0.1.20"
     },
     "github:twbs/bootstrap@3.3.6": {
-      "jquery": "github:components/jquery@2.2.0"
+      "jquery": "github:components/jquery@2.2.1"
     },
     "github:wix/angular-tree-control@0.2.23": {
       "angular": "github:angular/bower-angular@1.5.0"
@@ -247,7 +247,7 @@ System.config({
       "process": "github:jspm/nodelibs-process@0.1.2"
     },
     "npm:decamelize@1.1.2": {
-      "escape-string-regexp": "npm:escape-string-regexp@1.0.4"
+      "escape-string-regexp": "npm:escape-string-regexp@1.0.5"
     },
     "npm:font-awesome@4.5.0": {
       "css": "github:systemjs/plugin-css@0.1.20"
@@ -276,7 +276,7 @@ System.config({
       "process": "github:jspm/nodelibs-process@0.1.2",
       "systemjs-json": "github:systemjs/plugin-json@0.1.0",
       "transformers": "npm:transformers@2.1.0",
-      "uglify-js": "npm:uglify-js@2.6.1",
+      "uglify-js": "npm:uglify-js@2.6.2",
       "void-elements": "npm:void-elements@2.0.1",
       "with": "npm:with@4.0.3"
     },
@@ -381,7 +381,7 @@ System.config({
       "util": "github:jspm/nodelibs-util@0.1.0",
       "vm": "github:jspm/nodelibs-vm@0.1.0"
     },
-    "npm:uglify-js@2.6.1": {
+    "npm:uglify-js@2.6.2": {
       "async": "npm:async@0.2.10",
       "fs": "github:jspm/nodelibs-fs@0.1.2",
       "path": "github:jspm/nodelibs-path@0.1.0",

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/controllers/common-module.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/common-module.js b/modules/control-center-web/src/main/js/controllers/common-module.js
index 1de5433..b0c817d 100644
--- a/modules/control-center-web/src/main/js/controllers/common-module.js
+++ b/modules/control-center-web/src/main/js/controllers/common-module.js
@@ -17,7 +17,7 @@
 
 var consoleModule = angular.module('ignite-web-console',
     [
-        'ngAnimate', 'ngSanitize', 'mgcrea.ngStrap', 'smart-table', 'ui.ace', 'treeControl', 'darthwade.dwLoading', 'ui.grid', 'ui.grid.autoResize', 'ui.grid.exporter', 'nvd3', 'dndLists'
+        'ngAnimate', 'ngSanitize', 'mgcrea.ngStrap', 'smart-table', 'treeControl', 'darthwade.dwLoading', 'ui.grid', 'ui.grid.autoResize', 'ui.grid.exporter', 'nvd3', 'dndLists'
         /* ignite:modules */
         , 'ignite-console'
         /* endignite */

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/controllers/sql-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/sql-controller.js b/modules/control-center-web/src/main/js/controllers/sql-controller.js
index 55748cc..a806abb 100644
--- a/modules/control-center-web/src/main/js/controllers/sql-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/sql-controller.js
@@ -1477,13 +1477,7 @@ consoleModule.controller('sqlController', function ($http, $timeout, $interval,
     $scope.dblclickMetadata = function (paragraph, node) {
         paragraph.ace.insert(node.name);
 
-        var position = paragraph.ace.selection.getCursor();
-
-        paragraph.query = paragraph.ace.getValue();
-
         setTimeout(function () {
-            paragraph.ace.selection.moveCursorToPosition(position);
-
             paragraph.ace.focus();
         }, 1);
     };

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/package.json
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/package.json b/modules/control-center-web/src/main/js/package.json
index a4f820e..69c3af9 100644
--- a/modules/control-center-web/src/main/js/package.json
+++ b/modules/control-center-web/src/main/js/package.json
@@ -81,7 +81,6 @@
       "angular-smart-table": "github:lorenzofox3/Smart-Table@^2.1.4",
       "angular-strap": "github:akuznetsov-gridgain/angular-strap@fix-1852-2.3.6",
       "angular-tree-control": "github:wix/angular-tree-control@^0.2.23",
-      "angular-ui-ace": "github:angular-ui/ui-ace@^0.2.3",
       "angular-ui-grid": "github:angular-ui/bower-ui-grid@^3.0.7",
       "angular-ui-router": "github:angular-ui/ui-router@^0.2.15",
       "angular-ui-router-title": "github:nonplus/angular-ui-router-title@^0.0.4",
@@ -233,11 +232,6 @@
           }
         }
       },
-      "github:angular-ui/ui-ace@0.2.3": {
-        "dependencies": {
-          "ace": "github:ajaxorg/ace-builds@^1.2.2"
-        }
-      },
       "github:eligrey/FileSaver.js@master": {
         "format": "global",
         "dependencies": {

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/views/configuration/summary.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/summary.jade b/modules/control-center-web/src/main/js/views/configuration/summary.jade
index e280f2b..efff15c 100644
--- a/modules/control-center-web/src/main/js/views/configuration/summary.jade
+++ b/modules/control-center-web/src/main/js/views/configuration/summary.jade
@@ -52,7 +52,7 @@ mixin ignite-form-field-tooltip(message)
                             label Server
 
                         .panel-collapse(id='server' role='tabpanel' bs-collapse-target)
-                            .summary-tabs(ignite-ui-ace)
+                            ignite-ui-ace-tabs.summary-tabs
                                 div(bs-tabs data-bs-active-pane="tabsServer.activeTab" template='configuration/summary-tabs.html')
                                     div(bs-pane title='XML')
                                         ignite-ui-ace-xml(data-cluster='cluster')
@@ -132,7 +132,7 @@ mixin ignite-form-field-tooltip(message)
                                                     data-placeholder='100000'
                                                 )
 
-                            .summary-tabs(ignite-ui-ace)
+                            .summary-tabs(ignite-ui-ace-tabs)
                                 div(bs-tabs data-bs-active-pane="tabsClient.activeTab" template='configuration/summary-tabs.html')
                                     div(bs-pane title='XML')
                                         ignite-ui-ace-xml(data-cluster='cluster' data-cluster-cfg='#{nearCfg}')

http://git-wip-us.apache.org/repos/asf/ignite/blob/f189e84b/modules/control-center-web/src/main/js/views/sql/sql.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/sql/sql.jade b/modules/control-center-web/src/main/js/views/sql/sql.jade
index ac7db65..bafe1d2 100644
--- a/modules/control-center-web/src/main/js/views/sql/sql.jade
+++ b/modules/control-center-web/src/main/js/views/sql/sql.jade
@@ -98,7 +98,7 @@ mixin chart-settings(mdl)
                             .panel-collapse(role='tabpanel' bs-collapse-target)
                                 .col-sm-12
                                     .col-xs-8.col-sm-9(style='border-right: 1px solid #eee')
-                                        .sql-editor(ui-ace='{onLoad: aceInit(paragraph), theme: "chrome", mode: "sql", require: ["ace/ext/language_tools"],' +
+                                        .sql-editor(ignite-ace='{onLoad: aceInit(paragraph), theme: "chrome", mode: "sql", require: ["ace/ext/language_tools"],' +
                                         'advanced: {enableSnippets: false, enableBasicAutocompletion: true, enableLiveAutocompletion: true}}'
                                         ng-model='paragraph.query')
                                     .col-xs-4.col-sm-3