The mouse event is handled in MouseManager11.java:

>   public void mouseClicked(MouseEvent e) {
>     mouseClicked(e.getWhen(), e.getX(), e.getY(), e.getModifiers(),
>                  e.getClickCount());
>   }


This passes to MouseManager.java, where we have:

  void mouseClicked(long time, int x, int y, int modifiers, int 
clickCount) {
...
    int nearestAtomIndex = (drawMode ? -1 : 
viewer.findNearestAtomIndex(x, y));
...
  }

But can't you just set your statusListener to intercept this action at a 
higher level (shown here for the applet)?

  class MyStatusListener implements JmolStatusListener {
...
    public void notifyAtomPicked(int atomIndex, String strInfo) {
      showStatusAndConsole(strInfo);
      if (pickCallback != null && jsoWindow != null)
        if (pickCallback.equals("alert"))
          jsoWindow.call(pickCallback, new Object[] { strInfo });
        else
          jsoWindow.call(pickCallback, new Object[] { htmlName, strInfo,
              new Integer(atomIndex) });
    }
...
}


Bob




Maria Brandl wrote:

>We also tried to import Jmol into eclipse to trace the sequence of 
>classes called, but were not successful in doing so. Has that been
>done ? Are there any other ways of depicting the flow of commands in
>Jmol ?
>
>  
>
Nico and I use Eclipse extensively. There should be no problem starting 
an SVN project in Eclipse. He's the expert -- what's the problem in Eclipse?

