4 import java.awt.Component;
5 import java.awt.Dimension;
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;
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;
30 import com.toedter.calendar.JCalendar;
32 import businessLogic.BLFacade;
33 import configuration.UtilDate;
34 import domain.AdminUser;
35 import domain.Forecast;
36 import domain.Question;
38 public class FindQuestionsInvitadoGUI extends JFrame {
39 private static final long serialVersionUID = 1L;
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"));
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");
50 private JButton jButtonClose = new JButton("Close");
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();
60 private Vector<Date> datesWithEventsCurrentMonth = new Vector<Date>();
62 private JTable tableEvents = new JTable();
63 private JTable tableQueries = new JTable();
64 private JTable tableForecasts = new JTable();
66 private DefaultTableModel tableModelEvents;
67 private DefaultTableModel tableModelQueries;
68 private DefaultTableModel tableModelForecasts;
70 private BLFacade facade = LoginGUI.getBusinessLogic();
72 // private String[] columnNamesEvents = new String[] { ResourceBundle.getBundle("Etiquetas").getString("EventN"),
73 // ResourceBundle.getBundle("Etiquetas").getString("Event"),
76 // private String[] columnNamesQueries = new String[] { ResourceBundle.getBundle("Etiquetas").getString("QueryN"),
77 // ResourceBundle.getBundle("Etiquetas").getString("Query")
81 // private String[] columnNamesForecasts = new String[] { ResourceBundle.getBundle("Etiquetas").getString("ForecastN"),
82 // ResourceBundle.getBundle("Etiquetas").getString("Forecast"), "Fee"
85 private String[] columnNamesEvents = new String[] { "EventN", "Event",
88 private String[] columnNamesQueries = new String[] { "QueryN", "Query"
92 private String[] columnNamesForecasts = new String[] { "ForecastN", "Forecast", "Fee"
97 private Forecast forecast;
98 private Vector<Question> queries;
99 private Vector<Forecast> forecasts;
101 private AdminUser userlog = null;
103 public FindQuestionsInvitadoGUI() {
104 getContentPane().setBackground(Color.WHITE);
108 } catch (Exception e) {
113 private void jbInit() throws Exception {
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");
120 jLabelEventDate.setBounds(new Rectangle(40, 15, 140, 25));
121 jLabelQueries.setBounds(40, 248, 406, 14);
122 jLabelEvents.setBounds(295, 19, 259, 16);
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);
131 jButtonClose.setBounds(new Rectangle(332, 419, 130, 30));
133 jButtonClose.addActionListener(new ActionListener() {
135 public void actionPerformed(ActionEvent e) {
136 jButton2_actionPerformed(e);
140 this.getContentPane().add(jButtonClose, null);
141 jCalendar1.getDayChooser().getDayPanel().setBackground(Color.WHITE);
143 jCalendar1.setBounds(new Rectangle(40, 50, 225, 150));
145 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
146 CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
148 // Code for JCalendar
149 this.jCalendar1.addPropertyChangeListener(new PropertyChangeListener() {
151 public void propertyChange(PropertyChangeEvent propertychangeevent) {
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()));
162 int monthAnt = calendarAnt.get(Calendar.MONTH);
163 int monthAct = calendarAct.get(Calendar.MONTH);
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);
174 jCalendar1.setCalendar(calendarAct);
176 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
179 CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
182 tableModelEvents.setDataVector(null, columnNamesEvents);
183 tableModelEvents.setColumnCount(3); // another column added to allocate ev objects
185 Vector<domain.Event> events = facade.getEvents(firstDay);
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()));
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>();
199 System.out.println("Events " + ev);
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);
208 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
209 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
210 tableEvents.getColumnModel().removeColumn(tableEvents.getColumnModel().getColumn(2)); // not
212 tableModelQueries.setRowCount(0);
213 tableModelForecasts.setRowCount(0);// in
215 } catch (Exception e1) {
217 jLabelQueries.setText(e1.getMessage());
224 this.getContentPane().add(jCalendar1, null);
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));
230 tableEvents.addMouseListener(new MouseAdapter() {
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();
238 tableModelQueries.setDataVector(null, columnNamesQueries);
240 if (queries.isEmpty())
241 // jLabelQueries.setText(
242 // ResourceBundle.getBundle("Etiquetas").getString("NoQueries") + ": " + ev.getDescription());
243 jLabelQueries.setText("NoQueries" + ": " + ev.getDescription());
245 // jLabelQueries.setText(ResourceBundle.getBundle("Etiquetas").getString("SelectedEvent") + " "
246 // + ev.getDescription());
247 jLabelQueries.setText("SelectedEvent" + " "
248 + ev.getDescription());
250 for (domain.Question q : queries) {
251 Vector<Object> row = new Vector<Object>();
253 row.add(q.getQuestionNumber());
254 row.add(q.getQuestion());
255 tableModelQueries.addRow(row);
257 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
258 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
262 tableQueries.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
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,
269 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
275 tableEvents.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
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,
282 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
288 tableForecasts.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
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,
295 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
301 tableQueries.addMouseListener(new MouseAdapter() {
304 public void mouseClicked(MouseEvent e) {
305 tableModelForecasts.setRowCount(0);
306 int i = tableQueries.getSelectedRow();
307 que = queries.get(i);
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());
316 tableModelForecasts.addRow(row);
318 System.out.println(tableForecasts.getRowCount());
322 tableForecasts.addMouseListener(new MouseAdapter() {
324 public void mouseClicked(MouseEvent e) {
325 int i = tableForecasts.getSelectedRow();
326 forecast = forecasts.get(i);
328 System.out.println(forecast.toString());
332 scrollPaneEvents.setViewportView(tableEvents);
333 tableModelEvents = new DefaultTableModel(null, columnNamesEvents) {
335 public boolean isCellEditable(int row, int column) {
340 tableEvents.setModel(tableModelEvents);
341 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
342 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
344 scrollPaneQueries.setViewportView(tableQueries);
345 tableModelQueries = new DefaultTableModel(null, columnNamesQueries) {
347 public boolean isCellEditable(int row, int column) {
352 tableQueries.setModel(tableModelQueries);
353 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
354 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
356 scrollPaneForecasts.setViewportView(tableForecasts);
357 tableModelForecasts = new DefaultTableModel(null, columnNamesForecasts) {
359 public boolean isCellEditable(int row, int column) {
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);
369 this.getContentPane().add(scrollPaneEvents, null);
370 this.getContentPane().add(scrollPaneQueries, null);
371 this.getContentPane().add(scrollPaneForecasts);
375 private void jButton2_actionPerformed(ActionEvent e) {
376 JFrame a = new MainAdminGUI(userlog);
377 a.setAlwaysOnTop(true);