Iteración 3(Versión sin idiomas)
[ISBets21MAUBRY] / eclipse-workspace / ISBets21MAUBRY / src / main / java / gui / FindQuestionsGUI.java
1 package gui;
2
3 import java.awt.Color;
4 import java.awt.Component;
5 import java.awt.Dimension;
6 import java.awt.Font;
7 import java.awt.Rectangle;
8 import java.awt.SystemColor;
9 import java.awt.event.ActionEvent;
10 import java.awt.event.ActionListener;
11 import java.awt.event.MouseAdapter;
12 import java.awt.event.MouseEvent;
13 import java.beans.PropertyChangeEvent;
14 import java.beans.PropertyChangeListener;
15 import java.text.DateFormat;
16 import java.util.Calendar;
17 import java.util.Date;
18 import java.util.Locale;
19 import java.util.Vector;
20
21 import javax.swing.JButton;
22 import javax.swing.JFrame;
23 import javax.swing.JLabel;
24 import javax.swing.JScrollPane;
25 import javax.swing.JTable;
26 import javax.swing.table.DefaultTableCellRenderer;
27 import javax.swing.table.DefaultTableModel;
28
29 import com.toedter.calendar.JCalendar;
30
31 import businessLogic.BLFacade;
32 import configuration.UtilDate;
33 import domain.AdminUser;
34 import domain.Forecast;
35 import domain.Question;
36
37 public class FindQuestionsGUI extends JFrame {
38         private static final long serialVersionUID = 1L;
39
40 //      private final JLabel jLabelEventDate = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("EventDate"));
41 //      private final JLabel jLabelQueries = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Queries"));
42 //      private final JLabel jLabelEvents = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Events"));
43 //
44 //      private JButton jButtonClose = new JButton(ResourceBundle.getBundle("Etiquetas").getString("Close"));
45
46         private final JLabel jLabelEventDate = new JLabel("EventDate");
47         private final JLabel jLabelQueries = new JLabel("Queries");
48         private final JLabel jLabelEvents = new JLabel("Events");
49
50         private JButton jButtonClose = new JButton("Close");
51
52         // Code for JCalendar
53         private JCalendar jCalendar1 = new JCalendar();
54         private Calendar calendarAnt = null;
55         private Calendar calendarAct = null;
56         private JScrollPane scrollPaneEvents = new JScrollPane();
57         private JScrollPane scrollPaneQueries = new JScrollPane();
58         private JScrollPane scrollPaneForecasts = new JScrollPane();
59
60         private Vector<Date> datesWithEventsCurrentMonth = new Vector<Date>();
61
62         private JTable tableEvents = new JTable();
63         private JTable tableQueries = new JTable();
64         private JTable tableForecasts = new JTable();
65
66         private DefaultTableModel tableModelEvents;
67         private DefaultTableModel tableModelQueries;
68         private DefaultTableModel tableModelForecasts;
69
70         private BLFacade facade = LoginGUI.getBusinessLogic();
71
72 //      private String[] columnNamesEvents = new String[] { ResourceBundle.getBundle("Etiquetas").getString("EventN"),
73 //                      ResourceBundle.getBundle("Etiquetas").getString("Event"),
74 //
75 //      };
76 //      private String[] columnNamesQueries = new String[] { ResourceBundle.getBundle("Etiquetas").getString("QueryN"),
77 //                      ResourceBundle.getBundle("Etiquetas").getString("Query")
78 //
79 //      };
80 //
81 //      private String[] columnNamesForecasts = new String[] { ResourceBundle.getBundle("Etiquetas").getString("ForecastN"),
82 //                      ResourceBundle.getBundle("Etiquetas").getString("Forecast"), "Fee"
83 //
84 //      };
85         private String[] columnNamesEvents = new String[] { "EventN", "Event",
86
87         };
88         private String[] columnNamesQueries = new String[] { "QueryN", "Query"
89
90         };
91
92         private String[] columnNamesForecasts = new String[] { "ForecastN", "Forecast", "Fee"
93
94         };
95
96         private Question que;
97         private Forecast forecast;
98         private Vector<Question> queries;
99         private Vector<Forecast> forecasts;
100
101         private AdminUser userlog = null;
102
103         public FindQuestionsGUI(AdminUser au) {
104                 getContentPane().setBackground(Color.WHITE);
105
106                 userlog = au;
107
108                 try {
109                         jbInit();
110                 } catch (Exception e) {
111                         e.printStackTrace();
112                 }
113         }
114
115         private void jbInit() throws Exception {
116
117                 this.getContentPane().setLayout(null);
118                 this.setSize(new Dimension(820, 520));
119 //              this.setTitle(ResourceBundle.getBundle("Etiquetas").getString("MainAdminGUI.jButtonQueryQuestions.text"));
120                 this.setTitle("QueryQuestions");
121
122                 jLabelEventDate.setBounds(new Rectangle(40, 15, 140, 25));
123                 jLabelQueries.setBounds(40, 248, 406, 14);
124                 jLabelEvents.setBounds(295, 19, 259, 16);
125
126                 this.getContentPane().add(jLabelEventDate, null);
127                 this.getContentPane().add(jLabelQueries);
128                 this.getContentPane().add(jLabelEvents);
129                 jButtonClose.setForeground(Color.WHITE);
130                 jButtonClose.setFont(new Font("Dialog", Font.BOLD, 14));
131                 jButtonClose.setBackground(SystemColor.controlShadow);
132
133                 jButtonClose.setBounds(new Rectangle(332, 419, 130, 30));
134
135                 jButtonClose.addActionListener(new ActionListener() {
136                         @Override
137                         public void actionPerformed(ActionEvent e) {
138                                 jButton2_actionPerformed(e);
139                         }
140                 });
141
142                 this.getContentPane().add(jButtonClose, null);
143                 jCalendar1.getDayChooser().getDayPanel().setBackground(Color.WHITE);
144
145                 jCalendar1.setBounds(new Rectangle(40, 50, 225, 150));
146
147                 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
148                 CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
149
150                 // Code for JCalendar
151                 this.jCalendar1.addPropertyChangeListener(new PropertyChangeListener() {
152                         @Override
153                         public void propertyChange(PropertyChangeEvent propertychangeevent) {
154
155                                 if (propertychangeevent.getPropertyName().equals("locale")) {
156                                         jCalendar1.setLocale((Locale) propertychangeevent.getNewValue());
157                                 } else if (propertychangeevent.getPropertyName().equals("calendar")) {
158                                         calendarAnt = (Calendar) propertychangeevent.getOldValue();
159                                         calendarAct = (Calendar) propertychangeevent.getNewValue();
160                                         DateFormat dateformat1 = DateFormat.getDateInstance(1, jCalendar1.getLocale());
161 //                                      jCalendar1.setCalendar(calendarAct);
162                                         Date firstDay = UtilDate.trim(new Date(jCalendar1.getCalendar().getTime().getTime()));
163
164                                         int monthAnt = calendarAnt.get(Calendar.MONTH);
165                                         int monthAct = calendarAct.get(Calendar.MONTH);
166
167                                         if (monthAct != monthAnt) {
168                                                 if (monthAct == monthAnt + 2) {
169                                                         // Si en JCalendar está 30 de enero y se avanza al mes siguiente, devolvería 2
170                                                         // de marzo (se toma como equivalente a 30 de febrero)
171                                                         // Con este código se dejará como 1 de febrero en el JCalendar
172                                                         calendarAct.set(Calendar.MONTH, monthAnt + 1);
173                                                         calendarAct.set(Calendar.DAY_OF_MONTH, 1);
174                                                 }
175
176                                                 jCalendar1.setCalendar(calendarAct);
177
178                                                 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
179                                         }
180
181                                         CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
182
183                                         try {
184                                                 tableModelEvents.setDataVector(null, columnNamesEvents);
185                                                 tableModelEvents.setColumnCount(3); // another column added to allocate ev objects
186
187                                                 Vector<domain.Event> events = facade.getEvents(firstDay);
188
189                                                 if (events.isEmpty())
190 //                                                      jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("NoEvents") + ": "
191 //                                                                      + dateformat1.format(calendarAct.getTime()));
192                                                         jLabelEvents.setText("NoEvents" + ": " + dateformat1.format(calendarAct.getTime()));
193                                                 else
194 //                                                      jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("Events") + ": "
195 //                                                                      + dateformat1.format(calendarAct.getTime()));
196                                                         jLabelEvents.setText("Events" + ": " + dateformat1.format(calendarAct.getTime()));
197                                                 for (domain.Event ev : events) {
198                                                         if (!ev.getClosed()) {
199                                                                 Vector<Object> row = new Vector<Object>();
200
201                                                                 System.out.println("Events " + ev);
202
203                                                                 row.add(ev.getEventNumber());
204                                                                 row.add(ev.getDescription());
205                                                                 row.add(ev); // ev object added in order to obtain it with
206                                                                                                 // tableModelEvents.getValueAt(i,2)
207                                                                 tableModelEvents.addRow(row);
208                                                         }
209                                                 }
210                                                 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
211                                                 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
212                                                 tableEvents.getColumnModel().removeColumn(tableEvents.getColumnModel().getColumn(2)); // not
213                                                                                                                                                                                                                                 // shown
214                                                 tableModelQueries.setRowCount(0);
215                                                 tableModelForecasts.setRowCount(0);// in
216                                                                                                                         // JTable
217                                         } catch (Exception e1) {
218
219                                                 jLabelQueries.setText(e1.getMessage());
220                                         }
221
222                                 }
223                         }
224                 });
225
226                 this.getContentPane().add(jCalendar1, null);
227
228                 scrollPaneEvents.setBounds(new Rectangle(292, 50, 346, 150));
229                 scrollPaneQueries.setBounds(new Rectangle(40, 274, 406, 116));
230                 scrollPaneForecasts.setBounds(new Rectangle(498, 274, 231, 116));
231
232                 tableEvents.addMouseListener(new MouseAdapter() {
233                         @Override
234                         public void mouseClicked(MouseEvent e) {
235                                 tableModelForecasts.setRowCount(0);
236                                 int i = tableEvents.getSelectedRow();
237                                 domain.Event ev = (domain.Event) tableModelEvents.getValueAt(i, 2); // obtain ev object
238                                 queries = ev.getQuestions();
239
240                                 tableModelQueries.setDataVector(null, columnNamesQueries);
241
242                                 if (queries.isEmpty())
243 //                                      jLabelQueries.setText(
244 //                                                      ResourceBundle.getBundle("Etiquetas").getString("NoQueries") + ": " + ev.getDescription());
245                                         jLabelQueries.setText("NoQueries" + ": " + ev.getDescription());
246                                 else
247 //                                      jLabelQueries.setText(ResourceBundle.getBundle("Etiquetas").getString("SelectedEvent") + " "
248 //                                                      + ev.getDescription()); // aquiiii
249                                         jLabelQueries.setText("SelectedEvent" + " " + ev.getDescription()); // aquiiii
250
251                                 for (domain.Question q : queries) {
252                                         Vector<Object> row = new Vector<Object>();
253
254                                         row.add(q.getQuestionNumber());
255                                         row.add(q.getQuestion());
256                                         tableModelQueries.addRow(row);
257                                 }
258                                 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
259                                 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
260                         }
261                 });
262
263                 tableQueries.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
264                         @Override
265                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
266                                         boolean hasFocus, int row, int column) {
267                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
268                                                 column);
269
270                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
271
272                                 return c;
273                         }
274                 });
275
276                 tableEvents.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
277                         @Override
278                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
279                                         boolean hasFocus, int row, int column) {
280                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
281                                                 column);
282
283                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
284
285                                 return c;
286                         }
287                 });
288
289                 tableForecasts.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
290                         @Override
291                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
292                                         boolean hasFocus, int row, int column) {
293                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
294                                                 column);
295
296                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
297
298                                 return c;
299                         }
300                 });
301
302                 tableQueries.addMouseListener(new MouseAdapter() {
303
304                         @Override
305                         public void mouseClicked(MouseEvent e) {
306                                 tableModelForecasts.setRowCount(0);
307                                 int i = tableQueries.getSelectedRow();
308                                 que = queries.get(i);
309
310                                 forecasts = que.getForecasts();
311                                 System.out.println("TAMAÑO FORECASTS: " + forecasts.size());
312                                 for (domain.Forecast f : forecasts) {
313                                         Vector<Object> row = new Vector<Object>();
314                                         row.add(f.getForecastNumber());
315                                         row.add(f.getForecast());
316                                         row.add(f.getFee());
317                                         tableModelForecasts.addRow(row);
318                                 }
319                                 System.out.println(tableForecasts.getRowCount());
320                         }
321                 });
322
323                 tableForecasts.addMouseListener(new MouseAdapter() {
324                         @Override
325                         public void mouseClicked(MouseEvent e) {
326                                 int i = tableForecasts.getSelectedRow();
327                                 forecast = forecasts.get(i);
328
329                                 System.out.println(forecast.toString());
330                         }
331                 });
332
333                 scrollPaneEvents.setViewportView(tableEvents);
334                 tableModelEvents = new DefaultTableModel(null, columnNamesEvents) {
335                         @Override
336                         public boolean isCellEditable(int row, int column) {
337                                 return false;
338                         }
339                 };
340
341                 tableEvents.setModel(tableModelEvents);
342                 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
343                 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
344
345                 scrollPaneQueries.setViewportView(tableQueries);
346                 tableModelQueries = new DefaultTableModel(null, columnNamesQueries) {
347                         @Override
348                         public boolean isCellEditable(int row, int column) {
349                                 return false;
350                         }
351                 };
352
353                 tableQueries.setModel(tableModelQueries);
354                 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
355                 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
356
357                 scrollPaneForecasts.setViewportView(tableForecasts);
358                 tableModelForecasts = new DefaultTableModel(null, columnNamesForecasts) {
359                         @Override
360                         public boolean isCellEditable(int row, int column) {
361                                 return false;
362                         }
363                 };
364
365                 tableForecasts.setModel(tableModelForecasts);
366                 tableForecasts.getColumnModel().getColumn(0).setPreferredWidth(25);
367                 tableForecasts.getColumnModel().getColumn(1).setPreferredWidth(100);
368                 tableForecasts.getColumnModel().getColumn(2).setPreferredWidth(25);
369
370                 this.getContentPane().add(scrollPaneEvents, null);
371                 this.getContentPane().add(scrollPaneQueries, null);
372                 this.getContentPane().add(scrollPaneForecasts);
373
374         }
375
376         private void jButton2_actionPerformed(ActionEvent e) {
377                 JFrame a = new MainAdminGUI(userlog);
378                 a.setAlwaysOnTop(true);
379                 a.setVisible(true);
380                 dispose();
381         }
382
383 }