X-Git-Url: https://xp-dev.com/git/ISBets21MAUBRY/blobdiff_plain/cbae1464e51d90bc80afc97083afd6462fd3c54f..3cf4057e97448d401b49261033b8ab566105944e:/eclipse-workspace/ISBets21MAUBRY/src/main/java/gui/CreateForecastGUI.java diff --git a/eclipse-workspace/ISBets21MAUBRY/src/main/java/gui/CreateForecastGUI.java b/eclipse-workspace/ISBets21MAUBRY/src/main/java/gui/CreateForecastGUI.java new file mode 100644 index 0000000..a9eeab4 --- /dev/null +++ b/eclipse-workspace/ISBets21MAUBRY/src/main/java/gui/CreateForecastGUI.java @@ -0,0 +1,413 @@ +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.ImageIcon; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextField; +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.Question; + +public class CreateForecastGUI 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 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(ResourceBundle.getBundle("Etiquetas").getString("Close")); + 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 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[] columnNamesEvents = new String[] { "EventN", "Event", + + }; + private String[] columnNamesQueries = new String[] { "QueryN", "Query" + + }; + private JTextField textForecast; + private Question que; + private static BLFacade facade = LoginGUI.getBusinessLogic(); + private JTextField textFee; + private Vector queries; + private AdminUser userlog = null; + + private JButton btnCreateForecast = new JButton(); + private final JLabel lblNewLabel_1 = new JLabel(""); //$NON-NLS-1$ //$NON-NLS-2$ + private final JLabel lblNewLabel_2 = new JLabel("Cuota mínima 1"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static void setBusinessLogic(BLFacade pfacade) { + facade = pfacade; + } + + public static BLFacade getBusinessLogic() { + return facade; + } + + public CreateForecastGUI(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(700, 550)); +// this.setTitle(ResourceBundle.getBundle("Etiquetas").getString("MainAdminGUI.jButtonCreateForecast.text")); + this.setTitle("CreateForecast"); + + jLabelEventDate.setBounds(new Rectangle(40, 15, 140, 25)); + jLabelQueries.setBounds(138, 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.setBackground(SystemColor.controlShadow); + jButtonClose.setFont(new Font("Dialog", Font.BOLD, 14)); + + jButtonClose.setBounds(new Rectangle(40, 449, 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); + + 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 + // 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(138, 236, 406, 116)); + tableEvents.setBackground(Color.WHITE); + + tableEvents.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + 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()); + jLabelQueries.setText("SelectedEvent" + " " + ev.getDescription()); + + 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.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + int i = tableQueries.getSelectedRow(); + que = queries.get(i); + btnCreateForecast.setEnabled(true); + } + }); + + 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; + } + }; + + 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; + } + }); + + tableQueries.setModel(tableModelQueries); + tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25); + tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268); + + this.getContentPane().add(scrollPaneEvents, null); + this.getContentPane().add(scrollPaneQueries, null); + + textForecast = new JTextField(); + textForecast.setBounds(new Rectangle(100, 211, 429, 20)); + textForecast.setForeground(Color.GRAY); + textForecast.setFont(new Font("Arial", Font.PLAIN, 16)); + textForecast.setBounds(223, 363, 225, 25); + getContentPane().add(textForecast); + + JLabel lblForecast = new JLabel("Forecast:"); + lblForecast.setBounds(new Rectangle(25, 211, 75, 20)); + lblForecast.setBounds(148, 364, 75, 20); + getContentPane().add(lblForecast); + btnCreateForecast.setForeground(Color.WHITE); + btnCreateForecast.setFont(new Font("Dialog", Font.BOLD, 14)); + btnCreateForecast.setBackground(SystemColor.textHighlight); + + btnCreateForecast.setEnabled(false); +// btnCreateForecast +// .setText(ResourceBundle.getBundle("Etiquetas").getString("MainAdminGUI.jButtonCreateForecast.text")); + btnCreateForecast.setText("CreateForecast"); + + btnCreateForecast.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + System.out.println(que.toString()); + if (textFee.getText().equals("")) { + + JOptionPane.showMessageDialog(getContentPane(), "La cuota no puede estar vacía", "Error", + JOptionPane.ERROR_MESSAGE); + + } else { + float fee = Float.parseFloat(textFee.getText()); + + String f = textForecast.getText(); + + if (f.equals("")) { + JOptionPane.showMessageDialog(getContentPane(), "El pronóstico no puede estar vacío", "Error", + JOptionPane.ERROR_MESSAGE); + } else if (fee < 1f) { + JOptionPane.showMessageDialog(getContentPane(), "La cuota no puede ser inferior a 1", "Error", + JOptionPane.ERROR_MESSAGE); + } else { + boolean inserted = facade.insertForecast(que, f, fee); + if (inserted) { + JOptionPane.showMessageDialog(getContentPane(), "Pronóstico añadido correctamente"); + textForecast.setText(""); + textFee.setText(""); + } else { + JOptionPane.showMessageDialog(getContentPane(), "Pronóstico ya existente"); + textForecast.setText(""); + textFee.setText(""); + + } + } + } + } + }); + btnCreateForecast.setBounds(new Rectangle(100, 275, 130, 30)); + btnCreateForecast.setBounds(313, 449, 169, 30); + getContentPane().add(btnCreateForecast); + + JLabel lblNewLabel = new JLabel("Cuota:"); + lblNewLabel.setBounds(466, 369, 46, 14); + getContentPane().add(lblNewLabel); + + textFee = new JTextField(); + textFee.setBounds(new Rectangle(100, 211, 429, 20)); + textFee.setForeground(Color.GRAY); + textFee.setFont(new Font("Arial", Font.PLAIN, 16)); + textFee.setBounds(516, 363, 97, 25); + getContentPane().add(textFee); + lblNewLabel_1.setIcon(new ImageIcon("C:\\Users\\Bryan\\Desktop\\Workspace\\ISBets21BRYMAUJONUNA\\info.png")); + lblNewLabel_1.setBounds(560, 322, 30, 30); + + getContentPane().add(lblNewLabel_1); + lblNewLabel_2.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 10)); + lblNewLabel_2.setForeground(Color.GRAY); + lblNewLabel_2.setBounds(586, 331, 90, 13); + + getContentPane().add(lblNewLabel_2); + + } + + private void jButton2_actionPerformed(ActionEvent e) { + Frame gui = new MainAdminGUI(userlog); + gui.setAlwaysOnTop(true); + gui.setVisible(true); + this.setVisible(false); + } +}