X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=0edc57849ada3639a9322ac25e762225236ad05c;hb=21b2c08c209b0c4eb1111dab1d81e8408c245ddd;hp=a73958d51307c7dfccdd5c0fbc516839b48e5769;hpb=8aed870c8313557316ab9edad989e2fa675eb65e;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index a73958d..0edc578 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -35,6 +35,7 @@ import jalview.jbgui.*; import jalview.schemes.*; import jalview.ws.*; import java.awt.dnd.*; +import org.biojava.dasobert.eventmodel.*; /** @@ -44,7 +45,7 @@ import java.awt.dnd.*; * @version $Revision$ */ public class AlignFrame - extends GAlignFrame implements ClipboardOwner, DropTargetListener + extends GAlignFrame implements DropTargetListener, FeatureListener { /** DOCUMENT ME!! */ public static final int NEW_WINDOW_WIDTH = 700; @@ -125,11 +126,24 @@ public class AlignFrame }); - if (Desktop.desktop != null) - { - addServiceListeners(); - setGUINucleotide(al.isNucleotide()); + if (Desktop.desktop != null) + { + addServiceListeners(); + setGUINucleotide(al.isNucleotide()); + } + + + if (jalview.bin.Cache.getDefault("WRAP_ALIGNMENT", false)) + { + wrapMenuItem.setSelected(true); + wrapMenuItem_actionPerformed(null); + } + } + + public AlignViewport getViewport() + { + return viewport; } /* Set up intrinsic listeners for dynamically generated GUI bits. */ @@ -163,7 +177,6 @@ public class AlignFrame } ; }); - } public void setGUINucleotide(boolean nucleotide) @@ -181,6 +194,58 @@ public class AlignFrame } } + public void comeBackLater(FeatureEvent evt) + {} + + public void newFeatures(FeatureEvent evt) + { + if (evt.getFeatures().length > 0) + { + alignPanel.seqPanel.seqCanvas.fr.featuresAdded(); + alignPanel.repaint(); + if(featureSettings!=null) + featureSettings.setTableData(); + } + } + + Hashtable progressBars; + public void setProgressBar(String message, long id) + { + if(progressBars == null) + progressBars = new Hashtable(); + + JPanel progressPanel; + GridLayout layout = (GridLayout) statusPanel.getLayout(); + if(progressBars.get( new Long(id) )!=null) + { + progressPanel = (JPanel)progressBars.get( new Long(id) ); + statusPanel.remove(progressPanel); + progressBars.remove( progressPanel ); + progressPanel = null; + if(message!=null) + statusBar.setText(message); + + layout.setRows(layout.getRows() - 1); + } + else + { + progressPanel = new JPanel(new BorderLayout(10, 5)); + + JProgressBar progressBar = new JProgressBar(); + progressBar.setIndeterminate(true); + + progressPanel.add(new JLabel(message), BorderLayout.WEST); + progressPanel.add(progressBar, BorderLayout.CENTER); + + layout.setRows(layout.getRows() + 1); + statusPanel.add(progressPanel); + + progressBars.put(new Long(id), progressPanel); + } + + validate(); + } + /* Added so Castor Mapping file can obtain Jalview Version @@ -200,6 +265,22 @@ public class AlignFrame { new SequenceFetcher(this); } + + public void addFromFile_actionPerformed(ActionEvent e) + { + Desktop.instance.inputLocalFileMenuItem_actionPerformed(viewport); + } + + public void addFromText_actionPerformed(ActionEvent e) + { + Desktop.instance.inputTextboxMenuItem_actionPerformed(viewport); + } + + public void addFromURL_actionPerformed(ActionEvent e) + { + Desktop.instance.inputURLMenuItem_actionPerformed(viewport); + } + /** * DOCUMENT ME! * @@ -208,19 +289,15 @@ public class AlignFrame public void saveAlignmentMenu_actionPerformed(ActionEvent e) { JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache. - getProperty( - "LAST_DIRECTORY"), + getProperty( "LAST_DIRECTORY"), new String[] - { - "fa, fasta, fastq", "aln", "pfam", "msf", "pir", "blc", - "jar" - }, + { "fa, fasta, fastq", "aln", "pfam", "msf", "pir", "blc","jar" }, new String[] - { - "Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "Jalview" - }, currentFileFormat); + { "Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "Jalview" }, + currentFileFormat, + false); + - chooser.setAcceptAllFileFilterUsed(false); chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle("Save Alignment to file"); chooser.setToolTipText("Save"); @@ -270,9 +347,22 @@ public class AlignFrame } else { - String output = new FormatAdapter().formatSequences(format, - viewport.getAlignment(). - getSequences()); + + String[] omitHidden = null; + + if (viewport.hasHiddenColumns) + { + System.out.println("PROMPT USER HERE"); + omitHidden = viewport.getSelectionAsString(); + } + + String output = new FormatAdapter().formatSequences( + format, + viewport.getSelectionAsNewSequence(), + omitHidden) ; + + + if (output == null) { return false; @@ -285,6 +375,7 @@ public class AlignFrame out.print(output); out.close(); + this.setTitle(file); return true; } catch (Exception ex) @@ -303,12 +394,20 @@ public class AlignFrame protected void outputText_actionPerformed(ActionEvent e) { CutAndPasteTransfer cap = new CutAndPasteTransfer(); - Desktop.addInternalFrame(cap, - "Alignment output - " + e.getActionCommand(), 600, - 500); - cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(), - viewport.getAlignment(). - getSequences())); + + + String [] omitHidden = null; + + if(viewport.hasHiddenColumns) + { + System.out.println("PROMPT USER HERE"); + omitHidden = viewport.getSelectionAsString(); + } + + cap.setText(new FormatAdapter().formatSequences( + e.getActionCommand(), + viewport.getSelectionAsNewSequence(), + omitHidden)); } /** @@ -360,6 +459,20 @@ public class AlignFrame thread.start(); } + public void exportFeatures_actionPerformed(ActionEvent e) + { + new AnnotationExporter().exportFeatures(alignPanel); + } + + public void exportAnnotations_actionPerformed(ActionEvent e) + { + new AnnotationExporter().exportAnnotations( + alignPanel, + viewport.alignment.getAlignmentAnnotation() + ); + } + + public void associatedData_actionPerformed(ActionEvent e) { // Pick the tree file @@ -500,14 +613,14 @@ public class AlignFrame { SequenceI seq = viewport.alignment.getSequenceAt(i); - if (!sg.sequences.contains(seq)) + if (!sg.getSequences(false).contains(seq)) { continue; } SequenceI temp = viewport.alignment.getSequenceAt(i - 1); - if (sg.sequences.contains(temp)) + if (sg.getSequences(false).contains(temp)) { continue; } @@ -522,14 +635,14 @@ public class AlignFrame { SequenceI seq = viewport.alignment.getSequenceAt(i); - if (!sg.sequences.contains(seq)) + if (!sg.getSequences(false).contains(seq)) { continue; } SequenceI temp = viewport.alignment.getSequenceAt(i + 1); - if (sg.sequences.contains(temp)) + if (sg.getSequences(false).contains(temp)) { continue; } @@ -542,10 +655,6 @@ public class AlignFrame alignPanel.repaint(); } - public void lostOwnership(Clipboard clipboard, Transferable contents) - { - Desktop.jalviewClipboard = null; - } /** @@ -560,79 +669,32 @@ public class AlignFrame return; } - SequenceGroup sg = viewport.getSelectionGroup(); + SequenceI [] seqs = viewport.getSelectionAsNewSequence(); Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); - Hashtable orderedSeqs = new Hashtable(); - SequenceI[] seqs = new SequenceI[sg.getSize()]; - - for (int i = 0; i < sg.getSize(); i++) - { - SequenceI seq = sg.getSequenceAt(i); - int index = viewport.alignment.findIndex(seq); - orderedSeqs.put(index + "", seq); - } + FastaFile ff = new FastaFile(); + ff.addJVSuffix( viewport.showJVSuffix ); - int index = 0, startRes, endRes; - char ch; + c.setContents(new StringSelection(ff.print(seqs)), Desktop.instance); - for (int i = 0; i < sg.getSize(); i++) + Vector hiddenColumns = null; + if(viewport.hasHiddenColumns && viewport.getSelectionGroup()!=null) { - SequenceI seq = null; - - while (seq == null) + hiddenColumns =new Vector(); + int hiddenOffset = viewport.getSelectionGroup().getStartRes(); + for(int i=0; i 0) - { - endRes += seq.getStart() - 1; - } - - seqs[i] = new Sequence(seq.getName(), - seq.getSequence(sg.getStartRes(), sg.getEndRes() + 1), - startRes, - endRes); - seqs[i].setDescription(seq.getDescription()); - seqs[i].setDBRef(seq.getDBRef()); - seqs[i].setSequenceFeatures(seq.getSequenceFeatures()); - seqs[i].setDatasetSequence(seq.getDatasetSequence()); - } - - FastaFile ff = new FastaFile(); - ff.addJVSuffix( viewport.showJVSuffix ); - c.setContents(new StringSelection( ff.print(seqs)), this); - Desktop.jalviewClipboard = new Object[]{seqs, viewport.alignment.getDataset()}; + Desktop.jalviewClipboard = new Object[]{ seqs, + viewport.alignment.getDataset(), + hiddenColumns}; } /** @@ -692,74 +754,103 @@ public class AlignFrame sequences = new FormatAdapter().readFile(str, "Paste", format); } + AlignmentI alignment = null; + if (newAlignment) { - - Alignment alignment = new Alignment(sequences); + alignment = new Alignment(sequences); if(Desktop.jalviewClipboard!=null) alignment.setDataset( (Alignment)Desktop.jalviewClipboard[1] ); else alignment.setDataset( null ); - - - AlignFrame af = new AlignFrame(alignment); - String newtitle = new String("Copied sequences"); - - //>>>This is a fix for the moment, until a better solution is found!!<<< - af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().transferSettings( - alignPanel.seqPanel.seqCanvas.getFeatureRenderer()); - - - if (title.startsWith("Copied sequences")) - { - newtitle = title; - } - else - { - newtitle = newtitle.concat("- from " + title); - } - - Desktop.addInternalFrame(af, newtitle, NEW_WINDOW_WIDTH, - NEW_WINDOW_HEIGHT); } else { + alignment = viewport.getAlignment(); + //!newAlignment for (int i = 0; i < sequences.length; i++) { + Sequence newseq = new Sequence(sequences[i].getName(), sequences[i].getSequence(), sequences[i].getStart(), sequences[i].getEnd()); - viewport.alignment.addSequence(newseq); - if(sequences[i].getDatasetSequence()==null) - { - //////////////////////////// - //Datset needs extension; - ///////////////////////////// - Sequence ds = new Sequence(sequences[i].getName(), - AlignSeq.extractGaps("-. ", sequences[i].getSequence()), - sequences[i].getStart(), - sequences[i].getEnd()); - newseq.setDatasetSequence(ds); - viewport.alignment.getDataset().addSequence(ds); - } - else - { - newseq.setDatasetSequence(sequences[i].getDatasetSequence()); - if(sequences[i].getDatasetSequence().getAnnotation()!=null) - { - for(int aa=0; aa>>This is a fix for the moment, until a better solution is found!!<<< + af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().transferSettings( + alignPanel.seqPanel.seqCanvas.getFeatureRenderer()); + + + if (title.startsWith("Copied sequences")) + { + newtitle = title; + } + else + { + newtitle = newtitle.concat("- from " + title); + } + + Desktop.addInternalFrame(af, newtitle, NEW_WINDOW_WIDTH, + NEW_WINDOW_HEIGHT); + + } + + } catch (Exception ex) { @@ -830,7 +921,7 @@ public class AlignFrame HistoryItem.HIDE)); - for (int i = 0; i < sg.sequences.size(); i++) + for (int i = 0; i < sg.getSize(false); i++) { SequenceI seq = sg.getSequenceAt(i); int index = viewport.getAlignment().findIndex(seq); @@ -838,7 +929,7 @@ public class AlignFrame seq.deleteChars(sg.getStartRes(), sg.getEndRes() + 1); // If the cut affects all sequences, remove highlighted columns - if (sg.sequences.size() == viewport.alignment.getHeight()) + if (sg.getSize(false) == viewport.alignment.getHeight()) { viewport.getColumnSelection().removeElements(sg.getStartRes(), sg.getEndRes() + 1); @@ -923,6 +1014,7 @@ public class AlignFrame viewport.setSelectionGroup(null); alignPanel.seqPanel.seqCanvas.highlightSearchResults(null); alignPanel.idPanel.idCanvas.searchResults = null; + alignPanel.repaint(); PaintRefresher.Refresh(null, viewport.alignment); } @@ -1075,10 +1167,10 @@ public class AlignFrame int end = viewport.alignment.getWidth(); if (viewport.getSelectionGroup() != null - && viewport.getSelectionGroup().sequences != null - && viewport.getSelectionGroup().sequences.size() > 0) + && viewport.getSelectionGroup().getSequences(true) != null + && viewport.getSelectionGroup().getSize(true) > 0) { - seqs = viewport.getSelectionGroup().sequences; + seqs = viewport.getSelectionGroup().getSequences(true); start = viewport.getSelectionGroup().getStartRes(); end = viewport.getSelectionGroup().getEndRes()+1; } @@ -1190,7 +1282,8 @@ public class AlignFrame SequenceGroup sg = (SequenceGroup)viewport.alignment.getGroups().elementAt(s); if(sg.cs!=null && sg.cs instanceof ClustalxColourScheme) { - ((ClustalxColourScheme)sg.cs).resetClustalX(sg.sequences, sg.getWidth()); + ((ClustalxColourScheme)sg.cs).resetClustalX( + sg.getSequences(true), sg.getWidth()); } sg.recalcConservation(); } @@ -1274,14 +1367,13 @@ public class AlignFrame * * @param e DOCUMENT ME! */ - protected void wrapMenuItem_actionPerformed(ActionEvent e) + public void wrapMenuItem_actionPerformed(ActionEvent e) { - viewport.setWrapAlignment(wrapMenuItem.isSelected()); - alignPanel.setWrapAlignment(wrapMenuItem.isSelected()); scaleAbove.setVisible(wrapMenuItem.isSelected()); scaleLeft.setVisible(wrapMenuItem.isSelected()); scaleRight.setVisible(wrapMenuItem.isSelected()); - alignPanel.repaint(); + viewport.setWrapAlignment(wrapMenuItem.isSelected()); + alignPanel.setWrapAlignment(wrapMenuItem.isSelected()); } /** @@ -1350,22 +1442,16 @@ public class AlignFrame alignPanel.repaint(); } - public void fetchSeqFeatures_actionPerformed(ActionEvent e) - { - if (!viewport.alignment.isNucleotide()) - { - new SequenceFeatureFetcher(viewport. - alignment, - alignPanel); - viewport.setShowSequenceFeatures(true); - showSeqFeatures.setSelected(true); - } - } - + FeatureSettings featureSettings; public void featureSettings_actionPerformed(ActionEvent e) { - new FeatureSettings(viewport, alignPanel); + if(featureSettings !=null ) + { + featureSettings.close(); + featureSettings = null; + } + featureSettings = new FeatureSettings(this); } /** @@ -1548,7 +1634,7 @@ public class AlignFrame * * @param cs DOCUMENT ME! */ - void changeColour(ColourSchemeI cs) + public void changeColour(ColourSchemeI cs) { int threshold = 0; @@ -1612,7 +1698,8 @@ public class AlignFrame if (cs instanceof ClustalxColourScheme) { - sg.cs = new ClustalxColourScheme(sg.sequences, sg.getWidth()); + sg.cs = new ClustalxColourScheme( + sg.getSequences(true), sg.getWidth()); } else if (cs instanceof UserColourScheme) { @@ -1636,9 +1723,10 @@ public class AlignFrame sg.cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus()); - sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0, - sg.getWidth())); - } + sg.cs.setConsensus(AAFrequency.calculate( + sg.getSequences(true), 0, + sg.getWidth())); + } else sg.cs.setThreshold(0, viewport.getIgnoreGapsConsensus()); @@ -1647,7 +1735,7 @@ public class AlignFrame { Conservation c = new Conservation("Group", ResidueProperties.propHash, 3, - sg.sequences, 0, + sg.getSequences(true), 0, viewport.alignment.getWidth() - 1); c.calculate(); c.verdict(false, viewport.ConsPercGaps); @@ -1886,13 +1974,10 @@ public class AlignFrame */ public void removeRedundancyMenuItem_actionPerformed(ActionEvent e) { - RedundancyPanel sp = new RedundancyPanel(alignPanel, this); - JInternalFrame frame = new JInternalFrame(); - frame.setContentPane(sp); - Desktop.addInternalFrame(frame, "Redundancy threshold selection", 400, - 100, false); + new RedundancyPanel(alignPanel, this); } + /** * DOCUMENT ME! * @@ -1901,7 +1986,7 @@ public class AlignFrame public void pairwiseAlignmentMenuItem_actionPerformed(ActionEvent e) { if ( (viewport.getSelectionGroup() == null) || - (viewport.getSelectionGroup().getSize() < 2)) + (viewport.getSelectionGroup().getSize(false) < 2)) { JOptionPane.showInternalMessageDialog(this, "You must select at least 2 sequences.", @@ -1924,8 +2009,8 @@ public class AlignFrame public void PCAMenuItem_actionPerformed(ActionEvent e) { if ( ( (viewport.getSelectionGroup() != null) && - (viewport.getSelectionGroup().getSize() < 4) && - (viewport.getSelectionGroup().getSize() > 0)) || + (viewport.getSelectionGroup().getSize(false) < 4) && + (viewport.getSelectionGroup().getSize(false) > 0)) || (viewport.getAlignment().getHeight() < 4)) { JOptionPane.showInternalMessageDialog(this, @@ -2003,15 +2088,15 @@ public class AlignFrame TreePanel tp; if ( (viewport.getSelectionGroup() != null) && - (viewport.getSelectionGroup().getSize() > 3)) + (viewport.getSelectionGroup().getSize(false) > 3)) { int s = 0; SequenceGroup sg = viewport.getSelectionGroup(); /* Decide if the selection is a column region */ - while (s < sg.sequences.size()) + while (s < sg.getSize(false)) { - if ( ( (SequenceI) sg.sequences.elementAt(s++)).getLength() < + if ( ( (SequenceI) sg.getSequences(false).elementAt(s++)).getLength() < sg.getEndRes()) { JOptionPane.showMessageDialog(Desktop.desktop, @@ -2026,9 +2111,7 @@ public class AlignFrame } title = title + " on region"; - tp = new TreePanel(viewport, - viewport.getSelectionGroup().sequences, type, pwType, - sg.getStartRes(), sg.getEndRes()); + tp = new TreePanel(viewport, type, pwType); } else { @@ -2045,10 +2128,7 @@ public class AlignFrame return; } - tp = new TreePanel(viewport, - viewport.getAlignment().getSequences(), type, pwType, - 0, - viewport.alignment.getWidth()); + tp = new TreePanel(viewport, type, pwType); } addTreeMenuItem(tp, title); @@ -2142,12 +2222,12 @@ public class AlignFrame SequenceI[] msa = null; if ( (viewport.getSelectionGroup() != null) && - (viewport.getSelectionGroup().getSize() > 1)) + (viewport.getSelectionGroup().getSize(false) > 1)) { // JBPNote UGLY! To prettify, make SequenceGroup and Alignment conform to some common interface! SequenceGroup seqs = viewport.getSelectionGroup(); int sz; - msa = new SequenceI[sz = seqs.getSize()]; + msa = new SequenceI[sz = seqs.getSize(false)]; for (int i = 0; i < sz; i++) { @@ -2183,19 +2263,19 @@ public class AlignFrame SequenceI[] msa = null; if ( (viewport.getSelectionGroup() != null) && - (viewport.getSelectionGroup().getSize() > 0)) + (viewport.getSelectionGroup().getSize(false) > 0)) { // JBPNote UGLY! To prettify, make SequenceGroup and Alignment conform to some common interface! SequenceGroup seqs = viewport.getSelectionGroup(); - if ( (seqs.getSize() == 1) || !viewport.alignment.isAligned()) + if ( (seqs.getSize(false) == 1) || !viewport.alignment.isAligned()) { seq = (SequenceI) seqs.getSequenceAt(0); } else { int sz; - msa = new SequenceI[sz = seqs.getSize()]; + msa = new SequenceI[sz = seqs.getSize(false)]; for (int i = 0; i < sz; i++) { @@ -2299,9 +2379,9 @@ public class AlignFrame if (nf.getTree() != null) { tp = new TreePanel(viewport, - viewport.getAlignment().getSequences(), nf, "FromFile", - title); + title, + nf); tp.setSize(w,h); @@ -2587,93 +2667,28 @@ public void showTranslation_actionPerformed(ActionEvent e) * * @param String DOCUMENT ME! */ -public boolean parseGroupsFile(String file) +public boolean parseFeaturesFile(String file, String type) { - String line = null; - try - { - BufferedReader in = new BufferedReader(new FileReader(file)); - SequenceI seq = null; - String type, desc, token; - - int index, start, end; - StringTokenizer st; - SequenceFeature sf; - int lineNo = 0; - String featureGroup = null; - while ( (line = in.readLine()) != null) - { - lineNo++; - st = new StringTokenizer(line, "\t"); - if (st.countTokens() == 2) - { - type = st.nextToken(); - if (type.equalsIgnoreCase("startgroup")) - { - featureGroup = st.nextToken(); - } - else if (type.equalsIgnoreCase("endgroup")) - { - //We should check whether this is the current group, - //but at present theres no way of showing more than 1 group - st.nextToken(); - featureGroup = null; - } - else - { - UserColourScheme ucs = new UserColourScheme(st.nextToken()); - alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setColour(type, - ucs.findColour("A")); - } - continue; - } - - while (st.hasMoreElements()) - { - desc = st.nextToken(); - token = st.nextToken(); - if (!token.equals("ID_NOT_SPECIFIED")) - { - index = viewport.alignment.findIndex(viewport.alignment.findName(token)); - st.nextToken(); - } - else - { - index = Integer.parseInt(st.nextToken()); - } - - start = Integer.parseInt(st.nextToken()); - end = Integer.parseInt(st.nextToken()); - - seq = viewport.alignment.getSequenceAt(index); - - type = st.nextToken(); - - if (alignPanel.seqPanel.seqCanvas.getFeatureRenderer().getColour(type) == null) - { - // Probably the old style groups file - UserColourScheme ucs = new UserColourScheme(type); - alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setColour(type, ucs.findColour("A")); - } - - sf = new SequenceFeature(type, desc, "", start, end, featureGroup); - - seq.getDatasetSequence().addSequenceFeature(sf); - } - } + boolean featuresFile = false; + try{ + featuresFile = new FeaturesFile(file, type).parse(viewport.alignment.getDataset(), + alignPanel.seqPanel.seqCanvas. + getFeatureRenderer().featureColours, + false); } - catch (Exception ex) + catch(Exception ex) { - System.out.println(line); ex.printStackTrace(); - System.out.println("Error parsing groups file: " + ex +"\n"+line); - return false; } - viewport.showSequenceFeatures = true; - showSeqFeatures.setSelected(true); - alignPanel.repaint(); - return true; + if(featuresFile) + { + viewport.showSequenceFeatures = true; + showSeqFeatures.setSelected(true); + alignPanel.repaint(); + } + + return featuresFile; } public void dragEnter(DropTargetDragEvent evt) @@ -2754,12 +2769,13 @@ public void drop(DropTargetDropEvent evt) public void loadJalviewDataFile(String file) { try{ - boolean isAnnotation = new AnnotationReader().readAnnotationFile(viewport. + boolean isAnnotation = new AnnotationFile().readAnnotationFile(viewport. alignment, file); if (!isAnnotation) { - boolean isGroupsFile = parseGroupsFile(file); + boolean isGroupsFile = parseFeaturesFile(file, + AppletFormatAdapter.FILE); if (!isGroupsFile) { String protocol = "File"; @@ -2769,24 +2785,15 @@ public void drop(DropTargetDropEvent evt) FastaFile ff = new FastaFile(); Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); - c.setContents(new StringSelection(ff.print(sequences)), this); + c.setContents(new StringSelection(ff.print(sequences)), Desktop.instance); this.paste(false); } } - - if (isAnnotation) + else { - int height = alignPanel.annotationPanel.adjustPanelHeight(); - alignPanel.annotationScroller.setPreferredSize( - new Dimension(alignPanel.annotationScroller.getWidth(), - height)); - - alignPanel.annotationSpaceFillerHolder.setPreferredSize(new Dimension( - alignPanel.annotationSpaceFillerHolder.getWidth(), - height)); - - alignPanel.addNotify(); + // (isAnnotation) + alignPanel.adjustAnnotationHeight(); } }catch(Exception ex)