X-Git-Url: https://xp-dev.com/git/ISBets21MAUBRY/blobdiff_plain/cbae1464e51d90bc80afc97083afd6462fd3c54f..3cf4057e97448d401b49261033b8ab566105944e:/eclipse-workspace/ISBets21MAUBRY/src/main/java/gui/CloseEventGUI.java diff --git a/eclipse-workspace/ISBets21MAUBRY/src/main/java/gui/CloseEventGUI.java b/eclipse-workspace/ISBets21MAUBRY/src/main/java/gui/CloseEventGUI.java new file mode 100644 index 0000000..927901a --- /dev/null +++ b/eclipse-workspace/ISBets21MAUBRY/src/main/java/gui/CloseEventGUI.java @@ -0,0 +1,506 @@ +package gui; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Frame; +import java.awt.Rectangle; +import java.awt.SystemColor; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.text.DateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; +import java.util.Vector; + +import javax.swing.DefaultComboBoxModel; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.DefaultTableModel; + +import com.toedter.calendar.JCalendar; + +import businessLogic.BLFacade; +import configuration.UtilDate; +import domain.AdminUser; +import domain.Event; +import domain.Forecast; +import domain.Question; +import domain.User; + +public class CloseEventGUI extends JFrame { + private static final long serialVersionUID = 1L; + +// private final JLabel jLabelEventDate = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("EventDate")); +// private final JLabel jLabelQueries = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Queries")); +// private final JLabel jLabelEvents = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Events")); +// +// private JButton jButtonClose = new JButton(ResourceBundle.getBundle("Etiquetas").getString("Close")); + + private final JLabel jLabelEventDate = new JLabel("EventDate"); + private final JLabel jLabelQueries = new JLabel("Queries"); + private final JLabel jLabelEvents = new JLabel("Events"); + + private JButton jButtonClose = new JButton("Close"); + + // Code for JCalendar + private JCalendar jCalendar1 = new JCalendar(); + private Calendar calendarAnt = null; + private Calendar calendarAct = null; + private JScrollPane scrollPaneEvents = new JScrollPane(); + private JScrollPane scrollPaneQueries = new JScrollPane(); + + private Vector datesWithEventsCurrentMonth = new Vector(); + + private JTable tableEvents = new JTable(); + private JTable tableQueries = new JTable(); + + private DefaultTableModel tableModelEvents; + private DefaultTableModel tableModelQueries; + private DefaultTableModel tableModelForecasts; + +// private String[] columnNamesEvents = new String[] { ResourceBundle.getBundle("Etiquetas").getString("EventN"), +// ResourceBundle.getBundle("Etiquetas").getString("Event"), +// +// }; +// private String[] columnNamesQueries = new String[] { ResourceBundle.getBundle("Etiquetas").getString("QueryN"), +// ResourceBundle.getBundle("Etiquetas").getString("Query") +// +// }; +// +// private String[] columnNamesForecasts = new String[] { ResourceBundle.getBundle("Etiquetas").getString("ForecastN"), +// ResourceBundle.getBundle("Etiquetas").getString("Forecast"), "Fee" +// +// }; + private String[] columnNamesEvents = new String[] { "EventN", "Event", + + }; + private String[] columnNamesQueries = new String[] { "QueryN", "Query" + + }; + + private String[] columnNamesForecasts = new String[] { "ForecastN", "Forecast", "Fee" + + }; + private Question ques; + private Forecast fo; + private static BLFacade facade = LoginGUI.getBusinessLogic(); + + private User userlog = null; + private DefaultComboBoxModel forecastsitos = new DefaultComboBoxModel(); + private Vector seleccionados = new Vector(); + private Forecast winnerF = null; + private Vector queries; + private Vector forecasts; + + private JComboBox comboBox = new JComboBox(); + + private JButton btnCloseQuestion = new JButton("Cerrar Pregunta"); + + private JLabel lblNoForecasts = new JLabel("No hay pronósticos"); + + public static void setBusinessLogic(BLFacade pfacade) { + facade = pfacade; + } + + public static BLFacade getBusinessLogic() { + return facade; + } + + public CloseEventGUI(User u) { + getContentPane().setBackground(Color.WHITE); + + userlog = u; + + try { + jbInit(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void jbInit() throws Exception { + + this.getContentPane().setLayout(null); + this.setSize(new Dimension(800, 560)); +// this.setTitle(ResourceBundle.getBundle("Etiquetas").getString("MainAdminGUI.buttonCloseEvent.text")); + this.setTitle("buttonCloseEvent"); + + jLabelEventDate.setBounds(new Rectangle(40, 15, 140, 25)); + jLabelQueries.setBounds(10, 211, 406, 14); + jLabelEvents.setBounds(295, 19, 259, 16); + + this.getContentPane().add(jLabelEventDate, null); + this.getContentPane().add(jLabelQueries); + this.getContentPane().add(jLabelEvents); + jButtonClose.setForeground(Color.WHITE); + jButtonClose.setFont(new Font("Dialog", Font.BOLD, 14)); + jButtonClose.setBackground(SystemColor.controlShadow); + + jButtonClose.setBounds(new Rectangle(40, 428, 130, 30)); + + jButtonClose.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + jButton2_actionPerformed(e); + } + }); + + tableEvents.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() { + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, + boolean hasFocus, int row, int column) { + final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, + column); + + c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE); + + return c; + } + }); + + tableQueries.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() { + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, + boolean hasFocus, int row, int column) { + final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, + column); + + c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE); + + return c; + } + }); + + this.getContentPane().add(jButtonClose, null); + jCalendar1.getDayChooser().getDayPanel().setBackground(Color.WHITE); + + jCalendar1.setBounds(new Rectangle(40, 50, 225, 150)); + + datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate()); + CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth); + lblNoForecasts.setForeground(Color.RED); + lblNoForecasts.setBackground(Color.WHITE); + + lblNoForecasts.setBounds(400, 325, 130, 13); + getContentPane().add(lblNoForecasts); + lblNoForecasts.setVisible(false); + btnCloseQuestion.setForeground(Color.WHITE); + btnCloseQuestion.setFont(new Font("Dialog", Font.BOLD, 14)); + btnCloseQuestion.setBackground(SystemColor.textHighlight); + + btnCloseQuestion.setEnabled(false); + // Code for JCalendar + this.jCalendar1.addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent propertychangeevent) { + + btnCloseQuestion.setEnabled(false); + lblNoForecasts.setVisible(false); + + if (propertychangeevent.getPropertyName().equals("locale")) { + jCalendar1.setLocale((Locale) propertychangeevent.getNewValue()); + } else if (propertychangeevent.getPropertyName().equals("calendar")) { + calendarAnt = (Calendar) propertychangeevent.getOldValue(); + calendarAct = (Calendar) propertychangeevent.getNewValue(); + DateFormat dateformat1 = DateFormat.getDateInstance(1, jCalendar1.getLocale()); +// jCalendar1.setCalendar(calendarAct); + Date firstDay = UtilDate.trim(new Date(jCalendar1.getCalendar().getTime().getTime())); + + int monthAnt = calendarAnt.get(Calendar.MONTH); + int monthAct = calendarAct.get(Calendar.MONTH); + + if (monthAct != monthAnt) { + if (monthAct == monthAnt + 2) { + // Si en JCalendar está 30 de enero y se avanza al mes siguiente, devolvería 2 + // de marzo (se toma como equivalente a 30 de febrero) + // Con este código se dejará como 1 de febrero en el JCalendar + calendarAct.set(Calendar.MONTH, monthAnt + 1); + calendarAct.set(Calendar.DAY_OF_MONTH, 1); + } + + jCalendar1.setCalendar(calendarAct); + + BLFacade facade = LoginGUI.getBusinessLogic(); + + datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate()); + } + + CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth); + + try { + tableModelEvents.setDataVector(null, columnNamesEvents); + tableModelEvents.setColumnCount(3); // another column added to allocate ev objects + + BLFacade facade = LoginGUI.getBusinessLogic(); + + Vector events = facade.getEvents(firstDay); + + if (events.isEmpty()) +// jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("NoEvents") + ": " +// + dateformat1.format(calendarAct.getTime())); + jLabelEvents.setText("NoEvents" + ": " + dateformat1.format(calendarAct.getTime())); + else +// jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("Events") + ": " +// + dateformat1.format(calendarAct.getTime())); + jLabelEvents.setText("Events" + ": " + dateformat1.format(calendarAct.getTime())); + for (domain.Event ev : events) { + if (!ev.getClosed()) { + Vector row = new Vector(); + + System.out.println("Events " + ev); + + row.add(ev.getEventNumber()); + row.add(ev.getDescription()); + row.add(ev); // ev object added in order to obtain it with + // tableModelEvents.getValueAt(i,2) + tableModelEvents.addRow(row); + } + } + tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25); + tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268); + tableEvents.getColumnModel().removeColumn(tableEvents.getColumnModel().getColumn(2)); // not + // shown + tableModelQueries.setRowCount(0); + comboBox.removeAllItems(); + // JTable + } catch (Exception e1) { + + jLabelQueries.setText(e1.getMessage()); + } + + } + } + }); + + this.getContentPane().add(jCalendar1, null); + + scrollPaneEvents.setBounds(new Rectangle(292, 50, 346, 150)); + + scrollPaneQueries.setBounds(new Rectangle(10, 236, 372, 116)); + + tableEvents.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + + btnCloseQuestion.setEnabled(false); + lblNoForecasts.setVisible(false); + + int i = tableEvents.getSelectedRow(); + domain.Event ev = (domain.Event) tableModelEvents.getValueAt(i, 2); // obtain ev object + queries = facade.getOpenedQuestions(ev); + + tableModelQueries.setDataVector(null, columnNamesQueries); + + if (queries.isEmpty()) +// jLabelQueries.setText( +// ResourceBundle.getBundle("Etiquetas").getString("NoQueries") + ": " + ev.getDescription()); + jLabelQueries.setText("NoQueries" + ": " + ev.getDescription()); + else +// jLabelQueries.setText(ResourceBundle.getBundle("Etiquetas").getString("SelectedEvent") + " " +// + ev.getDescription()); + jLabelQueries.setText("SelectedEvent" + " " + ev.getDescription()); + + for (domain.Question q : queries) { + if (q.getResult() == null) { + Vector row = new Vector(); + row.add(q.getQuestionNumber()); + row.add(q.getQuestion()); + tableModelQueries.addRow(row); + } + } + tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25); + tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268); + } + }); + + tableQueries.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + lblNoForecasts.setVisible(false); + + tableQueries.removeAll(); + btnCloseQuestion.setEnabled(true); + tableModelForecasts.setRowCount(0); + int i = tableQueries.getSelectedRow(); + System.out.println(i); + if (queries.isEmpty() == false) { + ques = queries.get(i); + } + +// System.out.println(que.toString()); +// Vector forecasts = que.getForecasts(); +// for (domain.Forecast f : forecasts) { +// Vector row = new Vector(); +// row.add(f.getForecastNumber()); +// row.add(f.getForecast()); +// row.add(f.getFee()); +// tableModelForecasts.addRow(row); +// } + + comboBox.removeAllItems(); + forecasts = ques.getForecasts(); + + if (forecasts.isEmpty()) { + lblNoForecasts.setVisible(true); + btnCloseQuestion.setEnabled(false); + } else { + + for (domain.Forecast f : forecasts) { + forecastsitos.addElement(f.getForecast()); + // System.out.println(f.getQuestion().getQuestion()); + } + comboBox.setModel(forecastsitos); + +// tableForecasts.addMouseListener(new MouseAdapter() { +// @Override +// public void mouseClicked(MouseEvent e) { +// int i = tableForecasts.getSelectedRow(); +// if (forecasts.isEmpty() == false) { +// bet = forecasts.get(i); +// +// } +// System.out.println(bet.toString()); +// } +// }); + } + } + }); + + scrollPaneEvents.setViewportView(tableEvents); + tableModelEvents = new DefaultTableModel(null, columnNamesEvents) { + @Override + public boolean isCellEditable(int row, int column) { + return false; + } + }; + + tableEvents.setModel(tableModelEvents); + tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25); + tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268); + + scrollPaneQueries.setViewportView(tableQueries); + tableModelQueries = new DefaultTableModel(null, columnNamesQueries) { + @Override + public boolean isCellEditable(int row, int column) { + return false; + } + }; + + tableQueries.setModel(tableModelQueries); + tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25); + tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268); + tableModelForecasts = new DefaultTableModel(null, columnNamesForecasts); + + this.getContentPane().add(scrollPaneEvents, null); + this.getContentPane().add(scrollPaneQueries, null); + +// JButton btnCloseBet = new JButton( +// ResourceBundle.getBundle("Etiquetas").getString("CloseEventGUI.btnCloseBet.text")); //$NON-NLS-1$ //$NON-NLS-2$ +// btnCloseBet.addActionListener(new ActionListener() { +// @Override +// public void actionPerformed(ActionEvent e) { +// System.out.println(que.toString()); +// boolean inserted = facade.closeEvent(que.getEvent(), que, bet); +// if (inserted) { +// JOptionPane.showMessageDialog(getContentPane(), "Evento cerrado correctamente"); +// } else { +// JOptionPane.showMessageDialog(getContentPane(), "Error al cerrar evento"); +// } +// } +// }); +// btnCloseBet.setBounds(new Rectangle(100, 275, 130, 30)); +// btnCloseBet.setBounds(508, 406, 130, 30); +// getContentPane().add(btnCloseBet); + +// JLabel lblNewLabel = new JLabel( +// ResourceBundle.getBundle("Etiquetas").getString("CloseBetGUI.lblNewLabel.text")); //$NON-NLS-1$ //$NON-NLS-2$ + JLabel lblNewLabel = new JLabel("CloseBetGUI"); //$NON-NLS-1$ //$NON-NLS-2$ + lblNewLabel.setBounds(410, 252, 144, 14); + getContentPane().add(lblNewLabel); + comboBox.setBackground(Color.WHITE); + + comboBox.setBounds(410, 278, 327, 25); + getContentPane().add(comboBox); + + btnCloseQuestion.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent arg0) { + + System.out.println(".....cerrrando pregunta....."); + int i = comboBox.getSelectedIndex(); + int j = tableQueries.getSelectedRow(); + winnerF = forecasts.get(i); + System.out.println("La pregunta <<" + queries.get(j).getQuestion() + ">> con respuesta <<" + + winnerF.getForecast() + ">>" + " ha sido cerrado con éxito"); +// boolean boleanisa = facade.definirResultados(ques.getEvent(), ques, winnerF); + facade.definirResultados(ques.getEvent(), ques, winnerF); + JOptionPane.showMessageDialog(getContentPane(), "La pregunta <<" + queries.get(j).getQuestion() + ">>" + + " se ha cerrado con éxito con la respuesta <<" + winnerF.getForecast() + ">>"); +// queries.remove(j); + comboBox.removeAllItems(); + tableModelQueries.removeRow(j); + queries.remove(j); + + System.out.println("El evento esta cerrado: " + ques.getEvent().getClosed()); + + boolean estadoEvento = facade.getEstadoEvento(ques.getEvent()); + if (estadoEvento) { + JOptionPane.showMessageDialog(getContentPane(), + "El evento <<" + ques.getEvent().getDescription() + ">> se ha cerrado con éxito"); + System.out.println("El evento esta cerrado: " + estadoEvento); + + btnCloseQuestion.setEnabled(false); + + } + +// if (ques.getEvent().getClosed()) { +// JOptionPane.showMessageDialog(getContentPane(), +// "El evento <<" + ques.getEvent().getDescription() + ">> se ha cerrado con éxito"); +// System.out.println("miau"); +// btnCloseQuestion.setEnabled(false); +// } + } + }); + btnCloseQuestion.setBounds(364, 428, 166, 32); + getContentPane().add(btnCloseQuestion); + + } + + private void jButton2_actionPerformed(ActionEvent e) { + +// if (controlPreguntas) { +// JOptionPane.showMessageDialog(getContentPane(), +// "Te avisamos de que el evento no ha sido cerrado completamente"); +// } + + Vector eventosMedioCerrados = facade.getEventosMedioCerrados(); + + if (eventosMedioCerrados.isEmpty() == false) { + for (Event ee : eventosMedioCerrados) { + JOptionPane.showMessageDialog(getContentPane(), + "Te avisamos de que el evento " + ee.getDescription() + " no ha sido cerrado completamente"); + } + + } + + eventosMedioCerrados.clear(); + + Frame gui = new MainAdminGUI((AdminUser) userlog); + gui.setAlwaysOnTop(true); + gui.setVisible(true); + dispose(); + } +}