/*
 * DataContainer.java
 *
 * Created on November 10, 2000, 4:05 PM
 */

package edu.ou.eml.fea3d;



/**
 *
 * @author  Qiuli Sun
 * @version 1.0
 */

import javax.media.j3d.*;
import javax.vecmath.*;
import javax.swing.*;
import java.util.*;
import java.awt.*;

public class DataContainer {
    

    //The following fields can be updated by other classes
    public static Material material ;
    public static TransformGroup geometryTG ;
    
    public static float maxXYZ = 100.0f;

    public static Shape3D shape3D; 
    public static Canvas3D canvas3D = null;
    public static Color3f backGroundColor = new Color3f(0.0f, 0.0f, 128.0f/255.0f);
   

    public static BoundingSphere bounds ;
    
      
    //Programming data
    public static JFrame baseFrame;

    //Define a private variables

    private static float shininess;
    
    //The fields can not be accessed by other classess
     public static Color3f ambColor, emissColor, diffColor , specColor ;
    
    public static float xMax, xMin, yMax, yMin, zMax, zMin ;
    
    public DataContainer() 
    { 
        ambColor = new Color3f ( 0.3f, 0.3f, 0.3f ) ;
        emissColor = new Color3f ( 0.1f,0.1f,0.1f );
        diffColor = new Color3f ( 0.5f, 0.5f, 0.6f );
        specColor = new Color3f( 1.0f, 1.0f, 1.0f );
        shininess = 50.0f;
        material = new Material(ambColor, emissColor, diffColor, specColor, shininess);
        material.setCapability(Material.ALLOW_COMPONENT_WRITE);
       
        geometryTG = new TransformGroup();

        geometryTG.setCapability(Group.ALLOW_CHILDREN_EXTEND);
        geometryTG.setCapability(Group.ALLOW_CHILDREN_READ);
        geometryTG.setCapability(Group.ALLOW_CHILDREN_WRITE);

        geometryTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        geometryTG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
    
        //++++++++++++++++
       shape3D = new Shape3D();      
        shape3D.setCapability(Shape3D.ALLOW_GEOMETRY_WRITE);
        shape3D.setCapability(Shape3D.ALLOW_APPEARANCE_WRITE);
        shape3D.setCapability(Shape3D.ALLOW_GEOMETRY_READ);
        shape3D.setCapability(Node.ALLOW_PICKABLE_WRITE);
        
    }

    
    public static void setFrameBase(JFrame baseFrame)
    {
        DataContainer.baseFrame = baseFrame;
    }

}
