ONOS-2060: Add strong discouragement message if trying to deactivate or uninstall drivers.

Change-Id: I94b168738f3dbf5d692165cadf954ba9fffc5ae6
diff --git a/web/gui/src/main/webapp/app/view/app/app.css b/web/gui/src/main/webapp/app/view/app/app.css
index ec4972a..c015459 100644
--- a/web/gui/src/main/webapp/app/view/app/app.css
+++ b/web/gui/src/main/webapp/app/view/app/app.css
@@ -41,6 +41,18 @@
     color: #c55;
 }
 
+#app-dialog p.strong {
+    font-weight: bold;
+}
+.light #app-dialog p.strong {
+    color: red;
+    background-color: #ff0;
+}
+.dark #app-dialog p.strong {
+    color: #c55;
+    background-color: #dd4;
+}
+
 
 .light #app-dialog.floatpanel.dialog {
     background-color: #fff;
diff --git a/web/gui/src/main/webapp/app/view/app/app.js b/web/gui/src/main/webapp/app/view/app/app.js
index f7b8bbf..11473b6 100644
--- a/web/gui/src/main/webapp/app/view/app/app.js
+++ b/web/gui/src/main/webapp/app/view/app/app.js
@@ -29,7 +29,12 @@
         dialogId = 'app-dialog',
         dialogOpts = {
             edge: 'right'
-        };
+        },
+        strongWarning = {
+            'org.onosproject.drivers': true
+        },
+        discouragement = 'Deactivating or uninstalling this component can' +
+        ' have serious negative consequences! Do so at your own risk!!';
 
     angular.module('ovApp', [])
     .controller('OvAppCtrl',
@@ -45,9 +50,10 @@
         $scope.uninstallTip = 'Uninstall selected application';
 
         function selCb($event, row) {
-            // selId comes from tableBuilder
+            // $scope.selId is set by code in tableBuilder
             $scope.ctrlBtnState.selection = !!$scope.selId;
             refreshCtrls();
+            ds.closeDialog();  // don't want dialog from previous selection
         }
 
         function refreshCtrls() {
@@ -87,33 +93,36 @@
         ]);
 
 
-        function createConfirmationText(action, sid) {
+        function createConfirmationText(action, itemId) {
             var content = ds.createDiv();
-            content.append('p').text(action + ' ' + sid);
+            content.append('p').text(action + ' ' + itemId);
+            if (strongWarning[itemId]) {
+                content.append('p').text(discouragement).classed('strong', true);
+            }
             return content;
         }
 
         function confirmAction(action) {
-            var sid = $scope.selId,
+            var itemId = $scope.selId,
                 spar = $scope.sortParams;
 
             function dOk() {
-                $log.debug('Initiating', action, 'of', sid);
+                $log.debug('Initiating', action, 'of', itemId);
                 wss.sendEvent(appMgmtReq, {
                     action: action,
-                    name: sid,
+                    name: itemId,
                     sortCol: spar.sortCol,
                     sortDir: spar.sortDir
                 });
             }
 
             function dCancel() {
-                $log.debug('Canceling', action, 'of', sid);
+                $log.debug('Canceling', action, 'of', itemId);
             }
 
             ds.openDialog(dialogId, dialogOpts)
                 .setTitle('Confirm Action')
-                .addContent(createConfirmationText(action, sid))
+                .addContent(createConfirmationText(action, itemId))
                 .addButton('OK', dOk)
                 .addButton('Cancel', dCancel);
         }