You are on page 1of 8

import java.applet.

Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.LayoutManager;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.awt.GraphicsConfiguration;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilePermission;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.security.Policy;
import java.util.Enumeration;

import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.behaviors.picking.PickRotateBehavior;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.geometry.Cone;
import com.sun.j3d.utils.geometry.NormalGenerator;
import com.sun.j3d.utils.geometry.Primitive;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.geometry.Triangulator;
import com.sun.j3d.utils.geometry.GeometryInfo;
import com.sun.j3d.utils.image.TextureLoader;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.media.j3d.*;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.event.MouseInputListener;
import javax.vecmath.*;
import javax.swing.Timer;

import sun.security.provider.PolicyFile;
import java.awt.Toolkit;
public class Viewer extends Applet implements ActionListener
{
ModelViewer Wnd3d;

public Timer RotationTimer,MotionTimer;


public String TimerMode = "Rotate";//Move if user holds down a button
public static final int RotationDelay = 30;
public static final int MotionDelay = 50;
public int RotationX = 0;
public int RotationY = 0;
public int RotationZ = 3;

public MyWindow Wnd;


public String MotionDir = "null";
LayoutManager layout;
public Object[] testListener = new Object[3];
public static int ProgramWidth = 512;
public static int ProgramHeight = 512;

public static int ThreeDWidth = 512;


public static int ThreeDHeight = 250;
//QuadArray TriangleStripArray
public static String ModelType = "QuadArray";//must change in model geometry
creation
// "E:\\Documents and Settings\\Rainer\\Desktop\\FutuWepJava.txt"
//public static String ModelLocation = "http://192.168.1.70/FutuWeapon.txt";
public static String ModelLocation = "E:\\Documents and
Settings\\Rainer\\Desktop\\axis.txt";
public static String[] ModelLocationArray=
{
"E:\\Program Files\\Apache Group\\Apache2\\htdocs\\towerBase.txt",
"E:\\Program Files\\Apache Group\\Apache2\\htdocs\\towerTurret.txt",
"E:\\Program Files\\Apache Group\\Apache2\\htdocs\\towerHousing.txt",
"E:\\Program Files\\Apache Group\\Apache2\\htdocs\\towerController.txt",
"E:\\Program Files\\Apache Group\\Apache2\\htdocs\\towerLighting.txt",
};
public static String[] TextureArray=
{
"E:\\Program Files\\Apache
Group\\Apache2\\htdocs\\Images\\TurretBaseTexturePng.PNG",
"E:\\Program Files\\Apache Group\\Apache2\\htdocs\\Images\\TurretPng.PNG",
"E:\\Program Files\\Apache
Group\\Apache2\\htdocs\\Images\\TurretHousing2Png.PNG",
"E:\\Program Files\\Apache
Group\\Apache2\\htdocs\\Images\\TurretControlUnitPng.PNG",
"E:\\Program Files\\Apache
Group\\Apache2\\htdocs\\Images\\TurretLightingPng.PNG",
};
public static String AdressType="System";//if the file is located in your
cpu, set this to System
//public static String AdressType="HTTP";//Integrated HTTP System
public String RotationAxis = "X";

public float ModelX,ModelY,ModelZ;


public Viewer()
{
RotationTimer = new Timer(RotationDelay,this);
MotionTimer = new Timer(RotationDelay,this);

ModelX=0;
ModelY=0;
ModelZ=2;

layout = new GridLayout();

this.setBackground(new Color(0,0,200));
this.setBounds(0, 0, ProgramWidth, ProgramHeight);
this.setLayout(null);

Wnd = new MyWindow(0,0,512,32);


this.add(Wnd);

Wnd3d = new
ModelViewer(0,0,ThreeDWidth,ThreeDHeight,ModelLocationArray,TextureArray,AdressTyp
e);
this.add(Wnd3d);
Wnd3d.ModelType = ModelType;
layout.addLayoutComponent("gamewindow", Wnd3d);

Wnd.leftBtn.SetMyListener(this);
Wnd.rightBtn.SetMyListener(this);
Wnd.upBtn.SetMyListener(this);
Wnd.downBtn.SetMyListener(this);
Wnd.inBtn.SetMyListener(this);
Wnd.outBtn.SetMyListener(this);
/*this.AddListener(new Listener(){ public void ButtonEvent(String e)
{
System.out.println("event:"+e);
Event(e);
} });*/
RotationTimer.start();
}

public void Event(String e)


{
if(e == "Left"){ModelX += 0.1;}
else if(e == "Right"){ModelX -= 0.1;}
else if(e == "Up"){ModelY -= 0.1;}
else if(e == "Down"){ModelY += 0.1;}
else if(e == "In"){ModelZ -= 0.4;}
else if(e == "Out"){ModelZ += 0.4;}
else {System.out.println("Default behavior");}
Wnd3d.MoveTo(new Point3f(ModelX,ModelY,ModelZ),Wnd3d.viewMotion);
}

@Override
public void actionPerformed(ActionEvent e) {

if (TimerMode == "Rotate")
{
if (RotationAxis == "X"){Wnd3d.ModelRotX += 0.1;}
else if (RotationAxis == "Y"){Wnd3d.ModelRotY += 0.1;}
else if (RotationAxis == "Z"){Wnd3d.ModelRotZ += 0.1;}

Wnd3d.RotateModel(Wnd3d.ModelRotX,Wnd3d.ModelRotY,Wnd3d.ModelRotZ,
Wnd3d.SceneActions);
}
if (MotionDir != "null"){Event(MotionDir);}
}
}

