X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=b85d5d447d320dd2d50f9e7dadece70e9fa00f12;hb=c42fcf7bf5cfcf51e67dd0f683edb9ab6683d157;hp=e59ee592974f2388228a69145afe7bef16f15666;hpb=df9b85c1cf39894039018499fe802406cc37f209;p=jalview.git
diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java
index e59ee59..b85d5d4 100755
--- a/src/jalview/gui/AlignFrame.java
+++ b/src/jalview/gui/AlignFrame.java
@@ -37,7 +37,6 @@ import jalview.ws.*;
import java.awt.dnd.*;
import org.biojava.dasobert.eventmodel.*;
-
/**
* DOCUMENT ME!
*
@@ -61,15 +60,14 @@ public class AlignFrame
Stack redoList = new Stack();
private int treeCount = 0;
-
/**
- * Creates a new AlignFrame object.
- *
- * @param al DOCUMENT ME!
+ * new alignment window with hidden columns
+ * @param al AlignmentI
+ * @param hiddenColumns ColumnSelection or null
*/
- public AlignFrame(AlignmentI al)
- {
- viewport = new AlignViewport(al);
+ public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns) {
+
+ viewport = new AlignViewport(al, hiddenColumns);
this.setDropTarget(new java.awt.dnd.DropTarget(this, this));
@@ -141,6 +139,17 @@ public class AlignFrame
}
+
+ /**
+ * Creates a new AlignFrame object.
+ *
+ * @param al DOCUMENT ME!
+ */
+ public AlignFrame(AlignmentI al)
+ {
+ this(al, null);
+ }
+
public AlignViewport getViewport()
{
return viewport;
@@ -203,6 +212,8 @@ public class AlignFrame
{
alignPanel.seqPanel.seqCanvas.fr.featuresAdded();
alignPanel.repaint();
+ if(featureSettings!=null)
+ featureSettings.setTableData();
}
}
@@ -345,9 +356,26 @@ public class AlignFrame
}
else
{
- String output = new FormatAdapter().formatSequences(format,
- viewport.getAlignment().
- getSequences());
+
+ String[] omitHidden = null;
+
+ if (viewport.hasHiddenColumns)
+ {
+ int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
+ "The Alignment contains hidden columns."
+ + "\nDo you want to save only the visible alignment?",
+ "Save / Omit Hidden Columns",
+ JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
+
+ if (reply == JOptionPane.YES_OPTION)
+ omitHidden = viewport.getViewAsString(false);
+ }
+
+ String output = new FormatAdapter().formatSequences(
+ format,
+ viewport.alignment.getSequencesArray(),
+ omitHidden);
+
if (output == null)
{
return false;
@@ -378,13 +406,32 @@ public class AlignFrame
*/
protected void outputText_actionPerformed(ActionEvent e)
{
+ String [] omitHidden = null;
+
+ if(viewport.hasHiddenColumns)
+ {
+ int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
+ "The Alignment contains hidden columns."
+ +"\nDo you want to output only the visible alignment?",
+ "Save / Omit Hidden Columns",
+ JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
+
+ if(reply==JOptionPane.YES_OPTION)
+ {
+ omitHidden = viewport.getViewAsString(false);
+ }
+ }
+
CutAndPasteTransfer cap = new CutAndPasteTransfer();
Desktop.addInternalFrame(cap,
"Alignment output - " + e.getActionCommand(), 600,
500);
- cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(),
- viewport.getAlignment().
- getSequences()));
+
+
+ cap.setText(new FormatAdapter().formatSequences(
+ e.getActionCommand(),
+ viewport.alignment.getSequencesArray(),
+ omitHidden));
}
/**
@@ -441,6 +488,7 @@ public class AlignFrame
new AnnotationExporter().exportFeatures(alignPanel);
}
+
public void exportAnnotations_actionPerformed(ActionEvent e)
{
new AnnotationExporter().exportAnnotations(
@@ -646,83 +694,41 @@ public class AlignFrame
return;
}
- SequenceGroup sg = viewport.getSelectionGroup();
-
- Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
-
- Hashtable orderedSeqs = new Hashtable();
- SequenceI[] seqs = new SequenceI[sg.getSize(false)];
+ SequenceI [] seqs = viewport.getSelectionAsNewSequence();
+ String[] omitHidden = null;
- for (int i = 0; i < sg.getSize(false); i++)
+ if (viewport.hasHiddenColumns)
{
- SequenceI seq = sg.getSequenceAt(i);
- int index = viewport.alignment.findIndex(seq);
- orderedSeqs.put(index + "", seq);
+ omitHidden = viewport.getViewAsString(true);
}
- int index = 0, startRes, endRes;
- char ch;
+ String output = new FormatAdapter().formatSequences(
+ "Fasta",
+ seqs,
+ omitHidden);
- for (int i = 0; i < sg.getSize(false); i++)
- {
- SequenceI seq = null;
- while (seq == null)
- {
- if (orderedSeqs.containsKey(index + ""))
- {
- seq = (SequenceI) orderedSeqs.get(index + "");
- index++;
+ Toolkit.getDefaultToolkit().getSystemClipboard()
+ .setContents(new StringSelection(output), Desktop.instance);
- break;
- }
- else
- {
- index++;
- }
- }
-
- //FIND START RES
- //Returns residue following index if gap
- startRes = seq.findPosition(sg.getStartRes());
-
- //FIND END RES
- //Need to find the residue preceeding index if gap
- endRes = 0;
-
- for (int j = 0; j < sg.getEndRes() + 1 && j < seq.getLength(); j++)
- {
- ch = seq.getCharAt(j);
- if (!jalview.util.Comparison.isGap( (ch)))
- {
- endRes++;
- }
- }
-
- if (endRes > 0)
+ Vector hiddenColumns = null;
+ if(viewport.hasHiddenColumns)
+ {
+ hiddenColumns =new Vector();
+ int hiddenOffset = viewport.getSelectionGroup().getStartRes();
+ for(int i=0; i>>This is a fix for the moment, until a better solution is found!!<<<
af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().transferSettings(
@@ -1059,6 +1082,13 @@ public class AlignFrame
PaintRefresher.Refresh(null, viewport.alignment);
}
+ public void invertColSel_actionPerformed(ActionEvent e)
+ {
+ viewport.invertColumnSelection();
+ alignPanel.repaint();
+ }
+
+
/**
* DOCUMENT ME!
*
@@ -1392,6 +1422,46 @@ public class AlignFrame
alignPanel.setWrapAlignment(wrapMenuItem.isSelected());
}
+ public void showAllSeqs_actionPerformed(ActionEvent e)
+ {
+ viewport.showAllHiddenSeqs();
+ repaint();
+ }
+
+ public void showAllColumns_actionPerformed(ActionEvent e)
+ {
+ viewport.showAllHiddenColumns();
+ }
+
+ public void hideSelSequences_actionPerformed(ActionEvent e)
+ {
+ if(viewport.getSelectionGroup()==null)
+ return;
+
+ SequenceI [] seqs = viewport.getSelectionGroup().getSequencesInOrder(
+ viewport.alignment
+ );
+
+ for(int i=0; i 1))
{
// JBPNote UGLY! To prettify, make SequenceGroup and Alignment conform to some common interface!
- SequenceGroup seqs = viewport.getSelectionGroup();
+ /*SequenceGroup seqs = viewport.getSelectionGroup();
int sz;
msa = new SequenceI[sz = seqs.getSize(false)];
for (int i = 0; i < sz; i++)
{
msa[i] = (SequenceI) seqs.getSequenceAt(i);
- }
+ } */
+ msa = viewport.getAlignmentView(true);
}
else
{
- Vector seqs = viewport.getAlignment().getSequences();
+ /*Vector seqs = viewport.getAlignment().getSequences();
if (seqs.size() > 1)
{
@@ -2284,7 +2336,8 @@ public class AlignFrame
{
msa[i] = (SequenceI) seqs.elementAt(i);
}
- }
+ }*/
+ msa = viewport.getAlignmentView(false);
}
return msa;
}
@@ -2417,9 +2470,9 @@ public class AlignFrame
if (nf.getTree() != null)
{
tp = new TreePanel(viewport,
- viewport.getAlignment().getSequences(), nf,
"FromFile",
- title);
+ title,
+ nf);
tp.setSize(w,h);
@@ -2488,7 +2541,7 @@ public class AlignFrame
{
public void actionPerformed(ActionEvent e)
{
- SequenceI[] msa = gatherSequencesForAlignment();
+ AlignmentView msa = gatherSequencesForAlignment();
new jalview.ws.MsaWSClient(sh, title, msa,
false, true, viewport.getAlignment().getDataset(), af);
@@ -2505,7 +2558,7 @@ public class AlignFrame
{
public void actionPerformed(ActionEvent e)
{
- SequenceI[] msa = gatherSequencesForAlignment();
+ AlignmentView msa = gatherSequencesForAlignment();
new jalview.ws.MsaWSClient(sh, title, msa,
true, true, viewport.getAlignment().getDataset(), af);
@@ -2590,10 +2643,12 @@ public class AlignFrame
-
public void showTranslation_actionPerformed(ActionEvent e)
{
- int s, sSize = viewport.alignment.getHeight();
+ SequenceI [] selection = viewport.getSelectionAsNewSequence();
+ String [] seqstring = viewport.getViewAsString(true);
+
+ int s, sSize = selection.length;
SequenceI [] newSeq = new SequenceI[sSize];
int res, resSize;
@@ -2602,7 +2657,7 @@ public void showTranslation_actionPerformed(ActionEvent e)
for(s=0; s