Mercurial > hg > thermostat
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(); + } }