Iteración 3(Versión sin idiomas)
[ISBets21MAUBRY] / eclipse-workspace / ISBets21MAUBRY / src / main / java / gui / AdministrationGUI.java
1 package gui;
2
3 import java.awt.Color;
4 import java.awt.Component;
5 import java.awt.Font;
6 import java.awt.Rectangle;
7 import java.awt.SystemColor;
8 import java.awt.event.ActionEvent;
9 import java.awt.event.ActionListener;
10 import java.util.Vector;
11
12 import javax.swing.DefaultListModel;
13 import javax.swing.ImageIcon;
14 import javax.swing.JButton;
15 import javax.swing.JFrame;
16 import javax.swing.JLabel;
17 import javax.swing.JScrollPane;
18 import javax.swing.JSeparator;
19 import javax.swing.JTable;
20 import javax.swing.table.DefaultTableCellRenderer;
21 import javax.swing.table.DefaultTableModel;
22 import javax.swing.table.TableCellRenderer;
23 import javax.swing.table.TableColumn;
24
25 import businessLogic.BLFacade;
26 import domain.AdminUser;
27 import domain.Bet;
28 import domain.Event;
29 import domain.Question;
30 import domain.RegularUser;
31 import domain.User;
32
33 public class AdministrationGUI extends JFrame {
34
35         private static BLFacade facade = LoginGUI.getBusinessLogic();
36         private DefaultListModel modelopreguntas = new DefaultListModel();
37         private Vector<Question> preguntas = new Vector<Question>();
38         private DefaultListModel modeloPronosticos = new DefaultListModel();
39         private Event eventoSeleccionado;
40         private Question preguntaSeleccionada;
41         private DefaultListModel modelousuarios = new DefaultListModel();
42         private Vector<User> usuarios = facade.getAllUsers();
43         private AdminUser userlog = null;
44         private JButton btnAtras;
45         private DefaultListModel modeloApuestas = new DefaultListModel();
46         private Vector<Bet> apuestas = new Vector<Bet>();
47         private JScrollPane scrollPaneApuestas = new JScrollPane();
48         private JTable tablaApuestas;
49         private String[] nombresColumnasApuestas = { "Fecha", "Evento", "Pregunta", "Apuesta a ", "Cant. apostada", "Cuota",
50                         "Estado", "Usuario" };
51
52         private DefaultTableModel tableModelApuestas = new DefaultTableModel(null, nombresColumnasApuestas) {
53                 @Override
54                 public boolean isCellEditable(int row, int column) {
55                         return false;
56                 }
57         };
58
59         private JScrollPane scrollPaneEventos = new JScrollPane();
60         private JTable tablaEventos;
61         private String[] nombresColumnasEventos = { "Id", "Fecha", "Evento" };
62
63         private DefaultTableModel tableModelEventos = new DefaultTableModel(null, nombresColumnasEventos) {
64                 @Override
65                 public boolean isCellEditable(int row, int column) {
66                         return false;
67                 }
68         };
69
70         private String[] nombresColumnasPreguntas = { "Id", "Pregunta", "Evento" };
71         private JScrollPane scrollPanePreguntas = new JScrollPane();
72         private JTable tablaPreguntas;
73         private DefaultTableModel tableModelPreguntas = new DefaultTableModel(null, nombresColumnasPreguntas) {
74                 @Override
75                 public boolean isCellEditable(int row, int column) {
76                         return false;
77                 }
78         };
79
80         private String[] nombresColumnas = { "Username", "UserPass", "FirstName", "LastName ", "BirthDate", "Email",
81                         "BankAccount", "PhoneNumber", "Address", "Balance" };
82         private JScrollPane scrollPaneUsuarios = new JScrollPane();
83         private JTable tabla;
84         private DefaultTableModel tableModelUsuarios = new DefaultTableModel(null, nombresColumnas) {
85                 @Override
86                 public boolean isCellEditable(int row, int column) {
87                         return false;
88                 }
89         };
90         private JLabel lblInfo;
91         private JLabel lblInfo2;
92         private JLabel lblIcono;
93         private JSeparator separator;
94         private JLabel lblApuestas;
95         private JLabel lblPreguntas;
96         private JLabel lblUsuarios;
97         private JLabel lblEventos;
98
99         public static void setBusinessLogic(BLFacade pfacade) {
100                 facade = pfacade;
101         }
102
103         public static BLFacade getBusinessLogic() {
104                 return facade;
105         }
106
107         public AdministrationGUI(AdminUser u) {
108                 getContentPane().setBackground(Color.WHITE);
109
110                 userlog = u;
111
112 //              this.setTitle(ResourceBundle.getBundle("Etiquetas").getString("MainAdminGUI.buttonAdmin.text"));
113                 this.setTitle("buttonAdmin");
114                 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
115                 setBounds(100, 100, 1600, 650);
116                 getContentPane().setLayout(null);
117
118                 Vector<Event> eventos = facade.getAllEvents();
119
120                 for (Event e : eventos) {
121
122                         Vector<Object> row = new Vector<Object>();
123                         row.add(e.getEventNumber());
124                         row.add(e.getEventDate().toString().substring(0, 11));
125                         row.add(e.getDescription());
126
127                         tableModelEventos.addRow(row);
128
129                 }
130
131                 tablaEventos = new JTable(tableModelEventos) {
132                         @Override
133                         public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
134                                 Component component = super.prepareRenderer(renderer, row, column);
135                                 int rendererWidth = component.getPreferredSize().width;
136                                 TableColumn tableColumn = getColumnModel().getColumn(column);
137                                 tableColumn.setPreferredWidth(
138                                                 Math.max(rendererWidth + getIntercellSpacing().width, tableColumn.getPreferredWidth()));
139                                 return component;
140                         }
141
142                 };
143
144                 tablaEventos.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
145                         @Override
146                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
147                                         boolean hasFocus, int row, int column) {
148                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
149                                                 column);
150
151                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
152
153                                 return c;
154                         }
155                 });
156
157                 scrollPaneEventos.setBounds(new Rectangle(865, 165, 503, 119));
158                 scrollPaneEventos.setViewportView(tablaEventos);
159                 this.getContentPane().add(scrollPaneEventos);
160
161                 for (User user : usuarios) {
162                         if (user instanceof RegularUser) {
163                                 Vector<Bet> apuestasUsuario = facade.getApuestasByUser((RegularUser) user);
164
165                                 for (Bet bet : apuestasUsuario) {
166
167                                         Vector<Object> row = new Vector<Object>();
168                                         row.add(bet.getForecast().getQuestion().getEvent().getEventDate().toString().substring(0, 11));
169                                         row.add(bet.getForecast().getQuestion().getEvent().getDescription());
170                                         row.add(bet.getForecast().getQuestion().getQuestion());
171                                         row.add(bet.getForecast().getForecast());
172                                         row.add(bet.getAmount());
173                                         row.add(bet.getForecast().getFee());
174                                         row.add(bet.getEstadoApuesta());
175                                         row.add(bet.getUser().getUserName());
176                                         tableModelApuestas.addRow(row);
177
178                                 }
179
180                         }
181
182                 }
183
184                 tablaApuestas = new JTable(tableModelApuestas) {
185                         @Override
186                         public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
187                                 Component component = super.prepareRenderer(renderer, row, column);
188                                 int rendererWidth = component.getPreferredSize().width;
189                                 TableColumn tableColumn = getColumnModel().getColumn(column);
190                                 tableColumn.setPreferredWidth(
191                                                 Math.max(rendererWidth + getIntercellSpacing().width, tableColumn.getPreferredWidth()));
192                                 return component;
193                         }
194
195                 };
196
197                 tablaApuestas.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
198                         @Override
199                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
200                                         boolean hasFocus, int row, int column) {
201                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
202                                                 column);
203
204                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
205
206                                 return c;
207                         }
208                 });
209
210                 scrollPaneApuestas.setBounds(new Rectangle(40, 355, 774, 119));
211                 scrollPaneApuestas.setViewportView(tablaApuestas);
212                 this.getContentPane().add(scrollPaneApuestas);
213
214                 preguntas = facade.getAllQuestions();
215                 for (Question q : preguntas) {
216                         modelopreguntas.addElement(q);
217                 }
218
219                 btnAtras = new JButton("Atrás");
220                 btnAtras.setFont(new Font("Dialog", Font.BOLD, 14));
221                 btnAtras.setForeground(Color.WHITE);
222                 btnAtras.setBackground(SystemColor.controlShadow);
223 //              btnAtras.setText(ResourceBundle.getBundle("Etiquetas").getString("Close"));
224                 btnAtras.setText("Close");
225
226                 btnAtras.addActionListener(new ActionListener() {
227                         @Override
228                         public void actionPerformed(ActionEvent arg0) {
229
230                                 JFrame a = new MainAdminGUI(userlog);
231                                 a.setAlwaysOnTop(true);
232                                 a.setVisible(true);
233                                 dispose();
234
235                         }
236                 });
237                 btnAtras.setBounds(40, 550, 99, 26);
238                 getContentPane().add(btnAtras);
239                 modelousuarios.addElement("Usuarios:\n");
240                 modelousuarios.addElement("\n");
241                 usuarios = facade.getAllUsers();
242                 for (User e : usuarios) {
243                         modelousuarios.addElement(e.toString());
244                 }
245
246                 for (User us : usuarios) {
247
248                         Vector<Object> row = new Vector<Object>();
249
250                         if (us instanceof AdminUser) {
251
252                                 row.add(us.getUserName());
253                                 row.add(us.getUserPass());
254                                 row.add(us.getFirstName());
255                                 row.add(us.getLastName());
256                                 tableModelUsuarios.addRow(row);
257
258                         } else if (us instanceof RegularUser) {
259                                 row.add(us.getUserName());
260                                 row.add(us.getUserPass());
261                                 row.add(us.getFirstName());
262                                 row.add(us.getLastName());
263                                 row.add(((RegularUser) us).getBirthDate());
264                                 row.add(((RegularUser) us).getEmail());
265                                 row.add(((RegularUser) us).getBankAccount());
266                                 row.add(((RegularUser) us).getPhoneNumb());
267                                 row.add(((RegularUser) us).getAddress());
268                                 row.add(((RegularUser) us).getBalance() + "€");
269
270                                 tableModelUsuarios.addRow(row);
271                         }
272
273                 }
274                 tabla = new JTable(tableModelUsuarios) {
275                         @Override
276                         public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
277                                 Component component = super.prepareRenderer(renderer, row, column);
278                                 int rendererWidth = component.getPreferredSize().width;
279                                 TableColumn tableColumn = getColumnModel().getColumn(column);
280                                 tableColumn.setPreferredWidth(
281                                                 Math.max(rendererWidth + getIntercellSpacing().width, tableColumn.getPreferredWidth()));
282                                 return component;
283                         }
284
285                 };
286
287                 tabla.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
288                         @Override
289                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
290                                         boolean hasFocus, int row, int column) {
291                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
292                                                 column);
293
294                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
295
296                                 return c;
297                         }
298                 });
299
300                 scrollPaneUsuarios.setBounds(new Rectangle(40, 165, 774, 119));
301                 scrollPaneUsuarios.setViewportView(tabla);
302
303                 this.getContentPane().add(scrollPaneUsuarios);
304
305                 Vector<Question> preguntas = facade.getAllQuestions();
306
307                 for (Question q : preguntas) {
308
309                         Vector<Object> row = new Vector<Object>();
310                         row.add(q.getQuestionNumber());
311                         row.add(q.getQuestion());
312                         row.add(q.getEvent().getDescription());
313
314                         tableModelPreguntas.addRow(row);
315
316                 }
317
318                 tablaPreguntas = new JTable(tableModelPreguntas) {
319                         @Override
320                         public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
321                                 Component component = super.prepareRenderer(renderer, row, column);
322                                 int rendererWidth = component.getPreferredSize().width;
323                                 TableColumn tableColumn = getColumnModel().getColumn(column);
324                                 tableColumn.setPreferredWidth(
325                                                 Math.max(rendererWidth + getIntercellSpacing().width, tableColumn.getPreferredWidth()));
326                                 return component;
327                         }
328
329                 };
330
331                 tablaPreguntas.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
332                         @Override
333                         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
334                                         boolean hasFocus, int row, int column) {
335                                 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
336                                                 column);
337
338                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
339
340                                 return c;
341                         }
342                 });
343
344                 scrollPanePreguntas.setBounds(new Rectangle(865, 355, 689, 113));
345                 scrollPanePreguntas.setViewportView(tablaPreguntas);
346                 this.getContentPane().add(scrollPanePreguntas);
347
348                 lblInfo = new JLabel("Panel de control del administrador.");
349                 lblInfo.setBounds(58, 34, 544, 16);
350                 getContentPane().add(lblInfo);
351
352                 lblInfo2 = new JLabel(
353                                 "Se pueden ver todos los usuarios registrados, todas las apuestas realizadas, todos los eventos y todas las preguntas.");
354                 lblInfo2.setBounds(58, 63, 746, 16);
355                 getContentPane().add(lblInfo2);
356
357                 ImageIcon icon = new ImageIcon("imagenes/info.png");
358                 lblIcono = new JLabel(icon);
359                 lblIcono.setBounds(27, 27, 30, 30);
360                 getContentPane().add(lblIcono);
361
362                 separator = new JSeparator();
363                 separator.setBounds(58, 91, 672, 16);
364                 getContentPane().add(separator);
365
366                 lblApuestas = new JLabel("Apuestas:");
367                 lblApuestas.setBounds(40, 327, 73, 16);
368                 getContentPane().add(lblApuestas);
369
370                 lblPreguntas = new JLabel("Preguntas:");
371                 lblPreguntas.setBounds(865, 327, 73, 16);
372                 getContentPane().add(lblPreguntas);
373
374                 lblUsuarios = new JLabel("Usuarios:");
375                 lblUsuarios.setBounds(40, 137, 55, 16);
376                 getContentPane().add(lblUsuarios);
377
378                 lblEventos = new JLabel("Eventos:");
379                 lblEventos.setBounds(865, 137, 73, 16);
380                 getContentPane().add(lblEventos);
381
382         }
383 }