X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FDesktop.java;h=e2a57af6fb4aeb6a53761a92b05d244f9dba86ae;hb=95ceead3cb4ea5aa5260e1fd4ab53658b64866e1;hp=6eeb0c28a362c93abda32c787f9fb62c5ab14541;hpb=510c06b503a68cdd11bc75f6b7837fd8e92adfc5;p=jalview.git diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index 6eeb0c2..e2a57af 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -68,6 +68,7 @@ import java.lang.reflect.Constructor; import java.net.URL; import java.util.ArrayList; import java.util.Hashtable; +import java.util.List; import java.util.StringTokenizer; import java.util.Vector; import java.util.concurrent.ExecutorService; @@ -1638,39 +1639,41 @@ public class Desktop extends jalview.jbgui.GDesktop implements */ public static AlignmentPanel[] getAlignmentPanels(String alignmentId) { - int count = 0; if (Desktop.desktop == null) { // no frames created and in headless mode // TODO: verify that frames are recoverable when in headless mode return null; } - JInternalFrame[] frames = Desktop.desktop.getAllFrames(); - ArrayList aps = new ArrayList(); - for (int t = 0; t < frames.length; t++) + List aps = new ArrayList(); + AlignFrame[] frames = getAlignFrames(); + if (frames == null) + { + return null; + } + for (AlignFrame af : frames) { - if (frames[t] instanceof AlignFrame) + for (AlignmentPanel ap : af.alignPanels) { - AlignFrame af = (AlignFrame) frames[t]; - for (int a = 0; a < af.alignPanels.size(); a++) + if (alignmentId.equals(ap.av.getSequenceSetId())) { - if (alignmentId.equals(((AlignmentPanel) af.alignPanels - .elementAt(a)).av.getSequenceSetId())) - { - aps.add(af.alignPanels.elementAt(a)); - } + aps.add(ap); } } + // for (int a = 0; a < af.alignPanels.size(); a++) + // { + // if (alignmentId.equals(af.alignPanels + // .get(a).av.getSequenceSetId())) + // { + // aps.add(af.alignPanels.get(a)); + // } + // } } if (aps.size() == 0) { return null; } - AlignmentPanel[] vap = new AlignmentPanel[aps.size()]; - for (int t = 0; t < vap.length; t++) - { - vap[t] = (AlignmentPanel) aps.get(t); - } + AlignmentPanel[] vap = aps.toArray(new AlignmentPanel[aps.size()]); return vap; } @@ -1699,11 +1702,10 @@ public class Desktop extends jalview.jbgui.GDesktop implements { for (int a = 0; a < afr.alignPanels.size(); a++) { - if (sequenceSetId.equals(((AlignmentPanel) afr.alignPanels - .elementAt(a)).av.getSequenceSetId())) + if (sequenceSetId.equals(afr.alignPanels.get(a).av + .getSequenceSetId())) { - viewp.addElement(((AlignmentPanel) afr.alignPanels - .elementAt(a)).av); + viewp.addElement(afr.alignPanels.get(a).av); } } } @@ -1734,7 +1736,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements for (int i = 0; i < size; i++) { - AlignmentPanel ap = (AlignmentPanel) af.alignPanels.elementAt(i); + AlignmentPanel ap = af.alignPanels.get(i); AlignFrame newaf = new AlignFrame(ap); if (ap.av.explodedPosition != null && !ap.av.explodedPosition.equals(af.getBounds())) @@ -1768,7 +1770,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements boolean gatherThis = false; for (int a = 0; a < af.alignPanels.size(); a++) { - AlignmentPanel ap = (AlignmentPanel) af.alignPanels.elementAt(a); + AlignmentPanel ap = af.alignPanels.get(a); if (viewId.equals(ap.av.getSequenceSetId())) { gatherThis = true; @@ -2277,7 +2279,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements /** * Accessor method to quickly get all the AlignmentFrames loaded. */ - public static AlignFrame[] getAlignframes() + public static AlignFrame[] getAlignFrames() { JInternalFrame[] frames = Desktop.desktop.getAllFrames(); @@ -2285,35 +2287,43 @@ public class Desktop extends jalview.jbgui.GDesktop implements { return null; } - Vector avp = new Vector(); - try + List avp = new ArrayList(); + // REVERSE ORDER + for (int i = frames.length - 1; i > -1; i--) { - // REVERSE ORDER - for (int i = frames.length - 1; i > -1; i--) + if (frames[i] instanceof AlignFrame) { - if (frames[i] instanceof AlignFrame) + avp.add((AlignFrame) frames[i]); + } + else if (frames[i] instanceof SplitFrame) + { + /* + * Also check for a split frame containing an AlignFrame + */ + SplitFrame sf = (SplitFrame) frames[i]; + if (sf.getTopComponent() instanceof AlignFrame) { - AlignFrame af = (AlignFrame) frames[i]; - avp.addElement(af); + avp.add((AlignFrame) sf.getTopComponent()); + } + if (sf.getBottomComponent() instanceof AlignFrame) + { + avp.add((AlignFrame) sf.getBottomComponent()); } } - } catch (Exception ex) - { - ex.printStackTrace(); } if (avp.size() == 0) { return null; } - AlignFrame afs[] = new AlignFrame[avp.size()]; - for (int i = 0, j = avp.size(); i < j; i++) - { - afs[i] = (AlignFrame) avp.elementAt(i); - } - avp.clear(); + AlignFrame afs[] = avp.toArray(new AlignFrame[avp.size()]); return afs; } + /** + * Returns an array of any AppJmol frames in the Desktop (or null if none). + * + * @return + */ public AppJmol[] getJmols() { JInternalFrame[] frames = Desktop.desktop.getAllFrames(); @@ -2322,32 +2332,21 @@ public class Desktop extends jalview.jbgui.GDesktop implements { return null; } - Vector avp = new Vector(); - try + List avp = new ArrayList(); + // REVERSE ORDER + for (int i = frames.length - 1; i > -1; i--) { - // REVERSE ORDER - for (int i = frames.length - 1; i > -1; i--) + if (frames[i] instanceof AppJmol) { - if (frames[i] instanceof AppJmol) - { - AppJmol af = (AppJmol) frames[i]; - avp.addElement(af); - } + AppJmol af = (AppJmol) frames[i]; + avp.add(af); } - } catch (Exception ex) - { - ex.printStackTrace(); } if (avp.size() == 0) { return null; } - AppJmol afs[] = new AppJmol[avp.size()]; - for (int i = 0, j = avp.size(); i < j; i++) - { - afs[i] = (AppJmol) avp.elementAt(i); - } - avp.clear(); + AppJmol afs[] = avp.toArray(new AppJmol[avp.size()]); return afs; } @@ -2471,7 +2470,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements /** * This will return the first AlignFrame viewing AlignViewport av. It will - * break if there are more than one AlignFrames viewing a particular av. This + * break if there are more than one AlignFrames viewing a particular av. * * @param av * @return alignFrame for av