New classes
authoramwaterhouse <Andrew Waterhouse>
Wed, 1 Dec 2004 16:57:15 +0000 (16:57 +0000)
committeramwaterhouse <Andrew Waterhouse>
Wed, 1 Dec 2004 16:57:15 +0000 (16:57 +0000)
src/jalview/gui/Finder.java [new file with mode: 0755]
src/jalview/gui/SplashScreen.java [new file with mode: 0755]

diff --git a/src/jalview/gui/Finder.java b/src/jalview/gui/Finder.java
new file mode 100755 (executable)
index 0000000..c5a2cf4
--- /dev/null
@@ -0,0 +1,129 @@
+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
diff --git a/src/jalview/gui/SplashScreen.java b/src/jalview/gui/SplashScreen.java
new file mode 100755 (executable)
index 0000000..522215d
--- /dev/null
@@ -0,0 +1,81 @@
+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