refactored VamsasListener to allow the source of the event to be passed to handlers
authorjprocter <Jim Procter>
Tue, 18 Jan 2011 10:33:11 +0000 (10:33 +0000)
committerjprocter <Jim Procter>
Tue, 18 Jan 2011 10:33:11 +0000 (10:33 +0000)
src/jalview/appletgui/AlignViewport.java
src/jalview/appletgui/SeqPanel.java
src/jalview/bin/JalviewLite.java
src/jalview/gui/AlignViewport.java
src/jalview/gui/SeqPanel.java
src/jalview/gui/VamsasApplication.java
src/jalview/javascript/MouseOverListener.java
src/jalview/structure/StructureSelectionManager.java
src/jalview/structure/VamsasListener.java
src/jalview/structure/VamsasSource.java [new file with mode: 0644]

index cd7857e..0dc60d1 100755 (executable)
@@ -26,8 +26,9 @@ import jalview.bin.*;
 import jalview.datamodel.*;
 import jalview.schemes.*;
 import jalview.structure.SelectionSource;
+import jalview.structure.VamsasSource;
 
-public class AlignViewport implements SelectionSource
+public class AlignViewport implements SelectionSource, VamsasSource
 {
   int startRes;
 
index 98dcc07..e6ed8f2 100755 (executable)
@@ -632,7 +632,7 @@ public class SeqPanel extends Panel implements MouseMotionListener,
   {
     String tmp = sequence.hashCode() + index + "";
     if (lastMessage == null || !lastMessage.equals(tmp))
-      ssm.mouseOverSequence(sequence, index, pos);
+      ssm.mouseOverSequence(sequence, index, pos, av);
 
     lastMessage = tmp;
   }
index c972025..dd2bf70 100755 (executable)
@@ -177,12 +177,12 @@ public class JalviewLite extends Applet
                       .toLowerCase().indexOf("false") > -1))
       {
         StructureSelectionManager.getStructureSelectionManager()
-                .mouseOverVamsasSequence(sq, sq.findIndex(apos));
+                .mouseOverVamsasSequence(sq, sq.findIndex(apos), null);
       }
       else
       {
         StructureSelectionManager.getStructureSelectionManager()
-                .mouseOverVamsasSequence(sq, apos);
+                .mouseOverVamsasSequence(sq, apos, null);
       }
 
     }
index 033b3bc..d0c5674 100755 (executable)
@@ -48,6 +48,7 @@ import jalview.datamodel.*;
 import jalview.schemes.*;
 import jalview.structure.SelectionSource;
 import jalview.structure.StructureSelectionManager;
+import jalview.structure.VamsasSource;
 
 /**
  * DOCUMENT ME!
@@ -55,7 +56,7 @@ import jalview.structure.StructureSelectionManager;
  * @author $author$
  * @version $Revision$
  */
-public class AlignViewport implements SelectionSource
+public class AlignViewport implements SelectionSource, VamsasSource
 {
   private static final int RIGHT_JUSTIFY = 1;
 
index 7502812..fdcfaca 100755 (executable)
@@ -601,7 +601,7 @@ public class SeqPanel extends JPanel implements MouseListener,
     if (lastMessage == null || !lastMessage.equals(tmp))
     {
       // System.err.println("mouseOver Sequence: "+tmp);
-      ssm.mouseOverSequence(sequence, index, pos);
+      ssm.mouseOverSequence(sequence, index, pos, av);
     }
     lastMessage = tmp;
   }
index efd94de..cd9a529 100644 (file)
@@ -27,6 +27,7 @@ import jalview.structure.SelectionListener;
 import jalview.structure.SelectionSource;
 import jalview.structure.StructureSelectionManager;
 import jalview.structure.VamsasListener;
+import jalview.structure.VamsasSource;
 
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
@@ -61,7 +62,7 @@ import uk.ac.vamsas.objects.core.Seg;
  * @author jimp
  * 
  */
-public class VamsasApplication implements SelectionSource
+public class VamsasApplication implements SelectionSource,VamsasSource
 {
   IClient vclient = null;
 
@@ -756,7 +757,7 @@ public class VamsasApplication implements SelectionSource
         final IPickManager pm = vclient.getPickManager();
         final StructureSelectionManager ssm = StructureSelectionManager
                 .getStructureSelectionManager();
-        final SelectionSource me = this;
+        final VamsasApplication me = this;
         pm.registerMessageHandler(new IMessageHandler()
         {
           String last = null;
@@ -789,7 +790,7 @@ public class VamsasApplication implements SelectionSource
                 // bound to "+jvobj+" at "+mm.getPosition());
                 // position is character position in aligned sequence
                 ssm.mouseOverVamsasSequence((SequenceI) jvobj,
-                        mm.getPosition());
+                        mm.getPosition(), me);
               }
             }
             if (message instanceof uk.ac.vamsas.client.picking.SelectionMessage)
@@ -957,7 +958,7 @@ public class VamsasApplication implements SelectionSource
 
           int i = -1;
 
