/* * Jalview - A Sequence Alignment Editor and Viewer * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package jalview.gui; import jalview.datamodel.*; import java.awt.*; import java.util.*; /** * DOCUMENT ME! * * @author $author$ * @version $Revision$ */ public class PaintRefresher { static Hashtable components; /** * DOCUMENT ME! * * @param comp DOCUMENT ME! * @param al DOCUMENT ME! */ public static void Register(Component comp, String seqSetId) { if (components == null) components = new Hashtable(); if (components.containsKey(seqSetId)) { Vector comps = (Vector) components.get(seqSetId); if(!comps.contains(comp)) comps.addElement(comp); } else { Vector vcoms = new Vector(); vcoms.addElement(comp); components.put(seqSetId, vcoms); } } public static void RemoveComponent(Component comp) { if (components == null) return; Enumeration en = components.keys(); while(en.hasMoreElements()) { String id = en.nextElement().toString(); Vector comps = (Vector) components.get(id); comps.remove(comp); if(comps.size()==0) { components.remove(id); } } } public static void Refresh(Component source, String id) { Refresh( source, id, null, null); } public static void Refresh(Component source, String id, SequenceI removeSeq, SequenceI addSeq) { if (components == null) return; Component comp; Vector comps = (Vector) components.get(id); if(comps==null) { return; } Enumeration e = comps.elements(); while (e.hasMoreElements()) { comp = (Component) e.nextElement(); if(comp==source) continue; if (!comp.isValid()) { comps.removeElement(comp); } else if(comp instanceof AlignmentPanel) { AlignmentPanel ap = (AlignmentPanel)comp; if(addSeq!=null) ap.av.alignment.addSequence(addSeq); if(removeSeq!=null) ap.av.alignment.deleteSequence(removeSeq); // if(source instanceof AlignmentPanel) // ap.av.alignment.setGroups( // ((AlignmentPanel)source).av.alignment.getGroups() ); } comp.repaint(); } } }