// * This code is licensed under:
// * jeHEP License, Version 1.0
// * - for license details see http://jehep.sourceforge.net/license.html 
// *
// * Copyright (c) 2005 by S.Chekanov (chekanov@mail.desy.de). 
// * All rights reserved.

package jhplot.v3d;

import java.awt.*;
import javax.swing.*;


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;


public class Editor3d extends JDialog 
              implements ActionListener {
    /**
	 * 
	 */

    private static final long serialVersionUID = 1L;

    private JTabbedPane tabbedPane;
    private JButton closeButton;
    private  Canvas3d     win;
    private  Model3d md;
    private  JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9,jb10; 

    public Editor3d(Canvas3d  win, Model3d md) {
    this.win=win;
    this.md = md;

    setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

   setTitle("");
   setModal( true );
   setResizable( true );



   // make sure the dialog is not too big
   Dimension size = new Dimension(80, 400);

//   setLocationRelativeTo(parent);

  JPanel topPanel = new JPanel();
  JPanel lowerPanel = new JPanel();
  lowerPanel.setPreferredSize(new Dimension(80, 40));


  closeButton = new JButton();
  closeButton.setText("Exit");
  closeButton.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             setVisible(false); dispose();
        }  });

  lowerPanel.add(closeButton, null);
  topPanel.setLayout( new BorderLayout() );
  getContentPane().add( topPanel, java.awt.BorderLayout.CENTER );
  getContentPane().add( lowerPanel, java.awt.BorderLayout.SOUTH );
  topPanel.setLayout( new GridLayout(10,0) );
  
  
  jb1 = new JButton("Home");
  jb2 = new JButton("XRot");
  jb3 = new JButton("YRot");
  jb4 = new JButton("ZRot");
  jb5 = new JButton("Left");
  jb6 = new JButton("Right");
  jb7 = new JButton("Up");
  jb8 = new JButton("Down");
  jb9 = new JButton("ZoomIn");
  jb10 = new JButton("ZoomOut");

  jb1.addActionListener(this);
  jb2.addActionListener(this);
  jb3.addActionListener(this);
  jb4.addActionListener(this);
  jb5.addActionListener(this);
  jb6.addActionListener(this);
  jb7.addActionListener(this);
  jb8.addActionListener(this);
  jb9.addActionListener(this);
  jb10.addActionListener(this);




  topPanel.add(jb1);
  topPanel.add(jb2);
  topPanel.add(jb3); 
  topPanel.add(jb4);
  topPanel.add(jb5);
  topPanel.add(jb6);
  topPanel.add(jb7);
  topPanel.add(jb8);
  topPanel.add(jb9);
  topPanel.add(jb10);


// set visible and put on center

    Util.rightWithin( win, this );

    setSize(size);
    pack();
    this.setVisible(true);
    }



 public void actionPerformed(ActionEvent e) {


     if (md == null) return;


      String s = e.getActionCommand();


        if (s.equals("Home"))
        {
            md.rot.copy(win.orot);
            md.trans.copy(win.otrans);
            if (md.persp)
            {
                md.minScale = win.ominScale;
                md.maxScale = win.omaxScale;
                md.computeMatrix();
            }
            else
                md.scale.copy(win.oscale);
        }
        else if (s.equals("ZRot"))
            md.incRot(10,0,0);
        else if (s.equals("XRot"))
            md.incRot(0,10,0);
        else if (s.equals("YRot"))
            md.incRot(0,0,10);
        else if (s.equals("Right"))
            md.incTrans(md.bb.getWidth()/10,0,0);
        else if (s.equals("Left"))
            md.incTrans(-md.bb.getWidth()/10,0,0);
        else if (s.equals("Down"))
            md.incTrans(0,-md.bb.getHeight()/10,0);
        else if (s.equals("Up"))
            md.incTrans(0,md.bb.getHeight()/10,0);
        else if (s.equals("ZoomOut"))
        {
            if (md.persp)
            {
                md.minScale /= 1.1f;
                md.maxScale /= 1.1f;
                md.computeMatrix();
            }
            else
            {
                float f = 1 / 1.1f;
                md.incScale(f, f, f);
            }
        }
        else if (s.equals("ZoomIn"))
        {
            if (md.persp)
            {
                md.minScale *= 1.1f;
                md.maxScale *= 1.1f;
                md.computeMatrix();
            }
            else
            {
                float f = 1.1f;
                md.incScale(f, f, f);
            }
        }
        win.repaint();



  }





}

 

Ads help maintain this website.