Iteración 3(Versión sin idiomas)
[ISBets21MAUBRY] / eclipse-workspace / ISBets21MAUBRY / src / main / java / gui / CreateForecastGUI.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.ImageIcon;
23 import javax.swing.JButton;
24 import javax.swing.JFrame;
25 import javax.swing.JLabel;
26 import javax.swing.JOptionPane;
27 import javax.swing.JScrollPane;
28 import javax.swing.JTable;
29 import javax.swing.JTextField;
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.Question;
39
40 public class CreateForecastGUI extends JFrame {
41         private static final long serialVersionUID = 1L;
42
43 //      private final JLabel jLabelEventDate = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("EventDate"));
44 //      private final JLabel jLabelQueries = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Queries"));
45 //      private final JLabel jLabelEvents = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Events"));
46         private final JLabel jLabelEventDate = new JLabel("EventDate");
47         private final JLabel jLabelQueries = new JLabel("Queries");
48         private final JLabel jLabelEvents = new JLabel("Events");
49
50 //      private JButton jButtonClose = new JButton(ResourceBundle.getBundle("Etiquetas").getString("Close"));
51         private JButton jButtonClose = new JButton("Close");
52
53         // Code for JCalendar
54         private JCalendar jCalendar1 = new JCalendar();
55         private Calendar calendarAnt = null;
56         private Calendar calendarAct = null;
57         private JScrollPane scrollPaneEvents = new JScrollPane();
58         private JScrollPane scrollPaneQueries = new JScrollPane();
59
60         private Vector<Date> datesWithEventsCurrentMonth = new Vector<Date>();
61
62         private JTable tableEvents = new JTable();
63         private JTable tableQueries = new JTable();
64
65         private DefaultTableModel tableModelEvents;
66         private DefaultTableModel tableModelQueries;
67
68 //      private String[] columnNamesEvents = new String[] { ResourceBundle.getBundle("Etiquetas").getString("EventN"),
69 //                      ResourceBundle.getBundle("Etiquetas").getString("Event"),
70 //
71 //      };
72 //      private String[] columnNamesQueries = new String[] { ResourceBundle.getBundle("Etiquetas").getString("QueryN"),
73 //                      ResourceBundle.getBundle("Etiquetas").getString("Query")
74 //
75 //      };
76
77         private String[] columnNamesEvents = new String[] { "EventN", "Event",
78
79         };
80         private String[] columnNamesQueries = new String[] { "QueryN", "Query"
81
82         };
83         private JTextField textForecast;
84         private Question que;
85         private static BLFacade facade = LoginGUI.getBusinessLogic();
86         private JTextField textFee;
87         private Vector<Question> queries;
88         private AdminUser userlog = null;
89
90         private JButton btnCreateForecast = new JButton();
91         private final JLabel lblNewLabel_1 = new JLabel(""); //$NON-NLS-1$ //$NON-NLS-2$
92         private final JLabel lblNewLabel_2 = new JLabel("Cuota mínima 1"); //$NON-NLS-1$ //$NON-NLS-2$
93
94         public static void setBusinessLogic(BLFacade pfacade) {
95                 facade = pfacade;
96         }
97
98         public static BLFacade getBusinessLogic() {
99                 return facade;
100         }
101
102         public CreateForecastGUI(AdminUser au) {
103                 getContentPane().setBackground(Color.WHITE);
104                 userlog = au;
105
106                 try {
107                         jbInit();
108                 } catch (Exception e) {
109                         e.printStackTrace();
110                 }
111         }
112
113         private void jbInit() throws Exception {
114
115                 this.getContentPane().setLayout(null);
116                 this.setSize(new Dimension(700, 550));
117 //              this.setTitle(ResourceBundle.getBundle("Etiquetas").getString("MainAdminGUI.jButtonCreateForecast.text"));
118                 this.setTitle("CreateForecast");
119
120                 jLabelEventDate.setBounds(new Rectangle(40, 15, 140, 25));
121                 jLabelQueries.setBounds(138, 211, 406, 14);
122                 jLabelEvents.setBounds(295, 19, 259, 16);
123
124                 this.getContentPane().add(jLabelEventDate, null);
125                 this.getContentPane().add(jLabelQueries);
126                 this.getContentPane().add(jLabelEvents);
127                 jButtonClose.setForeground(Color.WHITE);
128                 jButtonClose.setBackground(SystemColor.controlShadow);
129                 jButtonClose.setFont(new Font("Dialog", Font.BOLD, 14));
130
131                 jButtonClose.setBounds(new Rectangle(40, 449, 130, 30));
132
133                 jButtonClose.addActionListener(new ActionListener() {
134                         @Override
135                         public void actionPerformed(ActionEvent e) {
136                                 jButton2_actionPerformed(e);
137                         }
138                 });
139
140                 this.getContentPane().add(jButtonClose, null);
141                 jCalendar1.getDayChooser().getDayPanel().setBackground(Color.WHITE);
142
143                 jCalendar1.setBounds(new Rectangle(40, 50, 225, 150));
144
145                 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
146                 CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
147
148                 // Code for JCalendar
149                 this.jCalendar1.addPropertyChangeListener(new PropertyChangeListener() {
150                         @Override
151                         public void propertyChange(PropertyChangeEvent propertychangeevent) {
152
153                                 if (propertychangeevent.getPropertyName().equals("locale")) {
154                                         jCalendar1.setLocale((Locale) propertychangeevent.getNewValue());
155                                 } else if (propertychangeevent.getPropertyName().equals("calendar")) {
156                                         calendarAnt = (Calendar) propertychangeevent.getOldValue();
157                                         calendarAct = (Calendar) propertychangeevent.getNewValue();
158                                         DateFormat dateformat1 = DateFormat.getDateInstance(1, jCalendar1.getLocale());
159 //                                      jCalendar1.setCalendar(calendarAct);
160                                         Date firstDay = UtilDate.trim(new Date(jCalendar1.getCalendar().getTime().getTime()));
161
162                                         int monthAnt = calendarAnt.get(Calendar.MONTH);
163                                         int monthAct = calendarAct.get(Calendar.MONTH);
164
165                                         if (monthAct != monthAnt) {
166                                                 if (monthAct == monthAnt + 2) {
167                                                         // Si en JCalendar está 30 de enero y se avanza al mes siguiente, devolvería 2
168                                                         // de marzo (se toma como equivalente a 30 de febrero)
169                                                         // Con este código se dejará como 1 de febrero en el JCalendar
170                                                         calendarAct.set(Calendar.MONTH, monthAnt + 1);
171                                                         calendarAct.set(Calendar.DAY_OF_MONTH, 1);
172                                                 }
173
174                                                 jCalendar1.setCalendar(calendarAct);
175
176                                                 BLFacade facade = LoginGUI.getBusinessLogic();
177
178                                                 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
179                                         }
180
181                                         CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
182
183                                         try {
184                                                 tableModelEvents.setDataVector(null, columnNamesEvents);
185                                                 tableModelEvents.setColumnCount(3); // another column added to allocate ev objects
186
187                                                 BLFacade facade = LoginGUI.getBusinessLogic();
188
189                                                 Vector<domain.Event> events = facade.getEvents(firstDay);
190
191                                                 if (events.isEmpty())
192 //                                                      jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("NoEvents") + ": "
193 //                                                                      + dateformat1.format(calendarAct.getTime()));
194                                                         jLabelEvents.setText("NoEvents" + ": " + dateformat1.format(calendarAct.getTime()));
195                                                 else
196 //                                                      jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("Events") + ": "
197 //                                                                      + dateformat1.format(calendarAct.getTime()));
198                                                         jLabelEvents.setText("Events" + ": " + dateformat1.format(calendarAct.getTime()));
199                                                 for (domain.Event ev : events) {
200                                                         if (!ev.getClosed()) {
201                                                                 Vector<Object> row = new Vector<Object>();
202
203                                                                 System.out.println("Events " + ev);
204
205                                                                 row.add(ev.getEventNumber());
206                                                                 row.add(ev.getDescription());
207                                                                 row.add(ev); // ev object added in order to obtain it with
208                                                                                                 // tableModelEvents.getValueAt(i,2)
209                                                                 tableModelEvents.addRow(row);
210                                                         }
211                                                 }
212                                                 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
213                                                 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
214                                                 tableEvents.getColumnModel().removeColumn(tableEvents.getColumnModel().getColumn(2)); // not
215                                                                                                                                                                                                                                 // shown
216                                                                                                                                                                                                                                 // in
217                                                                                                                                                                                                                                 // JTable
218                                         } catch (Exception e1) {
219
220                                                 jLabelQueries.setText(e1.getMessage());
221                                         }
222
223                                 }
224                         }
225                 });
226
227                 this.getContentPane().add(jCalendar1, null);
228
229                 scrollPaneEvents.setBounds(new Rectangle(292, 50, 346, 150));
230
231                 scrollPaneQueries.setBounds(new Rectangle(138, 236, 406, 116));
232                 tableEvents.setBackground(Color.WHITE);
233
234                 tableEvents.addMouseListener(new MouseAdapter() {
235                         @Override
236                         public void mouseClicked(MouseEvent e) {
237                                 int i = tableEvents.getSelectedRow();
238                                 domain.Event ev = (domain.Event) tableModelEvents.getValueAt(i, 2); // obtain ev object
239                                 queries = ev.getQuestions();
240
241                                 tableModelQueries.setDataVector(null, columnNamesQueries);
242
243                                 if (queries.isEmpty())
244 //                                      jLabelQueries.setText(
245 //                                                      ResourceBundle.getBundle("Etiquetas").getString("NoQueries") + ": " + ev.getDescription());
246                                         jLabelQueries.setText("NoQueries" + ": " + ev.getDescription());
247                                 else
248 //                                      jLabelQueries.setText(ResourceBundle.getBundle("Etiquetas").getString("SelectedEvent") + " "
249 //                                                      + ev.getDescription());
250                                         jLabelQueries.setText("SelectedEvent" + " " + ev.getDescription());
251
252                                 for (domain.Question q : queries) {
253                                         Vector<Object> row = new Vector<Object>();
254                                         row.add(q.getQuestionNumber());
255                                         row.add(q.getQuestion());
256                                         tableModelQueries.addRow(row);
257                                 }
258
259                                 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
260                                 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
261                         }
262                 });
263                 tableQueries.addMouseListener(new MouseAdapter() {
264                         @Override
265                         public void mouseClicked(MouseEvent e) {
266                                 int i = tableQueries.getSelectedRow();
267                                 que = queries.get(i);
268                                 btnCreateForecast.setEnabled(true);
269                         }
270                 });
271
272                 scrollPaneEvents.setViewportView(tableEvents);
273                 tableModelEvents = new DefaultTableModel(null, columnNamesEvents) {
274                         @Override
275                         public boolean isCellEditable(int row, int column) {
276                                 return false;
277                         }
278                 };
279
280                 tableEvents.setModel(tableModelEvents);
281                 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
282                 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
283
284                 scrollPaneQueries.setViewportView(tableQueries);
285                 tableModelQueries = new DefaultTableModel(null, columnNamesQueries) {
286                         @Override
287                         public boolean isCellEditable(int row, int column) {
288                                 return false;
289                         }
290                 };
291
292                 tableEvents.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
293                         @Override
294                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
295                                         boolean hasFocus, int row, int column) {
296                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
297                                                 column);
298
299                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
300
301                                 return c;
302                         }
303                 });
304
305                 tableQueries.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
306                         @Override
307                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
308                                         boolean hasFocus, int row, int column) {
309                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
310                                                 column);
311
312                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
313
314                                 return c;
315                         }
316                 });
317
318                 tableQueries.setModel(tableModelQueries);
319                 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
320                 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
321
322                 this.getContentPane().add(scrollPaneEvents, null);
323                 this.getContentPane().add(scrollPaneQueries, null);
324
325                 textForecast = new JTextField();
326                 textForecast.setBounds(new Rectangle(100, 211, 429, 20));
327                 textForecast.setForeground(Color.GRAY);
328                 textForecast.setFont(new Font("Arial", Font.PLAIN, 16));
329                 textForecast.setBounds(223, 363, 225, 25);
330                 getContentPane().add(textForecast);
331
332                 JLabel lblForecast = new JLabel("Forecast:");
333                 lblForecast.setBounds(new Rectangle(25, 211, 75, 20));
334                 lblForecast.setBounds(148, 364, 75, 20);
335                 getContentPane().add(lblForecast);
336                 btnCreateForecast.setForeground(Color.WHITE);
337                 btnCreateForecast.setFont(new Font("Dialog", Font.BOLD, 14));
338                 btnCreateForecast.setBackground(SystemColor.textHighlight);
339
340                 btnCreateForecast.setEnabled(false);
341 //              btnCreateForecast
342 //                              .setText(ResourceBundle.getBundle("Etiquetas").getString("MainAdminGUI.jButtonCreateForecast.text"));
343                 btnCreateForecast.setText("CreateForecast");
344
345                 btnCreateForecast.addActionListener(new ActionListener() {
346                         @Override
347                         public void actionPerformed(ActionEvent e) {
348                                 System.out.println(que.toString());
349                                 if (textFee.getText().equals("")) {
350
351                                         JOptionPane.showMessageDialog(getContentPane(), "La cuota no puede estar vacía", "Error",
352                                                         JOptionPane.ERROR_MESSAGE);
353
354                                 } else {
355                                         float fee = Float.parseFloat(textFee.getText());
356
357                                         String f = textForecast.getText();
358
359                                         if (f.equals("")) {
360                                                 JOptionPane.showMessageDialog(getContentPane(), "El pronóstico no puede estar vacío", "Error",
361                                                                 JOptionPane.ERROR_MESSAGE);
362                                         } else if (fee < 1f) {
363                                                 JOptionPane.showMessageDialog(getContentPane(), "La cuota no puede ser inferior a 1", "Error",
364                                                                 JOptionPane.ERROR_MESSAGE);
365                                         } else {
366                                                 boolean inserted = facade.insertForecast(que, f, fee);
367                                                 if (inserted) {
368                                                         JOptionPane.showMessageDialog(getContentPane(), "Pronóstico añadido correctamente");
369                                                         textForecast.setText("");
370                                                         textFee.setText("");
371                                                 } else {
372                                                         JOptionPane.showMessageDialog(getContentPane(), "Pronóstico ya existente");
373                                                         textForecast.setText("");
374                                                         textFee.setText("");
375
376                                                 }
377                                         }
378                                 }
379                         }
380                 });
381                 btnCreateForecast.setBounds(new Rectangle(100, 275, 130, 30));
382                 btnCreateForecast.setBounds(313, 449, 169, 30);
383                 getContentPane().add(btnCreateForecast);
384
385                 JLabel lblNewLabel = new JLabel("Cuota:");
386                 lblNewLabel.setBounds(466, 369, 46, 14);
387                 getContentPane().add(lblNewLabel);
388
389                 textFee = new JTextField();
390                 textFee.setBounds(new Rectangle(100, 211, 429, 20));
391                 textFee.setForeground(Color.GRAY);
392                 textFee.setFont(new Font("Arial", Font.PLAIN, 16));
393                 textFee.setBounds(516, 363, 97, 25);
394                 getContentPane().add(textFee);
395                 lblNewLabel_1.setIcon(new ImageIcon("C:\\Users\\Bryan\\Desktop\\Workspace\\ISBets21BRYMAUJONUNA\\info.png"));
396                 lblNewLabel_1.setBounds(560, 322, 30, 30);
397
398                 getContentPane().add(lblNewLabel_1);
399                 lblNewLabel_2.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 10));
400                 lblNewLabel_2.setForeground(Color.GRAY);
401                 lblNewLabel_2.setBounds(586, 331, 90, 13);
402
403                 getContentPane().add(lblNewLabel_2);
404
405         }
406
407         private void jButton2_actionPerformed(ActionEvent e) {
408                 Frame gui = new MainAdminGUI(userlog);
409                 gui.setAlwaysOnTop(true);
410                 gui.setVisible(true);
411                 this.setVisible(false);
412         }
413 }