3 import businessLogic.BLFacade;
4 import configuration.UtilDate;
6 import com.toedter.calendar.JCalendar;
7 import domain.Question;
11 import java.awt.event.*;
13 import java.text.DateFormat;
16 import javax.swing.table.DefaultTableModel;
18 public class FindQuestionsGUI extends JFrame {
19 private static final long serialVersionUID = 1L;
21 private final JLabel jLabelEventDate = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("EventDate"));
22 private final JLabel jLabelQueries = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Queries"));
23 private final JLabel jLabelEvents = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("Events"));
25 private JButton jButtonClose = new JButton(ResourceBundle.getBundle("Etiquetas").getString("Close"));
28 private JCalendar jCalendar1 = new JCalendar();
29 private Calendar calendarAnt = null;
30 private Calendar calendarAct = null;
31 private JScrollPane scrollPaneEvents = new JScrollPane();
32 private JScrollPane scrollPaneQueries = new JScrollPane();
34 private Vector<Date> datesWithEventsCurrentMonth = new Vector<Date>();
36 private JTable tableEvents = new JTable();
37 private JTable tableQueries = new JTable();
39 private DefaultTableModel tableModelEvents;
40 private DefaultTableModel tableModelQueries;
42 private String[] columnNamesEvents = new String[] { ResourceBundle.getBundle("Etiquetas").getString("EventN"),
43 ResourceBundle.getBundle("Etiquetas").getString("Event"),
46 private String[] columnNamesQueries = new String[] { ResourceBundle.getBundle("Etiquetas").getString("QueryN"),
47 ResourceBundle.getBundle("Etiquetas").getString("Query")
51 public FindQuestionsGUI() {
54 } catch (Exception e) {
59 private void jbInit() throws Exception {
61 this.getContentPane().setLayout(null);
62 this.setSize(new Dimension(700, 500));
63 this.setTitle(ResourceBundle.getBundle("Etiquetas").getString("QueryQueries"));
65 jLabelEventDate.setBounds(new Rectangle(40, 15, 140, 25));
66 jLabelQueries.setBounds(138, 248, 406, 14);
67 jLabelEvents.setBounds(295, 19, 259, 16);
69 this.getContentPane().add(jLabelEventDate, null);
70 this.getContentPane().add(jLabelQueries);
71 this.getContentPane().add(jLabelEvents);
73 jButtonClose.setBounds(new Rectangle(274, 419, 130, 30));
75 jButtonClose.addActionListener(new ActionListener() {
76 public void actionPerformed(ActionEvent e) {
77 jButton2_actionPerformed(e);
81 this.getContentPane().add(jButtonClose, null);
83 jCalendar1.setBounds(new Rectangle(40, 50, 225, 150));
85 BLFacade facade = LoginGUI.getBusinessLogic();
86 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
87 CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
90 this.jCalendar1.addPropertyChangeListener(new PropertyChangeListener() {
91 public void propertyChange(PropertyChangeEvent propertychangeevent) {
93 if (propertychangeevent.getPropertyName().equals("locale")) {
94 jCalendar1.setLocale((Locale) propertychangeevent.getNewValue());
95 } else if (propertychangeevent.getPropertyName().equals("calendar")) {
96 calendarAnt = (Calendar) propertychangeevent.getOldValue();
97 calendarAct = (Calendar) propertychangeevent.getNewValue();
98 DateFormat dateformat1 = DateFormat.getDateInstance(1, jCalendar1.getLocale());
99 // jCalendar1.setCalendar(calendarAct);
100 Date firstDay = UtilDate.trim(new Date(jCalendar1.getCalendar().getTime().getTime()));
102 int monthAnt = calendarAnt.get(Calendar.MONTH);
103 int monthAct = calendarAct.get(Calendar.MONTH);
105 if (monthAct != monthAnt) {
106 if (monthAct == monthAnt + 2) {
107 // Si en JCalendar está 30 de enero y se avanza al mes siguiente, devolvería 2
108 // de marzo (se toma como equivalente a 30 de febrero)
109 // Con este código se dejará como 1 de febrero en el JCalendar
110 calendarAct.set(Calendar.MONTH, monthAnt + 1);
111 calendarAct.set(Calendar.DAY_OF_MONTH, 1);
114 jCalendar1.setCalendar(calendarAct);
116 BLFacade facade = LoginGUI.getBusinessLogic();
118 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
121 CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
124 tableModelEvents.setDataVector(null, columnNamesEvents);
125 tableModelEvents.setColumnCount(3); // another column added to allocate ev objects
127 BLFacade facade = LoginGUI.getBusinessLogic();
129 Vector<domain.Event> events = facade.getEvents(firstDay);
131 if (events.isEmpty())
132 jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("NoEvents") + ": "
133 + dateformat1.format(calendarAct.getTime()));
135 jLabelEvents.setText(ResourceBundle.getBundle("Etiquetas").getString("Events") + ": "
136 + dateformat1.format(calendarAct.getTime()));
137 for (domain.Event ev : events) {
138 Vector<Object> row = new Vector<Object>();
140 System.out.println("Events " + ev);
142 row.add(ev.getEventNumber());
143 row.add(ev.getDescription());
144 row.add(ev); // ev object added in order to obtain it with tableModelEvents.getValueAt(i,2)
145 tableModelEvents.addRow(row);
147 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
148 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
149 tableEvents.getColumnModel().removeColumn(tableEvents.getColumnModel().getColumn(2)); // not
153 } catch (Exception e1) {
155 jLabelQueries.setText(e1.getMessage());
162 this.getContentPane().add(jCalendar1, null);
164 scrollPaneEvents.setBounds(new Rectangle(292, 50, 346, 150));
165 scrollPaneQueries.setBounds(new Rectangle(138, 274, 406, 116));
167 tableEvents.addMouseListener(new MouseAdapter() {
169 public void mouseClicked(MouseEvent e) {
170 int i = tableEvents.getSelectedRow();
171 domain.Event ev = (domain.Event) tableModelEvents.getValueAt(i, 2); // obtain ev object
172 Vector<Question> queries = ev.getQuestions();
174 tableModelQueries.setDataVector(null, columnNamesQueries);
176 if (queries.isEmpty())
177 jLabelQueries.setText(
178 ResourceBundle.getBundle("Etiquetas").getString("NoQueries") + ": " + ev.getDescription());
180 jLabelQueries.setText(ResourceBundle.getBundle("Etiquetas").getString("SelectedEvent") + " "
181 + ev.getDescription());
183 for (domain.Question q : queries) {
184 Vector<Object> row = new Vector<Object>();
186 row.add(q.getQuestionNumber());
187 row.add(q.getQuestion());
188 tableModelQueries.addRow(row);
190 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
191 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
195 scrollPaneEvents.setViewportView(tableEvents);
196 tableModelEvents = new DefaultTableModel(null, columnNamesEvents);
198 tableEvents.setModel(tableModelEvents);
199 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
200 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
202 scrollPaneQueries.setViewportView(tableQueries);
203 tableModelQueries = new DefaultTableModel(null, columnNamesQueries);
205 tableQueries.setModel(tableModelQueries);
206 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
207 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
209 this.getContentPane().add(scrollPaneEvents, null);
210 this.getContentPane().add(scrollPaneQueries, null);
214 private void jButton2_actionPerformed(ActionEvent e) {
215 this.setVisible(false);