4 import java.awt.Component;
5 import java.awt.Dimension;
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;
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;
33 import com.toedter.calendar.JCalendar;
35 import businessLogic.BLFacade;
36 import configuration.UtilDate;
37 import domain.AdminUser;
38 import domain.Question;
40 public class CreateForecastGUI extends JFrame {
41 private static final long serialVersionUID = 1L;
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");
50 // private JButton jButtonClose = new JButton(ResourceBundle.getBundle("Etiquetas").getString("Close"));
51 private JButton jButtonClose = new JButton("Close");
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();
60 private Vector<Date> datesWithEventsCurrentMonth = new Vector<Date>();
62 private JTable tableEvents = new JTable();
63 private JTable tableQueries = new JTable();
65 private DefaultTableModel tableModelEvents;
66 private DefaultTableModel tableModelQueries;
68 // private String[] columnNamesEvents = new String[] { ResourceBundle.getBundle("Etiquetas").getString("EventN"),
69 // ResourceBundle.getBundle("Etiquetas").getString("Event"),
72 // private String[] columnNamesQueries = new String[] { ResourceBundle.getBundle("Etiquetas").getString("QueryN"),
73 // ResourceBundle.getBundle("Etiquetas").getString("Query")
77 private String[] columnNamesEvents = new String[] { "EventN", "Event",
80 private String[] columnNamesQueries = new String[] { "QueryN", "Query"
83 private JTextField textForecast;
85 private static BLFacade facade = LoginGUI.getBusinessLogic();
86 private JTextField textFee;
87 private Vector<Question> queries;
88 private AdminUser userlog = null;
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$
94 public static void setBusinessLogic(BLFacade pfacade) {
98 public static BLFacade getBusinessLogic() {
102 public CreateForecastGUI(AdminUser au) {
103 getContentPane().setBackground(Color.WHITE);
108 } catch (Exception e) {
113 private void jbInit() throws Exception {
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");
120 jLabelEventDate.setBounds(new Rectangle(40, 15, 140, 25));
121 jLabelQueries.setBounds(138, 211, 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.setBackground(SystemColor.controlShadow);
129 jButtonClose.setFont(new Font("Dialog", Font.BOLD, 14));
131 jButtonClose.setBounds(new Rectangle(40, 449, 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 BLFacade facade = LoginGUI.getBusinessLogic();
178 datesWithEventsCurrentMonth = facade.getEventsMonth(jCalendar1.getDate());
181 CreateQuestionGUI.paintDaysWithEvents(jCalendar1, datesWithEventsCurrentMonth);
184 tableModelEvents.setDataVector(null, columnNamesEvents);
185 tableModelEvents.setColumnCount(3); // another column added to allocate ev objects
187 BLFacade facade = LoginGUI.getBusinessLogic();
189 Vector<domain.Event> events = facade.getEvents(firstDay);
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()));
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>();
203 System.out.println("Events " + ev);
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);
212 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
213 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
214 tableEvents.getColumnModel().removeColumn(tableEvents.getColumnModel().getColumn(2)); // not
218 } catch (Exception e1) {
220 jLabelQueries.setText(e1.getMessage());
227 this.getContentPane().add(jCalendar1, null);
229 scrollPaneEvents.setBounds(new Rectangle(292, 50, 346, 150));
231 scrollPaneQueries.setBounds(new Rectangle(138, 236, 406, 116));
232 tableEvents.setBackground(Color.WHITE);
234 tableEvents.addMouseListener(new MouseAdapter() {
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();
241 tableModelQueries.setDataVector(null, columnNamesQueries);
243 if (queries.isEmpty())
244 // jLabelQueries.setText(
245 // ResourceBundle.getBundle("Etiquetas").getString("NoQueries") + ": " + ev.getDescription());
246 jLabelQueries.setText("NoQueries" + ": " + ev.getDescription());
248 // jLabelQueries.setText(ResourceBundle.getBundle("Etiquetas").getString("SelectedEvent") + " "
249 // + ev.getDescription());
250 jLabelQueries.setText("SelectedEvent" + " " + ev.getDescription());
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);
259 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
260 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
263 tableQueries.addMouseListener(new MouseAdapter() {
265 public void mouseClicked(MouseEvent e) {
266 int i = tableQueries.getSelectedRow();
267 que = queries.get(i);
268 btnCreateForecast.setEnabled(true);
272 scrollPaneEvents.setViewportView(tableEvents);
273 tableModelEvents = new DefaultTableModel(null, columnNamesEvents) {
275 public boolean isCellEditable(int row, int column) {
280 tableEvents.setModel(tableModelEvents);
281 tableEvents.getColumnModel().getColumn(0).setPreferredWidth(25);
282 tableEvents.getColumnModel().getColumn(1).setPreferredWidth(268);
284 scrollPaneQueries.setViewportView(tableQueries);
285 tableModelQueries = new DefaultTableModel(null, columnNamesQueries) {
287 public boolean isCellEditable(int row, int column) {
292 tableEvents.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
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,
299 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
305 tableQueries.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
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,
312 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
318 tableQueries.setModel(tableModelQueries);
319 tableQueries.getColumnModel().getColumn(0).setPreferredWidth(25);
320 tableQueries.getColumnModel().getColumn(1).setPreferredWidth(268);
322 this.getContentPane().add(scrollPaneEvents, null);
323 this.getContentPane().add(scrollPaneQueries, null);
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);
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);
340 btnCreateForecast.setEnabled(false);
342 // .setText(ResourceBundle.getBundle("Etiquetas").getString("MainAdminGUI.jButtonCreateForecast.text"));
343 btnCreateForecast.setText("CreateForecast");
345 btnCreateForecast.addActionListener(new ActionListener() {
347 public void actionPerformed(ActionEvent e) {
348 System.out.println(que.toString());
349 if (textFee.getText().equals("")) {
351 JOptionPane.showMessageDialog(getContentPane(), "La cuota no puede estar vacía", "Error",
352 JOptionPane.ERROR_MESSAGE);
355 float fee = Float.parseFloat(textFee.getText());
357 String f = textForecast.getText();
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);
366 boolean inserted = facade.insertForecast(que, f, fee);
368 JOptionPane.showMessageDialog(getContentPane(), "Pronóstico añadido correctamente");
369 textForecast.setText("");
372 JOptionPane.showMessageDialog(getContentPane(), "Pronóstico ya existente");
373 textForecast.setText("");
381 btnCreateForecast.setBounds(new Rectangle(100, 275, 130, 30));
382 btnCreateForecast.setBounds(313, 449, 169, 30);
383 getContentPane().add(btnCreateForecast);
385 JLabel lblNewLabel = new JLabel("Cuota:");
386 lblNewLabel.setBounds(466, 369, 46, 14);
387 getContentPane().add(lblNewLabel);
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);
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);
403 getContentPane().add(lblNewLabel_2);
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);