From: amwaterhouse Date: Mon, 30 Jan 2006 14:54:07 +0000 (+0000) Subject: Drop annotations onto alignment X-Git-Tag: Root_VamJalview_2_07b+~206 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=bb146716cea5dbc20e3dc1c5a5b288c979b30229;p=jalview.git Drop annotations onto alignment --- diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index bfdc40b..5685e42 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -34,6 +34,7 @@ import jalview.io.*; import jalview.jbgui.*; import jalview.schemes.*; import jalview.ws.*; +import java.awt.dnd.*; /** @@ -43,7 +44,7 @@ import jalview.ws.*; * @version $Revision$ */ public class AlignFrame - extends GAlignFrame implements ClipboardOwner + extends GAlignFrame implements ClipboardOwner, DropTargetListener { /** DOCUMENT ME!! */ public static final int NEW_WINDOW_WIDTH = 700; @@ -73,6 +74,7 @@ public class AlignFrame viewport = new AlignViewport(al); viewports.add(viewport); + this.setDropTarget(new java.awt.dnd.DropTarget(this, this)); if(viewport.vconsensus==null) { @@ -199,93 +201,6 @@ public class AlignFrame } - /** - * DOCUMENT ME! - * - * @param String DOCUMENT ME! - */ - - public void parseGroupsFile(String file) - { - try - { - BufferedReader in = new BufferedReader(new FileReader(file)); - SequenceI seq = null; - String line, type, desc, token; - - int index, start, end; - StringTokenizer st; - SequenceFeature sf; - FeatureRenderer fr = alignPanel.seqPanel.seqCanvas.getFeatureRenderer(); - int lineNo = 0; - while ( (line = in.readLine()) != null) - { - lineNo++; - st = new StringTokenizer(line, "\t"); - if (st.countTokens() == 2) - { - type = st.nextToken(); - UserColourScheme ucs = new UserColourScheme(st.nextToken()); - fr.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); - start = seq.findIndex(start) - 1; - end = seq.findIndex(end) - 1; - - type = st.nextToken(); - - if (fr.getColour(type) == null) - { - // Probably the old style groups file - UserColourScheme ucs = new UserColourScheme(type); - fr.setColour(type, ucs.findColour("A")); - } - - - sf = new SequenceFeature(type, desc, "", start, end); - - seq.getDatasetSequence().addSequenceFeature(sf); - - - // sg = new SequenceGroup(text, ucs, true, true, false, start, end); - // sg.addSequence(seq, false); - - // viewport.alignment.addGroup(sg); - - } - } - - viewport.showSequenceFeatures = true; - - alignPanel.repaint(); - - } - catch (Exception ex) - { - System.out.println("Error parsing groups file: " + ex); - } - } - public void fetchSequence_actionPerformed(ActionEvent e) { new SequenceFetcher(this); @@ -1287,6 +1202,14 @@ public class AlignFrame new FontChooser(alignPanel); } + public void smoothFont_actionPerformed(ActionEvent e) + { + viewport.antiAlias = smoothFont.isSelected(); + alignPanel.annotationPanel.image = null; + alignPanel.repaint(); + } + + /** * DOCUMENT ME! * @@ -1558,6 +1481,12 @@ public class AlignFrame changeColour(new NucleotideColourScheme()); } + public void annotationColour_actionPerformed(ActionEvent e) + { + new AnnotationColourChooser(viewport, alignPanel); + } + + /** * DOCUMENT ME! * @@ -2596,4 +2525,107 @@ public void showTranslation_actionPerformed(ActionEvent e) viewport = (AlignViewport)viewports.elementAt(index); alignPanel = (AlignmentPanel)alignPanels.elementAt(index); }*/ + +/** + * DOCUMENT ME! + * + * @param String DOCUMENT ME! + */ +public boolean parseGroupsFile(String file) +{ + AnnotationReader ar = new AnnotationReader(); + + if (ar.readGroupsFile(alignPanel.seqPanel.seqCanvas.getFeatureRenderer(), + viewport.alignment, file)) + { + viewport.showSequenceFeatures = true; + alignPanel.repaint(); + return true; + } + else + return false; +} + +public void dragEnter(DropTargetDragEvent evt) +{} + +public void dragExit(DropTargetEvent evt) +{} + +public void dragOver(DropTargetDragEvent evt) +{} + +public void dropActionChanged(DropTargetDragEvent evt) +{} + +public void drop(DropTargetDropEvent evt) +{ + Transferable t = evt.getTransferable(); + java.util.List files = null; + + try + { + DataFlavor uriListFlavor = new DataFlavor("text/uri-list;class=java.lang.String"); + if (t.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) + { + //Works on Windows and MacOSX + evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); + files = (java.util.List) t.getTransferData(DataFlavor.javaFileListFlavor); + } + else if (t.isDataFlavorSupported(uriListFlavor)) + { + // This is used by Unix drag system + evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); + String data = (String) t.getTransferData(uriListFlavor); + files = new java.util.ArrayList(1); + for (java.util.StringTokenizer st = new java.util.StringTokenizer( + data, + "\r\n"); + st.hasMoreTokens(); ) + { + String s = st.nextToken(); + if (s.startsWith("#")) + { + // the line is a comment (as per the RFC 2483) + continue; + } + + java.net.URI uri = new java.net.URI(s); + java.io.File file = new java.io.File(uri); + files.add(file); + } + } + } + catch (Exception e) + { + e.printStackTrace(); + } + + if (files != null) + { + AnnotationReader ar = new AnnotationReader(); + try + { + for (int i = 0; i < files.size(); i++) + { + String file = files.get(i).toString(); + if(! ar.readAnnotationFile(viewport.alignment, file) ) + parseGroupsFile(file); + else + { + + } + } + + alignPanel.annotationPanel.adjustPanelHeight(); + alignPanel.annotationScroller.validate(); + alignPanel.repaint(); + } + catch (Exception ex) + { + ex.printStackTrace(); + } + } +} + }