import java.applet.Applet;
import java.io.*;
import java.awt.*;
import java.lang.*;
import jv.viewer.PvDisplay;
import jv.viewer.PvViewer;

import jv.object.PsMainFrame;
import java.awt.Color;
import jv.geom.PgElementSet;
import jv.geom.PgPolygonSet;
import jv.loader.PgLoader;
import jv.number.PuDouble;
import jv.object.PsConfig;
import jv.object.PsDebug;
import jv.project.PvDisplayIf;
import jv.project.PgGeometry;
import jv.project.PgGeometryIf;
import jv.project.PjProject;
import jv.vecmath.PdMatrix;
import jv.vecmath.PdVector;


public class qmview_javaview  extends Applet {
	/**
	 * Standalone application support. The main() method acts as the applet's
	 * entry point when it is run as a standalone application. It is ignored
	 * if the applet is run from within an HTML page.
	 */
  static int linepointer = 0;
	public void init() {
		// Create toplevel window of application containing the applet
    BufferedReader input;
    String s;
    int i,j;
    int num;
    String filein;
    String args[] = new String[2];
    PdVector vec;
    double x[] = new double[4];
    x[3] = 1.;
    args[0] = new String(" ");

		// Create viewer for viewing 3d geometries, and register frame.
		PvDisplay disp = new PvDisplay();

		// Create a simple geometry
    try{
        filein = getParameter("filein");
         System.out.println("INPUT FILE " + filein);
        input = new BufferedReader(new FileReader(filein));
    s = input.readLine();
    num = findint(s,0);
    System.out.println("NUM " + num);
    for(i=0;i<num;++i) {
       PgElementSet geom = new PgElementSet(3);
		   geom.setName("MOLECULE");
       s = input.readLine();
       x[0] = finddouble(s,0);
       System.out.println("LINEPOINTER " + linepointer);
       x[1] = finddouble(s,linepointer);
       System.out.println("LINEPOINTER " + linepointer);
       x[2] = finddouble(s,linepointer);
       System.out.println("COORDS " + x[0] + " " + x[1] + " " + x[2]);
       //geom.translate(new PdVector(x));
       PdMatrix pdm = new PdMatrix(4);
       pdm.setIdentity();
       pdm.setEntry(0,3,x[0]);
       pdm.setEntry(1,3,x[1]);
       pdm.setEntry(2,3,x[2]);
       geom.setModelMatrix(pdm);
		   geom.computeSphere(20, 20,0.1);
		   disp.addGeometry(geom);
   		 disp.selectGeometry(geom);
    }
    }
     catch (IOException ex) {
         System.out.println(ex);
     }


		// Get default display from viewer
		// Register geometry in display, and make it active.
		// For more advanced applications it is advisable to create a separate project
		// and register geometries in the project via project.addGeometry(geom) calls.

		// Add display to frame
		// Position of left upper corner and size of frame when run as application.
      setLayout(new BorderLayout());
      add(disp, BorderLayout.CENTER);
	}
  static int findint(String s0,int k)
  {
     String s,s1;
     char c = ' ';
     int j;
     Integer I;
     if(k == 0)
        linepointer = 0;
     s = s0.substring(k);
     for(j=0;j<s.length();++j) {
      c = s.charAt(j);
      if(c != ' ')
                     break;
    }
    s1 = s.substring(j);
    j=s1.indexOf(' ');
    if(j >= 0)
       I = new Integer(s1.substring(0,j));
    else
       I = new Integer(s1);
    linepointer = j+1;
    return(I.intValue());
  }
  static double finddouble(String s0,int k)
  {
     String s,s1;
     char c = ' ';
     int j;
     Double D;
     if(k == 0)
        linepointer = 0;
     s = s0.substring(k);
     for(j=0;j<s.length();++j) {
      c = s.charAt(j);
      if(c != ' ')
                     break;
    }
    s1 = s.substring(j);
    j=s1.indexOf(' ');
    if(j >= 0)
       D = new Double(s1.substring(0,j));
    else
       D = new Double(s1);
    linepointer = k+j+1;
    return(D.doubleValue());
  }
}
