Versión del proyecto de Apuestas tras la iteración 1
[ISBets21MAUBRY] / eclipse-workspace / ISBets21BRYMAUJONUNA / src / main / java / gui / FindQuestionsGUI.java
1 package gui;
2
3 import businessLogic.BLFacade;
4 import configuration.UtilDate;
5
6 import com.toedter.calendar.JCalendar;
7 import domain.Question;
8 import javax.swing.*;
9 import java.awt.*;
10 import java.awt.List;
11 import java.awt.event.*;
12 import java.beans.*;
13 import java.text.DateFormat;
14 import java.util.*;
15
16 import javax.swing.table.DefaultTableModel;
17
18 public class FindQuestionsGUI extends JFrame {
19         private static final long serialVersionUID = 1L;
20
21         private final JLabel jLabelEventDate = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("EventDate"));
22         private final JLabel jLabelQueries = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Queries"));
23         private final JLabel jLabelEvents = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Events"));
24
25         private JButton jButtonClose = new JButton(ResourceBundle.getBundle("Etiquetas").getString("Close"));
26
27         // Code for JCalendar
28         private JCalendar jCalendar1 = new JCalendar();
29         private Calendar calendarAnt = null;
30         private Calendar calendarAct = null;
31         private JScrollPane scrollPaneEvents = new JScrollPane();
32         private JScrollPane scrollPaneQueries = new JScrollPane();
33
34         private Vector<Date> datesWithEventsCurrentMonth = new Vector<Date>();
35
36         private JTable tableEvents = new JTable();
37         private JTable tableQueries = new JTable();
38
39         private DefaultTableModel tableModelEvents;
40         private DefaultTableModel tableModelQueries;
41
42         private String[] columnNamesEvents = new String[] { ResourceBundle.getBundle("Etiquetas").getString("EventN"),
43                         ResourceBundle.getBundle("Etiquetas").getString("Event"),
44
45         };
46         private String[] columnNamesQueries = new String[] { ResourceBundle.getBundle("Etiquetas").getString("QueryN"),
47                         ResourceBundle.getBundle("Etiquetas").getString("Query")
48
49         };
50
51         public FindQuestionsGUI() {
52                 try {
53                         jbInit();
54                 } catch (Exception e) {
55                         e.printStackTrace();
56                 }
57         }
58
59         private void jbInit() throws Exception {
60
61                 this.getContentPane().setLayout(null);
62                 this.setSize(new Dimension(700, 500));
63                 this.setTitle(ResourceBundle.getBundle("Etiquetas").getString("QueryQueries"));
64
65                 jLabelEventDate.setBounds(new Rectangle(40, 15, 140, 25));
66                 jLabelQueries.setBounds(138, 248, 406, 14);
67                 jLabelEvents.setBounds(295, 19, 259, 16);
68
69                 this.getContentPane().add(jLabelEventDate, null);
70                 this.getContentPane().add(jLabelQueries);
71                 this.getContentPane().add(jLabelEvents);
72
73                 jButtonClose.setBounds(new Rectangle(274, 419, 130, 30));
74
75                 jButtonClose.addActionListener(new ActionListener() {
76                         public void actionPerformed(ActionEvent e) {
77                                 jButton2_actionPerformed(e);
78                         }
79                 });
80
81                 this.getContentPane().add(jButtonClose, null);
82
83                 jCalendar1.setBounds(new Rectangle(40, 50, 225, 150));
84
85                 BLFacade facade = LoginGUI.getBusinessLogic();
86                 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
87                 CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
88
89                 // Code for JCalendar
90                 this.jCalendar1.addPropertyChangeListener(new PropertyChangeListener() {
91                         public void propertyChange(PropertyChangeEvent propertychangeevent) {
92
93                                 if (propertychangeevent.getPropertyName().equals("locale")) {
94                                         jCalendar1.setLocale((Locale) propertychangeevent.getNewValue());
95                                 } else if (propertychangeevent.getPropertyName().equals("calendar")) {
96                                         calendarAnt = (Calendar) propertychangeevent.getOldValue();
97                                         calendarAct = (Calendar) propertychangeevent.getNewValue();
98                                         DateFormat dateformat1 = DateFormat.getDateInstance(1, jCalendar1.getLocale());
99 //                                      jCalendar1.setCalendar(calendarAct);
100                                         Date firstDay = UtilDate.trim(new Date(jCalendar1.getCalendar().getTime().getTime()));
101
102                                         int monthAnt = calendarAnt.get(Calendar.MONTH);
103                                         int monthAct = calendarAct.get(Calendar.MONTH);
104
105                                         if (monthAct != monthAnt) {
106                                                 if (monthAct == monthAnt + 2) {
107                                                         // Si en JCalendar está 30 de enero y se avanza al mes siguiente, devolvería 2
108                                                         // de marzo (se toma como equivalente a 30 de febrero)
109                                                         // Con este código se dejará como 1 de febrero en el JCalendar
110                                                         calendarAct.set(Calendar.MONTH, monthAnt + 1);
111                                                         calendarAct.set(Calendar.DAY_OF_MONTH, 1);
112                                                 }
113
114                                                 jCalendar1.setCalendar(calendarAct);
115
116                                                 BLFacade facade = LoginGUI.getBusinessLogic();
117
118                                                 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
119                                         }
120
121                                         CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
122
123                                         try {
124                                                 tableModelEvents.setDataVector(null, columnNamesEvents);
125                                                 tableModelEvents.setColumnCount(3); // another column added to allocate ev objects
126
127                                                 BLFacade facade = LoginGUI.getBusinessLogic();
128
129                                                 Vector<domain.Event> events = facade.getEvents(firstDay);
130
131                                                 if (events.isEmpty())
132                                                         jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("NoEvents") + ": "
133                                                                         + dateformat1.format(calendarAct.getTime()));
134                                                 else
135                                                         jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("Events") + ": "
136                                                                         + dateformat1.format(calendarAct.getTime()));
137                                                 for (domain.Event ev : events) {
138                                                         Vector<Object> row = new Vector<Object>();
139
140                                                         System.out.println("Events " + ev);
141
142                                                         row.add(ev.getEventNumber());
143                                                         row.add(ev.getDescription());
144                                                         row.add(ev); // ev object added in order to obtain it with tableModelEvents.getValueAt(i,2)
145                                                         tableModelEvents.addRow(row);
146                                                 }
147                                                 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
148                                                 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
149                                                 tableEvents.getColumnModel().removeColumn(tableEvents.getColumnModel().getColumn(2)); // not
150                                                                                                                                                                                                                                 // shown
151                                                                                                                                                                                                                                 // in
152                                                                                                                                                                                                                                 // JTable
153                                         } catch (Exception e1) {
154
155                                                 jLabelQueries.setText(e1.getMessage());
156                                         }
157
158                                 }
159                         }
160                 });
161
162                 this.getContentPane().add(jCalendar1, null);
163
164                 scrollPaneEvents.setBounds(new Rectangle(292, 50, 346, 150));
165                 scrollPaneQueries.setBounds(new Rectangle(138, 274, 406, 116));
166
167                 tableEvents.addMouseListener(new MouseAdapter() {
168                         @Override
169                         public void mouseClicked(MouseEvent e) {
170                                 int i = tableEvents.getSelectedRow();
171                                 domain.Event ev = (domain.Event) tableModelEvents.getValueAt(i, 2); // obtain ev object
172                                 Vector<Question> queries = ev.getQuestions();
173
174                                 tableModelQueries.setDataVector(null, columnNamesQueries);
175
176                                 if (queries.isEmpty())
177                                         jLabelQueries.setText(
178                                                         ResourceBundle.getBundle("Etiquetas").getString("NoQueries") + ": " + ev.getDescription());
179                                 else
180                                         jLabelQueries.setText(ResourceBundle.getBundle("Etiquetas").getString("SelectedEvent") + " "
181                                                         + ev.getDescription());
182
183                                 for (domain.Question q : queries) {
184                                         Vector<Object> row = new Vector<Object>();
185
186                                         row.add(q.getQuestionNumber());
187                                         row.add(q.getQuestion());
188                                         tableModelQueries.addRow(row);
189                                 }
190                                 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
191                                 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
192                         }
193                 });
194
195                 scrollPaneEvents.setViewportView(tableEvents);
196                 tableModelEvents = new DefaultTableModel(null, columnNamesEvents);
197
198                 tableEvents.setModel(tableModelEvents);
199                 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
200                 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
201
202                 scrollPaneQueries.setViewportView(tableQueries);
203                 tableModelQueries = new DefaultTableModel(null, columnNamesQueries);
204
205                 tableQueries.setModel(tableModelQueries);
206                 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
207                 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
208
209                 this.getContentPane().add(scrollPaneEvents, null);
210                 this.getContentPane().add(scrollPaneQueries, null);
211
212         }
213
214         private void jButton2_actionPerformed(ActionEvent e) {
215                 this.setVisible(false);
216         }
217
218 }