>Thanks a lot,
>
>Maria
>
>  
>
>------------------------------------------------------------------------
>
>// Fig. 11.28: MouseTrackerFrame.java
>// Demonstrating mouse events.
>import java.awt.Color;
>import java.awt.BorderLayout;
>import java.awt.event.MouseListener;
>import java.awt.event.MouseMotionListener;
>import java.awt.event.MouseEvent;
>import javax.swing.JFrame;
>import javax.swing.JLabel;
>import javax.swing.JPanel;
>
>
>import javax.swing.*;
>import java.io.*;
>
>import java.awt.*;
>import java.awt.event.*;
>import java.util.*;
>import javax.swing.*;
>import javax.swing.event.*;
>import javax.swing.table.*;
>// jmol-packages and classes
>import org.openscience.jmol.app.*;
>import org.jmol.api.*;
>//import org.jmol.adapter.cdk.CdkJmolAdapter;
>import org.jmol.adapter.smarter.SmarterJmolAdapter;
>//import org.jmol.util.GT;
>import org.jmol.i18n.GT;
>//import org.openscience.cdk.applications.plugin.CDKPluginManager;
>//import org.openscience.jmol.ui.JmolPopup;
>import Acme.JPM.Encoders.PpmEncoder;
>import com.lowagie.text.Document;
>import com.lowagie.text.DocumentException;
>import com.lowagie.text.pdf.PdfContentByte;
>import com.lowagie.text.pdf.PdfTemplate;
>import com.lowagie.text.pdf.PdfWriter;
>import com.obrador.JpegEncoder;
>import org.jmol.viewer.*;
>
>
>public class MouseTrackerFrame extends JFrame
>{
>   private Jmol mousePanel; // panel in which mouse events will occur
>   private JLabel statusBar; // label that displays event information
>   public JmolViewer viewer;
>   
>   // MouseTrackerFrame constructor sets up GUI and 
>   // registers mouse event handlers
>   public MouseTrackerFrame()
>   {
>      super( "Trying to implement additional MouseTracking to Jmol" );
>
>       mousePanel = Jmol.getJmol(this,300, 300); 
>       this.viewer = mousePanel.viewer;
>      add( mousePanel, BorderLayout.CENTER ); // add panel to JFrame
>
>      statusBar = new JLabel( "Mouse outside JPanel" ); 
>      add( statusBar, BorderLayout.SOUTH ); // add label to JFrame
>
>      // create and register listener for mouse and mouse motion events
>      MouseHandler handler = new MouseHandler(); 
>      mousePanel.addMouseListener( handler ); 
>      mousePanel.addMouseMotionListener( handler ); 
>   } // end MouseTrackerFrame constructor
>
>   private class MouseHandler implements MouseListener, 
>      MouseMotionListener 
>   {
>      // MouseListener event handlers
>      // handle event when mouse released immediately after press
>      public void mouseClicked( MouseEvent event )
>      {
>         statusBar.setText( String.format( "Clicked at [%d, %d]", 
>            event.getX(), event.getY() ) );
>        System.out.println("REGISTERED MOUSECLICK");
>        int pos = ((Viewer)viewer).findNearestAtomIndex( event.getX(), 
> event.getY());
>        int pas =  ((Viewer)viewer).findNearestAtomIndex(100, 100);
>        
>        System.out.println(pos);
>        System.out.println(pas);
>        if ( pos == -1 ) { return;}
>      } // end method mouseClicked
>     
> 
>      
>      // handle event when mouse pressed
>      public void mousePressed( MouseEvent event )
>      {
>         statusBar.setText( String.format( "Pressed at [%d, %d]", 
>            event.getX(), event.getY() ) );
>      } // end method mousePressed
>
>      // handle event when mouse released after dragging
>      public void mouseReleased( MouseEvent event )
>      {
>         statusBar.setText( String.format( "Released at [%d, %d]", 
>            event.getX(), event.getY() ) );
>      } // end method mouseReleased
>
>      // handle event when mouse enters area
>      public void mouseEntered( MouseEvent event )
>      {
>         statusBar.setText( String.format( "Mouse entered at [%d, %d]", 
>            event.getX(), event.getY() ) );
>     //    mousePanel.setBackground( Color.GREEN );
>      } // end method mouseEntered
>
>      // handle event when mouse exits area
>      public void mouseExited( MouseEvent event )
>      {
>         statusBar.setText( "Mouse outside JPanel" );
>       //  mousePanel.setBackground( Color.WHITE );
>      } // end method mouseExited
>
>      // MouseMotionListener event handlers
>      // handle event when user drags mouse with button pressed
>      public void mouseDragged( MouseEvent event )
>      {
>         statusBar.setText( String.format( "Dragged at [%d, %d]", 
>            event.getX(), event.getY() ) );
>      } // end method mouseDragged
>
>      // handle event when user moves mouse
>      public void mouseMoved( MouseEvent event )
>      {
>         statusBar.setText( String.format( "Moved at [%d, %d]", 
>            event.getX(), event.getY() ) );
>      } // end method mouseMoved
>
>     
>   } // end inner class MouseHandler
>} // end class MouseTrackerFrame
>
>  
>
>------------------------------------------------------------------------
>
>// Fig. 11.29: MouseTrackerFrame.java
>import javax.swing.JFrame;
>
>import javax.swing.*;
>import java.io.*;
>
>import java.awt.*;
>import java.awt.event.*;
>import java.util.*;
>import javax.swing.*;
>import javax.swing.event.*;
>import javax.swing.table.*;
>// jmol-packages and classes
>import org.openscience.jmol.app.*;
>import org.jmol.api.*;
>//import org.jmol.adapter.cdk.CdkJmolAdapter;
>import org.jmol.adapter.smarter.SmarterJmolAdapter;
>//import org.jmol.util.GT;
>import org.jmol.i18n.GT;
>//import org.openscience.cdk.applications.plugin.CDKPluginManager;
>//import org.openscience.jmol.ui.JmolPopup;
>import Acme.JPM.Encoders.PpmEncoder;
>import com.lowagie.text.Document;
>import com.lowagie.text.DocumentException;
>import com.lowagie.text.pdf.PdfContentByte;
>import com.lowagie.text.pdf.PdfTemplate;
>import com.lowagie.text.pdf.PdfWriter;
>import com.obrador.JpegEncoder;
>import org.jmol.viewer.*;
>
>
>public class MouseTracker 
>{
>   public static void main( String args[] )
>   { 
>      MouseTrackerFrame mouseTrackerFrame = new MouseTrackerFrame(); 
>      mouseTrackerFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
>      mouseTrackerFrame.setVisible( true ); // display frame
>   } // end main
>} // end class MouseTracker
>
>  
>
>------------------------------------------------------------------------
>
>-------------------------------------------------------------------------
>Take Surveys. Earn Cash. Influence the Future of IT
>Join SourceForge.net's Techsay panel and you'll get the chance to share your
>opinions on IT & business topics through brief surveys -- and earn cash
>http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Jmol-developers mailing list
>[email protected]
>https://lists.sourceforge.net/lists/listinfo/jmol-developers
>  
>

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Jmol-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-developers

Reply via email to