--- /dev/null
+package jalview.gui;\r
+\r
+import jalview.jbgui.GFinder;\r
+import jalview.datamodel.*;\r
+import java.awt.event.*;\r
+import javax.swing.*;\r
+import javax.swing.event.*;\r
+import java.util.*;\r
+\r
+\r
+public class Finder extends GFinder\r
+{\r
+ AlignViewport av;\r
+ AlignmentPanel ap;\r
+ JInternalFrame frame;\r
+ String searchString;\r
+\r
+ int seqIndex = 0;\r
+ int resIndex = 0;\r
+ public Finder(AlignViewport av, AlignmentPanel ap, JInternalFrame f)\r
+ {\r
+ this.av = av;\r
+ this.ap = ap;\r
+ frame = f;\r
+\r
+ // all a big pain, but we need to wait until the frame is visible before the textfield can\r
+ // obtain the focus/////////////////////////\r
+ frame.addInternalFrameListener(new InternalFrameAdapter()\r
+ {\r
+ public void internalFrameOpened(InternalFrameEvent evt)\r
+ {\r
+ SwingUtilities.invokeLater(new Runnable()\r
+ {\r
+ public void run()\r
+ {\r
+ textfield.requestFocus();\r
+ }\r
+ });\r
+ }\r
+});\r
+\r
+ }\r
+\r
+ public void textfield_actionPerformed(ActionEvent e)\r
+ {\r
+ doSearch(false);\r
+ }\r
+\r
+ public void findNext_actionPerformed(ActionEvent e)\r
+ {\r
+ doSearch(false);\r
+ }\r
+\r
+ public void findAll_actionPerformed(ActionEvent e)\r
+ {\r
+ resIndex=0;\r
+ seqIndex=0;\r
+ doSearch(true);\r
+ }\r
+\r
+ public void cancel_actionPerformed(ActionEvent e)\r
+ {\r
+ try{\r
+ frame.setClosed(true);\r
+ }catch(Exception ex){}\r
+\r
+ }\r
+\r
+ void doSearch(boolean findAll)\r
+ {\r
+ searchString = textfield.getText().toUpperCase();\r
+\r
+ ArrayList searchResults = new ArrayList();\r
+ int [] allResults = null;\r
+\r
+ Sequence seq;\r
+ String item;\r
+ boolean found = false;\r
+ while( !found && seqIndex<av.getAlignment().getHeight())\r
+ {\r
+ seq = (Sequence)av.getAlignment().getSequenceAt(seqIndex);\r
+ item = seq.getSequence();\r
+\r
+ for(int r = resIndex; r<item.length(); r++)\r
+ {\r
+ if(item.indexOf(searchString,r)>-1)\r
+ {\r
+ resIndex = item.indexOf(searchString,r);\r
+ searchResults.add( Integer.toString(seqIndex) );\r
+ searchResults.add( Integer.toString( resIndex) );\r
+ searchResults.add( Integer.toString( (resIndex+searchString.length()-1) ) );\r
+ if(!findAll)\r
+ {\r
+ // thats enough, break and display the result\r
+ found = true;\r
+ resIndex++;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ if(!found)\r
+ {\r
+ seqIndex++;\r
+ resIndex = 0;\r
+ }\r
+ }\r
+\r
+ if(searchResults.size()>0)\r
+ {\r
+\r
+ allResults = new int[searchResults.size()];\r
+ for(int i=0; i<searchResults.size(); i++)\r
+ allResults[i] = Integer.parseInt(searchResults.get(i).toString());\r
+\r
+\r
+ ap.highlightSearchResults( allResults );\r
+ }\r
+ else\r
+ {\r
+ JOptionPane.showInternalMessageDialog(this, "Finished searching", null,\r
+ JOptionPane.INFORMATION_MESSAGE);\r
+ resIndex=0;\r
+ seqIndex=0;\r
+ }\r
+\r
+\r
+ }\r
+\r
+}\r
--- /dev/null
+package jalview.gui;\r
+\r
+import javax.swing.*;\r
+import java.awt.*;\r
+import java.awt.event.*;\r
+\r
+public class SplashScreen extends JPanel implements Runnable\r
+{\r
+ boolean visible = true;\r
+ JInternalFrame iframe;\r
+ Image image;\r
+\r
+ public SplashScreen(JInternalFrame iframe, Image i)\r
+ {\r
+ this.iframe = iframe;\r
+ image = i;\r
+ Thread t = new Thread(this);\r
+ t.start();\r
+ addMouseListener(new MouseAdapter()\r
+ { public void mousePressed(MouseEvent evt)\r
+ {\r
+ try\r
+ { closeSplash(); }\r
+ catch (Exception ex)\r
+ {}\r
+ }\r
+ });\r
+ }\r
+\r
+\r
+ public void run()\r
+ {\r
+ long startTime = System.currentTimeMillis()/1000;\r
+\r
+ while( visible )\r
+ {\r
+ if( System.currentTimeMillis()/1000 - startTime > 8)\r
+ visible = false;\r
+\r
+ try{\r
+ Thread.sleep(400);\r
+ iframe.setSelected(true);\r
+ }\r
+ catch(Exception ex){}\r
+ }\r
+\r
+ closeSplash();\r
+\r
+ }\r
+\r
+ public void closeSplash()\r
+ {\r
+ try\r
+ {\r
+ iframe.setClosed(true);\r
+ Desktop.splashScreenClosing();\r
+ }\r
+ catch (Exception ex)\r
+ {}\r
+\r
+ }\r
+\r
+\r
+ public void paintComponent(Graphics g)\r
+ {\r
+ g.setColor(Color.white);\r
+ g.fillRect(0,0,getWidth(),getHeight());\r
+ g.setColor(Color.black);\r
+ g.setFont( new Font("Verdana", Font.BOLD, 18));\r
+ if(image!=null)\r
+ g.drawImage(image, 5,60,this);\r
+ g.drawString("JalView 2005", 50,50);\r
+ g.setFont( new Font("Verdana", Font.BOLD, 14));\r
+ g.drawString("Authors: Michele Clamp, James Cuff, Steve Searle, Andrew Waterhouse and Geoff Barton.",50,70);\r
+ g.drawString("Current development managed by Andrew Waterhouse; Barton Group, University of Dundee.",50,90);\r
+ g.drawString("If you use JalView, please cite:",50,110);\r
+ g.drawString("\"Clamp, M., Cuff, J., Searle, S. M. and Barton, G. J. (2004), The Jalview Java Alignment Editor\"",50,130);\r
+\r
+ }\r
+\r
+}\r