4 import java.awt.Component;
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;
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;
25 import businessLogic.BLFacade;
26 import domain.AdminUser;
29 import domain.Question;
30 import domain.RegularUser;
33 public class AdministrationGUI extends JFrame {
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" };
52 private DefaultTableModel tableModelApuestas = new DefaultTableModel(null, nombresColumnasApuestas) {
54 public boolean isCellEditable(int row, int column) {
59 private JScrollPane scrollPaneEventos = new JScrollPane();
60 private JTable tablaEventos;
61 private String[] nombresColumnasEventos = { "Id", "Fecha", "Evento" };
63 private DefaultTableModel tableModelEventos = new DefaultTableModel(null, nombresColumnasEventos) {
65 public boolean isCellEditable(int row, int column) {
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) {
75 public boolean isCellEditable(int row, int column) {
80 private String[] nombresColumnas = { "Username", "UserPass", "FirstName", "LastName ", "BirthDate", "Email",
81 "BankAccount", "PhoneNumber", "Address", "Balance" };
82 private JScrollPane scrollPaneUsuarios = new JScrollPane();
84 private DefaultTableModel tableModelUsuarios = new DefaultTableModel(null, nombresColumnas) {
86 public boolean isCellEditable(int row, int column) {
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;
99 public static void setBusinessLogic(BLFacade pfacade) {
103 public static BLFacade getBusinessLogic() {
107 public AdministrationGUI(AdminUser u) {
108 getContentPane().setBackground(Color.WHITE);
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);
118 Vector<Event> eventos = facade.getAllEvents();
120 for (Event e : eventos) {
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());
127 tableModelEventos.addRow(row);
131 tablaEventos = new JTable(tableModelEventos) {
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()));
144 tablaEventos.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
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,
151 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
157 scrollPaneEventos.setBounds(new Rectangle(865, 165, 503, 119));
158 scrollPaneEventos.setViewportView(tablaEventos);
159 this.getContentPane().add(scrollPaneEventos);
161 for (User user : usuarios) {
162 if (user instanceof RegularUser) {
163 Vector<Bet> apuestasUsuario = facade.getApuestasByUser((RegularUser) user);
165 for (Bet bet : apuestasUsuario) {
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);
184 tablaApuestas = new JTable(tableModelApuestas) {
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()));
197 tablaApuestas.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
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,
204 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
210 scrollPaneApuestas.setBounds(new Rectangle(40, 355, 774, 119));
211 scrollPaneApuestas.setViewportView(tablaApuestas);
212 this.getContentPane().add(scrollPaneApuestas);
214 preguntas = facade.getAllQuestions();
215 for (Question q : preguntas) {
216 modelopreguntas.addElement(q);
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");
226 btnAtras.addActionListener(new ActionListener() {
228 public void actionPerformed(ActionEvent arg0) {
230 JFrame a = new MainAdminGUI(userlog);
231 a.setAlwaysOnTop(true);
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());
246 for (User us : usuarios) {
248 Vector<Object> row = new Vector<Object>();
250 if (us instanceof AdminUser) {
252 row.add(us.getUserName());
253 row.add(us.getUserPass());
254 row.add(us.getFirstName());
255 row.add(us.getLastName());
256 tableModelUsuarios.addRow(row);
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() + "€");
270 tableModelUsuarios.addRow(row);
274 tabla = new JTable(tableModelUsuarios) {
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()));
287 tabla.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
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,
294 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
300 scrollPaneUsuarios.setBounds(new Rectangle(40, 165, 774, 119));
301 scrollPaneUsuarios.setViewportView(tabla);
303 this.getContentPane().add(scrollPaneUsuarios);
305 Vector<Question> preguntas = facade.getAllQuestions();
307 for (Question q : preguntas) {
309 Vector<Object> row = new Vector<Object>();
310 row.add(q.getQuestionNumber());
311 row.add(q.getQuestion());
312 row.add(q.getEvent().getDescription());
314 tableModelPreguntas.addRow(row);
318 tablaPreguntas = new JTable(tableModelPreguntas) {
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()));
331 tablaPreguntas.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
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,
338 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
344 scrollPanePreguntas.setBounds(new Rectangle(865, 355, 689, 113));
345 scrollPanePreguntas.setViewportView(tablaPreguntas);
346 this.getContentPane().add(scrollPanePreguntas);
348 lblInfo = new JLabel("Panel de control del administrador.");
349 lblInfo.setBounds(58, 34, 544, 16);
350 getContentPane().add(lblInfo);
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);
357 ImageIcon icon = new ImageIcon("imagenes/info.png");
358 lblIcono = new JLabel(icon);
359 lblIcono.setBounds(27, 27, 30, 30);
360 getContentPane().add(lblIcono);
362 separator = new JSeparator();
363 separator.setBounds(58, 91, 672, 16);
364 getContentPane().add(separator);
366 lblApuestas = new JLabel("Apuestas:");
367 lblApuestas.setBounds(40, 327, 73, 16);
368 getContentPane().add(lblApuestas);
370 lblPreguntas = new JLabel("Preguntas:");
371 lblPreguntas.setBounds(865, 327, 73, 16);
372 getContentPane().add(lblPreguntas);
374 lblUsuarios = new JLabel("Usuarios:");
375 lblUsuarios.setBounds(40, 137, 55, 16);
376 getContentPane().add(lblUsuarios);
378 lblEventos = new JLabel("Eventos:");
379 lblEventos.setBounds(865, 137, 73, 16);
380 getContentPane().add(lblEventos);