changeset 1981:d45a7d554e2e

Automatically call processAndDrawTreeMap when tree model updated PR3059 Reviewed-by: jkang Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-June/019844.html Original-thread: http://icedtea.classpath.org/pipermail/thermostat/2015-September/016043.html
author James Aziz <jaziz@redhat.com>
date Wed, 29 Jun 2016 12:23:07 -0400
parents f1aa6970ef55
children 426125707721
files client/swing/src/main/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapComponent.java client/swing/src/test/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapComponentTest.java vm-heap-analysis/client-swing/src/main/java/com/redhat/thermostat/vm/heap/analysis/client/swing/internal/SwingHeapTreeMapView.java
diffstat 3 files changed, 42 insertions(+), 39 deletions(-) [+]
line wrap: on
line diff
--- a/client/swing/src/main/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapComponent.java	Wed Jun 29 12:23:02 2016 -0400
+++ b/client/swing/src/main/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapComponent.java	Wed Jun 29 12:23:07 2016 -0400
@@ -203,6 +203,7 @@
         this.zoomStack.clear();
         this.zoomStack.push(this.tree);
         resetTreeMapNodeWeights(this.tree);
+        processAndDrawTreeMap(this.tree);
     }
 
     private void resetTreeMapNodeWeights(TreeMapNode node) {
@@ -384,7 +385,10 @@
         return null;
     }
 
-    public void processAndDrawTreeMap(TreeMapNode root) {
+    /**
+     * Package-private for testing only.
+     */
+    void processAndDrawTreeMap(TreeMapNode root) {
         tree = Objects.requireNonNull(root);
         Rectangle2D.Double newArea = tree.getRectangle();
         // give to the root node the size of this object so it can be recalculated
--- a/client/swing/src/test/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapComponentTest.java	Wed Jun 29 12:23:02 2016 -0400
+++ b/client/swing/src/test/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapComponentTest.java	Wed Jun 29 12:23:07 2016 -0400
@@ -118,22 +118,27 @@
     }
 
     @Test
-    public final void testSetModel() {
-        try {
-            treeMap = new TreeMapComponent();
-            treeMap.setModel(tree);
-        } catch (NullPointerException e) {
-            Assert.fail("Didn't expect exception.");
-        }
+    public final void testSetModel() throws InvocationTargetException, InterruptedException {
+        SwingUtilities.invokeAndWait(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    treeMap = new TreeMapComponent();
+                    treeMap.setModel(tree);
+                } catch (NullPointerException e) {
+                    Assert.fail("Didn't expect exception.");
+                }
 
-        boolean caught = false;
-        try {
-            treeMap = new TreeMapComponent();
-            treeMap.setModel(null);
-        } catch (NullPointerException e) {
-            caught = true;
-        }
-        assertTrue(caught);
+                boolean caught = false;
+                try {
+                    treeMap = new TreeMapComponent();
+                    treeMap.setModel(null);
+                } catch (NullPointerException e) {
+                    caught = true;
+                }
+                assertTrue(caught);
+            }
+        });
     }
 
     @Test
@@ -163,26 +168,26 @@
 
     @Test
     public final void testIsZoomInEnabled() throws InvocationTargetException, InterruptedException {
-        try {
-            treeMap = new TreeMapComponent();
-            treeMap.setModel(tree);
-            treeMap.isZoomInEnabled(node1);
-        } catch (NullPointerException e) {
-            Assert.fail("Didn't expect exception.");
-        }
-
-        boolean caught = false;
-        try {
-            treeMap = new TreeMapComponent();
-            treeMap.isZoomInEnabled(node1);
-        } catch (NullPointerException e) {
-            caught = true;
-        }
-        assertTrue(caught);
-
         SwingUtilities.invokeAndWait(new Runnable() {
             @Override
             public void run() {
+                try {
+                    treeMap = new TreeMapComponent();
+                    treeMap.setModel(tree);
+                    treeMap.isZoomInEnabled(node1);
+                } catch (NullPointerException e) {
+                    Assert.fail("Didn't expect exception.");
+                }
+
+                boolean caught = false;
+                try {
+                    treeMap = new TreeMapComponent();
+                    treeMap.isZoomInEnabled(node1);
+                } catch (NullPointerException e) {
+                    caught = true;
+                }
+                assertTrue(caught);
+
                 TreeMapComponent treeMap = new TreeMapComponent();
                 treeMap.setModel(tree);
 
@@ -385,9 +390,6 @@
                 final TreeMapComponent treeMap = new TreeMapComponent();
                 treeMap.setModel(modelA);
 
-                // FIXME no other swing component needs the following:
-                treeMap.processAndDrawTreeMap(modelA);
-
                 JPanel container = new JPanel(new BorderLayout());
 
                 JPanel buttonPanel = new JPanel();
@@ -397,7 +399,6 @@
                     public void actionPerformed(ActionEvent e) {
                         TreeMapNode newModel = treeMap.getTreeMapRoot() == modelA ? modelB : modelA;
                         treeMap.setModel(newModel);
-                        treeMap.processAndDrawTreeMap(newModel);
                     }
                 });
                 buttonPanel.add(changeModelButton);
@@ -410,7 +411,6 @@
                         currentModel.addChild(new TreeMapNode("new", 10.0));
 
                         treeMap.setModel(currentModel);
-                        treeMap.processAndDrawTreeMap(currentModel);
                     }
                 });
                 buttonPanel.add(addNewNodeButton);
--- a/vm-heap-analysis/client-swing/src/main/java/com/redhat/thermostat/vm/heap/analysis/client/swing/internal/SwingHeapTreeMapView.java	Wed Jun 29 12:23:02 2016 -0400
+++ b/vm-heap-analysis/client-swing/src/main/java/com/redhat/thermostat/vm/heap/analysis/client/swing/internal/SwingHeapTreeMapView.java	Wed Jun 29 12:23:07 2016 -0400
@@ -65,7 +65,6 @@
     public void display(ObjectHistogram histogram) {
         TreeMapNode model = HistogramConverter.convertToTreeMap(histogram);
         treeMap.setModel(model);
-        treeMap.processAndDrawTreeMap(model);
         panel.add(treeMap, BorderLayout.CENTER);
         panel.add(new TreeMapToolbar(treeMap), BorderLayout.NORTH);
     }