X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FTreeCanvas.java;h=29ba52b4203913dafd8a5b0097329d95723e3b89;hb=9a20ebe6844fd13b704e5b73fe752bd00230aba6;hp=85ee4bf71a49b94cec8f9ff7e05dbf094b332b49;hpb=b55254252bf3878bb7cfd68f7a3dc4b064f3d9c8;p=jalview.git diff --git a/src/jalview/gui/TreeCanvas.java b/src/jalview/gui/TreeCanvas.java index 85ee4bf..29ba52b 100755 --- a/src/jalview/gui/TreeCanvas.java +++ b/src/jalview/gui/TreeCanvas.java @@ -27,9 +27,8 @@ import jalview.datamodel.Sequence; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.datamodel.SequenceNode; +import jalview.gui.JalviewColourChooser.ColourChooserListener; import jalview.schemes.ColourSchemeI; -import jalview.schemes.ColourSchemeProperty; -import jalview.schemes.UserColourScheme; import jalview.structure.SelectionSource; import jalview.util.Format; import jalview.util.MessageManager; @@ -55,7 +54,6 @@ import java.util.Hashtable; import java.util.List; import java.util.Vector; -import javax.swing.JColorChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; @@ -79,9 +77,9 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, TreePanel tp; - AlignViewport av; + private AlignViewport av; - AlignmentPanel ap; + private AlignmentPanel ap; Font font; @@ -99,7 +97,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, int offy; - float threshold; + private float threshold; String longestName; @@ -129,7 +127,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, { this.tp = tp; this.av = ap.av; - this.ap = ap; + this.setAssociatedPanel(ap); font = av.getFont(); scrollPane = scroller; addMouseListener(this); @@ -514,21 +512,18 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, node.color = c; if (node.element() instanceof SequenceI) { + final SequenceI seq = (SequenceI) node.element(); AlignmentPanel[] aps = getAssociatedPanels(); if (aps != null) { for (int a = 0; a < aps.length; a++) { - final SequenceI seq = (SequenceI) node.element(); aps[a].av.setSequenceColour(seq, c); } } } - if ((node.left() != null) || (node.right() != null)) // TODO: internal node - { - setColor((SequenceNode) node.left(), c); - setColor((SequenceNode) node.right(), c); - } + setColor((SequenceNode) node.left(), c); + setColor((SequenceNode) node.right(), c); } /** @@ -835,15 +830,17 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, */ 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(); - } + String ttl = MessageManager.getString("label.select_subtree_colour"); + ColourChooserListener listener = new ColourChooserListener() { + @Override + public void colourSelected(Color c) + { + setColor(highlightNode, c); + PaintRefresher.Refresh(tp, ap.av.getSequenceSetId()); + repaint(); + } + }; + JalviewColourChooser.showColourChooser(this, ttl, highlightNode.color, listener); } @Override @@ -922,7 +919,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, if (ob instanceof SequenceI) { treeSelectionChanged((Sequence) ob); - PaintRefresher.Refresh(tp, ap.av.getSequenceSetId()); + PaintRefresher.Refresh(tp, getAssociatedPanel().av.getSequenceSetId()); repaint(); av.sendSelection(); return; @@ -954,6 +951,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, .deleteAllGroups(); aps[a].av.getCodingComplement().clearSequenceColours(); } + aps[a].av.setUpdateStructures(true); } colourGroups(groups); @@ -967,7 +965,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, } } - PaintRefresher.Refresh(tp, ap.av.getSequenceSetId()); + PaintRefresher.Refresh(tp, getAssociatedPanel().av.getSequenceSetId()); repaint(); } @@ -997,54 +995,40 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, } ColourSchemeI cs = null; - SequenceGroup sg = new SequenceGroup(sequences, null, cs, true, true, + SequenceGroup _sg = new SequenceGroup(sequences, null, cs, true, true, false, 0, av.getAlignment().getWidth() - 1); - if (av.getGlobalColourScheme() != null) - { - if (av.getGlobalColourScheme() instanceof UserColourScheme) - { - cs = new UserColourScheme( - ((UserColourScheme) av.getGlobalColourScheme()) - .getColours()); - - } - else - { - cs = ColourSchemeProperty.getColourScheme(av, sg, - ColourSchemeProperty - .getColourName(av.getGlobalColourScheme())); - } - // cs is null if shading is an annotationColourGradient - // if (cs != null) - // { - // cs.setThreshold(av.getViewportColourScheme().getThreshold(), - // av.isIgnoreGapsConsensus()); - // } - } - sg.setColourScheme(cs); - sg.getGroupColourScheme().setThreshold( - av.getResidueShading().getThreshold(), - av.isIgnoreGapsConsensus()); - // sg.recalcConservation(); - sg.setName("JTreeGroup:" + sg.hashCode()); - sg.setIdColour(col); + _sg.setName("JTreeGroup:" + _sg.hashCode()); + _sg.setIdColour(col); for (int a = 0; a < aps.length; a++) { - if (aps[a].av.getGlobalColourScheme() != null - && aps[a].av.getResidueShading().conservationApplied()) + SequenceGroup sg = new SequenceGroup(_sg); + AlignViewport viewport = aps[a].av; + + // Propagate group colours in each view + if (viewport.getGlobalColourScheme() != null) { - Conservation c = new Conservation("Group", sg.getSequences(null), - sg.getStartRes(), sg.getEndRes()); - c.calculate(); - c.verdict(false, aps[a].av.getConsPercGaps()); - sg.cs.setConservation(c); + cs = viewport.getGlobalColourScheme().getInstance(viewport, sg); + sg.setColourScheme(cs); + sg.getGroupColourScheme().setThreshold( + viewport.getResidueShading().getThreshold(), + viewport.isIgnoreGapsConsensus()); + + if (viewport.getResidueShading().conservationApplied()) + { + Conservation c = new Conservation("Group", + sg.getSequences(null), sg.getStartRes(), + sg.getEndRes()); + c.calculate(); + c.verdict(false, viewport.getConsPercGaps()); + sg.cs.setConservation(c); + } } // indicate that associated structure views will need an update - aps[a].av.setUpdateStructures(true); + viewport.setUpdateStructures(true); // propagate structure view update and sequence group to complement view - aps[a].av.addSequenceGroup(new SequenceGroup(sg)); + viewport.addSequenceGroup(sg); } } @@ -1107,7 +1091,47 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, } else { - return new AlignmentPanel[] { ap }; + return new AlignmentPanel[] { getAssociatedPanel() }; } } + + public AlignmentPanel getAssociatedPanel() + { + return ap; + } + + public void setAssociatedPanel(AlignmentPanel ap) + { + this.ap = ap; + } + + public AlignViewport getViewport() + { + return av; + } + + public void setViewport(AlignViewport av) + { + this.av = av; + } + + public float getThreshold() + { + return threshold; + } + + public void setThreshold(float threshold) + { + this.threshold = threshold; + } + + public boolean isApplyToAllViews() + { + return this.applyToAllViews; + } + + public void setApplyToAllViews(boolean applyToAllViews) + { + this.applyToAllViews = applyToAllViews; + } }