\r
annotationPanelMenuItem.setState(viewport.showAnnotation);\r
\r
+ seqLimits.setState(viewport.showJVSuffix);\r
+\r
if(applet!=null)\r
{\r
String param = applet.getParameter("sortBy");\r
* @param String DOCUMENT ME!\r
*/\r
\r
- public void parseFeaturesFile(String file)\r
+ public void parseFeaturesFile(String file, String type)\r
{\r
- String line = null;\r
- try\r
+ Hashtable featureLinks = new Hashtable();\r
+ boolean featuresFile = false;\r
+ try{\r
+ featuresFile = new jalview.io.FeaturesFile(file, type).parse(viewport.alignment,\r
+ alignPanel.seqPanel.seqCanvas.\r
+ getFeatureRenderer().featureColours,\r
+ featureLinks,\r
+ true);\r
+ }\r
+ catch(Exception ex)\r
{\r
- BufferedReader in = null;\r
- java.io.InputStream is = getClass().getResourceAsStream("/" + file);\r
- if (is != null)\r
- {\r
- in = new BufferedReader(new java.io.InputStreamReader(is));\r
- }\r
- else\r
- {\r
- URL url = new URL(file);\r
- in = new BufferedReader(new InputStreamReader(url.openStream()));\r
- }\r
-\r
- SequenceI seq = null;\r
- String type, desc, token;\r
-\r
- int index, start, end;\r
- StringTokenizer st;\r
- SequenceFeature sf;\r
- FeatureRenderer fr = alignPanel.seqPanel.seqCanvas.getFeatureRenderer();\r
- int lineNo = 0;\r
- String featureGroup = null;\r
- while ( (line = in.readLine()) != null)\r
- {\r
- lineNo++;\r
- st = new StringTokenizer(line, "\t");\r
- if (st.countTokens() == 2)\r
- {\r
- type = st.nextToken();\r
- if(type.equalsIgnoreCase("startgroup"))\r
- {\r
- featureGroup = st.nextToken();\r
- }\r
- else if(type.equalsIgnoreCase("endgroup"))\r
- {\r
- //We should check whether this is the current group,\r
- //but at present theres no way of showing more than 1 group\r
- st.nextToken();\r
- featureGroup = null;\r
- }\r
- else\r
- {\r
- UserColourScheme ucs = new UserColourScheme(st.nextToken());\r
- fr.setColour(type, ucs.findColour("A"));\r
- }\r
- continue;\r
- }\r
-\r
- while (st.hasMoreElements())\r
- {\r
- desc = st.nextToken();\r
- token = st.nextToken();\r
- if (!token.equals("ID_NOT_SPECIFIED"))\r
- {\r
- index = viewport.alignment.findIndex(viewport.alignment.findName(\r
- token));\r
- st.nextToken();\r
- }\r
- else\r
- {\r
- index = Integer.parseInt(st.nextToken());\r
- }\r
-\r
- start = Integer.parseInt(st.nextToken());\r
- end = Integer.parseInt(st.nextToken());\r
-\r
- seq = viewport.alignment.getSequenceAt(index);\r
-\r
- type = st.nextToken();\r
-\r
- if(fr.getColour(type)==null)\r
- {\r
- // Probably the old style groups file\r
- UserColourScheme ucs = new UserColourScheme(type);\r
- fr.setColour(type, ucs.findColour("A"));\r
- }\r
-\r
- sf = new SequenceFeature(type, desc, "", start, end, featureGroup);\r
-\r
- seq.addSequenceFeature(sf);\r
- }\r
- }\r
+ ex.printStackTrace();\r
+ }\r
\r
+ if(featuresFile)\r
+ {\r
+ if(featureLinks.size()>0)\r
+ alignPanel.seqPanel.seqCanvas\r
+ .getFeatureRenderer().featureLinks = featureLinks;\r
viewport.showSequenceFeatures = true;\r
sequenceFeatures.setState(true);\r
-\r
alignPanel.repaint();\r
-\r
- }\r
- catch (Exception ex)\r
- {\r
- ex.printStackTrace();\r
- System.out.println("Error parsing groups file: " + ex +"\n"+line);\r
}\r
+\r
}\r
\r
+\r
public void keyPressed(KeyEvent evt)\r
{\r
if (viewport.cursorMode\r
}\r
break;\r
case KeyEvent.VK_C:\r
- if (viewport.cursorMode)\r
+ if (viewport.cursorMode && !evt.isControlDown())\r
{\r
alignPanel.seqPanel.setCursorColumn();\r
}\r
inputText_actionPerformed();\r
else if(evt.getSource()==loadTree)\r
loadTree_actionPerformed();\r
+ else if(evt.getSource()==loadApplication)\r
+ launchFullApplication();\r
else if(evt.getSource()==closeMenuItem)\r
closeMenuItem_actionPerformed();\r
else if(evt.getSource()==copy)\r
viewport.showJVSuffix));\r
}\r
\r
+ void launchFullApplication()\r
+ {\r
+ StringBuffer url = new StringBuffer("http://bug.compbio.dundee.ac.uk:8080/Jalview/jalview?");\r
+\r
+ url.append("open="+\r
+ appendProtocol( applet.getParameter("file") ) );\r
+\r
+ if(applet.getParameter("features")!=null)\r
+ {\r
+ url.append( "&features=" );\r
+ url.append( appendProtocol( applet.getParameter("features") ) );\r
+ }\r
+\r
+ if(applet.getParameter("defaultColour")!=null)\r
+ {\r
+ url.append("&colour=" +\r
+ removeWhiteSpace(applet.getParameter("defaultColour"))\r
+ );\r
+ }\r
+\r
+ if(applet.getParameter("userDefinedColour")!=null)\r
+ {\r
+ url.append( "&colour=" +\r
+ removeWhiteSpace( applet.getParameter("userDefinedColour") )\r
+ );\r
+ }\r
+\r
+ showURL(url.toString(), "FULL_APP");\r
+ }\r
+\r
+\r
+ String removeWhiteSpace(String colour)\r
+ {\r
+ StringBuffer sb = new StringBuffer();\r
+ for (int i = 0; i < colour.length(); i++)\r
+ {\r
+ if (Character.isWhitespace(colour.charAt(i)))\r
+ sb.append("%20");\r
+ else\r
+ sb.append(colour.charAt(i));\r
+ }\r
+\r
+ return sb.toString();\r
+ }\r
+\r
+\r
+ String appendProtocol(String url)\r
+ {\r
+ try{\r
+ new URL(url);\r
+ }catch(java.net.MalformedURLException ex)\r
+ {\r
+ url = applet.getCodeBase()+url;\r
+ }\r
+ return url;\r
+ }\r
+\r
public void closeMenuItem_actionPerformed()\r
{\r
PaintRefresher.components.remove(viewport.alignment);\r
\r
public void removeRedundancyMenuItem_actionPerformed()\r
{\r
- RedundancyPanel sp = new RedundancyPanel(alignPanel);\r
- Frame frame = new Frame();\r
- frame.add(sp);\r
- jalview.bin.JalviewLite.addFrame(frame, "Redundancy threshold selection",\r
- 400, 120);\r
-\r
+ new RedundancyPanel(alignPanel);\r
}\r
\r
public void pairwiseAlignmentMenuItem_actionPerformed()\r
\r
void loadTree_actionPerformed()\r
{\r
- TreePanel tp = null;\r
-\r
CutAndPasteTransfer cap = new CutAndPasteTransfer(true, this);\r
cap.setText("Paste your Newick tree file here.");\r
cap.treeImport = true;\r
g.drawString("If you use JalView, please cite:", x, y += fh + 8);\r
g.drawString("\"Clamp, M., Cuff, J., Searle, S. M. and Barton, G. J. (2004), The Jalview Java Alignment Editor\"",\r
x, y += fh);\r
- g.drawString("Bioinformatics, 2004 12;426-7.", x, y += fh);\r
+ g.drawString("Bioinformatics, 2004 20;426-7.", x, y += fh);\r
}\r
}\r
\r
{\r
try\r
{\r
+ System.out.println("Show url: "+url);\r
applet.getAppletContext().showDocument(new java.net.URL(url),\r
target);\r
}\r
\r
protected MenuBar alignFrameMenuBar = new MenuBar();\r
protected Menu fileMenu = new Menu("File");\r
+ protected MenuItem loadApplication = new MenuItem("View in Full Application");\r
protected MenuItem loadTree = new MenuItem("Load Associated Tree");\r
protected MenuItem closeMenuItem = new MenuItem("Close");\r
protected Menu editMenu = new Menu("Edit");\r
outputTextboxMenu.add(item);\r
}\r
closeMenuItem.addActionListener(this);\r
+ loadApplication.addActionListener(this);\r
\r
loadTree.addActionListener(this);\r
selectAllSequenceMenuItem.addActionListener(this);\r
alignFrameMenuBar.add(helpMenu);\r
fileMenu.add(inputText);\r
fileMenu.add(outputTextboxMenu);\r
+ // fileMenu.add(loadApplication);\r
fileMenu.addSeparator();\r
fileMenu.add(loadTree);\r
fileMenu.add(closeMenuItem);\r
\r
// setVisible(false);\r
fileMenu.remove(closeMenuItem);\r
- fileMenu.remove(2); // Seperator\r
+ fileMenu.remove(3); // Seperator\r
\r
applet.setLayout(new BorderLayout());\r
applet.add(embeddedMenu, BorderLayout.NORTH);\r