package fr.utc.leapband.view;
import jade.gui.GuiEvent;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.beans.PropertyChangeEvent;
import java.util.Timer;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JList;
import fr.utc.leapband.sma.user.UserAgent;
import fr.utc.leapband.utilities.Constance;
import fr.utc.leapband.utilities.CustomImgPanel;
import fr.utc.leapband.utilities.ImageTimerTask;
import fr.utc.leapband.utilities.RoundedBorder;
@SuppressWarnings("serial")
public class MultiwaitRoom extends JAgentFrame {
private JList<String> list_player;
private JButton start;
private JButton exit;
private JLabel roomID;
public MultiwaitRoom(UserAgent agent) {
super(agent);
this.setTitle("Waiting View");
this.setSize(Constance.Windows_width, Constance.Windows_height);
this.setLocationRelativeTo(null);
CustomImgPanel imagePanel=new CustomImgPanel(Constance.Windows_width, Constance.Windows_height);
imagePanel.setImagePath("images/roomBg.png");
imagePanel.setLayout(null);
this.add(imagePanel);
roomID=new JLabel();
roomID.setFont(new Font("Chalkboard", Font.PLAIN, 40));
roomID.setBounds((int) (Constance.Windows_width*0.42),(int) (Constance.Windows_height*0.12),(int) (Constance.Windows_width*0.35),(int) (Constance.Windows_height*0.1));
imagePanel.add(roomID);
//load model to list
list_player = new JList<String>();
list_player.setBorder(new RoundedBorder(new Color(100,100,100,100)));
list_player.setOpaque(false);
((JComponent) list_player.getCellRenderer()).setOpaque(false);
list_player.setCellRenderer(new MyRenderer(0, Color.RED));
list_player.setBounds((int) (Constance.Windows_width*0.3),(int) (Constance.Windows_height*0.2),(int) (Constance.Windows_width*0.35),(int) (Constance.Windows_height*0.7));
list_player.setFixedCellHeight(80);
list_player.setFont(new Font("Serif", Font.PLAIN, 30));
imagePanel.add(list_player);
start = new JButton("Start");
start.setBounds(950,(int) (Constance.Windows_height*0.2),300, 150);
start.setFont(new Font("Lucida Calligraphy", Font.BOLD, 30));
start.setForeground(Color.BLACK);
start.setBorder(new RoundedBorder(new Color(224,224,224,100)));
start.setContentAreaFilled( false );
start.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
start.setBorder(new RoundedBorder(new Color(224,224,224,100)));
}
@Override
public void mousePressed(MouseEvent e) {
start.setBorder(new RoundedBorder(new Color(224,224,224,150)));
}
@Override
public void mouseExited(MouseEvent e) {
start.setBorder(new RoundedBorder(new Color(224,224,224,100)));
changeCursorImage("images/cursor.png");
if (click_task != null) {
click_task.cancel();
click_task = null;
}
}
@Override
public void mouseEntered(MouseEvent e) {
click_task = new Timer();
click_task.schedule(new ImageTimerTask(myAgent),0,Constance.click_delay/12);
click_task.schedule(
new java.util.TimerTask() {
@Override
public void run() {
GuiEvent ev = new GuiEvent(this,UserAgent.CONFIRM_ROOM_EVENT);
ev.addParameter(UserAgent.wait_Mode);
myAgent.postGuiEvent(ev);
}
},
Constance.click_delay
);
start.setBorder(new RoundedBorder(new Color(224,224,224,50)));
}
@Override
public void mouseClicked(MouseEvent e) {
start.setBorder(new RoundedBorder(new Color(224,224,224,150)));
}
});
imagePanel.add(start);
exit = new JButton("Exit");
exit.setBounds(950,350,300, 150);
exit.setFont(new Font("Lucida Calligraphy", Font.BOLD, 30));
exit.setForeground(Color.BLACK);
exit.setBorder(new RoundedBorder(new Color(224,224,224,100)));
exit.setContentAreaFilled( false );
exit.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
exit.setBorder(new RoundedBorder(new Color(224,224,224,100)));
}
@Override
public void mousePressed(MouseEvent e) {
exit.setBorder(new RoundedBorder(new Color(224,224,224,150)));
}
@Override
public void mouseExited(MouseEvent e) {
exit.setBorder(new RoundedBorder(new Color(224,224,224,100)));
changeCursorImage("images/cursor.png");
if (click_task != null) {
click_task.cancel();
click_task = null;
}
}
@Override
public void mouseEntered(MouseEvent e) {
click_task = new Timer();
click_task.schedule(new ImageTimerTask(myAgent),0,Constance.click_delay/12);
click_task.schedule(
new java.util.TimerTask() {
@Override
public void run() {
GuiEvent ev = new GuiEvent(this,UserAgent.EXIT_ROOM_EVENT);
myAgent.postGuiEvent(ev);
}
},
Constance.click_delay
);
exit.setBorder(new RoundedBorder(new Color(224,224,224,50)));
}
@Override
public void mouseClicked(MouseEvent e) {
exit.setBorder(new RoundedBorder(new Color(224,224,224,150)));
}
});
imagePanel.add(exit);
}
public JLabel getRoomID() {
return roomID;
}
public void setRoomID(JLabel roomID) {
this.roomID = roomID;
}
public JButton getStartButton(){
return start;
}
public JList<String> getList_player() {
return list_player;
}
public void setList_player(JList<String> list_player) {
this.list_player = list_player;
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
super.propertyChange(evt);
if (isVisible()) {
if (evt.getPropertyName().equals("swipe")) {
int current_index = list_player.getSelectedIndex();
if (current_index > -1 ) {
if ((String)evt.getNewValue() == "UP") {
current_index--;
} else if ((String)evt.getNewValue() == "DOWN") {
current_index++;
}
}
list_player.setSelectedIndex(current_index);
}
}
}
class MyRenderer extends DefaultListCellRenderer {
private Color fontColor;
private int row;
public MyRenderer(int row, Color color) {
this.fontColor = color;
this.row = row;
}
@SuppressWarnings("rawtypes")
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (index == row) {
setForeground(fontColor);
setFont(getFont().deriveFont((float) (getFont().getSize())));
setOpaque(false);
}
return this;
}
}
}