import jalview.commands.*;
import jalview.ws.*;
import java.awt.dnd.*;
+import javax.swing.event.ChangeListener;
+import javax.swing.event.ChangeEvent;
/**
* DOCUMENT ME!
/** DOCUMENT ME!! */
- public String currentFileFormat = null;
+ String currentFileFormat = null;
+
+ String fileName = null;
- private int treeCount = 0;
/**
* Creates a new AlignFrame object.
addKeyListener();
+ }
+ public void setFileName(String file, String format)
+ {
+ fileName = file;
+ currentFileFormat = format;
+ if (!fileName.startsWith("http"))
+ reload.setEnabled(true);
}
void addKeyListener()
{
- final AlignFrame af = this;
addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent evt)
switch (evt.getKeyCode())
{
- case KeyEvent.VK_V:
- if (!evt.isControlDown())
- {
- AlignmentPanel newap =
- new Jalview2XML().copyAlignPanel(alignPanel, true);
-
- if(viewport.viewName==null)
- viewport.viewName="View 1";
-
- newap.av.historyList = viewport.historyList;
- newap.av.redoList = viewport.redoList;
- newap.av.viewName = "View " +
- (Desktop.getViewCount(viewport.getSequenceSetId())+1);
-
- addAlignmentPanel(newap, false);
-
- tabbedPane.setSelectedIndex(tabbedPane.getTabCount()-1);
-
- }
- break;
- case KeyEvent.VK_G:
- Desktop.instance.gatherViews(af);
- break;
-
- case KeyEvent.VK_X:
- if (!evt.isControlDown())
- {
- Desktop.instance.explodeViews(af);
- }
- break;
-
case 27: // escape key
deselectAllSequenceMenuItem_actionPerformed(null);
alignPanels.addElement(ap);
+ PaintRefresher.Register(ap, ap.av.getSequenceSetId());
+
int aSize = alignPanels.size();
tabbedPane.setVisible(aSize>1 || ap.av.viewName!=null);
{
if (aSize == 2)
{
- AlignmentPanel first = (AlignmentPanel) alignPanels.firstElement();
- tabbedPane.addTab(first.av.viewName==null?"Original":first.av.viewName,first);
-
- this.getContentPane().add(tabbedPane, BorderLayout.CENTER);
+ setInitialTabVisible();
}
- tabbedPane.addTab(ap.av.viewName==null?"Original":ap.av.viewName, ap);
+ expandViews.setEnabled(true);
+ gatherViews.setEnabled(true);
+ tabbedPane.addTab(ap.av.viewName, ap);
ap.setVisible(false);
}
if(newPanel)
{
- ap.av.updateConsensus(ap);
+ if (ap.av.padGaps)
+ ap.av.alignment.padGaps();
ap.av.updateConservation(ap);
+ ap.av.updateConsensus(ap);
}
}
+ public void setInitialTabVisible()
+ {
+ expandViews.setEnabled(true);
+ gatherViews.setEnabled(true);
+ tabbedPane.setVisible(true);
+ AlignmentPanel first = (AlignmentPanel) alignPanels.firstElement();
+ tabbedPane.addTab(first.av.viewName,first);
+ this.getContentPane().add(tabbedPane, BorderLayout.CENTER);
+ }
+
public AlignViewport getViewport()
{
{
// System.out.println("deregistering discoverer listener");
Desktop.discoverer.removePropertyChangeListener(thisListener);
- closeMenuItem_actionPerformed(null);
+ closeMenuItem_actionPerformed(true);
}
;
});
*/
void setMenusFromViewport(AlignViewport av)
{
+ padGapsMenuitem.setSelected(av.padGaps);
colourTextMenuItem.setSelected(av.showColourText);
abovePIDThreshold.setSelected(av.getAbovePIDThreshold());
conservationMenuItem.setSelected(av.getConservationSelected());
seqLimits.setSelected(av.getShowJVSuffix());
+ idRightAlign.setSelected(av.rightAlignIds);
renderGapsMenuItem.setSelected(av.renderGaps);
wrapMenuItem.setSelected(av.wrapAlignment);
annotationPanelMenuItem.setState(av.showAnnotation);
showSeqFeatures.setSelected(av.showSequenceFeatures);
hiddenMarkers.setState(av.showHiddenMarkers);
applyToAllGroups.setState(av.colourAppliesToAllGroups);
- smoothFont.setState(av.antiAlias);
updateEditMenuBar();
}
Desktop.instance.inputLocalFileMenuItem_actionPerformed(viewport);
}
+ public void reload_actionPerformed(ActionEvent e)
+ {
+ if(fileName!=null)
+ {
+ if(currentFileFormat.equals("Jalview"))
+ {
+ JInternalFrame [] frames = Desktop.desktop.getAllFrames();
+ for(int i=0; i<frames.length; i++)
+ {
+ if (frames[i] instanceof AlignFrame
+ && frames[i] != this
+ && ( (AlignFrame) frames[i]).fileName.equals(fileName))
+ {
+ try{
+ frames[i].setSelected(true);
+ Desktop.instance.closeAssociatedWindows();
+ }catch(java.beans.PropertyVetoException ex){}
+ }
+
+ }
+ Desktop.instance.closeAssociatedWindows();
+
+ }
+ else
+ {
+ viewport.alignment.deleteAllGroups();
+ viewport.sequenceColours=null;
+ while (viewport.alignment.getHeight() > 0)
+ {
+ viewport.alignment.deleteSequence(0);
+ }
+
+ viewport.historyList.clear();
+ viewport.redoList.clear();
+ Alignment dset = viewport.alignment.getDataset();
+ while (dset.getHeight() > 0)
+ {
+ dset.deleteSequence(0);
+ }
+
+ firePropertyChange("Alignment", null, null);
+
+ updateEditMenuBar();
+ }
+
+ FileLoader loader = new FileLoader();
+ String protocol = fileName.startsWith("http:")? "URL":"File";
+ loader.LoadFile(viewport, fileName, protocol, currentFileFormat);
+
+ }
+ }
+
+
public void addFromText_actionPerformed(ActionEvent e)
{
Desktop.instance.inputTextboxMenuItem_actionPerformed(viewport);
Desktop.instance.inputURLMenuItem_actionPerformed(viewport);
}
+
+ public void save_actionPerformed(ActionEvent e)
+ {
+ if(fileName==null || currentFileFormat==null)
+ saveAs_actionPerformed(null);
+ else
+ saveAlignment(fileName, currentFileFormat);
+ }
+
/**
* DOCUMENT ME!
*
* @param e DOCUMENT ME!
*/
- public void saveAlignmentMenu_actionPerformed(ActionEvent e)
+ public void saveAs_actionPerformed(ActionEvent e)
{
JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.
getProperty( "LAST_DIRECTORY"),
if (value == JalviewFileChooser.APPROVE_OPTION)
{
currentFileFormat = chooser.getSelectedFormat();
-
if (currentFileFormat == null)
{
JOptionPane.showInternalMessageDialog(Desktop.desktop,
return;
}
+ fileName = chooser.getSelectedFile().getPath();
+
jalview.bin.Cache.setProperty("DEFAULT_FILE_FORMAT",
currentFileFormat);
- String choice = chooser.getSelectedFile().getPath();
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice);
+ jalview.bin.Cache.setProperty("LAST_DIRECTORY", fileName);
- saveAlignment(choice, currentFileFormat);
+ saveAlignment(fileName, currentFileFormat);
}
}
new Jalview2XML().SaveAlignment(this, file, shortName);
+ statusBar.setText("Successfully saved to file: "
+ +fileName+" in "
+ +format +" format.");
+
+
// USE Jalview2XML to save this file
return true;
}
out.print(output);
out.close();
this.setTitle(file);
+ statusBar.setText("Successfully saved to file: "
+ +fileName+" in "
+ +format +" format.");
return true;
}
catch (Exception ex)
}
CutAndPasteTransfer cap = new CutAndPasteTransfer();
+ cap.setForInput(null);
Desktop.addInternalFrame(cap,
"Alignment output - " + e.getActionCommand(), 600,
500);
*
* @param e DOCUMENT ME!
*/
- public void closeMenuItem_actionPerformed(ActionEvent e)
+ public void closeMenuItem_actionPerformed(boolean closeAllTabs)
{
+ if(alignPanels!=null && alignPanels.size()<2)
+ closeAllTabs = true;
+
try
{
if(alignPanels!=null)
{
- for (int i = 0; i < alignPanels.size(); i++)
+ if (closeAllTabs)
+ for (int i = 0; i < alignPanels.size(); i++)
+ {
+ AlignmentPanel ap = (AlignmentPanel) alignPanels.elementAt(i);
+ PaintRefresher.RemoveComponent(ap.seqPanel.seqCanvas);
+ PaintRefresher.RemoveComponent(ap.idPanel.idCanvas);
+ PaintRefresher.RemoveComponent(ap);
+ }
+ else
{
- AlignmentPanel ap = (AlignmentPanel) alignPanels.elementAt(i);
- PaintRefresher.RemoveComponent(ap.seqPanel.seqCanvas);
- PaintRefresher.RemoveComponent(ap.idPanel.idCanvas);
- PaintRefresher.RemoveComponent(ap);
+ int index = tabbedPane.getSelectedIndex();
+
+ 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())
+ index --;
+
+ this.tabSelectionChanged(index);
}
- // alignPanels = null;
}
- else
- System.out.println("null one here");
-
- // alignPanel = null;
- // viewport = null;
- this.setClosed(true);
+ if (closeAllTabs)
+ this.setClosed(true);
}
catch (Exception ex)
{
viewport.redoList.push(command);
command.undoCommand();
- viewport.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null;
+ AlignViewport originalSource = getOriginatingSource(command);
updateEditMenuBar();
- viewport.firePropertyChange("alignment", null,
- viewport.getAlignment().getSequences());
+
+ if(originalSource!=null)
+ {
+ originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null;
+ originalSource.firePropertyChange("alignment", null,null);
+ }
}
/**
*/
protected void redoMenuItem_actionPerformed(ActionEvent e)
{
+ if(viewport.redoList.size()<1)
+ return;
+
CommandI command = (CommandI) viewport.redoList.pop();
viewport.historyList.push(command);
command.doCommand();
- viewport.hasHiddenColumns = viewport.colSel.getHiddenColumns()!=null;
+ AlignViewport originalSource = getOriginatingSource(command);
updateEditMenuBar();
- viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());
+
+ if(originalSource!=null)
+ {
+ originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null;
+ originalSource.firePropertyChange("alignment", null,null);
+ }
}
+ AlignViewport getOriginatingSource(CommandI command)
+ {
+ 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;
+ 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)
+ {
+ if (al == ( (AlignmentPanel) comps.elementAt(i)).av.alignment)
+ {
+ originalSource = ( (AlignmentPanel) comps.elementAt(i)).av;
+ break;
+ }
+ }
+ }
+ }
+
+ 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;
+ }
/**
* DOCUMENT ME!
*
* @param e DOCUMENT ME!
*/
- protected void delete_actionPerformed(ActionEvent e)
+ protected void delete_actionPerformed(ActionEvent evt)
{
SequenceGroup sg = viewport.getSelectionGroup();
}
Vector seqs = new Vector();
- int cutLength = sg.getEndRes()-sg.getStartRes()+1;
- boolean seqsCut = false;
SequenceI seq;
for (int i = 0; i < sg.getSize(false); i++)
{
seq = sg.getSequenceAt(i);
seqs.addElement(seq);
- if(seq.getLength()<=cutLength)
- seqsCut = true;
}
protected void deleteGroups_actionPerformed(ActionEvent e)
{
viewport.alignment.deleteAllGroups();
+ viewport.sequenceColours = null;
viewport.setSelectionGroup(null);
PaintRefresher.Refresh(this, viewport.getSequenceSetId());
alignPanel.repaint();
alignPanel.seqPanel.seqCanvas.highlightSearchResults(null);
alignPanel.idPanel.idCanvas.searchResults = null;
alignPanel.repaint();
- PaintRefresher.Refresh(this, viewport.getSequenceSetId());
+ PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId());
}
/**
sg.addOrRemove(viewport.getAlignment().getSequenceAt(i), false);
}
- PaintRefresher.Refresh(this, viewport.getSequenceSetId());
+ PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId());
}
public void invertColSel_actionPerformed(ActionEvent e)
viewport.alignment,
viewport.colSel,
viewport.selectionGroup);
+ viewport.setStartRes(0);
}
else
{
*/
public void findMenuItem_actionPerformed(ActionEvent e)
{
- JInternalFrame frame = new JInternalFrame();
- Finder finder = new Finder(viewport, alignPanel, frame);
- frame.setContentPane(finder);
- frame.setLayer(JLayeredPane.PALETTE_LAYER);
- Desktop.addInternalFrame(frame, "Find", 340, 110);
+ new Finder();
+ }
+
+ public void newView_actionPerformed(ActionEvent e)
+ {
+ AlignmentPanel newap =
+ new Jalview2XML().copyAlignPanel(alignPanel, true);
+
+ if (viewport.viewName == null)
+ viewport.viewName = "Original";
+
+ newap.av.historyList = viewport.historyList;
+ newap.av.redoList = viewport.redoList;
+
+ 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<comps.size(); i++)
+ {
+ if(comps.elementAt(i) instanceof AlignmentPanel)
+ {
+ AlignmentPanel ap = (AlignmentPanel)comps.elementAt(i);
+ if(!existingNames.contains(ap.av.viewName))
+ existingNames.addElement(ap.av.viewName);
+ }
+ }
+
+ while(existingNames.contains(newViewName))
+ {
+ newViewName = "View "+ (++index);
+ }
+
+ newap.av.viewName = newViewName;
+
+ addAlignmentPanel(newap, false);
+
+ if(alignPanels.size()==2)
+ {
+ viewport.gatherViewsHere = true;
+ }
+ tabbedPane.setSelectedIndex(tabbedPane.getTabCount() - 1);
+ }
+
+ public void expandViews_actionPerformed(ActionEvent e)
+ {
+ Desktop.instance.explodeViews(this);
}
+ public void gatherViews_actionPerformed(ActionEvent e)
+ {
+ Desktop.instance.gatherViews(this);
+ }
+
+
+
/**
* DOCUMENT ME!
*
new FontChooser(alignPanel);
}
- public void smoothFont_actionPerformed(ActionEvent e)
- {
- viewport.antiAlias = smoothFont.isSelected();
- alignPanel.annotationPanel.image = null;
- alignPanel.repaint();
- }
-
/**
* DOCUMENT ME!
alignPanel.repaint();
}
+ public void idRightAlign_actionPerformed(ActionEvent e)
+ {
+ viewport.rightAlignIds = idRightAlign.isSelected();
+ alignPanel.repaint();
+ }
+
+
/**
* DOCUMENT ME!
alignPanel.setOverviewPanel(overview);
}
+ public void textColour_actionPerformed(ActionEvent e)
+ {
+ new TextColourChooser().chooseColour(alignPanel, null);
+ }
+
/**
* DOCUMENT ME!
*
viewport.getIgnoreGapsConsensus());
sg.cs.setConsensus(AAFrequency.calculate(
- sg.getSequences(true), 0,
- sg.getWidth()));
+ sg.getSequences(true), sg.getStartRes(),
+ sg.getEndRes()+1));
}
else
sg.cs.setThreshold(0, viewport.getIgnoreGapsConsensus());
{
Conservation c = new Conservation("Group",
ResidueProperties.propHash, 3,
- sg.getSequences(true), 0,
- viewport.alignment.getWidth() - 1);
+ sg.getSequences(true),
+ sg.getStartRes(),
+ sg.getEndRes()+1);
c.calculate();
c.verdict(false, viewport.ConsPercGaps);
sg.cs.setConservation(c);
return;
}
- new PCAPanel(viewport);
+ new PCAPanel(alignPanel);
}
tp = new TreePanel(alignPanel, type, pwType);
}
- addTreeMenuItem(tp, title);
+ title = title + " from " + this.title;
+ if(viewport.viewName!=null)
+ title+= " ("+viewport.viewName+")";
- Desktop.addInternalFrame(tp, title + " from " + this.title, 600, 500);
+ Desktop.addInternalFrame(tp, title, 600, 500);
}
/**
* @param treePanel Displayed tree window.
* @param title SortBy menu item title.
*/
- void addTreeMenuItem(final TreePanel treePanel, String title)
+ public void buildTreeMenu()
{
- final JMenuItem item = new JMenuItem(title);
-
- treeCount++;
-
- if (treeCount == 1)
- {
- sort.add(sortByTreeMenu);
- }
+ sortByTreeMenu.removeAll();
- sortByTreeMenu.add(item);
- item.addActionListener(new java.awt.event.ActionListener()
+ Vector comps = (Vector)PaintRefresher.components.get(viewport.getSequenceSetId());
+ Vector treePanels = new Vector();
+ int i, iSize = comps.size();
+ for(i=0; i<iSize; i++)
{
- public void actionPerformed(ActionEvent e)
+ if(comps.elementAt(i) instanceof TreePanel)
{
- SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
- AlignmentSorter.sortByTree(viewport.getAlignment(),
- treePanel.getTree());
+ treePanels.add(comps.elementAt(i));
+ }
+ }
- addHistoryItem(new OrderCommand("Tree Sort",
- oldOrder,
- viewport.alignment));
+ iSize = treePanels.size();
+ if(iSize<1)
+ {
+ sortByTreeMenu.setVisible(false);
+ return;
+ }
- alignPanel.repaint();
- }
- });
+ sortByTreeMenu.setVisible(true);
- treePanel.addInternalFrameListener(new javax.swing.event.
- InternalFrameAdapter()
+ for(i=0; i<treePanels.size(); i++)
{
- public void internalFrameClosed(
- javax.swing.event.InternalFrameEvent evt)
+ TreePanel tp = (TreePanel)treePanels.elementAt(i);
+ final JMenuItem item = new JMenuItem(tp.getTitle());
+ final NJTree tree = ((TreePanel)treePanels.elementAt(i)).getTree();
+ item.addActionListener(new java.awt.event.ActionListener()
{
- treeCount--;
- sortByTreeMenu.remove(item);
-
- if (treeCount == 0)
+ public void actionPerformed(ActionEvent e)
{
- sort.remove(sortByTreeMenu);
+ SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
+ AlignmentSorter.sortByTree(viewport.getAlignment(), tree);
+
+ addHistoryItem(new OrderCommand("Tree Sort",
+ oldOrder,
+ viewport.alignment));
+
+ alignPanel.repaint();
}
- }
- ;
- });
+ });
+
+ sortByTreeMenu.add(item);
+ }
}
/**
Desktop.addInternalFrame(tp, title, w, h);
- addTreeMenuItem(tp, title);
}
}
catch (Exception ex)