Iteración 3(Versión sin idiomas)
[ISBets21MAUBRY] / eclipse-workspace / ISBets21MAUBRY / src / main / java / gui / CloseEventGUI.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.Frame;
8 import java.awt.Rectangle;
9 import java.awt.SystemColor;
10 import java.awt.event.ActionEvent;
11 import java.awt.event.ActionListener;
12 import java.awt.event.MouseAdapter;
13 import java.awt.event.MouseEvent;
14 import java.beans.PropertyChangeEvent;
15 import java.beans.PropertyChangeListener;
16 import java.text.DateFormat;
17 import java.util.Calendar;
18 import java.util.Date;
19 import java.util.Locale;
20 import java.util.Vector;
21
22 import javax.swing.DefaultComboBoxModel;
23 import javax.swing.JButton;
24 import javax.swing.JComboBox;
25 import javax.swing.JFrame;
26 import javax.swing.JLabel;
27 import javax.swing.JOptionPane;
28 import javax.swing.JScrollPane;
29 import javax.swing.JTable;
30 import javax.swing.table.DefaultTableCellRenderer;
31 import javax.swing.table.DefaultTableModel;
32
33 import com.toedter.calendar.JCalendar;
34
35 import businessLogic.BLFacade;
36 import configuration.UtilDate;
37 import domain.AdminUser;
38 import domain.Event;
39 import domain.Forecast;
40 import domain.Question;
41 import domain.User;
42
43 public class CloseEventGUI extends JFrame {
44         private static final long serialVersionUID = 1L;
45
46 //      private final JLabel jLabelEventDate = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("EventDate"));
47 //      private final JLabel jLabelQueries = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Queries"));
48 //      private final JLabel jLabelEvents = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Events"));
49 //
50 //      private JButton jButtonClose = new JButton(ResourceBundle.getBundle("Etiquetas").getString("Close"));
51
52         private final JLabel jLabelEventDate = new JLabel("EventDate");
53         private final JLabel jLabelQueries = new JLabel("Queries");
54         private final JLabel jLabelEvents = new JLabel("Events");
55
56         private JButton jButtonClose = new JButton("Close");
57
58         // Code for JCalendar
59         private JCalendar jCalendar1 = new JCalendar();
60         private Calendar calendarAnt = null;
61         private Calendar calendarAct = null;
62         private JScrollPane scrollPaneEvents = new JScrollPane();
63         private JScrollPane scrollPaneQueries = new JScrollPane();
64
65         private Vector<Date> datesWithEventsCurrentMonth = new Vector<Date>();
66
67         private JTable tableEvents = new JTable();
68         private JTable tableQueries = new JTable();
69
70         private DefaultTableModel tableModelEvents;
71         private DefaultTableModel tableModelQueries;
72         private DefaultTableModel tableModelForecasts;
73
74 //      private String[] columnNamesEvents = new String[] { ResourceBundle.getBundle("Etiquetas").getString("EventN"),
75 //                      ResourceBundle.getBundle("Etiquetas").getString("Event"),
76 //
77 //      };
78 //      private String[] columnNamesQueries = new String[] { ResourceBundle.getBundle("Etiquetas").getString("QueryN"),
79 //                      ResourceBundle.getBundle("Etiquetas").getString("Query")
80 //
81 //      };
82 //
83 //      private String[] columnNamesForecasts = new String[] { ResourceBundle.getBundle("Etiquetas").getString("ForecastN"),
84 //                      ResourceBundle.getBundle("Etiquetas").getString("Forecast"), "Fee"
85 //
86 //      };
87         private String[] columnNamesEvents = new String[] { "EventN", "Event",
88
89         };
90         private String[] columnNamesQueries = new String[] { "QueryN", "Query"
91
92         };
93
94         private String[] columnNamesForecasts = new String[] { "ForecastN", "Forecast", "Fee"
95
96         };
97         private Question ques;
98         private Forecast fo;
99         private static BLFacade facade = LoginGUI.getBusinessLogic();
100
101         private User userlog = null;
102         private DefaultComboBoxModel<Object> forecastsitos = new DefaultComboBoxModel<Object>();
103         private Vector<Forecast> seleccionados = new Vector<Forecast>();
104         private Forecast winnerF = null;
105         private Vector<Question> queries;
106         private Vector<Forecast> forecasts;
107
108         private JComboBox comboBox = new JComboBox();
109
110         private JButton btnCloseQuestion = new JButton("Cerrar Pregunta");
111
112         private JLabel lblNoForecasts = new JLabel("No hay pronósticos");
113
114         public static void setBusinessLogic(BLFacade pfacade) {
115                 facade = pfacade;
116         }
117
118         public static BLFacade getBusinessLogic() {
119                 return facade;
120         }
121
122         public CloseEventGUI(User u) {
123                 getContentPane().setBackground(Color.WHITE);
124
125                 userlog = u;
126
127                 try {
128                         jbInit();
129                 } catch (Exception e) {
130                         e.printStackTrace();
131                 }
132         }
133
134         private void jbInit() throws Exception {
135
136                 this.getContentPane().setLayout(null);
137                 this.setSize(new Dimension(800, 560));
138 //              this.setTitle(ResourceBundle.getBundle("Etiquetas").getString("MainAdminGUI.buttonCloseEvent.text"));
139                 this.setTitle("buttonCloseEvent");
140
141                 jLabelEventDate.setBounds(new Rectangle(40, 15, 140, 25));
142                 jLabelQueries.setBounds(10, 211, 406, 14);
143                 jLabelEvents.setBounds(295, 19, 259, 16);
144
145                 this.getContentPane().add(jLabelEventDate, null);
146                 this.getContentPane().add(jLabelQueries);
147                 this.getContentPane().add(jLabelEvents);
148                 jButtonClose.setForeground(Color.WHITE);
149                 jButtonClose.setFont(new Font("Dialog", Font.BOLD, 14));
150                 jButtonClose.setBackground(SystemColor.controlShadow);
151
152                 jButtonClose.setBounds(new Rectangle(40, 428, 130, 30));
153
154                 jButtonClose.addActionListener(new ActionListener() {
155                         @Override
156                         public void actionPerformed(ActionEvent e) {
157                                 jButton2_actionPerformed(e);
158                         }
159                 });
160
161                 tableEvents.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
162                         @Override
163                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
164                                         boolean hasFocus, int row, int column) {
165                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
166                                                 column);
167
168                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
169
170                                 return c;
171                         }
172                 });
173
174                 tableQueries.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
175                         @Override
176                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
177                                         boolean hasFocus, int row, int column) {
178                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
179                                                 column);
180
181                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
182
183                                 return c;
184                         }
185                 });
186
187                 this.getContentPane().add(jButtonClose, null);
188                 jCalendar1.getDayChooser().getDayPanel().setBackground(Color.WHITE);
189
190                 jCalendar1.setBounds(new Rectangle(40, 50, 225, 150));
191
192                 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
193                 CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
194                 lblNoForecasts.setForeground(Color.RED);
195                 lblNoForecasts.setBackground(Color.WHITE);
196
197                 lblNoForecasts.setBounds(400, 325, 130, 13);
198                 getContentPane().add(lblNoForecasts);
199                 lblNoForecasts.setVisible(false);
200                 btnCloseQuestion.setForeground(Color.WHITE);
201                 btnCloseQuestion.setFont(new Font("Dialog", Font.BOLD, 14));
202                 btnCloseQuestion.setBackground(SystemColor.textHighlight);
203
204                 btnCloseQuestion.setEnabled(false);
205                 // Code for JCalendar
206                 this.jCalendar1.addPropertyChangeListener(new PropertyChangeListener() {
207                         @Override
208                         public void propertyChange(PropertyChangeEvent propertychangeevent) {
209
210                                 btnCloseQuestion.setEnabled(false);
211                                 lblNoForecasts.setVisible(false);
212
213                                 if (propertychangeevent.getPropertyName().equals("locale")) {
214                                         jCalendar1.setLocale((Locale) propertychangeevent.getNewValue());
215                                 } else if (propertychangeevent.getPropertyName().equals("calendar")) {
216                                         calendarAnt = (Calendar) propertychangeevent.getOldValue();
217                                         calendarAct = (Calendar) propertychangeevent.getNewValue();
218                                         DateFormat dateformat1 = DateFormat.getDateInstance(1, jCalendar1.getLocale());
219 //                                      jCalendar1.setCalendar(calendarAct);
220                                         Date firstDay = UtilDate.trim(new Date(jCalendar1.getCalendar().getTime().getTime()));
221
222                                         int monthAnt = calendarAnt.get(Calendar.MONTH);
223                                         int monthAct = calendarAct.get(Calendar.MONTH);
224
225                                         if (monthAct != monthAnt) {
226                                                 if (monthAct == monthAnt + 2) {
227                                                         // Si en JCalendar está 30 de enero y se avanza al mes siguiente, devolvería 2
228                                                         // de marzo (se toma como equivalente a 30 de febrero)
229                                                         // Con este código se dejará como 1 de febrero en el JCalendar
230                                                         calendarAct.set(Calendar.MONTH, monthAnt + 1);
231                                                         calendarAct.set(Calendar.DAY_OF_MONTH, 1);
232                                                 }
233
234                                                 jCalendar1.setCalendar(calendarAct);
235
236                                                 BLFacade facade = LoginGUI.getBusinessLogic();
237
238                                                 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
239                                         }
240
241                                         CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
242
243                                         try {
244                                                 tableModelEvents.setDataVector(null, columnNamesEvents);
245                                                 tableModelEvents.setColumnCount(3); // another column added to allocate ev objects
246
247                                                 BLFacade facade = LoginGUI.getBusinessLogic();
248
249                                                 Vector<domain.Event> events = facade.getEvents(firstDay);
250
251                                                 if (events.isEmpty())
252 //                                                      jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("NoEvents") + ": "
253 //                                                                      + dateformat1.format(calendarAct.getTime()));
254                                                         jLabelEvents.setText("NoEvents" + ": " + dateformat1.format(calendarAct.getTime()));
255                                                 else
256 //                                                      jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("Events") + ": "
257 //                                                                      + dateformat1.format(calendarAct.getTime()));
258                                                         jLabelEvents.setText("Events" + ": " + dateformat1.format(calendarAct.getTime()));
259                                                 for (domain.Event ev : events) {
260                                                         if (!ev.getClosed()) {
261                                                                 Vector<Object> row = new Vector<Object>();
262
263                                                                 System.out.println("Events " + ev);
264
265                                                                 row.add(ev.getEventNumber());
266                                                                 row.add(ev.getDescription());
267                                                                 row.add(ev); // ev object added in order to obtain it with
268                                                                                                 // tableModelEvents.getValueAt(i,2)
269                                                                 tableModelEvents.addRow(row);
270                                                         }
271                                                 }
272                                                 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
273                                                 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
274                                                 tableEvents.getColumnModel().removeColumn(tableEvents.getColumnModel().getColumn(2)); // not
275                                                                                                                                                                                                                                 // shown
276                                                 tableModelQueries.setRowCount(0);
277                                                 comboBox.removeAllItems();
278                                                 // JTable
279                                         } catch (Exception e1) {
280
281                                                 jLabelQueries.setText(e1.getMessage());
282                                         }
283
284                                 }
285                         }
286                 });
287
288                 this.getContentPane().add(jCalendar1, null);
289
290                 scrollPaneEvents.setBounds(new Rectangle(292, 50, 346, 150));
291
292                 scrollPaneQueries.setBounds(new Rectangle(10, 236, 372, 116));
293
294                 tableEvents.addMouseListener(new MouseAdapter() {
295                         @Override
296                         public void mouseClicked(MouseEvent e) {
297
298                                 btnCloseQuestion.setEnabled(false);
299                                 lblNoForecasts.setVisible(false);
300
301                                 int i = tableEvents.getSelectedRow();
302                                 domain.Event ev = (domain.Event) tableModelEvents.getValueAt(i, 2); // obtain ev object
303                                 queries = facade.getOpenedQuestions(ev);
304
305                                 tableModelQueries.setDataVector(null, columnNamesQueries);
306
307                                 if (queries.isEmpty())
308 //                                      jLabelQueries.setText(
309 //                                                      ResourceBundle.getBundle("Etiquetas").getString("NoQueries") + ": " + ev.getDescription());
310                                         jLabelQueries.setText("NoQueries" + ": " + ev.getDescription());
311                                 else
312 //                                      jLabelQueries.setText(ResourceBundle.getBundle("Etiquetas").getString("SelectedEvent") + " "
313 //                                                      + ev.getDescription());
314                                         jLabelQueries.setText("SelectedEvent" + " " + ev.getDescription());
315
316                                 for (domain.Question q : queries) {
317                                         if (q.getResult() == null) {
318                                                 Vector<Object> row = new Vector<Object>();
319                                                 row.add(q.getQuestionNumber());
320                                                 row.add(q.getQuestion());
321                                                 tableModelQueries.addRow(row);
322                                         }
323                                 }
324                                 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
325                                 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
326                         }
327                 });
328
329                 tableQueries.addMouseListener(new MouseAdapter() {
330                         @Override
331                         public void mouseClicked(MouseEvent e) {
332                                 lblNoForecasts.setVisible(false);
333
334                                 tableQueries.removeAll();
335                                 btnCloseQuestion.setEnabled(true);
336                                 tableModelForecasts.setRowCount(0);
337                                 int i = tableQueries.getSelectedRow();
338                                 System.out.println(i);
339                                 if (queries.isEmpty() == false) {
340                                         ques = queries.get(i);
341                                 }
342
343 //                                              System.out.println(que.toString());
344 //                                              Vector<Forecast> forecasts = que.getForecasts();
345 //                                              for (domain.Forecast f : forecasts) {
346 //                                                      Vector<Object> row = new Vector<Object>();
347 //                                                      row.add(f.getForecastNumber());
348 //                                                      row.add(f.getForecast());
349 //                                                      row.add(f.getFee());
350 //                                                      tableModelForecasts.addRow(row);
351 //                                              }
352
353                                 comboBox.removeAllItems();
354                                 forecasts = ques.getForecasts();
355
356                                 if (forecasts.isEmpty()) {
357                                         lblNoForecasts.setVisible(true);
358                                         btnCloseQuestion.setEnabled(false);
359                                 } else {
360
361                                         for (domain.Forecast f : forecasts) {
362                                                 forecastsitos.addElement(f.getForecast());
363                                                 // System.out.println(f.getQuestion().getQuestion());
364                                         }
365                                         comboBox.setModel(forecastsitos);
366
367 //                                              tableForecasts.addMouseListener(new MouseAdapter() {
368 //                                                      @Override
369 //                                                      public void mouseClicked(MouseEvent e) {
370 //                                                              int i = tableForecasts.getSelectedRow();
371 //                                                              if (forecasts.isEmpty() == false) {
372 //                                                                      bet = forecasts.get(i);
373 //
374 //                                                              }
375 //                                                              System.out.println(bet.toString());
376 //                                                      }
377 //                                              });
378                                 }
379                         }
380                 });
381
382                 scrollPaneEvents.setViewportView(tableEvents);
383                 tableModelEvents = new DefaultTableModel(null, columnNamesEvents) {
384                         @Override
385                         public boolean isCellEditable(int row, int column) {
386                                 return false;
387                         }
388                 };
389
390                 tableEvents.setModel(tableModelEvents);
391                 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
392                 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
393
394                 scrollPaneQueries.setViewportView(tableQueries);
395                 tableModelQueries = new DefaultTableModel(null, columnNamesQueries) {
396                         @Override
397                         public boolean isCellEditable(int row, int column) {
398                                 return false;
399                         }
400                 };
401
402                 tableQueries.setModel(tableModelQueries);
403                 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
404                 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
405                 tableModelForecasts = new DefaultTableModel(null, columnNamesForecasts);
406
407                 this.getContentPane().add(scrollPaneEvents, null);
408                 this.getContentPane().add(scrollPaneQueries, null);
409
410 //              JButton btnCloseBet = new JButton(
411 //                              ResourceBundle.getBundle("Etiquetas").getString("CloseEventGUI.btnCloseBet.text")); //$NON-NLS-1$ //$NON-NLS-2$
412 //              btnCloseBet.addActionListener(new ActionListener() {
413 //                      @Override
414 //                      public void actionPerformed(ActionEvent e) {
415 //                              System.out.println(que.toString());
416 //                              boolean inserted = facade.closeEvent(que.getEvent(), que, bet);
417 //                              if (inserted) {
418 //                                      JOptionPane.showMessageDialog(getContentPane(), "Evento cerrado correctamente");
419 //                              } else {
420 //                                      JOptionPane.showMessageDialog(getContentPane(), "Error al cerrar evento");
421 //                              }
422 //                      }
423 //              });
424 //              btnCloseBet.setBounds(new Rectangle(100, 275, 130, 30));
425 //              btnCloseBet.setBounds(508, 406, 130, 30);
426 //              getContentPane().add(btnCloseBet);
427
428 //              JLabel lblNewLabel = new JLabel(
429 //                              ResourceBundle.getBundle("Etiquetas").getString("CloseBetGUI.lblNewLabel.text")); //$NON-NLS-1$ //$NON-NLS-2$
430                 JLabel lblNewLabel = new JLabel("CloseBetGUI"); //$NON-NLS-1$ //$NON-NLS-2$
431                 lblNewLabel.setBounds(410, 252, 144, 14);
432                 getContentPane().add(lblNewLabel);
433                 comboBox.setBackground(Color.WHITE);
434
435                 comboBox.setBounds(410, 278, 327, 25);
436                 getContentPane().add(comboBox);
437
438                 btnCloseQuestion.addActionListener(new ActionListener() {
439                         @Override
440                         public void actionPerformed(ActionEvent arg0) {
441
442                                 System.out.println(".....cerrrando pregunta.....");
443                                 int i = comboBox.getSelectedIndex();
444                                 int j = tableQueries.getSelectedRow();
445                                 winnerF = forecasts.get(i);
446                                 System.out.println("La pregunta <<" + queries.get(j).getQuestion() + ">> con respuesta <<"
447                                                 + winnerF.getForecast() + ">>" + " ha sido cerrado con éxito");
448 //                              boolean boleanisa = facade.definirResultados(ques.getEvent(), ques, winnerF);
449                                 facade.definirResultados(ques.getEvent(), ques, winnerF);
450                                 JOptionPane.showMessageDialog(getContentPane(), "La pregunta <<" + queries.get(j).getQuestion() + ">>"
451                                                 + " se ha cerrado con éxito con la respuesta <<" + winnerF.getForecast() + ">>");
452 //                              queries.remove(j);
453                                 comboBox.removeAllItems();
454                                 tableModelQueries.removeRow(j);
455                                 queries.remove(j);
456
457                                 System.out.println("El evento esta cerrado: " + ques.getEvent().getClosed());
458
459                                 boolean estadoEvento = facade.getEstadoEvento(ques.getEvent());
460                                 if (estadoEvento) {
461                                         JOptionPane.showMessageDialog(getContentPane(),
462                                                         "El evento <<" + ques.getEvent().getDescription() + ">> se ha cerrado con éxito");
463                                         System.out.println("El evento esta cerrado: " + estadoEvento);
464
465                                         btnCloseQuestion.setEnabled(false);
466
467                                 }
468
469 //                              if (ques.getEvent().getClosed()) {
470 //                                      JOptionPane.showMessageDialog(getContentPane(),
471 //                                                      "El evento <<" + ques.getEvent().getDescription() + ">> se ha cerrado con éxito");
472 //                                      System.out.println("miau");
473 //                                      btnCloseQuestion.setEnabled(false);
474 //                              }
475                         }
476                 });
477                 btnCloseQuestion.setBounds(364, 428, 166, 32);
478                 getContentPane().add(btnCloseQuestion);
479
480         }
481
482         private void jButton2_actionPerformed(ActionEvent e) {
483
484 //              if (controlPreguntas) {
485 //                      JOptionPane.showMessageDialog(getContentPane(),
486 //                                      "Te avisamos de que el evento no ha sido cerrado completamente");
487 //              }
488
489                 Vector<Event> eventosMedioCerrados = facade.getEventosMedioCerrados();
490
491                 if (eventosMedioCerrados.isEmpty() == false) {
492                         for (Event ee : eventosMedioCerrados) {
493                                 JOptionPane.showMessageDialog(getContentPane(),
494                                                 "Te avisamos de que el evento " + ee.getDescription() + " no ha sido cerrado completamente");
495                         }
496
497                 }
498
499                 eventosMedioCerrados.clear();
500
501                 Frame gui = new MainAdminGUI((AdminUser) userlog);
502                 gui.setAlwaysOnTop(true);
503                 gui.setVisible(true);
504                 dispose();
505         }
506 }