X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FTreeCanvas.java;h=254d032605980b6c627fee32fc73823d85e41792;hb=0d74306f282be2d15eeb5d8de53a949c0124a0a5;hp=f21c5e75a916068a7538fd66fdeecf67a80c75a7;hpb=69bab27e77ceaca6d12e0de49f8fc62e01678f53;p=jalview.git diff --git a/src/jalview/gui/TreeCanvas.java b/src/jalview/gui/TreeCanvas.java index f21c5e7..254d032 100755 --- a/src/jalview/gui/TreeCanvas.java +++ b/src/jalview/gui/TreeCanvas.java @@ -59,6 +59,7 @@ import java.util.Vector; import javax.swing.JColorChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; +import javax.swing.SwingUtilities; import javax.swing.ToolTipManager; /** @@ -788,39 +789,57 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, @Override public void mouseClicked(MouseEvent evt) { - if (highlightNode != null) + if (highlightNode == null) { - if (evt.isPopupTrigger()) - { - Color col = JColorChooser.showDialog(this, - MessageManager.getString("label.select_subtree_colour"), - highlightNode.color); - if (col != null) - { - setColor(highlightNode, col); - } - } - else if (evt.getClickCount() > 1) + return; + } + + /* + * isPopupTrigger is set on mouseReleased / + * mouseClicked on Windows + */ + if (evt.isPopupTrigger()) + { + chooseSubtreeColour(); + } + else if (evt.getClickCount() > 1) + { + tree.swapNodes(highlightNode); + tree.reCount(tree.getTopNode()); + tree.findHeight(tree.getTopNode()); + } + else + { + Vector leaves = new Vector(); + tree.findLeaves(highlightNode, leaves); + + for (int i = 0; i < leaves.size(); i++) { - tree.swapNodes(highlightNode); - tree.reCount(tree.getTopNode()); - tree.findHeight(tree.getTopNode()); + SequenceI seq = (SequenceI) ((SequenceNode) leaves.elementAt(i)) + .element(); + treeSelectionChanged(seq); } - else - { - Vector leaves = new Vector(); - tree.findLeaves(highlightNode, leaves); + av.sendSelection(); + } - for (int i = 0; i < leaves.size(); i++) - { - SequenceI seq = (SequenceI) ((SequenceNode) leaves.elementAt(i)) - .element(); - treeSelectionChanged(seq); - } - av.sendSelection(); - } + PaintRefresher.Refresh(tp, av.getSequenceSetId()); + repaint(); + } - PaintRefresher.Refresh(tp, av.getSequenceSetId()); + /** + * Offer the user the option to choose a colour for the highlighted node and + * its children; this colour is also applied to the corresponding sequence ids + * in the alignment + */ + void chooseSubtreeColour() + { + Color col = JColorChooser.showDialog(this, + MessageManager.getString("label.select_subtree_colour"), + highlightNode.color); + if (col != null) + { + setColor(highlightNode, col); + PaintRefresher.Refresh(tp, ap.av.getSequenceSetId()); repaint(); } } @@ -867,6 +886,29 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, { av.setCurrentTree(tree); + /* + * isPopupTrigger is set for mousePressed (Mac) + * or mouseReleased / mouseClicked (Windows) + */ + if (e.isPopupTrigger()) + { + if (highlightNode != null) + { + chooseSubtreeColour(); + } + return; + } + + /* + * defer right-click handling on Windows to + * mouseClicked; this also matches Cmd-click on Mac + * which should do nothing here + */ + if (SwingUtilities.isRightMouseButton(e)) + { + return; + } + int x = e.getX(); int y = e.getY(); @@ -993,17 +1035,14 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, .getCodingComplement(); if (codingComplement != null) { - if (codingComplement != null) + SequenceGroup mappedGroup = MappingUtils.mapSequenceGroup(sg, av, + codingComplement); + if (mappedGroup.getSequences().size() > 0) { - SequenceGroup mappedGroup = MappingUtils.mapSequenceGroup(sg, - av, codingComplement); - if (mappedGroup.getSequences().size() > 0) + codingComplement.getAlignment().addGroup(mappedGroup); + for (SequenceI seq : mappedGroup.getSequences()) { - codingComplement.getAlignment().addGroup(mappedGroup); - for (SequenceI seq : mappedGroup.getSequences()) - { - codingComplement.setSequenceColour(seq, col.brighter()); - } + codingComplement.setSequenceColour(seq, col.brighter()); } } } @@ -1022,11 +1061,8 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, { ((AlignViewport) codingComplement).getAlignPanel() .updateAnnotation(); - } - } - } /**