changeset 2521:4c9a6a364937

Fix "remember the last selected vm" when switching vms review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-November/021576.html reviewed-by: aazores
author Mario Torre <neugens.limasoftware@gmail.com>
date Mon, 14 Nov 2016 17:42:15 +0100
parents 2bc6a978f664
children 033239a30981
files client/core/src/main/java/com/redhat/thermostat/client/ui/VmInformationController.java client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/MainWindowControllerImpl.java client/swing/src/test/java/com/redhat/thermostat/client/swing/internal/MainWindowControllerImplTest.java
diffstat 3 files changed, 35 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/client/core/src/main/java/com/redhat/thermostat/client/ui/VmInformationController.java	Mon Nov 14 11:34:41 2016 -0500
+++ b/client/core/src/main/java/com/redhat/thermostat/client/ui/VmInformationController.java	Mon Nov 14 17:42:15 2016 +0100
@@ -109,7 +109,7 @@
         view = provider.createView();
     }
 
-    void rebuild() {
+    public void rebuild() {
         List<UIPluginInfo> plugins = new ArrayList<>();
 
         view.clear();
--- a/client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/MainWindowControllerImpl.java	Mon Nov 14 11:34:41 2016 -0500
+++ b/client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/MainWindowControllerImpl.java	Mon Nov 14 17:42:15 2016 +0100
@@ -334,7 +334,11 @@
     ActionListener<ThermostatExtensionRegistry.Action> getMenuListener() {
         return menuListener;
     }
-    
+
+    VmInformationControllerProvider __test__getVmInfoControllerProvider() {
+        return vmInfoControllerProvider;
+    }
+
     private void initHostVMTree() {
         HostTreeController hostController = view.getHostTreeController();
         ReferenceFieldSearchFilter filter = view.getSearchFilter();
@@ -538,7 +542,7 @@
         }
     }
 
-    private class VmInformationControllerProvider {
+    class VmInformationControllerProvider {
         private VmInformationController lastSelectedVM;
         private Map<VmRef, Integer> selectedForVM = new ConcurrentHashMap<>();
         private Map<VmRef, VmInformationController> cachedControllers = new ConcurrentHashMap<>();
@@ -556,6 +560,8 @@
                 cachedControllers.put(vmRef, lastSelectedVM);
             }
 
+            lastSelectedVM.rebuild();
+
             if (!lastSelectedVM.selectChildID(id)) {
                 Integer _id = selectedForVM.get(vmRef);
                 id = _id != null ? _id : 0;
@@ -578,7 +584,7 @@
                                              dymamicHostPluginTracker.getPluginProviders());
     }
 
-    private VmInformationController createVmController(VmRef ref) {
+    VmInformationController createVmController(VmRef ref) {
         List<InformationService<VmRef>> vmInfoServices = infoServiceTracker.getVmInformationServices();
         return new VmInformationController(vmInfoServices, ref, vmInfoViewProvider,
                                            dymamicVMPluginTracker.getPluginProviders());
--- a/client/swing/src/test/java/com/redhat/thermostat/client/swing/internal/MainWindowControllerImplTest.java	Mon Nov 14 11:34:41 2016 -0500
+++ b/client/swing/src/test/java/com/redhat/thermostat/client/swing/internal/MainWindowControllerImplTest.java	Mon Nov 14 17:42:15 2016 +0100
@@ -56,8 +56,10 @@
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 
+import com.redhat.thermostat.client.swing.internal.MainWindowControllerImpl.VmInformationControllerProvider;
 import com.redhat.thermostat.client.swing.internal.search.ReferenceFieldSearchFilter;
 import com.redhat.thermostat.client.ui.ContentProvider;
+import com.redhat.thermostat.client.ui.VmInformationController;
 import com.redhat.thermostat.common.Filter;
 import com.redhat.thermostat.storage.core.HostRef;
 import com.redhat.thermostat.storage.core.VmRef;
@@ -133,6 +135,9 @@
     private IssueViewController issueViewController;
     private IssueView issueView;
 
+    private ApplicationService appSvc;
+    private RegistryFactory registryFactory;
+
     private ContextActionController contextController;
     private ReferenceFieldSearchFilter referenceFieldSearchFilter;
     private HostMonitor hostMonitor;
@@ -152,7 +157,7 @@
 
         // Setup timers
         TimerFactory timerFactory = mock(TimerFactory.class);
-        ApplicationService appSvc = mock(ApplicationService.class);
+        appSvc = mock(ApplicationService.class);
         when (appSvc.getTimerFactory()).thenReturn(timerFactory);
 
         Keyring keyring = mock(Keyring.class);
@@ -232,7 +237,7 @@
         ProgressNotifier notifier = mock(ProgressNotifier.class);
         when(view.getNotifier()).thenReturn(notifier);
 
-        RegistryFactory registryFactory = mock(RegistryFactory.class);
+        registryFactory = mock(RegistryFactory.class);
         hostFilterRegistry = mock(ReferenceFilterRegistry.class);
 
         menus = mock(MenuRegistry.class);
@@ -328,5 +333,23 @@
         inOrder.verify(treeController).clearSelection();
         inOrder.verify(view).setContent(issueViewController);
     }
+
+    @Test
+    public void testVMControllerProviderRebuildsView() {
+
+        final VmInformationController controller0 = mock(VmInformationController.class);
+        controller = new MainWindowControllerImpl(context, appSvc, view, registryFactory, shutdown, uriOpener) {
+            @Override
+            VmInformationController createVmController(VmRef ref) {
+                return controller0;
+            }
+        };
+
+        VmInformationControllerProvider provider = controller.__test__getVmInfoControllerProvider();
+
+        provider.getVmInfoController(vm1);
+
+        verify(controller0).rebuild();
+    }
 }