From 23dc8a670759fccf7f8f7a72d3a856645c06ae8f Mon Sep 17 00:00:00 2001 From: jprocter Date: Wed, 12 Nov 2008 16:59:32 +0000 Subject: [PATCH] new window discovery and alignment view navigation methods --- src/jalview/gui/Desktop.java | 98 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 94 insertions(+), 4 deletions(-) diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index 9a89b0a..a0b93fb 100755 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -669,7 +669,11 @@ public class Desktop extends jalview.jbgui.GDesktop implements } } System.out.println("ALL CLOSED"); - + if (v_client!=null) + { + // TODO clear binding to vamsas document objects on close_all + + } } public void raiseRelated_actionPerformed(ActionEvent e) @@ -920,8 +924,19 @@ public class Desktop extends jalview.jbgui.GDesktop implements public static int getViewCount(String viewId) { + AlignViewport[] aps = getViewports(viewId); + return (aps==null) ? 0 : aps.length; + } + /** + * + * @param viewId + * @return all AlignmentPanels concerning the viewId sequence set + */ + public static AlignmentPanel[] getAlignmentPanels(String viewId) + { int count = 0; JInternalFrame[] frames = Desktop.desktop.getAllFrames(); + ArrayList aps = new ArrayList(); for (int t = 0; t < frames.length; t++) { if (frames[t] instanceof AlignFrame) @@ -933,13 +948,67 @@ public class Desktop extends jalview.jbgui.GDesktop implements .equals(((AlignmentPanel) af.alignPanels.elementAt(a)).av .getSequenceSetId())) { - count++; + aps.add(af.alignPanels.elementAt(a)); } } } } - - return count; + if (aps.size()==0) + { + return null; + } + AlignmentPanel[] vap = new AlignmentPanel[aps.size()]; + for (int t=0;t 0) + { + AlignViewport[] vp = new AlignViewport[viewp.size()]; + viewp.copyInto(vp); + return vp; + } + } + return null; } public void explodeViews(AlignFrame af) @@ -1479,4 +1548,25 @@ public class Desktop extends jalview.jbgui.GDesktop implements progressBars.put(new Long(id), addProgressPanel(message)); } } + + /** + * This will return the first AlignFrame viewing AlignViewport av. It will + * break if there are more than one AlignFrames viewing a particular av. This + * + * @param av + * @return alignFrame for av + */ + public static AlignFrame getAlignFrameFor(AlignViewport av) + { + if (desktop != null) + { + AlignmentPanel[] aps = getAlignmentPanels(av.getSequenceSetId()); + for (int panel=0;aps!=null && panel