# HG changeset patch # User James Aziz # Date 1467300949 14400 # Node ID c5a118f7a7e29ebe08631333265b246f5efce763 # Parent cbf98b5f488d99fcd22a7049e61b7067297a27ac 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 diff -r cbf98b5f488d -r c5a118f7a7e2 client/swing/src/test/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapComponentTest.java --- 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 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 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 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); }