class MyWindow extends Container


{
MyButton leftBtn,rightBtn,upBtn,downBtn,inBtn,outBtn;
JPanel MenuBar;
public static String leftBtnIcoAdress =
"http://192.168.1.70/Images/btnLeft.png";
public static String leftBtnIcoOverAdress =
"http://192.168.1.70/Images/btnLeftOver.png";
public static String rightBtnIcoAdress =
"http://192.168.1.70/Images/btnRight.png";
public static String rightBtnIcoOverAdress =
"http://192.168.1.70/Images/btnRightOver.png";
public static String upBtnIcoAdress =
"http://192.168.1.70/Images/btnUp.png";
public static String upBtnIcoOverAdress =
"http://192.168.1.70/Images/btnUpOver.png";
public static String downBtnIcoAdress =
"http://192.168.1.70/Images/btnDown.png";
public static String downBtnIcoOverAdress =
"http://192.168.1.70/Images/btnDownOver.png";
public static String inBtnIcoAdress =
"http://192.168.1.70/Images/btnIn.png";
public static String inBtnIcoOverAdress =
"http://192.168.1.70/Images/btnInOver.png";
public static String outBtnIcoAdress =
"http://192.168.1.70/Images/btnOut.png";
public static String outBtnIcoOverAdress =
"http://192.168.1.70/Images/btnOutOver.png";

public static ImageIcon leftBtnIco = new


ImageIcon("http://192.168.1.70/Images/terrainLake.png");
public HttpImageLoader Imager;
public Image leftBtnImg;
public MyWindow(int x,int y,int width,int height)
{
//Imager = new HttpImageLoader();

leftBtn = new MyButton(1,1,32,32,"Left");


leftBtn.SetIco(leftBtnIcoAdress);
leftBtn.SetIcoOver(leftBtnIcoOverAdress);

upBtn = new MyButton(32,1,32,16,"Up");


upBtn.SetIco(upBtnIcoAdress);
upBtn.SetIcoOver(upBtnIcoOverAdress);

downBtn = new MyButton(32,17,32,16,"Down");


downBtn.SetIco(downBtnIcoAdress);
downBtn.SetIcoOver(downBtnIcoOverAdress);
rightBtn = new MyButton(66,1,32,32,"Right");
rightBtn.SetIco(rightBtnIcoAdress);
rightBtn.SetIcoOver(rightBtnIcoOverAdress);

inBtn = new MyButton(100,1,32,32,"In");


inBtn.SetIco(inBtnIcoAdress);
inBtn.SetIcoOver(inBtnIcoOverAdress);

outBtn = new MyButton(132,1,32,32,"Out");


outBtn.SetIco(outBtnIcoAdress);
outBtn.SetIcoOver(outBtnIcoOverAdress);

this.add(rightBtn);
this.add(leftBtn);
this.add(upBtn);
this.add(downBtn);
this.add(inBtn);
this.add(outBtn);
}
}
class MyButton extends Canvas implements KeyListener,MouseInputListener{
public HttpImageLoader Imager;
public Rectangle rec;
public Dimension size;
BufferedImage img = null;
public Image imidz;
WindowEvent we;
public Image Ico,IcoOver,IcoDown,CurrentImage;
public Viewer MyListener;
public String Event;
public Object[] testListener = new Object[3];
public MyButton(int x,int y,int width,int height,String event)
{

Event = event;
Imager = new HttpImageLoader();
Ico = null;
IcoOver = null;
CurrentImage = null;

//leftBtnImg
=Toolkit.getDefaultToolkit().createImage(Imager.GetImageBytesOverHttp("http://192.
168.1.70/Images/terrain.png"));
//this.addKeyListener(this);

//try {
// img = ImageIO.read(new File("E:\\Documents and
Settings\\Rainer\\Desktop\\pilt.png"));
//} catch (IOException e) {
//}
//setBackground(new Color(255,0,0));

size = new Dimension(x,y);


this.setBounds(x, y, width, height);
this.addMouseListener(this);
this.repaint();
}
//"http://192.168.1.70/Images/btnLeft.png"
//Imager.GetImageOverHttp("http://192.168.1.70/Images/btnLeftOver.png");
public void SetIco(String url)
{
Ico = Imager.GetImageOverHttp(url);
//this.setSize(Ico.getWidth(this), Ico.getHeight(this));
CurrentImage = Ico;
this.repaint();
}
public void SetIcoOver(String url)
{
IcoOver = Imager.GetImageOverHttp(url);
this.repaint();
}
public void paint(Graphics g) {
g.drawImage(CurrentImage, 0, 0, null);
//g.drawImage(leftBtnImg, 0, 0, 40, 40, 0, 0, 40, 40,this);
}
public void SetMyListener(Viewer obj)
{
MyListener = obj;
}
public void AddListener(Listener list)
{
testListener[0]=Listener.class;
testListener[1]=list;
}
public void FireEvent()
{
if(testListener[0] == Listener.class)
{
((Listener)testListener[1]).ButtonEvent(Event);
}
}

@Override
public void keyPressed(KeyEvent e) {

}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub

}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseClicked(MouseEvent e) {
MyListener.Event(Event);
this.repaint();
//FireEvent();
}
@Override
public void mouseEntered(MouseEvent e) {
CurrentImage = IcoOver;
this.repaint();

}
@Override
public void mouseExited(MouseEvent e) {
CurrentImage = Ico;
this.repaint();

}
@Override
public void mousePressed(MouseEvent e) {
((Viewer)(this.getParent().getParent())).MotionDir = Event;
((Viewer)(this.getParent().getParent())).RotationTimer.stop();
((Viewer)(this.getParent().getParent())).MotionTimer.start();

}
@Override
public void mouseReleased(MouseEvent e) {
((Viewer)(this.getParent().getParent())).MotionDir = "null";
((Viewer)(this.getParent().getParent())).MotionTimer.stop();
((Viewer)(this.getParent().getParent())).RotationTimer.start();
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub

}
}
class HttpImageLoader extends Object
{

public HttpImageLoader()
{

}
public Image GetImageOverHttp(String adress)
{
URL url = null;
URLConnection urlConn;
DataInputStream dis;

return
Toolkit.getDefaultToolkit().createImage(GetImageBytesOverHttp(adress));
}
public byte[] GetImageBytesOverHttp(String adress)
{
URL url = null;
URLConnection urlConn;
DataInputStream dis;
byte[] FileContent=null;
try
{
url = new URL(adress);
urlConn = url.openConnection();
urlConn.setDoInput(true);
urlConn.setUseCaches(false);

dis = new DataInputStream(urlConn.getInputStream());


byte s;
FileContent = new byte[100000];
//while (dis.available() != 0)
//{
dis.readFully(FileContent);
//}
dis.close();
}
catch (MalformedURLException mue) {}
catch (IOException ioe) {}
return FileContent;
}
}
interface Listener
{

public void ButtonEvent(String e);


}

You might also like