X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=03c0db9d20c8814eaa106c75ce7c4fb57bc987ef;hb=4944c2f33bb34b4f262fd2f3ae40dcdc2a825557;hp=fbe21b58de07ce093470a56454e5cfa6093c2bde;hpb=1d37661bae76ec6d499ff50a88ea249b8b33430e;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index fbe21b5..03c0db9 100755 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -140,19 +140,30 @@ public class AlignFrame extends Frame implements ActionListener, public void parseFeaturesFile(String file) { + String line = null; try { - URL url = new URL(file); + 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())); + } - BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); SequenceI seq = null; - String line, type, desc, token; + String type, desc, token; int index, start, end; StringTokenizer st; SequenceFeature sf; FeatureRenderer fr = alignPanel.seqPanel.seqCanvas.getFeatureRenderer(); int lineNo = 0; + String featureGroup = null; while ( (line = in.readLine()) != null) { lineNo++; @@ -160,8 +171,22 @@ public class AlignFrame extends Frame implements ActionListener, if (st.countTokens() == 2) { type = st.nextToken(); - UserColourScheme ucs = new UserColourScheme(st.nextToken()); - fr.setColour(type, ucs.findColour("A")); + 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()); + fr.setColour(type, ucs.findColour("A")); + } continue; } @@ -184,8 +209,6 @@ public class AlignFrame extends Frame implements ActionListener, end = Integer.parseInt(st.nextToken()); seq = viewport.alignment.getSequenceAt(index); - start = seq.findIndex(start) - 1; - end = seq.findIndex(end) - 1; type = st.nextToken(); @@ -197,6 +220,7 @@ public class AlignFrame extends Frame implements ActionListener, } sf = new SequenceFeature(type, desc, "", start, end); + sf.setFeatureGroup(featureGroup); seq.addSequenceFeature(sf); } @@ -213,7 +237,8 @@ public class AlignFrame extends Frame implements ActionListener, } catch (Exception ex) { - System.out.println("Error parsing groups file: " + ex); + ex.printStackTrace(); + System.out.println("Error parsing groups file: " + ex +"\n"+line); } }