From 6ce8b88ca3d675b5ce00a8ca54416f970c2632d8 Mon Sep 17 00:00:00 2001 From: amwaterhouse Date: Fri, 23 Jun 2006 13:45:06 +0000 Subject: [PATCH] Uses FeaturesFile parser, GFF and Jalview --- src/jalview/appletgui/AlignFrame.java | 157 +++------------------------------ 1 file changed, 12 insertions(+), 145 deletions(-) diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index c4c2c5b..d7bf91a 100755 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -148,162 +148,29 @@ public class AlignFrame extends Frame implements ActionListener, * @param String DOCUMENT ME! */ - public void parseFeaturesFile(String file) + public void parseFeaturesFile(String file, String type) { - String line = null; - try - { - BufferedReader in = null; - java.io.InputStream is = getClass().getResourceAsStream("/" + file); - if (is != null) - { - in = new BufferedReader(new java.io.InputStreamReader(is)); - } - else - { - URL url = new URL(file); - in = new BufferedReader(new InputStreamReader(url.openStream())); - } - - SequenceI seq = null; - String type, desc, token; - - int index, start, end; - StringTokenizer st; - SequenceFeature sf; - FeatureRenderer fr = alignPanel.seqPanel.seqCanvas.getFeatureRenderer(); - String featureGroup = null, groupLink = null; - Hashtable typeLink = new Hashtable(); - - while ( (line = in.readLine()) != null) - { - st = new StringTokenizer(line, "\t"); - if(!st.hasMoreTokens()) - continue; - - if (st.countTokens() < 4) - { - type = st.nextToken(); - if(type.equalsIgnoreCase("startgroup")) - { - featureGroup = st.nextToken(); - if (st.hasMoreElements()) - { - groupLink = st.nextToken(); - fr.addFeatureLink(featureGroup, groupLink); - } - } - 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; - groupLink = null; - } - else - { - UserColourScheme ucs = new UserColourScheme(st.nextToken()); - fr.setColour(type, ucs.findColour("A")); - if (st.hasMoreElements()) - { - String link = st.nextToken(); - typeLink.put(type, link); - fr.addFeatureLink(type, link); - } - - } - 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(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, 0f, featureGroup); - seq.addSequenceFeature(sf); - - if(groupLink!=null) - { - sf.addLink(groupLink); - sf.description += "%LINK%"; - } - if(typeLink.containsKey(type)) - { - sf.addLink(typeLink.get(type).toString()); - sf.description += "%LINK%"; - } - - parseDescriptionHTML(sf); - } - } - - viewport.showSequenceFeatures = true; - sequenceFeatures.setState(true); - - alignPanel.repaint(); - + boolean featuresFile = false; + try{ + featuresFile = new jalview.io.FeaturesFile(file, type).parse(viewport.alignment, + alignPanel.seqPanel.seqCanvas. + getFeatureRenderer().featureColours); } - catch (Exception ex) + catch(Exception ex) { ex.printStackTrace(); - System.out.println("Error parsing groups file: " + ex +"\n"+line); } - } - void parseDescriptionHTML(SequenceFeature sf) - { - StringBuffer sb = new StringBuffer(); - StringTokenizer st = new StringTokenizer(sf.getDescription(), "<"); - String token, link; - while(st.hasMoreElements()) + if(featuresFile) { - token = st.nextToken("<>"); - if(token.equalsIgnoreCase("html") || token.startsWith("/")) - continue; - - if(token.startsWith("a href=")) - { - link = token.substring(token.indexOf("\"")+1, token.length()-1); - String label = st.nextToken("<>"); - sf.addLink(label+"|"+link); - sb.append(label+"%LINK%"); - } - else if(token.equalsIgnoreCase("br")) - sb.append("\n"); - else - sb.append(token); + viewport.showSequenceFeatures = true; + sequenceFeatures.setState(true); + alignPanel.repaint(); } - sf.description = sb.toString(); } + public void keyPressed(KeyEvent evt) { if (viewport.cursorMode -- 1.7.10.2