From 40460cd7a6f6d80c6a8c2f86c5bc55d941445975 Mon Sep 17 00:00:00 2001 From: jprocter Date: Wed, 8 Sep 2010 14:10:29 +0000 Subject: [PATCH] trap NPE possiblity for trees that have no associated alignment panels (usually because they've been closed) --- src/jalview/gui/TreeCanvas.java | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/jalview/gui/TreeCanvas.java b/src/jalview/gui/TreeCanvas.java index c2b9b7f..a66f251 100755 --- a/src/jalview/gui/TreeCanvas.java +++ b/src/jalview/gui/TreeCanvas.java @@ -247,8 +247,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, } String name = (markPlaceholders && node.isPlaceholder()) ? (PLACEHOLDER + node - .getName()) - : node.getName(); + .getName()) : node.getName(); int charWidth = fm.stringWidth(name) + 3; int charHeight = font.getSize(); @@ -487,9 +486,12 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, if (node.element() instanceof SequenceI) { AlignmentPanel[] aps = getAssociatedPanels(); - for (int a = 0; a < aps.length; a++) + if (aps != null) { - aps[a].av.setSequenceColour((SequenceI) node.element(), c); + for (int a = 0; a < aps.length; a++) + { + aps[a].av.setSequenceColour((SequenceI) node.element(), c); + } } } } @@ -626,9 +628,8 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, } else { - setPreferredSize(new Dimension(scrollPane.getWidth(), fm - .getHeight() - * nameHash.size())); + setPreferredSize(new Dimension(scrollPane.getWidth(), + fm.getHeight() * nameHash.size())); draw(g, scrollPane.getWidth(), fm.getHeight() * nameHash.size()); } @@ -867,12 +868,12 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, AlignmentPanel[] aps = getAssociatedPanels(); for (int i = 0; i < tree.getGroups().size(); i++) { - Color col = new Color((int) (Math.random() * 255), (int) (Math - .random() * 255), (int) (Math.random() * 255)); + Color col = new Color((int) (Math.random() * 255), + (int) (Math.random() * 255), (int) (Math.random() * 255)); setColor((SequenceNode) tree.getGroups().elementAt(i), col.brighter()); - Vector l = tree.findLeaves((SequenceNode) tree.getGroups().elementAt( - i), new Vector()); + Vector l = tree.findLeaves( + (SequenceNode) tree.getGroups().elementAt(i), new Vector()); Vector sequences = new Vector(); @@ -893,8 +894,9 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, { if (av.getGlobalColourScheme() instanceof UserColourScheme) { - cs = new UserColourScheme(((UserColourScheme) av - .getGlobalColourScheme()).getColours()); + cs = new UserColourScheme( + ((UserColourScheme) av.getGlobalColourScheme()) + .getColours()); } else @@ -904,8 +906,8 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, .getGlobalColourScheme())); } - cs.setThreshold(av.getGlobalColourScheme().getThreshold(), av - .getIgnoreGapsConsensus()); + cs.setThreshold(av.getGlobalColourScheme().getThreshold(), + av.getIgnoreGapsConsensus()); } SequenceGroup sg = new SequenceGroup(sequences, null, cs, true, true, @@ -919,8 +921,8 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, && aps[a].av.getGlobalColourScheme().conservationApplied()) { Conservation c = new Conservation("Group", - ResidueProperties.propHash, 3, sg.getSequences(null), sg - .getStartRes(), sg.getEndRes()); + ResidueProperties.propHash, 3, sg.getSequences(null), + sg.getStartRes(), sg.getEndRes()); c.calculate(); c.verdict(false, aps[a].av.ConsPercGaps); @@ -931,7 +933,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, } } // notify the panel to redo any group specific stuff. - for (int a=0;a