changeset 1998:c5a118f7a7e2

Backport TreeMapComponentTest from Fix treemap scaling imprecision patch PR3070 This is a backport for part of HEAD commit http://icedtea.classpath.org/hg/thermostat/rev/69e625679328 - just TreeMapComponentTest, which was not backported in http://icedtea.classpath.org/hg/release/thermostat-1.6/rev/7db129297a73 Reviewed-by: jkang Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-June/020062.html Original-thread: http://icedtea.classpath.org/pipermail/thermostat/2015-October/016635.html
author James Aziz <jaziz@redhat.com>
date Thu, 30 Jun 2016 11:35:49 -0400
parents cbf98b5f488d
children 8a65bb11a6f9
files client/swing/src/test/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapComponentTest.java
diffstat 1 files changed, 48 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/client/swing/src/test/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapComponentTest.java	Thu Jun 30 10:20:27 2016 -0400
+++ b/client/swing/src/test/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapComponentTest.java	Thu Jun 30 11:35:49 2016 -0400
@@ -54,6 +54,9 @@
 import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
 
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.not;
@@ -498,6 +501,14 @@
         );
     }
 
+    private static void findAllNodes(List<TreeMapNode> allNodes, final TreeMapNode node) {
+        for(TreeMapNode child : node.getChildren()) {
+            findAllNodes(allNodes, child);
+        }
+
+        allNodes.add(node);
+    }
+
     public static void main(String[] args) {
         SwingUtilities.invokeLater(new Runnable() {
 
@@ -511,13 +522,21 @@
                 modelA.addChild(new TreeMapNode("AB", 3.0));
 
                 final TreeMapNode modelB = new TreeMapNode("B", 5.0);
-                modelB.addChild(new TreeMapNode("BA", 10.0));
-                modelB.addChild(new TreeMapNode("BB", 10.0));
+                final Random generator = new Random();
+                for (int i = 0; i < 100; i++) {
+                    List<TreeMapNode> allNodes = new ArrayList<>();
+                    findAllNodes(allNodes, modelB);
+                    int parentInt = generator.nextInt(allNodes.size());
+                    TreeMapNode parent = allNodes.get(parentInt);
+                    double weight = Math.pow(10, generator.nextInt(4));
+                    parent.addChild(new TreeMapNode("n" + i,  weight));
+                }
 
                 // FIXME this hack should not be needed
                 UIManager.put("thermostat-default-font", Font.decode(Font.MONOSPACED));
 
                 final TreeMapComponent treeMap = new TreeMapComponent();
+                treeMap.setToolTipRenderer(new WeightRenderer());
                 treeMap.setModel(modelA);
 
                 JPanel container = new JPanel(new BorderLayout());
@@ -533,29 +552,51 @@
                 });
                 buttonPanel.add(changeModelButton);
 
-                JButton addNewNodeButton = new JButton("Add new node");
-                addNewNodeButton.addActionListener(new ActionListener() {
+                JButton addChildToRootButton = new JButton("Add child to root");
+                addChildToRootButton.addActionListener(new ActionListener() {
                     @Override
                     public void actionPerformed(ActionEvent e) {
                         TreeMapNode currentModel = treeMap.getTreeMapRoot();
-                        currentModel.addChild(new TreeMapNode("new", 10.0));
+                        currentModel.addChild(new TreeMapNode("new", 5.0));
 
                         treeMap.setModel(currentModel);
                     }
                 });
-                buttonPanel.add(addNewNodeButton);
+                buttonPanel.add(addChildToRootButton);
+
+                JButton addRandomNodeButton = new JButton("Add random node");
+                addRandomNodeButton.addActionListener(new ActionListener() {
+                    @Override
+                    public void actionPerformed(ActionEvent e) {
+                        TreeMapNode currentModel = treeMap.getTreeMapRoot();
+                        List<TreeMapNode> allNodes = new ArrayList<>();
+                        findAllNodes(allNodes, currentModel);
+                        TreeMapNode parent = allNodes.get(generator.nextInt(allNodes.size()));
+                        double weight = Math.pow(10, generator.nextInt(4));
+                        parent.addChild(new TreeMapNode("rand", weight));
+
+                        treeMap.setModel(currentModel);
+                    }
+                });
+                buttonPanel.add(addRandomNodeButton);
 
                 container.add(buttonPanel, BorderLayout.PAGE_START);
                 container.add(treeMap, BorderLayout.CENTER);
 
                 mainWindow.add(container, BorderLayout.CENTER);
 
-                mainWindow.setSize(400, 200);
+                mainWindow.setSize(500, 200);
                 mainWindow.setVisible(true);
             }
         });
     }
 
+    public static class WeightRenderer implements TreeMapComponent.ToolTipRenderer {
+        @Override
+        public String render(TreeMapNode node) {
+            return node.getLabel() + " RW:" + node.getRealWeight() + " W:" + node.getWeight();
+        }
+    }
     interface KeyShortcutTestResultHandler {
         void handle(KeyShortcutTestResults results);
     }