X-Git-Url: https://xp-dev.com/git/ISBets21MAUBRY/blobdiff_plain/cbae1464e51d90bc80afc97083afd6462fd3c54f..3cf4057e97448d401b49261033b8ab566105944e:/eclipse-workspace/ISBets21MAUBRY/src/main/java/gui/FindQuestionsGUI.java diff --git a/eclipse-workspace/ISBets21MAUBRY/src/main/java/gui/FindQuestionsGUI.java b/eclipse-workspace/ISBets21MAUBRY/src/main/java/gui/FindQuestionsGUI.java new file mode 100644 index 0000000..4804cf2 --- /dev/null +++ b/eclipse-workspace/ISBets21MAUBRY/src/main/java/gui/FindQuestionsGUI.java @@ -0,0 +1,383 @@ +package gui; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +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.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +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.Forecast; +import domain.Question; + +public class FindQuestionsGUI 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 JScrollPane scrollPaneForecasts = new JScrollPane(); + + private Vector datesWithEventsCurrentMonth = new Vector(); + + private JTable tableEvents = new JTable(); + private JTable tableQueries = new JTable(); + private JTable tableForecasts = new JTable(); + + private DefaultTableModel tableModelEvents; + private DefaultTableModel tableModelQueries; + private DefaultTableModel tableModelForecasts; + + private BLFacade facade = LoginGUI.getBusinessLogic(); + +// 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 que; + private Forecast forecast; + private Vector queries; + private Vector forecasts; + + private AdminUser userlog = null; + + public FindQuestionsGUI(AdminUser au) { + getContentPane().setBackground(Color.WHITE); + + userlog = au; + + try { + jbInit(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void jbInit() throws Exception { + + this.getContentPane().setLayout(null); + this.setSize(new Dimension(820, 520)); +// this.setTitle(ResourceBundle.getBundle("Etiquetas").getString("MainAdminGUI.jButtonQueryQuestions.text")); + this.setTitle("QueryQuestions"); + + jLabelEventDate.setBounds(new Rectangle(40, 15, 140, 25)); + jLabelQueries.setBounds(40, 248, 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(332, 419, 130, 30)); + + jButtonClose.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + jButton2_actionPerformed(e); + } + }); + + 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); + + // Code for JCalendar + this.jCalendar1.addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent propertychangeevent) { + + 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); + + datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate()); + } + + CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth); + + try { + tableModelEvents.setDataVector(null, columnNamesEvents); + tableModelEvents.setColumnCount(3); // another column added to allocate ev objects + + 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); + tableModelForecasts.setRowCount(0);// in + // 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(40, 274, 406, 116)); + scrollPaneForecasts.setBounds(new Rectangle(498, 274, 231, 116)); + + tableEvents.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + tableModelForecasts.setRowCount(0); + int i = tableEvents.getSelectedRow(); + domain.Event ev = (domain.Event) tableModelEvents.getValueAt(i, 2); // obtain ev object + queries = ev.getQuestions(); + + 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()); // aquiiii + jLabelQueries.setText("SelectedEvent" + " " + ev.getDescription()); // aquiiii + + for (domain.Question q : queries) { + 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.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; + } + }); + + 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; + } + }); + + tableForecasts.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.addMouseListener(new MouseAdapter() { + + @Override + public void mouseClicked(MouseEvent e) { + tableModelForecasts.setRowCount(0); + int i = tableQueries.getSelectedRow(); + que = queries.get(i); + + forecasts = que.getForecasts(); + System.out.println("TAMAÑO FORECASTS: " + forecasts.size()); + for (domain.Forecast f : forecasts) { + Vector row = new Vector(); + row.add(f.getForecastNumber()); + row.add(f.getForecast()); + row.add(f.getFee()); + tableModelForecasts.addRow(row); + } + System.out.println(tableForecasts.getRowCount()); + } + }); + + tableForecasts.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + int i = tableForecasts.getSelectedRow(); + forecast = forecasts.get(i); + + System.out.println(forecast.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); + + scrollPaneForecasts.setViewportView(tableForecasts); + tableModelForecasts = new DefaultTableModel(null, columnNamesForecasts) { + @Override + public boolean isCellEditable(int row, int column) { + return false; + } + }; + + tableForecasts.setModel(tableModelForecasts); + tableForecasts.getColumnModel().getColumn(0).setPreferredWidth(25); + tableForecasts.getColumnModel().getColumn(1).setPreferredWidth(100); + tableForecasts.getColumnModel().getColumn(2).setPreferredWidth(25); + + this.getContentPane().add(scrollPaneEvents, null); + this.getContentPane().add(scrollPaneQueries, null); + this.getContentPane().add(scrollPaneForecasts); + + } + + private void jButton2_actionPerformed(ActionEvent e) { + JFrame a = new MainAdminGUI(userlog); + a.setAlwaysOnTop(true); + a.setVisible(true); + dispose(); + } + +}