package dragdropbtn;

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

/**
 * Title:        Teste de Drag de Botoes
 * Description:
 * Copyright:    Copyright (c) 2001
 * Company:
 * @author
 * @version 1.0
 */

public class Applet1 extends JApplet
{
  boolean isStandalone = false;
  JButton jButton1 = new JButton();
  JLabel jLabel1 = new JLabel();
  boolean dragEventHappenBefore = false;
  Point mousePositionApplet;
  JLabel jLabel2 = new JLabel();
  JLabel jLabel3 = new JLabel();
  JLabel mousePosX = new JLabel();
  JLabel mousePosY = new JLabel();
  JLabel jLabel4 = new JLabel();
  JLabel jLabel5 = new JLabel();
  JLabel bpx = new JLabel();
  JLabel bpy = new JLabel();

  //caixa de dialogo
  JOptionPane dialogBox = new JOptionPane();


  /**Get a parameter value*/
  public String getParameter(String key, String def)
  {
    return isStandalone ? System.getProperty(key, def) :
      (getParameter(key) != null ? getParameter(key) : def);
  }

  /**Construct the applet*/
  public Applet1() {
  }
  /**Initialize the applet*/
  public void init() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  /**Component initialization*/
  private void jbInit() throws Exception {
    jButton1.setText("jButton1");
    jButton1.setBounds(new Rectangle(30, 43, 79, 27));
    jButton1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        jButton1_actionPerformed(e);
      }
    });
    //mousePositionApplet = new Point();


    jButton1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
      public void mouseDragged(MouseEvent e) {
        jButton1_mouseDragged(e);
      }
      public void mouseMoved(MouseEvent e) {
        jButton1_mouseMoved(e);
      }
    });
    jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
      public void mousePressed(MouseEvent e) {
        jButton1_mousePressed(e);
      }
      public void mouseReleased(MouseEvent e) {
        jButton1_mouseReleased(e);
      }
    });
    this.setSize(new Dimension(400,300));
    this.addFocusListener(new java.awt.event.FocusAdapter() {
      public void focusGained(FocusEvent e) {
        this_focusGained(e);
      }
    });
    this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
      public void mouseMoved(MouseEvent e) {
        this_mouseMoved(e);
      }
    });

    this.addMouseListener(new java.awt.event.MouseAdapter() {
      public void mouseClicked(MouseEvent e) {
        this_mouseClicked(e);
      }
      public void mouseReleased(MouseEvent e) {
        this_mouseReleased(e);
      }

    });
    this.getContentPane().setLayout(null);
    jLabel1.setText("jLabel1");
    jLabel1.setBounds(new Rectangle(21, 152, 311, 17));
    jLabel2.setText("X:");
    jLabel2.setBounds(new Rectangle(17, 239, 41, 17));
    jLabel3.setText("Y:");
    jLabel3.setBounds(new Rectangle(15, 254, 41, 17));
    mousePosX.setText("jLabel4");
    mousePosX.setBounds(new Rectangle(47, 239, 41, 17));
    mousePosY.setText("jLabel4");
    mousePosY.setBounds(new Rectangle(46, 256, 41, 17));
    jLabel4.setText("Pos X Botao:");
    jLabel4.setBounds(new Rectangle(109, 239, 77, 17));
    jLabel5.setText("Pos Y Botao:");
    jLabel5.setBounds(new Rectangle(109, 255, 72, 17));
    bpx.setText("jLabel6");
    bpx.setBounds(new Rectangle(188, 240, 41, 17));
    bpy.setText("jLabel6");
    bpy.setBounds(new Rectangle(186, 256, 41, 17));
    this.getContentPane().add(jButton1, null);
    this.getContentPane().add(jLabel1, null);
    this.getContentPane().add(jLabel2, null);
    this.getContentPane().add(mousePosX, null);
    this.getContentPane().add(jLabel3, null);
    this.getContentPane().add(mousePosY, null);
    this.getContentPane().add(jLabel4, null);
    this.getContentPane().add(jLabel5, null);
    this.getContentPane().add(bpx, null);
    this.getContentPane().add(bpy, null);
  }
  /**Start the applet*/
  public void start() {
  }
  /**Stop the applet*/
  public void stop() {
  }
  /**Destroy the applet*/
  public void destroy() {
  }
  /**Get Applet information*/
  public String getAppletInfo() {
    return "Applet Information";
  }
  /**Get parameter info*/
  public String[][] getParameterInfo() {
    return null;
  }

  //static initializer for setting look & feel
  static {
    try {
      //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      //UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
    }
    catch(Exception e) {
    }
  }

  void jButton1_mousePressed(MouseEvent e)
  {
    // evento pressionamento de botao
    jLabel1.setText("evento mousePressed acionado");
  }

  void jButton1_mouseReleased(MouseEvent e)
  {
   jLabel1.setText("evento mouseReleased acionado");
   // evento liberacao do botao
  // if( dragEventHappenBefore )
      //jButton1.setLocation(e.getX() + (jButton1.getWidth()  / 2 ) , e.getY() +  ( jButton1.getHeight() / 2) );
    //  jButton1.setLocation( e.getPoint() );
   //dragEventHappenBefore = false;
   //repaint();
   if( dragEventHappenBefore)
   {
    jButton1.setLocation( e.getX(), e.getY() );
    dragEventHappenBefore = false;
   }

  }

  void this_mouseClicked(MouseEvent e)
  {
  }

  void jButton1_mouseDragged(MouseEvent e)
  {
   // evento drag do botao
   jLabel1.setText("evento mouseDraged acionado");
   dragEventHappenBefore = true;
   //jButton1.setLocation( e.getPoint() );
   bpx.setText( Integer.toString( jButton1.getX() ) );
   bpy.setText( Integer.toString( jButton1.getY() ) );
   mousePosX.setText( Integer.toString( e.getX() ) );
   mousePosY.setText( Integer.toString( e.getY() ) );
   //paintAll( getGraphics() );
   //repaint();
   //jButton1.updateUI();
   repaint();
   paintComponents(getGraphics());
  }

  void this_mouseMoved(MouseEvent e) {
   mousePosX.setText( Integer.toString( e.getX() ) );
   mousePosY.setText( Integer.toString( e.getY() ) );

  }

  void this_mouseReleased(MouseEvent e) {
  jLabel1.setText("evento mouseReleased do Applet acionado");
  //if( dragEventHappenBefore)
   //{
    //jButton1.setLocation(e.getX() +  10 , e.getY() + 10 );
    //dragEventHappenBefore = false;
   //}
  }

  void jButton1_mouseMoved(MouseEvent e)
  {
   // evento liberacao do botao
   //if( dragEventHappenBefore )
      //jButton1.setLocation(e.getX() + (jButton1.getHeight()  / 2 ) , e.getY() +  ( jButton1.getWidth() / 2) );
      //jButton1.setLocation( e.getPoint() );
  }



  void this_focusGained(FocusEvent e)
  {
   repaint();
   paintComponents(getGraphics());
  }

  void jButton1_actionPerformed(ActionEvent e)
  {
   dialogBox.showMessageDialog(null, "Mensagem de Erro", "ERRO",
    JOptionPane.ERROR_MESSAGE);
  }


}
