-
CHEVALIER Noemy authoredCHEVALIER Noemy authored
ShukanController.java 6.01 KiB
package shukan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/** Shukan controller
*/
public class ShukanController
implements KeyListener, MouseListener, ActionListener//, MouseMotionListener
{
/** Controlled display area. */
private ShukanView canvas;
/** Controlled display bar */
private ShukanViewBar bar;
/** Controlled application data. */
private ShukanData data;
/** Controlled display student bar*/
ShukanStudent student;
/** Constructs a event handler.
* @param canvas display area.
*/
public ShukanController(ShukanView canvas, ShukanViewBar bar, ShukanData data, ShukanStudent student) {
this.canvas = canvas;
this.bar = bar;
this.data = data;
this.student = student;
}
/** Invoked when a key has been pressed.
* Implementation from KeyListener.
* @param e detected key event.
*/
public void keyPressed (KeyEvent e)
{
processKeyEvent (e, true);
}
/** Invoked when a key has been released.
* Implementation from KeyListener.
* @param e detected key event.
*/
public void keyReleased (KeyEvent e)
{
processKeyEvent (e, false);
}
/** Invoked when a key has been pressed or released.
* Local implementation from KeyListener.
* @param e detected key event.
* @param pressed pressed or released key status.
*/
private void processKeyEvent (KeyEvent e, boolean pressed)
{
switch (e.getKeyCode ())
{
case KeyEvent.VK_Q :
case KeyEvent.VK_ESCAPE :
if (! pressed)
{
canvas.saveData ();
//data.check ();
System.exit (0);
}
break;
case KeyEvent.VK_E : // edit
if (! pressed) new ShukanTex (data);
break;
case KeyEvent.VK_LEFT :
case KeyEvent.VK_KP_LEFT :
if (pressed)
{
data.toggleLoad (-1);
canvas.repaint ();
}
break;
case KeyEvent.VK_RIGHT :
case KeyEvent.VK_KP_RIGHT :
if (pressed)
{
data.toggleLoad (1);
canvas.repaint ();
}
case KeyEvent.VK_X :
if (pressed && e.isControlDown ())
{
data.exchangeExtremes ();
canvas.repaint ();
}
break;
}
}
/** Invoked when a key has been typed.
* Implementation from KeyListener.
* @param e detected key event.
*/
public void keyTyped (KeyEvent e)
{
switch (e.getKeyChar ())
{
case 'l' :
if (data.followLeft ()) canvas.repaint ();
break;
case 'm' :
if (data.followRight ()) canvas.repaint ();
break;
case 'L' :
if (data.left ()) canvas.repaint ();
break;
case 'M' :
if (data.right ()) canvas.repaint ();
break;
case 'o' :
if (data.left ()) canvas.repaint ();
break;
case 'p' :
if (data.right ()) canvas.repaint ();
break;
}
}
/** Invoked when the mouse button has been clicked (pressed and released)
* on a component.
* Implementation from MouseListener.
* @param e detected mouse event.
*/
public void mouseClicked (MouseEvent e)
{
if (e.getButton () == MouseEvent.BUTTON1)
{
if (e.isShiftDown ())
{
if (canvas.select (e.getX (), e.getY (), true))
canvas.repaint ();
}
else
{
if (canvas.select (e.getX (), e.getY (), false))
canvas.repaint ();
}
}
// Manage the double click to open a new window
if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) {
canvas.SpecWeekModuleWindow();
}
if (e.getButton () == MouseEvent.BUTTON3)
{
if (e.isShiftDown ())
{
if (canvas.selectActivity (e.getX (), e.getY (), true))
canvas.repaint ();
}
else
{
if (canvas.selectActivity (e.getX (), e.getY (), false))
canvas.repaint ();
}
}
}
/** Invoked when the mouse enters a component.
* Implementation from MouseListener.
* @param e detected mouse event.
*/
public void mouseEntered (MouseEvent e)
{
}
/** Invoked when the mouse exits a component.
* Implementation from MouseListener.
* @param e detected mouse event.
*/
public void mouseExited (MouseEvent e)
{
}
/** Invoked when a mouse button has been pressed on a component.
* Implementation from MouseListener.
* @param e detected mouse event.
*/
public void mousePressed (MouseEvent e)
{
}
/** Invoked when a mouse button has been released on a component.
* Implementation from MouseListener.
* @param e detected mouse event.
*/
public void mouseReleased (MouseEvent e)
{
}
/** Invoked when a button has been clicked
* Implementation from actionListener
* @param e detected action event
* */
public void actionPerformed(ActionEvent e){
if (e.getSource()== bar.buttons[0])
canvas.saveData ();
else if (e.getSource()== bar.buttons[1])
System.out.println("back");
else if (e.getSource()==bar.buttons[2])
System.out.println("plus");
else if (e.getSource()==bar.buttons[3])
System.out.println("delete");
else if (e.getSource()==bar.buttons[4]) {if (data.followLeft ()) canvas.repaint ();}
else if (e.getSource()==bar.buttons[5]) {if (data.followRight ()) canvas.repaint ();}
else if (e.getSource()== bar.buttons[6])
{
data.toggleCursus(false);
student.changeStudentHeight(95);
canvas.repaint();
}
else if (e.getSource() == bar.buttons[7])
{
data.toggleCursus(true);
canvas.repaint();
}
//if (data.followRight ()) canvas.repaint ();
else if (e.getSource()==bar.buttons[8])
new ShukanTex (data);
else if (e.getSource()==bar.buttons[9]){
EventQueue.invokeLater(() -> {
ShukanParameters myParameters = new ShukanParameters("Changer de thème", canvas);
myParameters.setSize(300, 300);
myParameters.setVisible(true);
});
}
canvas.requestFocusInWindow();
}
}