//[Update:[Wed Nov 06 IST 2019]]
/*History:
**Mon Oct 28 2019
   Started.
**Wed Oct 30 2019
 First working version.
*/
import java.util.*;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import javax.swing.*;

public abstract class Object3D  extends JPanel
implements ActionListener {
    protected Pose pose;
    protected Screen scr;
    private String name;
    protected JPanel panel;
    private JButton updt;
    public Object3D(Pose pose, Screen scr, String name) {
        this.pose = pose;
        this.scr = scr;
        this.name = name;
        panel = new JPanel();
        updt = new JButton("Update");
        updt.addActionListener(this);
        panel.add(updt);
    }

    abstract protected void updating();
    //abstract protected  void draw(Graphics2D g, Camera cam);
    abstract protected void dump(Camera cam, Pad pad);
    abstract protected void fillGui();
    abstract protected void save(PrintWriter pw);
    abstract protected void load(Scanner scnr);

    public void actionPerformed(ActionEvent ae) {
        updating();
        scr.repaint();
    }

    public JPanel getPanel() {
        fillGui();
        return panel;
    }
                                
    public Pose getPose() {
        pose.showGui();
        return pose;
    }

    public Vec3 getOrigin() {
        return pose.getOrigin();
    }

    public String toString() {
        return name;
    }
}

