Package basic.javaGUI

Source Code of basic.javaGUI.StartSwingExample

package basic.javaGUI;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.UIManager;

import org.mt4j.MTApplication;
import org.mt4j.components.MTComponent;
import org.mt4j.components.visibleComponents.shapes.MTEllipse;
import org.mt4j.components.visibleComponents.shapes.MTRectangle;
import org.mt4j.components.visibleComponents.shapes.MTRoundRectangle;
import org.mt4j.components.visibleComponents.widgets.MTOverlayContainer;
import org.mt4j.input.gestureAction.InertiaDragAction;
import org.mt4j.input.inputProcessors.componentProcessors.dragProcessor.DragProcessor;
import org.mt4j.util.MTColor;
import org.mt4j.util.math.ToolsMath;
import org.mt4j.util.math.Vector3D;


public class StartSwingExample extends JFrame {

  public static void main(String[] args) {
    try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
          e.printStackTrace();
        }
    StartSwingExample swingFrame = new StartSwingExample();
  }
 
 
  public StartSwingExample(){
    this.setTitle("Swing Test");
    //Should be called early before initializing opengl stuff
    this.setVisible(true);
   
    final Container content = this.getContentPane();
    this.setLayout(new BorderLayout());
       
    //Create our mt4j applet
        final MTApplication instance = new TestMTApplication();
        instance.frame = this; //Important for registering the Windows 7 Touch input
        instance.init();
       
        JPanel panel1 = new JPanel(new FlowLayout());
        content.add(panel1, BorderLayout.WEST);
      
        JButton e2 = new JButton("Clear");
        e2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {
        if (instance.getCurrentScene() != null){
          instance.invokeLater(new Runnable() {
            public void run() {
              MTComponent[] ch = instance.getCurrentScene().getCanvas().getChildren();
              for (int i = 0; i < ch.length; i++) {
                MTComponent mtComponent = ch[i];
                if (!(mtComponent instanceof MTOverlayContainer)){
                  mtComponent.destroy()
                }
              }
            }
          });
         
        }
      }
    });
        panel1.add(e2); // Add components to the content
       
        //Add MT4j applet
        JPanel pane = new JPanel(new GridLayout(0,1));
        pane.add(instance);
        content.add(pane, BorderLayout.SOUTH);
       
        /////////MEnu
        //So that the menu will overlap the heavyweight opengl canvas
        JPopupMenu.setDefaultLightWeightPopupEnabled(false);
       
        //Create the menu bar.
        JMenuBar menuBar = new JMenuBar();

        //Build the first menu.
        JMenu menu = new JMenu("Add");
        menu.setMnemonic(KeyEvent.VK_A);
        menuBar.add(menu);

        JMenuItem addRectItem = new JMenuItem("MTRectangle", KeyEvent.VK_T);
        addRectItem.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {
        if (instance.getCurrentScene() != null){
          //If we want to modify the MT4j applet from the swing thread
          //we should wrap the actions into an invokeLater runnable which
          //will be executed the next time the mt4j thread runs.
          instance.invokeLater(new Runnable() {
            public void run() {
              MTRectangle r = new MTRectangle(0,0,ToolsMath.getRandom(50, 250),ToolsMath.getRandom(50, 250), instance);
              r.setFillColor(new MTColor(ToolsMath.getRandom(50,255),ToolsMath.getRandom(50,255),ToolsMath.getRandom(50,255)));
              r.addGestureListener(DragProcessor.class, new InertiaDragAction());
              instance.getCurrentScene().getCanvas().addChild(r);
              r.setPositionGlobal(new Vector3D(ToolsMath.getRandom(0, instance.width), ToolsMath.getRandom(0, instance.height)));
            }
          });
         
        }
      }
    });
        menu.add(addRectItem);
       
        JMenuItem addRoundRectItem = new JMenuItem("MTRoundRectangle", KeyEvent.VK_E);
        addRoundRectItem.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {
        if (instance.getCurrentScene() != null){
          //If we want to modify the MT4j applet from the swing thread
          //we should wrap the actions into an invokeLater runnable which
          //will be executed the next time the mt4j thread runs.
          instance.invokeLater(new Runnable() {
            public void run() {
              float arc = ToolsMath.getRandom(8, 25);
              MTRoundRectangle r = new MTRoundRectangle(0,0,0, ToolsMath.getRandom(50, 250),ToolsMath.getRandom(50, 250), arc, arc, instance);
              r.setFillColor(new MTColor(ToolsMath.getRandom(50,255),ToolsMath.getRandom(50,255),ToolsMath.getRandom(50,255)));
              r.addGestureListener(DragProcessor.class, new InertiaDragAction());
              instance.getCurrentScene().getCanvas().addChild(r);
              r.setPositionGlobal(new Vector3D(ToolsMath.getRandom(0, instance.width), ToolsMath.getRandom(0, instance.height)));
            }
          });
         
        }
      }
    });
        menu.add(addRoundRectItem);
       
        JMenuItem addEllItem = new JMenuItem("MTEllipse", KeyEvent.VK_E);
        addEllItem.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {
        if (instance.getCurrentScene() != null){
          //If we want to modify the MT4j applet from the swing thread
          //we should wrap the actions into an invokeLater runnable which
          //will be executed the next time the mt4j thread runs.
          instance.invokeLater(new Runnable() {
            public void run() {
              MTEllipse e = new MTEllipse(instance, new Vector3D(0,0), ToolsMath.getRandom(50, 150),ToolsMath.getRandom(50, 150));
              e.setFillColor(new MTColor(ToolsMath.getRandom(50,255),ToolsMath.getRandom(50,255),ToolsMath.getRandom(50,255)));
              e.addGestureListener(DragProcessor.class, new InertiaDragAction());
              instance.getCurrentScene().getCanvas().addChild(e);
              e.setPositionGlobal(new Vector3D(ToolsMath.getRandom(0, instance.width), ToolsMath.getRandom(0, instance.height)));
            }
          });
         
        }
      }
    });
        menu.add(addEllItem);
       
        //Help Menu
        JMenu helpMenu = new JMenu("Help");
        helpMenu.setMnemonic(KeyEvent.VK_H);
        JMenuItem aboutItem = new JMenuItem("About", KeyEvent.VK_A);
        aboutItem.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {
        JDialog f = new SimpleAboutDialog(StartSwingExample.this);
          f.setVisible(true);
      }
    });
        helpMenu.add(aboutItem);
        menuBar.add(helpMenu);
       
        this.setJMenuBar(menuBar);
        ////////Menu
       
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.pack();   // does layout of components.
  }
 
 
  private class TestMTApplication extends MTApplication{
    @Override
    public void startUp() {
      //This causeD the craetion of a new rendrer (-> new opengl context)
      //so opengl objects like displaylists etc would get deleted!
//      setPreferredSize(new Dimension(MT4jSettings.getInstance().getScreenWidth(),MT4jSettings.getInstance().getScreenHeight()));
//      pack();
//      setResizable(false);
     
      this.addScene(new TestScene(this, "test scene"));
    }
  }
 
 
 
  public class SimpleAboutDialog extends JDialog {
      public SimpleAboutDialog(JFrame parent) {
        super(parent, "About", true);

        Box b = Box.createVerticalBox();
        b.add(Box.createGlue());
        b.add(new JLabel("   MT4j example application"));
        b.add(new JLabel("   This shows how to integrate MT4j into"));
        b.add(new JLabel("   a java swing/awt application"));
        b.add(new JLabel("   Visit www.mt4j.org"));
        b.add(Box.createGlue());
        getContentPane().add(b, BorderLayout.CENTER);

        JPanel p2 = new JPanel();
        JButton ok = new JButton("Ok");
        p2.add(ok);
        getContentPane().add(p2, BorderLayout.SOUTH);

        ok.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
            setVisible(false);
          }
        });
        setSize(250, 150);
      }
    }
 
}
TOP

Related Classes of basic.javaGUI.StartSwingExample

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.