package no.ntnu.fp.gui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import no.ntnu.fp.model.Calendar;
import no.ntnu.fp.model.Meeting;
import no.ntnu.fp.model.MeetingInviteNotification;
import no.ntnu.fp.model.MeetingReplyNotification;
import no.ntnu.fp.model.Notification;
import no.ntnu.fp.model.Place;
import no.ntnu.fp.model.Room;
import no.ntnu.fp.model.User;
import no.ntnu.fp.model.Meeting.State;
import no.ntnu.fp.net.network.client.CommunicationController;
import no.ntnu.fp.storage.db.DbConnection;
public class ApplicationFrame extends JFrame {
public static void main(String[] args) {
ApplicationFrame calendar = new ApplicationFrame("havard");
}
private final CommunicationController c = CommunicationController.getInstance();
private User model;
private CalendarPanel calendarPanel;
private NotificationPanel notificationPanel;
private JButton newAppointmentButton;
private JButton newMeetingButton;
private JButton calendarButton;
public ApplicationFrame(String user) {
//testSetUser();
setModel(c.getClientFullUser());
setTitle(getModel().getName());
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
// Add Calendar Panel
calendarPanel = new CalendarPanel(getModel());
panel.add(calendarPanel, BorderLayout.CENTER);
// Add Notification Panel
notificationPanel = new NotificationPanel(model);
panel.add(notificationPanel, BorderLayout.EAST);
// Add Buttons
JPanel buttons = new JPanel();
newAppointmentButton = new JButton("Ny Avtale");
newAppointmentButton.addActionListener(new NewAppointmentAction(this));
buttons.add(newAppointmentButton);
newMeetingButton = new JButton("Nytt Møte");
newMeetingButton.addActionListener(new NewMeetingAction(this, getModel()));
buttons.add(newMeetingButton);
calendarButton = new JButton("Kalendere");
calendarButton.addActionListener(new OpenCalendarAction(this));
buttons.add(calendarButton);
panel.add(buttons, BorderLayout.SOUTH);
setPreferredSize(new Dimension(760 + 300, 600));
setContentPane(panel);
pack();
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
//testUpdate();
}
private void testUpdate() {
User user = new User("havard");
user.setName("Håvard Wormdal Høiby");
User p1 = new User("bjorn");
p1.setName("Bjørn Åge Tungesvik");
Meeting m1 = new Meeting("UppdateTestMeeting");
m1.setID(20);
m1.setDate(new Date(112, 2, 1, 12, 0, 0), new Date(112, 2, 1, 13, 0, 0));
m1.setOwner(p1);
m1.addParticipant(user, State.Pending);
m1.setLocation(new Place(1,"Plass"));
c.updateMeeting(m1);
}
private void testSetUser() {
User user = new User("havard");
user.setName("Håvard Wormdal Høiby");
User p1 = new User("bjorn");
p1.setName("Bjørn Åge Tungesvik");
User p2 = new User("odd");
p2.setName("Odd Magnus Trondrud");
User p3 = new User("andy");
p3.setName("Andre Philipp");
User p4 = new User("eivind");
p4.setName("Eivind Kvissel");
User p5 = new User("tina");
p5.setName("Tina Syversen");
Meeting m1 = new Meeting("Møte 1");
m1.setDate(new Date(112, 2, 1, 12, 0, 0), new Date(112, 2, 1, 13, 0, 0));
m1.setLocation(new Place(1, "Kiosken"));
m1.setOwner(user);
m1.addParticipant(p1, State.Pending);
m1.addParticipant(p2, State.Pending);
m1.addParticipant(p3, State.Pending);
m1.addParticipant(p4, State.Accepted);
m1.addParticipant(p5, State.Rejected);
Meeting m2 = new Meeting("Møte 2");
m2.setDate(new Date(112, 2, 1, 12, 0, 0), new Date(112, 2, 1, 13, 0, 0));
m2.setLocation(new Room(1, "414", "P15", 30));
m2.setOwner(p2);
m2.addParticipant(user, State.Rejected);
setModel(p2);
}
private void setModel(User model) {
this.model = model;
}
public User getModel() {
return model;
}
}