4 import java.awt.Component;
5 import java.awt.Dimension;
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;
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;
33 import com.toedter.calendar.JCalendar;
35 import businessLogic.BLFacade;
36 import configuration.UtilDate;
37 import domain.AdminUser;
39 import domain.Forecast;
40 import domain.Question;
43 public class CloseEventGUI extends JFrame {
44 private static final long serialVersionUID = 1L;
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"));
50 // private JButton jButtonClose = new JButton(ResourceBundle.getBundle("Etiquetas").getString("Close"));
52 private final JLabel jLabelEventDate = new JLabel("EventDate");
53 private final JLabel jLabelQueries = new JLabel("Queries");
54 private final JLabel jLabelEvents = new JLabel("Events");
56 private JButton jButtonClose = new JButton("Close");
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();
65 private Vector<Date> datesWithEventsCurrentMonth = new Vector<Date>();
67 private JTable tableEvents = new JTable();
68 private JTable tableQueries = new JTable();
70 private DefaultTableModel tableModelEvents;
71 private DefaultTableModel tableModelQueries;
72 private DefaultTableModel tableModelForecasts;
74 // private String[] columnNamesEvents = new String[] { ResourceBundle.getBundle("Etiquetas").getString("EventN"),
75 // ResourceBundle.getBundle("Etiquetas").getString("Event"),
78 // private String[] columnNamesQueries = new String[] { ResourceBundle.getBundle("Etiquetas").getString("QueryN"),
79 // ResourceBundle.getBundle("Etiquetas").getString("Query")
83 // private String[] columnNamesForecasts = new String[] { ResourceBundle.getBundle("Etiquetas").getString("ForecastN"),
84 // ResourceBundle.getBundle("Etiquetas").getString("Forecast"), "Fee"
87 private String[] columnNamesEvents = new String[] { "EventN", "Event",
90 private String[] columnNamesQueries = new String[] { "QueryN", "Query"
94 private String[] columnNamesForecasts = new String[] { "ForecastN", "Forecast", "Fee"
97 private Question ques;
99 private static BLFacade facade = LoginGUI.getBusinessLogic();
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;
108 private JComboBox comboBox = new JComboBox();
110 private JButton btnCloseQuestion = new JButton("Cerrar Pregunta");
112 private JLabel lblNoForecasts = new JLabel("No hay pronósticos");
114 public static void setBusinessLogic(BLFacade pfacade) {
118 public static BLFacade getBusinessLogic() {
122 public CloseEventGUI(User u) {
123 getContentPane().setBackground(Color.WHITE);
129 } catch (Exception e) {
134 private void jbInit() throws Exception {
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");
141 jLabelEventDate.setBounds(new Rectangle(40, 15, 140, 25));
142 jLabelQueries.setBounds(10, 211, 406, 14);
143 jLabelEvents.setBounds(295, 19, 259, 16);
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);
152 jButtonClose.setBounds(new Rectangle(40, 428, 130, 30));
154 jButtonClose.addActionListener(new ActionListener() {
156 public void actionPerformed(ActionEvent e) {
157 jButton2_actionPerformed(e);
161 tableEvents.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
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,
168 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
174 tableQueries.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
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,
181 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
187 this.getContentPane().add(jButtonClose, null);
188 jCalendar1.getDayChooser().getDayPanel().setBackground(Color.WHITE);
190 jCalendar1.setBounds(new Rectangle(40, 50, 225, 150));
192 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
193 CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
194 lblNoForecasts.setForeground(Color.RED);
195 lblNoForecasts.setBackground(Color.WHITE);
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);
204 btnCloseQuestion.setEnabled(false);
205 // Code for JCalendar
206 this.jCalendar1.addPropertyChangeListener(new PropertyChangeListener() {
208 public void propertyChange(PropertyChangeEvent propertychangeevent) {
210 btnCloseQuestion.setEnabled(false);
211 lblNoForecasts.setVisible(false);
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()));
222 int monthAnt = calendarAnt.get(Calendar.MONTH);
223 int monthAct = calendarAct.get(Calendar.MONTH);
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);
234 jCalendar1.setCalendar(calendarAct);
236 BLFacade facade = LoginGUI.getBusinessLogic();
238 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
241 CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
244 tableModelEvents.setDataVector(null, columnNamesEvents);
245 tableModelEvents.setColumnCount(3); // another column added to allocate ev objects
247 BLFacade facade = LoginGUI.getBusinessLogic();
249 Vector<domain.Event> events = facade.getEvents(firstDay);
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()));
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>();
263 System.out.println("Events " + ev);
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);
272 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
273 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
274 tableEvents.getColumnModel().removeColumn(tableEvents.getColumnModel().getColumn(2)); // not
276 tableModelQueries.setRowCount(0);
277 comboBox.removeAllItems();
279 } catch (Exception e1) {
281 jLabelQueries.setText(e1.getMessage());
288 this.getContentPane().add(jCalendar1, null);
290 scrollPaneEvents.setBounds(new Rectangle(292, 50, 346, 150));
292 scrollPaneQueries.setBounds(new Rectangle(10, 236, 372, 116));
294 tableEvents.addMouseListener(new MouseAdapter() {
296 public void mouseClicked(MouseEvent e) {
298 btnCloseQuestion.setEnabled(false);
299 lblNoForecasts.setVisible(false);
301 int i = tableEvents.getSelectedRow();
302 domain.Event ev = (domain.Event) tableModelEvents.getValueAt(i, 2); // obtain ev object
303 queries = facade.getOpenedQuestions(ev);
305 tableModelQueries.setDataVector(null, columnNamesQueries);
307 if (queries.isEmpty())
308 // jLabelQueries.setText(
309 // ResourceBundle.getBundle("Etiquetas").getString("NoQueries") + ": " + ev.getDescription());
310 jLabelQueries.setText("NoQueries" + ": " + ev.getDescription());
312 // jLabelQueries.setText(ResourceBundle.getBundle("Etiquetas").getString("SelectedEvent") + " "
313 // + ev.getDescription());
314 jLabelQueries.setText("SelectedEvent" + " " + ev.getDescription());
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);
324 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
325 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
329 tableQueries.addMouseListener(new MouseAdapter() {
331 public void mouseClicked(MouseEvent e) {
332 lblNoForecasts.setVisible(false);
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);
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);
353 comboBox.removeAllItems();
354 forecasts = ques.getForecasts();
356 if (forecasts.isEmpty()) {
357 lblNoForecasts.setVisible(true);
358 btnCloseQuestion.setEnabled(false);
361 for (domain.Forecast f : forecasts) {
362 forecastsitos.addElement(f.getForecast());
363 // System.out.println(f.getQuestion().getQuestion());
365 comboBox.setModel(forecastsitos);
367 // tableForecasts.addMouseListener(new MouseAdapter() {
369 // public void mouseClicked(MouseEvent e) {
370 // int i = tableForecasts.getSelectedRow();
371 // if (forecasts.isEmpty() == false) {
372 // bet = forecasts.get(i);
375 // System.out.println(bet.toString());
382 scrollPaneEvents.setViewportView(tableEvents);
383 tableModelEvents = new DefaultTableModel(null, columnNamesEvents) {
385 public boolean isCellEditable(int row, int column) {
390 tableEvents.setModel(tableModelEvents);
391 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
392 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
394 scrollPaneQueries.setViewportView(tableQueries);
395 tableModelQueries = new DefaultTableModel(null, columnNamesQueries) {
397 public boolean isCellEditable(int row, int column) {
402 tableQueries.setModel(tableModelQueries);
403 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
404 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
405 tableModelForecasts = new DefaultTableModel(null, columnNamesForecasts);
407 this.getContentPane().add(scrollPaneEvents, null);
408 this.getContentPane().add(scrollPaneQueries, null);
410 // JButton btnCloseBet = new JButton(
411 // ResourceBundle.getBundle("Etiquetas").getString("CloseEventGUI.btnCloseBet.text")); //$NON-NLS-1$ //$NON-NLS-2$
412 // btnCloseBet.addActionListener(new ActionListener() {
414 // public void actionPerformed(ActionEvent e) {
415 // System.out.println(que.toString());
416 // boolean inserted = facade.closeEvent(que.getEvent(), que, bet);
418 // JOptionPane.showMessageDialog(getContentPane(), "Evento cerrado correctamente");
420 // JOptionPane.showMessageDialog(getContentPane(), "Error al cerrar evento");
424 // btnCloseBet.setBounds(new Rectangle(100, 275, 130, 30));
425 // btnCloseBet.setBounds(508, 406, 130, 30);
426 // getContentPane().add(btnCloseBet);
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);
435 comboBox.setBounds(410, 278, 327, 25);
436 getContentPane().add(comboBox);
438 btnCloseQuestion.addActionListener(new ActionListener() {
440 public void actionPerformed(ActionEvent arg0) {
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);
457 System.out.println("El evento esta cerrado: " + ques.getEvent().getClosed());
459 boolean estadoEvento = facade.getEstadoEvento(ques.getEvent());
461 JOptionPane.showMessageDialog(getContentPane(),
462 "El evento <<" + ques.getEvent().getDescription() + ">> se ha cerrado con éxito");
463 System.out.println("El evento esta cerrado: " + estadoEvento);
465 btnCloseQuestion.setEnabled(false);
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);
477 btnCloseQuestion.setBounds(364, 428, 166, 32);
478 getContentPane().add(btnCloseQuestion);
482 private void jButton2_actionPerformed(ActionEvent e) {
484 // if (controlPreguntas) {
485 // JOptionPane.showMessageDialog(getContentPane(),
486 // "Te avisamos de que el evento no ha sido cerrado completamente");
489 Vector<Event> eventosMedioCerrados = facade.getEventosMedioCerrados();
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");
499 eventosMedioCerrados.clear();
501 Frame gui = new MainAdminGUI((AdminUser) userlog);
502 gui.setAlwaysOnTop(true);
503 gui.setVisible(true);