-          public void mouseOver(SequenceI seq, int index)
+          public void mouseOver(SequenceI seq, int index, VamsasSource source)
           {
             if (jv2vobj == null)
               return;
index c2ae6ef..224c6d6 100644 (file)
@@ -1,49 +1,74 @@
 package jalview.javascript;
 
+import java.util.Vector;
+
 import jalview.appletgui.AlignFrame;
 import jalview.bin.JalviewLite;
 import jalview.datamodel.SequenceI;
 import jalview.structure.VamsasListener;
+import jalview.structure.VamsasSource;
 import netscape.javascript.JSObject;
 
-public class MouseOverListener extends JSFunctionExec implements VamsasListener,JsCallBack
+public class MouseOverListener extends JSFunctionExec implements
+        VamsasListener, JsCallBack
 {
   AlignFrame _af;
+
   String _listener;
+
   SequenceI last = null;
 
   int i = -1;
 
-  public void mouseOver(SequenceI seq, int index)
+  public void mouseOver(SequenceI seq, int index, VamsasSource source)
   {
     if (seq != last || i != index)
     {
-        // this should really be a trace message.
-        // Cache.log.debug("Mouse over " + v.getId() + " bound to "
-        // + seq + " at " + index);
-        last = seq;
-        i = index;
-        try {
-        executeJavascriptFunction(_listener, new Object[] { _af, seq.getDisplayId(false), ""+(1+i)});
-        } catch (Exception ex)
+      // this should really be a trace message.
+      // Cache.log.debug("Mouse over " + v.getId() + " bound to "
+      // + seq + " at " + index);
+      last = seq;
+      i = index;
+      AlignFrame src = null;
+      try
+      {
+        Vector win;
+        if (source != null)
         {
-          
-          System.err.println("JalviewLite javascript error: Couldn't send mouseOver with handler '"+_listener+"'");
-          if (ex instanceof netscape.javascript.JSException)
+          if (source instanceof jalview.appletgui.AlignViewport
+                  && ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame.viewport == source)
           {
-            System.err.println("Javascript Exception: "+((netscape.javascript.JSException)ex).getMessage());
+            // should be valid if it just generated an event!
+            src = ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame;
+
           }
-          ex.printStackTrace();
+        }
+        executeJavascriptFunction(_listener, new Object[]
+        { src, seq.getDisplayId(false), "" + (1 + i) });
+      } catch (Exception ex)
+      {
+
+        System.err
+                .println("JalviewLite javascript error: Couldn't send mouseOver with handler '"
+                        + _listener + "'");
+        if (ex instanceof netscape.javascript.JSException)
+        {
+          System.err.println("Javascript Exception: "
+                  + ((netscape.javascript.JSException) ex).getMessage());
+        }
+        ex.printStackTrace();
       }
     }
   }
-  
-  public MouseOverListener(JalviewLite applet, AlignFrame af, String listener)
+
+  public MouseOverListener(JalviewLite applet, AlignFrame af,
+          String listener)
   {
     super(applet);
     _af = af;
     _listener = listener;
   }
+
   @Override
   public AlignFrame getAlignFrame()
   {
@@ -56,5 +81,4 @@ public class MouseOverListener extends JSFunctionExec implements VamsasListener,
     return _listener;
   }
 
-
 }
index 0cd3094..c4566d8 100644 (file)
@@ -363,7 +363,7 @@ public class StructureSelectionManager
    *          the sequence position (if -1, seq.findPosition is called to
    *          resolve the residue number)
    */
-  public void mouseOverSequence(SequenceI seq, int indexpos, int index)
+  public void mouseOverSequence(SequenceI seq, int indexpos, int index, VamsasSource source)
   {
     boolean hasSequenceListeners = handlingVamsasMo || seqmappings != null;
     SearchResults results = null;
@@ -447,7 +447,7 @@ public class StructureSelectionManager
           // pass the mouse over and absolute position onto the
           // VamsasListener(s)
           ((VamsasListener) listeners.elementAt(i))
-                  .mouseOver(seq, indexpos);
+                  .mouseOver(seq, indexpos, source);
         }
       }
     }
@@ -468,14 +468,14 @@ public class StructureSelectionManager
    * @param position
    *          in an alignment sequence
    */
-  public void mouseOverVamsasSequence(SequenceI sequenceI, int position)
+  public void mouseOverVamsasSequence(SequenceI sequenceI, int position, VamsasSource source)
   {
     handlingVamsasMo = true;
     long msg = sequenceI.hashCode() * (1 + position);
     if (lastmsg != msg)
     {
       lastmsg = msg;
-      mouseOverSequence(sequenceI, position, -1);
+      mouseOverSequence(sequenceI, position, -1, source);
     }
     handlingVamsasMo = false;
   }
index fa1f13e..c8f801b 100644 (file)
@@ -19,7 +19,16 @@ package jalview.structure;
 \r
 import jalview.datamodel.SequenceI;\r
 \r
+/**\r
+ * The vamsasListener allows peers to receive mouseOver events from any Jalview alignment window.\r
+ * @author JimP\r
+ *\r
+ * @history Version 1 released for Jalview 2.4.\r
+ * @history Version 2 mouseOver refactored to include an additional parameter allowing the source of the event to be passed to the handler. \r
+ * \r
+ * \r
+ */\r
 public interface VamsasListener\r
 {\r
-  public void mouseOver(SequenceI seq, int index);\r
+  public void mouseOver(SequenceI seq, int index, VamsasSource source);\r
 }\r
diff --git a/src/jalview/structure/VamsasSource.java b/src/jalview/structure/VamsasSource.java
new file mode 100644 (file)
index 0000000..50e7278
--- /dev/null
@@ -0,0 +1,14 @@
+package jalview.structure;
+
+
+/**
+ * an object that can generate mouseover events for VamsasListeners. This is purely a tag for the
+ * moment, but there may be more interrogative methods in future.
+ * 
+ */
+
+public interface VamsasSource
+{
+  
+
+}