package fr.utc.leapband.view;
import jade.gui.GuiEvent;
import java.awt.Color;
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.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
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 RoomSelectView extends JAgentFrame {
private JList<String> list_room;
private JButton create_room;
private JButton enter_room;
private JButton home;
public RoomSelectView(UserAgent agent) {
super(agent);
this.setTitle("Room 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);
//load model to list
list_room = new JList<String>();
list_room.setBorder(new RoundedBorder(new Color(100,100,100,100)));
list_room.setOpaque(false);
((JComponent) list_room.getCellRenderer()).setOpaque(false);
list_room.setSelectionForeground(Color.RED);
list_room.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_room.setFixedCellHeight(80);
list_room.setFont(new Font("Serif", Font.PLAIN, 30));
imagePanel.add(list_room);
create_room = new JButton("create room");
create_room.setBounds(950,(int) (Constance.Windows_height*0.2),300, 150);
create_room.setFont(new Font("Lucida Calligraphy", Font.BOLD, 30));
create_room.setForeground(Color.BLACK);
create_room.setBorder(new RoundedBorder(new Color(224,224,224,100)));
create_room.setContentAreaFilled( false );
create_room.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
create_room.setBorder(new RoundedBorder(new Color(224,224,224,100)));
}
@Override
public void mousePressed(MouseEvent e) {
create_room.setBorder(new RoundedBorder(new Color(224,224,224,150)));
}
@Override
public void mouseExited(MouseEvent e) {
System.out.println("mouse exit");
changeCursorImage("images/cursor.png");
if (click_task != null) {
click_task.cancel();
click_task = null;
}
create_room.setBorder(new RoundedBorder(new Color(224,224,224,100)));
}
@Override
public void mouseEntered(MouseEvent e) {
System.out.println("mouse entered");
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.CREATE_ROOM_EVENT);
ev.addParameter(Constance.roomselect_Mode);
myAgent.postGuiEvent(ev);
}
},
Constance.click_delay
);
create_room.setBorder(new RoundedBorder(new Color(224,224,224,50)));
}
@Override
public void mouseClicked(MouseEvent e) {
create_room.setBorder(new RoundedBorder(new Color(224,224,224,150)));
}
});
imagePanel.add(create_room);
enter_room = new JButton("enter room");
enter_room.setBounds(950,350,300, 150);
enter_room.setFont(new Font("Lucida Calligraphy", Font.BOLD, 30));
enter_room.setForeground(Color.BLACK);
enter_room.setBorder(new RoundedBorder(new Color(224,224,224,100)));
enter_room.setContentAreaFilled( false );
enter_room.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
enter_room.setBorder(new RoundedBorder(new Color(224,224,224,100)));
}
@Override
public void mousePressed(MouseEvent e) {
enter_room.setBorder(new RoundedBorder(new Color(224,224,224,150)));
}
@Override
public void mouseExited(MouseEvent e) {
enter_room.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() {
String room_name = list_room.getSelectedValue();
if (room_name != null) {
GuiEvent ev = new GuiEvent(this,UserAgent.JOINT_ROOM_EVENT);
ev.addParameter(room_name);
myAgent.postGuiEvent(ev);
}
}
},
Constance.click_delay
);
enter_room.setBorder(new RoundedBorder(new Color(224,224,224,50)));
}
@Override
public void mouseClicked(MouseEvent e) {
enter_room.setBorder(new RoundedBorder(new Color(224,224,224,150)));
}
});
imagePanel.add(enter_room);
home = new JButton();
Icon icon = new ImageIcon("images/home.png");
home.setBounds(0,0,100,100);
home.setIcon(icon);
home.addMouseListener(new HomeMouseListener(this,home));
home.setContentAreaFilled(false);
home.setOpaque(false);
imagePanel.add(home);
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
super.propertyChange(evt);
if (isVisible()) {
if (evt.getPropertyName().equals("swipe")) {
int current_index = list_room.getSelectedIndex();
if (current_index > -1 ) {
if ((String)evt.getNewValue() == "UP") {
current_index--;
} else if ((String)evt.getNewValue() == "DOWN") {
current_index++;
}
}
list_room.setSelectedIndex(current_index);
}
}
}
public JList<String> getList_room() {
return list_room;
}
public void setList_room(JList<String> list_room) {
this.list_room = list_room;
}
}