X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FPaintRefresher.java;h=7e203b22d54066c60870b587050eeb85a3717a44;hb=5ea5764f835390ab631afbf54c2de40f63aa8f31;hp=326bac0ce46b4cd4b4a782adf6bd9f12293f371b;hpb=461d9cd18036c268ae890fcf2418e9ac181b3c61;p=jalview.git diff --git a/src/jalview/gui/PaintRefresher.java b/src/jalview/gui/PaintRefresher.java index 326bac0..7e203b2 100755 --- a/src/jalview/gui/PaintRefresher.java +++ b/src/jalview/gui/PaintRefresher.java @@ -39,6 +39,9 @@ import java.util.Map; */ public class PaintRefresher { + private static final int ALIGNMENT_CHANGED = 1 << 0; + private static final int VALIDATE_SEQUENCES = 1 << 1; + static Map> components = new HashMap<>(); /** @@ -101,25 +104,32 @@ public class PaintRefresher { List comps = components.get(id); + int mode = (alignmentChanged ? ALIGNMENT_CHANGED : 0) | (validateSequences ? VALIDATE_SEQUENCES : 0); if (comps == null) { return; } + repaintComponents(source, mode, comps.toArray(new Component[comps.size()])); + } - for (Component comp : comps) + public static void repaintComponents(Component source, int mode, + Component... comps) + { + for (int i = 0; i < comps.length; i++) { - if (comp == source) + Component comp = comps[i]; + if (comp == null) { continue; } if (comp instanceof AlignmentPanel) { - if (validateSequences && source instanceof AlignmentPanel) + if ((mode & VALIDATE_SEQUENCES) != 0 && source instanceof AlignmentPanel) { validateSequences(((AlignmentPanel) source).av.getAlignment(), ((AlignmentPanel) comp).av.getAlignment()); } - if (alignmentChanged) + if ((mode & ALIGNMENT_CHANGED) != 0) { ((AlignmentPanel) comp).alignmentChanged(); } @@ -262,4 +272,5 @@ public class PaintRefresher return tmp.toArray(new AlignmentPanel[tmp.size()]); } + }