X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=d613ea76c9c37105125924f109b217c874524b50;hb=d10280f7592e21f1ed4d1030d3ece3e95f3b385b;hp=d5f34b30a29ec6b1e0766d23ab7121b1b57ef987;hpb=6a9cf7ddfdb65e38e8caa2d760877725b7f7bae0;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index d5f34b3..d613ea7 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -1537,22 +1537,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /** - * close alignPanel2 and shuffle tabs appropriately. + * Close the specified panel and close up tabs appropriately. * - * @param alignPanel2 + * @param panelToClose */ - public void closeView(AlignmentPanel alignPanel2) + public void closeView(AlignmentPanel panelToClose) { int index = tabbedPane.getSelectedIndex(); - int closedindex = tabbedPane.indexOfComponent(alignPanel2); - alignPanels.remove(alignPanel2); - // Unnecessary - // if (viewport == alignPanel2.av) - // { - // viewport = null; - // } - alignPanel2.closePanel(); - alignPanel2 = null; + int closedindex = tabbedPane.indexOfComponent(panelToClose); + alignPanels.remove(panelToClose); + panelToClose.closePanel(); + panelToClose = null; tabbedPane.removeTabAt(closedindex); tabbedPane.validate(); @@ -1778,18 +1773,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.getAlignment().moveSelectedSequencesByOne(sg, viewport.getHiddenRepSequences(), up); alignPanel.paintAlignment(true); - - final AlignViewportI peer = viewport.getCodingComplement(); - if (peer != null) - { - final SequenceGroup selectionGroup = peer.getSelectionGroup(); - if (selectionGroup != null) - { - peer.getAlignment().moveSelectedSequencesByOne( - peer.getSelectionGroup(), peer.getHiddenRepSequences(), up); - ((AlignViewport) peer).getAlignPanel().paintAlignment(true); - } - } } synchronized void slideSequences(boolean right, int size) @@ -2767,32 +2750,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void newView_actionPerformed(ActionEvent e) { - /* - * Note if the current view has a protein/cdna complementary view - */ - AlignViewportI linkedView = this.viewport.getCodingComplement(); - - AlignmentPanel newPanel = newView(null, true); - - /* - * If the original view has a protein/cdna linked view, make and link a new - * view there also. - */ - // TODO refactor the hell out of this - move to a controller, lose the casts - // and direct member access, etc - if (linkedView != null) - { - AlignFrame linkedAlignFrame = ((AlignViewport) linkedView) - .getAlignPanel().alignFrame; - AlignmentPanel newLinkedPanel = linkedAlignFrame.newView(null, true); - newLinkedPanel.av.viewName = newPanel.av.viewName; - newPanel.av.setCodingComplement(newLinkedPanel.av); - final StructureSelectionManager ssm = StructureSelectionManager - .getStructureSelectionManager(Desktop.instance); - ssm.addCommandListener(newPanel.av); - ssm.addCommandListener(newLinkedPanel.av); - - } + newView(null, true); } /** @@ -2820,7 +2778,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, newap.av.getAlignment().deleteAllAnnotations(false); } - newap.av.gatherViewsHere = false; + newap.av.setGatherViewsHere(false); if (viewport.viewName == null) { @@ -2843,7 +2801,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (alignPanels.size() == 2) { - viewport.gatherViewsHere = true; + viewport.setGatherViewsHere(true); } tabbedPane.setSelectedIndex(tabbedPane.getTabCount() - 1); return newap; @@ -5443,6 +5401,23 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, avc.setViewportAndAlignmentPanel(viewport, alignPanel); setMenusFromViewport(viewport); } + + /* + * If there is a frame linked to this one in a SplitPane, switch it to the + * same view tab index. No infinite recursion of calls should happen, since + * tabSelectionChanged() should not get invoked on setting the selected + * index to an unchanged value. Guard against setting an invalid index + * before the new view peer tab has been created. + */ + final AlignViewportI peer = viewport.getCodingComplement(); + if (peer != null) + { + AlignFrame linkedAlignFrame = ((AlignViewport) peer).getAlignPanel().alignFrame; + if (linkedAlignFrame.tabbedPane.getTabCount() > index) + { + linkedAlignFrame.tabbedPane.setSelectedIndex(index); + } + } } /** @@ -5521,7 +5496,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * * @param av */ - public boolean closeView(AlignmentViewport av) + public boolean closeView(AlignViewportI av) { if (viewport == av) {