Fix 'setWidget' action for the case a widget was closed instead of minimized

Change-Id: I74339e444fcca43aee3c694c2a24fe7e68980d81
diff --git a/dev/js/src/plugin/server.js b/dev/js/src/plugin/server.js
index ce36354..7f9bc85 100644
--- a/dev/js/src/plugin/server.js
+++ b/dev/js/src/plugin/server.js
@@ -157,15 +157,28 @@
             // a intermediate object to toggle the view
             if ('state' in this.button && this.button.state.associates() > 0) {
 
-              // TODO:
-              //   Use roll() when existing
               let s = this.button.state;
-              if (s.get()) {
-                s.set(false);
-              } else {
+
+              // The associated service is existent
+              if (services[this.button['widgetID']]) {
+              
+                // TODO:
+                //   Use roll() when existing
+                if (s.get()) {
+                  s.set(false);
+                } else {
+                  s.set(true);
+                };
+                return;
+              }
+
+              // The service is not existent
+              else {
+
+                // Remove broken state associations
+                s.clear();
                 s.set(true);
-              };
-              return;
+              }
             };
 
             // Add the widget to the panel
@@ -174,6 +187,7 @@
             
             // If a state exists, associate with a mediator object
             if ('state' in this.button) {
+              this.button['widgetID'] = id;
               this.button.state.associate({
                 setState : function (value) {
                   // Minimize the widget
@@ -493,7 +507,7 @@
     // Close the service
     _closeService : function (id) {
       delete limits[id];
-
+      
       // Close the iframe
       if (services[id] && services[id]._closeIframe) {
         services[id]._closeIframe();