X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=f483d6fca75a5292c828198392945e89c65add17;hb=bc77e2f0f477053147a4e56b681131c710eb3ec8;hp=6b8eb09a357c744213c62d7a32bed349a2c75d0a;hpb=24caafeb32f8531894aeead29c1932a57348c1d9;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 6b8eb09..f483d6f 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -64,7 +64,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener String fileName = null; - private int treeCount = 0; /** * Creates a new AlignFrame object. @@ -381,7 +380,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener expandViews.setEnabled(true); gatherViews.setEnabled(true); - tabbedPane.addTab(ap.av.viewName==null?"Original":ap.av.viewName, ap); + tabbedPane.addTab(ap.av.viewName, ap); ap.setVisible(false); } @@ -401,7 +400,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener gatherViews.setEnabled(true); tabbedPane.setVisible(true); AlignmentPanel first = (AlignmentPanel) alignPanels.firstElement(); - tabbedPane.addTab(first.av.viewName==null?"Original":first.av.viewName,first); + tabbedPane.addTab(first.av.viewName,first); this.getContentPane().add(tabbedPane, BorderLayout.CENTER); } @@ -619,7 +618,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener public void save_actionPerformed(ActionEvent e) { - if(fileName==null || currentFileFormat==null) + if(fileName==null + || currentFileFormat==null + || fileName.startsWith("http") + ) saveAs_actionPerformed(null); else saveAlignment(fileName, currentFileFormat); @@ -890,13 +892,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener { int index = tabbedPane.getSelectedIndex(); - tabbedPane.removeTabAt(index); alignPanels.removeElement(alignPanel); PaintRefresher.RemoveComponent(alignPanel.seqPanel.seqCanvas); PaintRefresher.RemoveComponent(alignPanel.idPanel.idCanvas); PaintRefresher.RemoveComponent(alignPanel); alignPanel = null; viewport = null; + + tabbedPane.removeTabAt(index); tabbedPane.validate(); if(index==tabbedPane.getTabCount()) @@ -974,10 +977,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener command.undoCommand(); AlignViewport originalSource = getOriginatingSource(command); - - originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; updateEditMenuBar(); - originalSource.firePropertyChange("alignment", null,null); + + if(originalSource!=null) + { + originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; + originalSource.firePropertyChange("alignment", null,null); + } } /** @@ -987,29 +993,37 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener */ protected void redoMenuItem_actionPerformed(ActionEvent e) { + if(viewport.redoList.size()<1) + return; + CommandI command = (CommandI) viewport.redoList.pop(); viewport.historyList.push(command); command.doCommand(); AlignViewport originalSource = getOriginatingSource(command); - originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns()!=null; - updateEditMenuBar(); - originalSource.firePropertyChange("alignment", null, null); + + if(originalSource!=null) + { + originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; + originalSource.firePropertyChange("alignment", null,null); + } } AlignViewport getOriginatingSource(CommandI command) { - AlignViewport originalSource = viewport; + AlignViewport originalSource = null; //For sequence removal and addition, we need to fire //the property change event FROM the viewport where the //original alignment was altered + AlignmentI al=null; if (command instanceof EditCommand) { EditCommand editCommand = (EditCommand) command; - AlignmentI al = editCommand.getAlignment(); + al = editCommand.getAlignment(); Vector comps = (Vector) PaintRefresher.components .get(viewport.getSequenceSetId()); + for (int i = 0; i < comps.size(); i++) { if (comps.elementAt(i) instanceof AlignmentPanel) @@ -1022,6 +1036,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener } } } + + if (originalSource == null) + { + //The original view is closed, we must validate + //the current view against the closed view first + if (al != null) + PaintRefresher.validateSequences(al, viewport.alignment); + + originalSource = viewport; + } + return originalSource; } @@ -1455,7 +1480,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener protected void deleteGroups_actionPerformed(ActionEvent e) { viewport.alignment.deleteAllGroups(); - viewport.sequenceColours.clear(); + viewport.sequenceColours = null; viewport.setSelectionGroup(null); PaintRefresher.Refresh(this, viewport.getSequenceSetId()); alignPanel.repaint(); @@ -1729,12 +1754,32 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener new Jalview2XML().copyAlignPanel(alignPanel, true); if (viewport.viewName == null) - viewport.viewName = "View 1"; + viewport.viewName = "Original"; newap.av.historyList = viewport.historyList; newap.av.redoList = viewport.redoList; - newap.av.viewName = "View " + - (Desktop.getViewCount(viewport.getSequenceSetId()) + 1); + + int index = Desktop.getViewCount(viewport.getSequenceSetId()); + String newViewName = "View " +index; + + Vector comps = (Vector)PaintRefresher.components.get(viewport.getSequenceSetId()); + Vector existingNames = new Vector(); + for(int i=0; i