Iteración 3(Versión sin idiomas)
[ISBets21MAUBRY] / eclipse-workspace / ISBets21MAUBRY / src / main / java / gui / FindQuestionsInvitadoGUI.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.Rectangle;
8 import java.awt.SystemColor;
9 import java.awt.event.ActionEvent;
10 import java.awt.event.ActionListener;
11 import java.awt.event.MouseAdapter;
12 import java.awt.event.MouseEvent;
13 import java.beans.PropertyChangeEvent;
14 import java.beans.PropertyChangeListener;
15 import java.text.DateFormat;
16 import java.util.Calendar;
17 import java.util.Date;
18 import java.util.Locale;
19 import java.util.ResourceBundle;
20 import java.util.Vector;
21
22 import javax.swing.JButton;
23 import javax.swing.JFrame;
24 import javax.swing.JLabel;
25 import javax.swing.JScrollPane;
26 import javax.swing.JTable;
27 import javax.swing.table.DefaultTableCellRenderer;
28 import javax.swing.table.DefaultTableModel;
29
30 import com.toedter.calendar.JCalendar;
31
32 import businessLogic.BLFacade;
33 import configuration.UtilDate;
34 import domain.AdminUser;
35 import domain.Forecast;
36 import domain.Question;
37
38 public class FindQuestionsInvitadoGUI extends JFrame {
39         private static final long serialVersionUID = 1L;
40
41 //      private final JLabel jLabelEventDate = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("EventDate"));
42 //      private final JLabel jLabelQueries = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Queries"));
43 //      private final JLabel jLabelEvents = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Events"));
44 //
45 //      private JButton jButtonClose = new JButton(ResourceBundle.getBundle("Etiquetas").getString("Close"));
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("Close");
51
52         // Code for JCalendar
53         private JCalendar jCalendar1 = new JCalendar();
54         private Calendar calendarAnt = null;
55         private Calendar calendarAct = null;
56         private JScrollPane scrollPaneEvents = new JScrollPane();
57         private JScrollPane scrollPaneQueries = new JScrollPane();
58         private JScrollPane scrollPaneForecasts = 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         private JTable tableForecasts = new JTable();
65
66         private DefaultTableModel tableModelEvents;
67         private DefaultTableModel tableModelQueries;
68         private DefaultTableModel tableModelForecasts;
69
70         private BLFacade facade = LoginGUI.getBusinessLogic();
71
72 //      private String[] columnNamesEvents = new String[] { ResourceBundle.getBundle("Etiquetas").getString("EventN"),
73 //                      ResourceBundle.getBundle("Etiquetas").getString("Event"),
74 //
75 //      };
76 //      private String[] columnNamesQueries = new String[] { ResourceBundle.getBundle("Etiquetas").getString("QueryN"),
77 //                      ResourceBundle.getBundle("Etiquetas").getString("Query")
78 //
79 //      };
80 //
81 //      private String[] columnNamesForecasts = new String[] { ResourceBundle.getBundle("Etiquetas").getString("ForecastN"),
82 //                      ResourceBundle.getBundle("Etiquetas").getString("Forecast"), "Fee"
83 //
84 //      };
85         private String[] columnNamesEvents = new String[] { "EventN", "Event",
86
87         };
88         private String[] columnNamesQueries = new String[] { "QueryN", "Query"
89
90         };
91
92         private String[] columnNamesForecasts = new String[] { "ForecastN", "Forecast", "Fee"
93
94         };
95
96         private Question que;
97         private Forecast forecast;
98         private Vector<Question> queries;
99         private Vector<Forecast> forecasts;
100
101         private AdminUser userlog = null;
102
103         public FindQuestionsInvitadoGUI() {
104                 getContentPane().setBackground(Color.WHITE);
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(820, 520));
117 //              this.setTitle(ResourceBundle.getBundle("Etiquetas").getString("MainAdminGUI.jButtonQueryQuestions.text"));
118                 this.setTitle("QueryQuestions");
119
120                 jLabelEventDate.setBounds(new Rectangle(40, 15, 140, 25));
121                 jLabelQueries.setBounds(40, 248, 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.setFont(new Font("Dialog", Font.BOLD, 14));
129                 jButtonClose.setBackground(SystemColor.controlShadow);
130
131                 jButtonClose.setBounds(new Rectangle(332, 419, 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                                                 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
177                                         }
178
179                                         CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
180
181                                         try {
182                                                 tableModelEvents.setDataVector(null, columnNamesEvents);
183                                                 tableModelEvents.setColumnCount(3); // another column added to allocate ev objects
184
185                                                 Vector<domain.Event> events = facade.getEvents(firstDay);
186
187                                                 if (events.isEmpty())
188 //                                                      jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("NoEvents") + ": "
189 //                                                                      + dateformat1.format(calendarAct.getTime()));
190                                                         jLabelEvents.setText("NoEvents" + ": " + dateformat1.format(calendarAct.getTime()));
191                                                 else
192 //                                                      jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("Events") + ": "
193 //                                                                      + dateformat1.format(calendarAct.getTime()));
194                                                         jLabelEvents.setText("Events" + ": " + dateformat1.format(calendarAct.getTime()));
195                                                 for (domain.Event ev : events) {
196                                                         if (!ev.getClosed()) {
197                                                                 Vector<Object> row = new Vector<Object>();
198
199                                                                 System.out.println("Events " + ev);
200
201                                                                 row.add(ev.getEventNumber());
202                                                                 row.add(ev.getDescription());
203                                                                 row.add(ev); // ev object added in order to obtain it with
204                                                                                                 // tableModelEvents.getValueAt(i,2)
205                                                                 tableModelEvents.addRow(row);
206                                                         }
207                                                 }
208                                                 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
209                                                 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
210                                                 tableEvents.getColumnModel().removeColumn(tableEvents.getColumnModel().getColumn(2)); // not
211                                                                                                                                                                                                                                 // shown
212                                                 tableModelQueries.setRowCount(0);
213                                                 tableModelForecasts.setRowCount(0);// in
214                                                                                                                         // JTable
215                                         } catch (Exception e1) {
216
217                                                 jLabelQueries.setText(e1.getMessage());
218                                         }
219
220                                 }
221                         }
222                 });
223
224                 this.getContentPane().add(jCalendar1, null);
225
226                 scrollPaneEvents.setBounds(new Rectangle(292, 50, 346, 150));
227                 scrollPaneQueries.setBounds(new Rectangle(40, 274, 406, 116));
228                 scrollPaneForecasts.setBounds(new Rectangle(498, 274, 231, 116));
229
230                 tableEvents.addMouseListener(new MouseAdapter() {
231                         @Override
232                         public void mouseClicked(MouseEvent e) {
233                                 tableModelForecasts.setRowCount(0);
234                                 int i = tableEvents.getSelectedRow();
235                                 domain.Event ev = (domain.Event) tableModelEvents.getValueAt(i, 2); // obtain ev object
236                                 queries = ev.getQuestions();
237
238                                 tableModelQueries.setDataVector(null, columnNamesQueries);
239
240                                 if (queries.isEmpty())
241 //                                      jLabelQueries.setText(
242 //                                                      ResourceBundle.getBundle("Etiquetas").getString("NoQueries") + ": " + ev.getDescription());
243                                         jLabelQueries.setText("NoQueries" + ": " + ev.getDescription());
244                                 else
245 //                                      jLabelQueries.setText(ResourceBundle.getBundle("Etiquetas").getString("SelectedEvent") + " "
246 //                                                      + ev.getDescription());
247                                         jLabelQueries.setText("SelectedEvent" + " "
248                                                         + ev.getDescription());
249
250                                 for (domain.Question q : queries) {
251                                         Vector<Object> row = new Vector<Object>();
252
253                                         row.add(q.getQuestionNumber());
254                                         row.add(q.getQuestion());
255                                         tableModelQueries.addRow(row);
256                                 }
257                                 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
258                                 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
259                         }
260                 });
261
262                 tableQueries.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
263                         @Override
264                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
265                                         boolean hasFocus, int row, int column) {
266                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
267                                                 column);
268
269                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
270
271                                 return c;
272                         }
273                 });
274
275                 tableEvents.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
276                         @Override
277                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
278                                         boolean hasFocus, int row, int column) {
279                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
280                                                 column);
281
282                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
283
284                                 return c;
285                         }
286                 });
287
288                 tableForecasts.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
289                         @Override
290                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
291                                         boolean hasFocus, int row, int column) {
292                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
293                                                 column);
294
295                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
296
297                                 return c;
298                         }
299                 });
300
301                 tableQueries.addMouseListener(new MouseAdapter() {
302
303                         @Override
304                         public void mouseClicked(MouseEvent e) {
305                                 tableModelForecasts.setRowCount(0);
306                                 int i = tableQueries.getSelectedRow();
307                                 que = queries.get(i);
308
309                                 forecasts = que.getForecasts();
310                                 System.out.println("TAMAÑO FORECASTS: " + forecasts.size());
311                                 for (domain.Forecast f : forecasts) {
312                                         Vector<Object> row = new Vector<Object>();
313                                         row.add(f.getForecastNumber());
314                                         row.add(f.getForecast());
315                                         row.add(f.getFee());
316                                         tableModelForecasts.addRow(row);
317                                 }
318                                 System.out.println(tableForecasts.getRowCount());
319                         }
320                 });
321
322                 tableForecasts.addMouseListener(new MouseAdapter() {
323                         @Override
324                         public void mouseClicked(MouseEvent e) {
325                                 int i = tableForecasts.getSelectedRow();
326                                 forecast = forecasts.get(i);
327
328                                 System.out.println(forecast.toString());
329                         }
330                 });
331
332                 scrollPaneEvents.setViewportView(tableEvents);
333                 tableModelEvents = new DefaultTableModel(null, columnNamesEvents) {
334                         @Override
335                         public boolean isCellEditable(int row, int column) {
336                                 return false;
337                         }
338                 };
339
340                 tableEvents.setModel(tableModelEvents);
341                 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
342                 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
343
344                 scrollPaneQueries.setViewportView(tableQueries);
345                 tableModelQueries = new DefaultTableModel(null, columnNamesQueries) {
346                         @Override
347                         public boolean isCellEditable(int row, int column) {
348                                 return false;
349                         }
350                 };
351
352                 tableQueries.setModel(tableModelQueries);
353                 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
354                 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
355
356                 scrollPaneForecasts.setViewportView(tableForecasts);
357                 tableModelForecasts = new DefaultTableModel(null, columnNamesForecasts) {
358                         @Override
359                         public boolean isCellEditable(int row, int column) {
360                                 return false;
361                         }
362                 };
363
364                 tableForecasts.setModel(tableModelForecasts);
365                 tableForecasts.getColumnModel().getColumn(0).setPreferredWidth(25);
366                 tableForecasts.getColumnModel().getColumn(1).setPreferredWidth(100);
367                 tableForecasts.getColumnModel().getColumn(2).setPreferredWidth(25);
368
369                 this.getContentPane().add(scrollPaneEvents, null);
370                 this.getContentPane().add(scrollPaneQueries, null);
371                 this.getContentPane().add(scrollPaneForecasts);
372
373         }
374
375         private void jButton2_actionPerformed(ActionEvent e) {
376                 JFrame a = new MainAdminGUI(userlog);
377                 a.setAlwaysOnTop(true);
378                 a.setVisible(true);
379                 dispose();
380         }
381
382 }