/*
* Jalview - A Sequence Alignment Editor and Viewer
- * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* @author $author$
* @version $Revision$
*/
-public class AlignFrame
- extends GAlignFrame implements DropTargetListener, FeatureListener
+public class AlignFrame extends GAlignFrame implements DropTargetListener
{
/** DOCUMENT ME!! */
- public static final int NEW_WINDOW_WIDTH = 700;
+ public static final int DEFAULT_WIDTH = 700;
/** DOCUMENT ME!! */
- public static final int NEW_WINDOW_HEIGHT = 500;
- AlignmentPanel alignPanel;
+ public static final int DEFAULT_HEIGHT = 500;
+ public AlignmentPanel alignPanel;
AlignViewport viewport;
+
+ Vector alignPanels = new Vector();
+
+
/** DOCUMENT ME!! */
public String currentFileFormat = null;
Stack historyList = new Stack();
private int treeCount = 0;
/**
+ * Creates a new AlignFrame object.
+ *
+ * @param al DOCUMENT ME!
+ */
+ public AlignFrame(AlignmentI al, int width, int height)
+ {
+ this(al, null, width, height);
+ }
+
+
+ /**
* new alignment window with hidden columns
* @param al AlignmentI
* @param hiddenColumns ColumnSelection or null
*/
- public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns) {
-
+ public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns,
+ int width, int height)
+ {
+ this.setSize(width, height);
viewport = new AlignViewport(al, hiddenColumns);
+ alignPanel = new AlignmentPanel(this, viewport);
+
+ if(al.getDataset()==null)
+ {
+ al.setDataset(null);
+ }
+
+ addAlignmentPanel(alignPanel);
+ init();
+ }
+
+ /**
+ * Make a new AlignFrame from exisiting alignmentPanels
+ * @param ap AlignmentPanel
+ * @param av AlignViewport
+ */
+ public AlignFrame(AlignmentPanel ap)
+ {
+ viewport = ap.av;
+ alignPanel = ap;
+ addAlignmentPanel(ap);
+ init();
+ }
+
+ void init()
+ {
this.setDropTarget(new java.awt.dnd.DropTarget(this, this));
- if(viewport.vconsensus==null)
+ if (viewport.conservation == null)
{
- //Out of memory calculating consensus.
BLOSUM62Colour.setEnabled(false);
- PIDColour.setEnabled(false);
conservationMenuItem.setEnabled(false);
modifyConservation.setEnabled(false);
- abovePIDThreshold.setEnabled(false);
- modifyPID.setEnabled(false);
+ // PIDColour.setEnabled(false);
+ // abovePIDThreshold.setEnabled(false);
+ // modifyPID.setEnabled(false);
}
- alignPanel = new AlignmentPanel(this, viewport);
-
String sortby = jalview.bin.Cache.getDefault("SORT_ALIGNMENT", "No sort");
- if(sortby.equals("Id"))
+ if (sortby.equals("Id"))
sortIDMenuItem_actionPerformed(null);
- else if(sortby.equals("Pairwise Identity"))
+ else if (sortby.equals("Pairwise Identity"))
sortPairwiseMenuItem_actionPerformed(null);
- // remove(tabbedPane);
- getContentPane().add(alignPanel, BorderLayout.CENTER);
+ if (Desktop.desktop != null)
+ {
+ addServiceListeners();
+ setGUINucleotide(viewport.alignment.isNucleotide());
+ }
+
+ if (jalview.bin.Cache.getDefault("WRAP_ALIGNMENT", false))
+ {
+ wrapMenuItem.setSelected(true);
+ wrapMenuItem_actionPerformed(null);
+ }
+
+ addKeyListener();
+ }
+
+ void addKeyListener()
+ {
+ final AlignFrame af = this;
+ addKeyListener(new KeyAdapter()
+ {
+ public void keyPressed(KeyEvent evt)
+ {
+ if (viewport.cursorMode
+ && evt.getKeyCode() >= KeyEvent.VK_0
+ && evt.getKeyCode() <= KeyEvent.VK_9)
+ {
+ alignPanel.seqPanel.numberPressed(evt.getKeyChar());
+ }
+ switch (evt.getKeyCode())
+ {
+ case KeyEvent.VK_V:
+ if (!evt.isControlDown())
+ {
+ AlignmentI al;
+ if(viewport.hasHiddenRows)
+ {
+ al = viewport.alignment.getHiddenSequences().getFullAlignment();
+ }
+ else
+ al = new Alignment(viewport.alignment.getSequencesArray());
+ AlignViewport newview = new AlignViewport(al);
- // tabbedPane.add(al.isNucleotide() ? "DNA":"Protein", alignPanel);
+ AlignmentPanel copy = new AlignmentPanel(af, newview);
- ///Dataset tab
- /////////////////////////
- if(al.getDataset()==null)
+ if(viewport.viewName==null)
+ viewport.viewName="View 1";
+
+ copy.av.sequenceSetID = viewport.getSequenceSetId();
+ copy.av.viewName = "View " +
+ (Desktop.getViewCount(viewport.getSequenceSetId())+1);
+
+
+ addAlignmentPanel(copy);
+ PaintRefresher.Register(copy, viewport.getSequenceSetId());
+ PaintRefresher.Register(alignPanel,
+ viewport.getSequenceSetId());
+
+ }
+ 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);
+
+ break;
+
+ case KeyEvent.VK_DOWN:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.moveCursor(0, 1);
+ }
+ else
+ moveSelectedSequences(false);
+ break;
+
+ case KeyEvent.VK_UP:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.moveCursor(0, -1);
+ }
+ else
+ moveSelectedSequences(true);
+ break;
+
+ case KeyEvent.VK_LEFT:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.moveCursor( -1, 0);
+ }
+ break;
+
+ case KeyEvent.VK_RIGHT:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.moveCursor(1, 0);
+ }
+ break;
+
+ case KeyEvent.VK_SPACE:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.insertGapAtCursor(evt.isControlDown()
+ || evt.isShiftDown()
+ || evt.isAltDown());
+ }
+ break;
+
+ case KeyEvent.VK_DELETE:
+ case KeyEvent.VK_BACK_SPACE:
+ if (!viewport.cursorMode)
+ {
+ cut_actionPerformed(null);
+ }
+ else
+ alignPanel.seqPanel.deleteGapAtCursor(evt.isControlDown()
+ || evt.isShiftDown()
+ || evt.isAltDown());
+
+ break;
+
+ case KeyEvent.VK_S:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.setCursorRow();
+ }
+ break;
+ case KeyEvent.VK_C:
+ if (viewport.cursorMode && !evt.isControlDown())
+ {
+ alignPanel.seqPanel.setCursorColumn();
+ }
+ break;
+ case KeyEvent.VK_P:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.setCursorPosition();
+ }
+ break;
+
+ case KeyEvent.VK_ENTER:
+ case KeyEvent.VK_COMMA:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.setCursorRowAndColumn();
+ }
+ break;
+
+ case KeyEvent.VK_Q:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.setSelectionAreaAtCursor(true);
+ }
+ break;
+ case KeyEvent.VK_M:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.setSelectionAreaAtCursor(false);
+ }
+ break;
+
+ case KeyEvent.VK_F2:
+ viewport.cursorMode = !viewport.cursorMode;
+ statusBar.setText("Keyboard editing mode is " +
+ (viewport.cursorMode ? "on" : "off"));
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.seqCanvas.cursorX = viewport.startRes;
+ alignPanel.seqPanel.seqCanvas.cursorY = viewport.startSeq;
+ }
+ alignPanel.seqPanel.seqCanvas.repaint();
+ break;
+
+ case KeyEvent.VK_F1:
+ try
+ {
+ ClassLoader cl = jalview.gui.Desktop.class.getClassLoader();
+ java.net.URL url = javax.help.HelpSet.findHelpSet(cl, "help/help");
+ javax.help.HelpSet hs = new javax.help.HelpSet(cl, url);
+
+ javax.help.HelpBroker hb = hs.createHelpBroker();
+ hb.setCurrentID("home");
+ hb.setDisplayed(true);
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ break
+ ;
+ case KeyEvent.VK_H:
+ {
+ boolean toggleSeqs = !evt.isControlDown();
+ boolean toggleCols = !evt.isShiftDown();
+
+ boolean hide = false;
+
+ SequenceGroup sg = viewport.getSelectionGroup();
+ if (toggleSeqs)
+ {
+ if (sg != null && sg.getSize(false) != viewport.alignment.getHeight())
+ {
+ hideSelSequences_actionPerformed(null);
+ hide = true;
+ }
+ else if (! (toggleCols && viewport.colSel.getSelected().size() > 0))
+ showAllSeqs_actionPerformed(null);
+ }
+
+ if (toggleCols)
+ {
+ if (viewport.colSel.getSelected().size() > 0)
+ {
+ hideSelColumns_actionPerformed(null);
+ if (!toggleSeqs)
+ viewport.selectionGroup = sg;
+ }
+ else if (!hide)
+ showAllColumns_actionPerformed(null);
+ }
+ break;
+ }
+ case KeyEvent.VK_PAGE_UP:
+ if (viewport.wrapAlignment)
+ alignPanel.scrollUp(true);
+ else
+ alignPanel.setScrollValues(viewport.startRes,
+ viewport.startSeq
+ - viewport.endSeq + viewport.startSeq);
+ break;
+ case KeyEvent.VK_PAGE_DOWN:
+ if (viewport.wrapAlignment)
+ alignPanel.scrollUp(false);
+ else
+ alignPanel.setScrollValues(viewport.startRes,
+ viewport.startSeq
+ + viewport.endSeq - viewport.startSeq);
+ break;
+
+
+ }
+ }
+ });
+ }
+
+
+ public void addAlignmentPanel(final AlignmentPanel ap)
+ {
+ alignPanels.addElement(ap);
+
+ int aSize = alignPanels.size();
+
+ tabbedPane.setVisible(aSize>1 || ap.av.viewName!=null);
+
+ if (aSize == 1 && ap.av.viewName==null)
{
- al.setDataset(null);
+ this.getContentPane().add(ap, BorderLayout.CENTER);
}
- // AlignViewport ds = new AlignViewport(al.getDataset(), true);
- // AlignmentPanel dap = new AlignmentPanel(this, ds);
- // tabbedPane.add("Dataset", dap);
- // viewports.add(ds);
- // alignPanels.add(dap);
- /////////////////////////
+ else
+ {
+ 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);
+ }
- viewport.addPropertyChangeListener(new PropertyChangeListener()
+ tabbedPane.addTab(ap.av.viewName==null?"Original":ap.av.viewName, ap);
+ }
+
+ ap.av.updateConsensus(ap);
+ ap.av.updateConservation(ap);
+
+
+ ap.av.addPropertyChangeListener(new PropertyChangeListener()
{
public void propertyChange(PropertyChangeEvent evt)
{
if (evt.getPropertyName().equals("alignment"))
{
+ PaintRefresher.Refresh(ap, ap.av.getSequenceSetId());
alignmentChanged();
}
}
});
-
- if (Desktop.desktop != null)
- {
- addServiceListeners();
- setGUINucleotide(al.isNucleotide());
- }
-
-
- if (jalview.bin.Cache.getDefault("WRAP_ALIGNMENT", false))
- {
- wrapMenuItem.setSelected(true);
- wrapMenuItem_actionPerformed(null);
- }
-
}
- /**
- * Creates a new AlignFrame object.
- *
- * @param al DOCUMENT ME!
- */
- public AlignFrame(AlignmentI al)
- {
- this(al, null);
- }
+
public AlignViewport getViewport()
{
}
}
});
+
addInternalFrameListener(new javax.swing.event.
InternalFrameAdapter()
{
}
}
- public void comeBackLater(FeatureEvent evt)
- {}
-
- public void newFeatures(FeatureEvent evt)
- {
- if (evt.getFeatures().length > 0)
- {
- alignPanel.seqPanel.seqCanvas.fr.featuresAdded();
- alignPanel.repaint();
- }
- }
Hashtable progressBars;
public void setProgressBar(String message, long id)
}
+
+
/*
Added so Castor Mapping file can obtain Jalview Version
*/
}
+
/**
* DOCUMENT ME!
*
{
try
{
- PaintRefresher.components.remove(viewport.alignment);
+ 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);
+ }
+
this.setClosed(true);
}
catch (Exception ex)
}
}
+
/**
* DOCUMENT ME!
*/
void updateEditMenuBar()
{
- if (historyList.size() > 0)
+ /* if (historyList.size() > 0)
{
undoMenuItem.setEnabled(true);
{
redoMenuItem.setEnabled(false);
redoMenuItem.setText("Redo");
- }
+ }*/
}
/**
{
HistoryItem nh,hi = (HistoryItem) redoList.pop();
historyList.push(nh=new HistoryItem(hi.getDescription(), viewport.alignment,
- HistoryItem.HIDE));
+ HistoryItem.HIDE));
if (hi.alColumnChanges!=null)
nh.alColumnChanges=hi.alColumnChanges.getInverse();
restoreHistoryItem(hi);
*/
protected void copy_actionPerformed(ActionEvent e)
{
+ System.gc();
if (viewport.getSelectionGroup() == null)
{
return;
seqs,
omitHidden);
+ StringSelection ss = new StringSelection(output);
+
+ try
+ {
+ //Its really worth setting the clipboard contents
+ //to empty before setting the large StringSelection!!
+ Toolkit.getDefaultToolkit().getSystemClipboard()
+ .setContents(new StringSelection(""), null);
+
+ Toolkit.getDefaultToolkit().getSystemClipboard()
+ .setContents(ss, Desktop.instance);
+ }
+ catch (OutOfMemoryError er)
+ {
+ er.printStackTrace();
+ javax.swing.SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ "Out of memory copying region!!"
+ +
+ "\nSee help files for increasing Java Virtual Machine memory."
+ , "Out of memory",
+ javax.swing.JOptionPane.WARNING_MESSAGE);
+ }
+ });
- Toolkit.getDefaultToolkit().getSystemClipboard()
- .setContents(new StringSelection(output), Desktop.instance);
+ return;
+ }
Vector hiddenColumns = null;
if(viewport.hasHiddenColumns)
}
}
+
+
Desktop.jalviewClipboard = new Object[]{ seqs,
viewport.alignment.getDataset(),
hiddenColumns};
+ statusBar.setText("Copied "+seqs.length+" sequences to clipboard.");
}
/**
return;
}
- String str = (String) contents.getTransferData(DataFlavor.stringFlavor);
- if(str.length()<1)
+ String str, format;
+ try
+ {
+ str = (String) contents.getTransferData(DataFlavor.stringFlavor);
+ if (str.length() < 1)
+ return;
+
+ format = new IdentifyFile().Identify(str, "Paste");
+
+ }
+ catch (OutOfMemoryError er)
+ {
+ er.printStackTrace();
+ javax.swing.SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ "Out of memory pasting sequences!!"
+ +
+ "\nSee help files for increasing Java Virtual Machine memory."
+ , "Out of memory",
+ javax.swing.JOptionPane.WARNING_MESSAGE);
+ }
+ });
+
return;
+ }
- String format = new IdentifyFile().Identify(str, "Paste");
SequenceI[] sequences;
if (newAlignment)
{
- alignment = new Alignment(sequences);
-
- if(Desktop.jalviewClipboard!=null)
- alignment.setDataset( (Alignment)Desktop.jalviewClipboard[1] );
- else
- alignment.setDataset( null );
+ alignment = new Alignment(sequences);
+ if (Desktop.jalviewClipboard != null)
+ alignment.setDataset( (Alignment) Desktop.jalviewClipboard[1]);
+ else
+ alignment.setDataset(null);
}
else
{
sequences[i].getEnd());
alignment.addSequence(newseq);
+ PaintRefresher.Refresh(alignPanel,
+ alignPanel.av.getSequenceSetId(),
+ null,newseq);
}
-
-
// Add any annotations attached to sequences
for (int i = 0; i < sequences.length; i++)
{
if(newAlignment)
{
- AlignFrame af = new AlignFrame(alignment);
+ AlignFrame af = new AlignFrame(alignment, DEFAULT_WIDTH, DEFAULT_HEIGHT);
String newtitle = new String("Copied sequences");
if(Desktop.jalviewClipboard!=null && Desktop.jalviewClipboard[2]!=null)
newtitle = newtitle.concat("- from " + title);
}
- Desktop.addInternalFrame(af, newtitle, NEW_WINDOW_WIDTH,
- NEW_WINDOW_HEIGHT);
+ Desktop.addInternalFrame(af, newtitle, DEFAULT_WIDTH,
+ DEFAULT_HEIGHT);
}
SequenceGroup sg = viewport.getSelectionGroup();
-
- //Jalview no longer allows deletion of residues.
- //Check here whether any residues are in selection area
- /* if( sg.getEndRes()-sg.getStartRes() < viewport.alignment.getWidth()-1)
- {
- for (int i = 0; i < sg.sequences.size(); i++)
- {
- SequenceI seq = sg.getSequenceAt(i);
- int j = sg.getStartRes();
- do
- {
- if (!jalview.util.Comparison.isGap(seq.getCharAt(j)))
- {
- JOptionPane.showInternalMessageDialog(
- Desktop.desktop, "Cannot delete residues from alignment!\n"
- + "Try hiding columns instead.",
- "Deletion of residues not permitted",
- JOptionPane.WARNING_MESSAGE);
-
- return;
- }
- j++;
- }while(j<=sg.getEndRes());
- }
- }*/
-
-
addHistoryItem(new HistoryItem("Delete Sequences", viewport.alignment,
HistoryItem.HIDE));
for (int i = 0; i < sg.getSize(false); i++)
{
SequenceI seq = sg.getSequenceAt(i);
- int index = viewport.getAlignment().findIndex(seq);
-
seq.deleteChars(sg.getStartRes(), sg.getEndRes() + 1);
// If the cut affects all sequences, remove highlighted columns
if (seq.getSequence().length() < 1)
{
viewport.getAlignment().deleteSequence(seq);
- }
- else
- {
- viewport.getAlignment().getSequences().setElementAt(seq, index);
+ PaintRefresher.Refresh(alignPanel,alignPanel.av.getSequenceSetId(),seq,null);
}
}
{
viewport.alignment.deleteAllGroups();
viewport.setSelectionGroup(null);
+ PaintRefresher.Refresh(this, viewport.getSequenceSetId());
alignPanel.repaint();
}
sg.setEndRes(viewport.alignment.getWidth() - 1);
viewport.setSelectionGroup(sg);
- PaintRefresher.Refresh(null, viewport.alignment);
+ alignPanel.repaint();
+ PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId());
}
/**
alignPanel.seqPanel.seqCanvas.highlightSearchResults(null);
alignPanel.idPanel.idCanvas.searchResults = null;
alignPanel.repaint();
- PaintRefresher.Refresh(null, viewport.alignment);
+ PaintRefresher.Refresh(this, viewport.getSequenceSetId());
}
/**
sg.addOrRemove(viewport.getAlignment().getSequenceAt(i), false);
}
- PaintRefresher.Refresh(null, viewport.alignment);
+ PaintRefresher.Refresh(this, viewport.getSequenceSetId());
}
public void invertColSel_actionPerformed(ActionEvent e)
ShiftList shifts;
viewport.getAlignment().removeGaps(shifts=new ShiftList());
edit.alColumnChanges=shifts.getInverse();
- if (viewport.hasHiddenColumns)
+ if (viewport.hasHiddenColumns)
viewport.getColumnSelection().compensateForEdits(shifts);
viewport.setStartRes(seq.findIndex(startRes)-1);
viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());
+
}
/**
SequenceI current;
- int jSize;
Vector seqs = null;
current = (SequenceI) seqs.elementAt(i);
//dr[i]=
current.removeGaps(start, end);
- /*if (d<diff) // can only shift
+ /*if (d<diff) // can only shift
diff=d;
if (diffmax<d)
diffmax=d;
*/
}
- /* // after the end of each chunk -
+ /* // after the end of each chunk -
* if (diff>0) {
// record shift for history.
editgaps.addShift(start, diff);
current = (SequenceI) seqs.elementAt(i);
if (dr[i]-diff>0) {
String sq = current.getSequence();
- current.setSequence(sq.substring(0, hcend-dr[i])+gaps.substring(0, dr[i]-diff)+sq.substring());
+ current.setSequence(sq.substring(0, hcend-dr[i])+gaps.substring(0, dr[i]-diff)+sq.substring());
}
}
- }
+ }
}*/
viewport.setStartRes(seq.findIndex(startRes)-1);
viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());
+
}
public void alignmentChanged()
{
- if(viewport.padGaps)
- viewport.getAlignment().padGaps();
+ AlignViewport av;
+ AlignmentPanel ap;
- if(viewport.vconsensus!=null && viewport.autoCalculateConsensus)
+ for(int i=0; i<alignPanels.size(); i++)
{
- viewport.updateConsensus();
- viewport.updateConservation();
- }
+ ap = (AlignmentPanel) alignPanels.elementAt(i);
+ av = ap.av;
- resetAllColourSchemes();
- if(alignPanel.overviewPanel!=null)
- alignPanel.overviewPanel.updateOverviewImage();
+ if (av.padGaps)
+ av.getAlignment().padGaps();
- viewport.alignment.adjustSequenceAnnotations();
+ if (av.hconsensus != null && av.autoCalculateConsensus)
+ {
+ av.updateConsensus(ap);
+ av.updateConservation(ap);
+ ap.annotationPanel.repaint();
+ }
+
+ resetAllColourSchemes();
- if(alignPanel.overviewPanel!=null)
- alignPanel.overviewPanel.updateOverviewImage();
+ av.alignment.adjustSequenceAnnotations();
- alignPanel.repaint();
+ if (ap.overviewPanel != null)
+ ap.overviewPanel.updateOverviewImage();
+
+ ap.repaint();
+ }
}
void resetAllColourSchemes()
viewport.alignment.getWidth());
}
- cs.setConsensus(viewport.vconsensus);
+ cs.setConsensus(viewport.hconsensus);
if (cs.conservationApplied())
{
Alignment al = (Alignment) viewport.alignment;
viewport.padGaps = padGapsMenuitem.isSelected();
- // if (viewport.padGaps)
- alignmentChanged();
+ viewport.firePropertyChange("alignment",
+ null,
+ viewport.getAlignment().getSequences());
}
/**
public void hideSelSequences_actionPerformed(ActionEvent e)
{
viewport.hideAllSelectedSeqs();
+ alignPanel.repaint();
}
public void hideSelColumns_actionPerformed(ActionEvent e)
cs.setConservation(null);
}
- cs.setConsensus(viewport.vconsensus);
+ cs.setConsensus(viewport.hconsensus);
}
viewport.setGlobalColourScheme(cs);
viewport.autoCalculateConsensus = autoCalculate.isSelected();
if(viewport.autoCalculateConsensus)
{
- alignmentChanged();
+ viewport.firePropertyChange("alignment",
+ null,
+ viewport.getAlignment().getSequences());
}
}
{
TreePanel tp;
- if ( (viewport.getSelectionGroup() != null) &&
- (viewport.getSelectionGroup().getSize(false) > 3))
- {
+ if (viewport.getSelectionGroup() != null) {
+ if (viewport.getSelectionGroup().getSize(false) < 3) {
+ JOptionPane.showMessageDialog(Desktop.desktop,
+ "You need to have more than two sequences selected to build a tree!",
+ "Not enough sequences",
+ JOptionPane.WARNING_MESSAGE);
+ return;
+ }
+
int s = 0;
SequenceGroup sg = viewport.getSelectionGroup();
}
title = title + " on region";
- tp = new TreePanel(viewport, type, pwType);
+ tp = new TreePanel(alignPanel, type, pwType);
}
else
{
if(viewport.alignment.getHeight()<2)
return;
- tp = new TreePanel(viewport, type, pwType);
+ tp = new TreePanel(alignPanel, type, pwType);
}
addTreeMenuItem(tp, title);
{
return ShowNewickTree(nf,title,600,500,4,5);
}
+ public TreePanel ShowNewickTree(NewickFile nf, String title, AlignmentView input)
+ {
+ return ShowNewickTree(nf,title, input, 600,500,4,5);
+ }
+ public TreePanel ShowNewickTree(NewickFile nf, String title, int w,int h,int x, int y) {
+ return ShowNewickTree(nf, title, null, w, h, x, y);
+ }
/**
- * DOCUMENT ME!
+ * Add a treeviewer for the tree extracted from a newick file object to the current alignment view
*
- * @param nf DOCUMENT ME!
- * @param title DOCUMENT ME!
- *
- * @return DOCUMENT ME!
+ * @param nf the tree
+ * @param title tree viewer title
+ * @param input Associated alignment input data (or null)
+ * @param w width
+ * @param h height
+ * @param x position
+ * @param y position
+ * @return TreePanel handle
*/
- public TreePanel ShowNewickTree(NewickFile nf, String title, int w,int h,int x, int y)
- {
+ public TreePanel ShowNewickTree(NewickFile nf, String title, AlignmentView input, int w,int h,int x, int y) {
TreePanel tp = null;
try
if (nf.getTree() != null)
{
- tp = new TreePanel(viewport,
+ tp = new TreePanel(alignPanel,
"FromFile",
title,
- nf);
+ nf, input);
tp.setSize(w,h);
if (msa.getSequences().length == 1)
{
// Single Sequence prediction
- new jalview.ws.JPredClient(sh, title, false, msa, af);
+ new jalview.ws.JPredClient(sh, title, false, msa, af, true);
}
else
{
{
// Sequence profile based prediction
new jalview.ws.JPredClient(sh,
- title, true, msa, af);
+ title, true, msa, af, true);
}
}
}
}
}
- AlignFrame af = new AlignFrame(al);
+ AlignFrame af = new AlignFrame(al, DEFAULT_WIDTH, DEFAULT_HEIGHT);
Desktop.addInternalFrame(af, "Translation of "+this.getTitle(),
- NEW_WINDOW_WIDTH,
- NEW_WINDOW_HEIGHT);
+ DEFAULT_WIDTH,
+ DEFAULT_HEIGHT);
- // AlignViewport newViewport = new AlignViewport(al);
- // AlignmentPanel ap = new AlignmentPanel(this, newViewport);
- // tabbedPane.add("Protein", ap);
- // viewports.add(newViewport);
- // alignPanels.add(ap);
-
- ///Dataset tab
- /////////////////////////
-
- // AlignViewport ds = new AlignViewport(al.getDataset());
- // ds.setDataset(true);
- // AlignmentPanel dap = new AlignmentPanel(this, ds);
- // tabbedPane.add("Dataset", dap);
- // viewports.add(ds);
- // alignPanels.add(dap);
- /////////////////////////
}
-/*public void tabSelected()
- {
- int index = tabbedPane.getSelectedIndex();
- viewport = (AlignViewport)viewports.elementAt(index);
- alignPanel = (AlignmentPanel)alignPanels.elementAt(index);
- }*/
-
/**
* DOCUMENT ME!
*
public void loadJalviewDataFile(String file)
{
try{
+ String protocol = "File";
+
+ if (file.indexOf("http:") > -1 || file.indexOf("file:") > -1)
+ {
+ protocol = "URL";
+ }
+
boolean isAnnotation = new AnnotationFile().readAnnotationFile(viewport.
alignment, file);
if (!isAnnotation)
{
- boolean isGroupsFile = parseFeaturesFile(file,
- AppletFormatAdapter.FILE);
+ boolean isGroupsFile = parseFeaturesFile(file,protocol);
if (!isGroupsFile)
{
- String format = new IdentifyFile().Identify(file, FormatAdapter.FILE);
- new FileLoader().LoadFile(viewport, file, FormatAdapter.FILE, format);
+ String format = new IdentifyFile().Identify(file, protocol);
+
+ if(format.equalsIgnoreCase("JnetFile"))
+ {
+ jalview.io.JPredFile predictions = new jalview.io.JPredFile(
+ file, protocol);
+ new JnetAnnotationMaker().add_annotation(predictions,
+ viewport.getAlignment(),
+ 0, false);
+ alignPanel.adjustAnnotationHeight();
+ alignPanel.repaint();
+ }
+ else
+ new FileLoader().LoadFile(viewport, file, protocol, format);
}
}
else
ex.printStackTrace();
}
}
+
+ public void tabSelectionChanged(int index)
+ {
+ if (index > -1)
+ {
+ alignPanel = (AlignmentPanel) alignPanels.elementAt(index);
+ viewport = alignPanel.av;
+ }
+ }
+
+ public void tabbedPane_mousePressed(MouseEvent e)
+ {
+ if(SwingUtilities.isRightMouseButton(e))
+ {
+ String reply = JOptionPane.showInternalInputDialog(this,
+ "Enter View Name",
+ "Edit View Name",
+ JOptionPane.QUESTION_MESSAGE);
+
+ if (reply != null)
+ {
+ viewport.viewName = reply;
+ tabbedPane.setTitleAt( tabbedPane.getSelectedIndex() ,reply);
+ }
+ }
+ }
+
+
+ public AlignViewport getCurrentView()
+ {
+ return viewport;
+ }
}