additional changes, added on 06 September 2011

added value of potential to be shown adapted codes from http://www.compadre.org/OSP/items/detail.cfm?ID=11443 Point Charge Electric Potential Model written by Wolfgang Christian
// adapted from http://www.compadre.org/OSP/items/detail.cfm?ID=11443
public void potentialMessage () {
 double xm=_view.DrawingPanel.getMouseX();   // mouse x-location
 double ym=_view.DrawingPanel.getMouseY();   // mouse y-location
 double v=0;
//  for(int p=0; p    double dx=xm-x1; // for first charge                        // x-separation from grid point
   double dy=ym-y1;                         // y-separation from grid point
   double r2=dx*dx+dy*dy;             // charge to grid point distance squared
   double dx2=xm-x2; // for second charge                        // x-separation from grid point
   double dy2=ym-y2;                         // y-separation from grid point
   double r22=dx2*dx2+dy2*dy2;             // charge to grid point distance squared
   
   if(r2==0||r22==0){                                 // check for singularity
     v=Double.NaN;                            // field is not defined at singularity
//      break;                                   // break from loop  
   }else{                                
     v = G*q1/Math.sqrt(r2)+G*q2/Math.sqrt(r22);      // add scalar potential
//      Evalue = G*q1/r2+G*q2/r2;
   } // end of if statement
//  } // end of charge loop
 dragMsg="math_failure (math_unknown_error): \\phi = "+_view.format(v,"0.0E0")+ " J/kg";
//  dragMsgE="g = "+_view.format(Evalue,"0.0E0")+ " N/kg";
 
}
added value of field strength to be shown redesigned by myself with reference and using http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=539.0
http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=1968.0 by Fu-Kwun Hwang.

// adapted from http://www.compadre.org/OSP/items/detail.cfm?ID=11443
public void fieldMessage () {
 double xm=_view.DrawingPanel.getMouseX();   // mouse x-location
 double ym=_view.DrawingPanel.getMouseY();   // mouse y-location
 double Evalue=0;
//  for(int p=0; p    double dx1=xm-x1;   //first charge                      // x-separation from grid point
   double dy1=ym-y1;                         // y-separation from grid point
   double r12=dx1*dx1+dy1*dy1;                     // charge to grid point distance squared
    double dx2=xm-x2;    //second charge                     // x-separation from grid point
   double dy2=ym-y2;                         // y-separation from grid point
   double r22=dx2*dx2+dy2*dy2;             // charge to grid point distance squared
double dx=q1*dx1/(r12*Math.sqrt(r12))+q2*dx2/(r22*Math.sqrt(r22));
double  dy=q1*dy1/(r12*Math.sqrt(r12))+q2*dy2/(r22*Math.sqrt(r22));  
double d=Math.sqrt(dx*dx+dy*dy);
double   Evaluex=dx;
double   Evaluey=dy;
//double Evalue = Math.sqrt(Evaluex*Evaluex+Evaluex*Evaluex);
if(r12==0||r22==0){                                 // check for singularity
     Evaluex=Double.NaN;                            // field is not defined at singularity
    Evaluey=Double.NaN;
//      break;                                   // break from loop
   }else{                                
  Evaluex=G*dx;
  Evaluey=G*dy;
Eangle = Math.atan2(Evaluey,Evaluex)*180/pi;  
//      v = G*q1/Math.sqrt(r2)+G*q2/Math.sqrt(r2);      // add scalar potential
   Evalue = Math.sqrt(Evaluex*Evaluex+Evaluey*Evaluey);
   } // end of if statement
// } // end of charge loop
//  dragMsg="V = "+_view.format(v,"0.0E0")+ " V";
 dragMsgEx="gx = "+_view.format(Evaluex,"0.0E0")+ " N/kg";
   dragMsgEy="gy = "+_view.format(Evaluey,"0.0E0")+ " N/kg";
   dragMsgE="|g| = "+_view.format(Evalue,"0.0E0")+ " N/kg at angle =" +_view.format(Eangle,"000") +"to +x-axis counterclockwise";
   }