}
/**
- * 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();
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)
@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);
}
/**
newap.av.getAlignment().deleteAllAnnotations(false);
}
- newap.av.gatherViewsHere = false;
+ newap.av.setGatherViewsHere(false);
if (viewport.viewName == null)
{
if (alignPanels.size() == 2)
{
- viewport.gatherViewsHere = true;
+ viewport.setGatherViewsHere(true);
}
tabbedPane.setSelectedIndex(tabbedPane.getTabCount() - 1);
return newap;
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);
+ }
+ }
}
/**
*
* @param av
*/
- public boolean closeView(AlignmentViewport av)
+ public boolean closeView(AlignViewportI av)
{
if (viewport == av)
{