package gui; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.Rectangle; import java.awt.SystemColor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Vector; import javax.swing.DefaultListModel; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import businessLogic.BLFacade; import domain.AdminUser; import domain.Bet; import domain.Event; import domain.Question; import domain.RegularUser; import domain.User; public class AdministrationGUI extends JFrame { private static BLFacade facade = LoginGUI.getBusinessLogic(); private DefaultListModel modelopreguntas = new DefaultListModel(); private Vector preguntas = new Vector(); private DefaultListModel modeloPronosticos = new DefaultListModel(); private Event eventoSeleccionado; private Question preguntaSeleccionada; private DefaultListModel modelousuarios = new DefaultListModel(); private Vector usuarios = facade.getAllUsers(); private AdminUser userlog = null; private JButton btnAtras; private DefaultListModel modeloApuestas = new DefaultListModel(); private Vector apuestas = new Vector(); private JScrollPane scrollPaneApuestas = new JScrollPane(); private JTable tablaApuestas; private String[] nombresColumnasApuestas = { "Fecha", "Evento", "Pregunta", "Apuesta a ", "Cant. apostada", "Cuota", "Estado", "Usuario" }; private DefaultTableModel tableModelApuestas = new DefaultTableModel(null, nombresColumnasApuestas) { @Override public boolean isCellEditable(int row, int column) { return false; } }; private JScrollPane scrollPaneEventos = new JScrollPane(); private JTable tablaEventos; private String[] nombresColumnasEventos = { "Id", "Fecha", "Evento" }; private DefaultTableModel tableModelEventos = new DefaultTableModel(null, nombresColumnasEventos) { @Override public boolean isCellEditable(int row, int column) { return false; } }; private String[] nombresColumnasPreguntas = { "Id", "Pregunta", "Evento" }; private JScrollPane scrollPanePreguntas = new JScrollPane(); private JTable tablaPreguntas; private DefaultTableModel tableModelPreguntas = new DefaultTableModel(null, nombresColumnasPreguntas) { @Override public boolean isCellEditable(int row, int column) { return false; } }; private String[] nombresColumnas = { "Username", "UserPass", "FirstName", "LastName ", "BirthDate", "Email", "BankAccount", "PhoneNumber", "Address", "Balance" }; private JScrollPane scrollPaneUsuarios = new JScrollPane(); private JTable tabla; private DefaultTableModel tableModelUsuarios = new DefaultTableModel(null, nombresColumnas) { @Override public boolean isCellEditable(int row, int column) { return false; } }; private JLabel lblInfo; private JLabel lblInfo2; private JLabel lblIcono; private JSeparator separator; private JLabel lblApuestas; private JLabel lblPreguntas; private JLabel lblUsuarios; private JLabel lblEventos; public static void setBusinessLogic(BLFacade pfacade) { facade = pfacade; } public static BLFacade getBusinessLogic() { return facade; } public AdministrationGUI(AdminUser u) { getContentPane().setBackground(Color.WHITE); userlog = u; // this.setTitle(ResourceBundle.getBundle("Etiquetas").getString("MainAdminGUI.buttonAdmin.text")); this.setTitle("buttonAdmin"); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(100, 100, 1600, 650); getContentPane().setLayout(null); Vector eventos = facade.getAllEvents(); for (Event e : eventos) { Vector row = new Vector(); row.add(e.getEventNumber()); row.add(e.getEventDate().toString().substring(0, 11)); row.add(e.getDescription()); tableModelEventos.addRow(row); } tablaEventos = new JTable(tableModelEventos) { @Override public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component component = super.prepareRenderer(renderer, row, column); int rendererWidth = component.getPreferredSize().width; TableColumn tableColumn = getColumnModel().getColumn(column); tableColumn.setPreferredWidth( Math.max(rendererWidth + getIntercellSpacing().width, tableColumn.getPreferredWidth())); return component; } }; tablaEventos.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE); return c; } }); scrollPaneEventos.setBounds(new Rectangle(865, 165, 503, 119)); scrollPaneEventos.setViewportView(tablaEventos); this.getContentPane().add(scrollPaneEventos); for (User user : usuarios) { if (user instanceof RegularUser) { Vector apuestasUsuario = facade.getApuestasByUser((RegularUser) user); for (Bet bet : apuestasUsuario) { Vector row = new Vector(); row.add(bet.getForecast().getQuestion().getEvent().getEventDate().toString().substring(0, 11)); row.add(bet.getForecast().getQuestion().getEvent().getDescription()); row.add(bet.getForecast().getQuestion().getQuestion()); row.add(bet.getForecast().getForecast()); row.add(bet.getAmount()); row.add(bet.getForecast().getFee()); row.add(bet.getEstadoApuesta()); row.add(bet.getUser().getUserName()); tableModelApuestas.addRow(row); } } } tablaApuestas = new JTable(tableModelApuestas) { @Override public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component component = super.prepareRenderer(renderer, row, column); int rendererWidth = component.getPreferredSize().width; TableColumn tableColumn = getColumnModel().getColumn(column); tableColumn.setPreferredWidth( Math.max(rendererWidth + getIntercellSpacing().width, tableColumn.getPreferredWidth())); return component; } }; tablaApuestas.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE); return c; } }); scrollPaneApuestas.setBounds(new Rectangle(40, 355, 774, 119)); scrollPaneApuestas.setViewportView(tablaApuestas); this.getContentPane().add(scrollPaneApuestas); preguntas = facade.getAllQuestions(); for (Question q : preguntas) { modelopreguntas.addElement(q); } btnAtras = new JButton("Atrás"); btnAtras.setFont(new Font("Dialog", Font.BOLD, 14)); btnAtras.setForeground(Color.WHITE); btnAtras.setBackground(SystemColor.controlShadow); // btnAtras.setText(ResourceBundle.getBundle("Etiquetas").getString("Close")); btnAtras.setText("Close"); btnAtras.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { JFrame a = new MainAdminGUI(userlog); a.setAlwaysOnTop(true); a.setVisible(true); dispose(); } }); btnAtras.setBounds(40, 550, 99, 26); getContentPane().add(btnAtras); modelousuarios.addElement("Usuarios:\n"); modelousuarios.addElement("\n"); usuarios = facade.getAllUsers(); for (User e : usuarios) { modelousuarios.addElement(e.toString()); } for (User us : usuarios) { Vector row = new Vector(); if (us instanceof AdminUser) { row.add(us.getUserName()); row.add(us.getUserPass()); row.add(us.getFirstName()); row.add(us.getLastName()); tableModelUsuarios.addRow(row); } else if (us instanceof RegularUser) { row.add(us.getUserName()); row.add(us.getUserPass()); row.add(us.getFirstName()); row.add(us.getLastName()); row.add(((RegularUser) us).getBirthDate()); row.add(((RegularUser) us).getEmail()); row.add(((RegularUser) us).getBankAccount()); row.add(((RegularUser) us).getPhoneNumb()); row.add(((RegularUser) us).getAddress()); row.add(((RegularUser) us).getBalance() + "€"); tableModelUsuarios.addRow(row); } } tabla = new JTable(tableModelUsuarios) { @Override public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component component = super.prepareRenderer(renderer, row, column); int rendererWidth = component.getPreferredSize().width; TableColumn tableColumn = getColumnModel().getColumn(column); tableColumn.setPreferredWidth( Math.max(rendererWidth + getIntercellSpacing().width, tableColumn.getPreferredWidth())); return component; } }; tabla.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE); return c; } }); scrollPaneUsuarios.setBounds(new Rectangle(40, 165, 774, 119)); scrollPaneUsuarios.setViewportView(tabla); this.getContentPane().add(scrollPaneUsuarios); Vector preguntas = facade.getAllQuestions(); for (Question q : preguntas) { Vector row = new Vector(); row.add(q.getQuestionNumber()); row.add(q.getQuestion()); row.add(q.getEvent().getDescription()); tableModelPreguntas.addRow(row); } tablaPreguntas = new JTable(tableModelPreguntas) { @Override public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component component = super.prepareRenderer(renderer, row, column); int rendererWidth = component.getPreferredSize().width; TableColumn tableColumn = getColumnModel().getColumn(column); tableColumn.setPreferredWidth( Math.max(rendererWidth + getIntercellSpacing().width, tableColumn.getPreferredWidth())); return component; } }; tablaPreguntas.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE); return c; } }); scrollPanePreguntas.setBounds(new Rectangle(865, 355, 689, 113)); scrollPanePreguntas.setViewportView(tablaPreguntas); this.getContentPane().add(scrollPanePreguntas); lblInfo = new JLabel("Panel de control del administrador."); lblInfo.setBounds(58, 34, 544, 16); getContentPane().add(lblInfo); lblInfo2 = new JLabel( "Se pueden ver todos los usuarios registrados, todas las apuestas realizadas, todos los eventos y todas las preguntas."); lblInfo2.setBounds(58, 63, 746, 16); getContentPane().add(lblInfo2); ImageIcon icon = new ImageIcon("imagenes/info.png"); lblIcono = new JLabel(icon); lblIcono.setBounds(27, 27, 30, 30); getContentPane().add(lblIcono); separator = new JSeparator(); separator.setBounds(58, 91, 672, 16); getContentPane().add(separator); lblApuestas = new JLabel("Apuestas:"); lblApuestas.setBounds(40, 327, 73, 16); getContentPane().add(lblApuestas); lblPreguntas = new JLabel("Preguntas:"); lblPreguntas.setBounds(865, 327, 73, 16); getContentPane().add(lblPreguntas); lblUsuarios = new JLabel("Usuarios:"); lblUsuarios.setBounds(40, 137, 55, 16); getContentPane().add(lblUsuarios); lblEventos = new JLabel("Eventos:"); lblEventos.setBounds(865, 137, 73, 16); getContentPane().add(lblEventos); } }