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.awt.event.MouseAdapter;
11 import java.awt.event.MouseEvent;
12 import java.util.Vector;
14 import javax.swing.ImageIcon;
15 import javax.swing.JButton;
16 import javax.swing.JFrame;
17 import javax.swing.JLabel;
18 import javax.swing.JOptionPane;
19 import javax.swing.JPanel;
20 import javax.swing.JScrollPane;
21 import javax.swing.JSeparator;
22 import javax.swing.JTable;
23 import javax.swing.table.DefaultTableCellRenderer;
24 import javax.swing.table.DefaultTableModel;
25 import javax.swing.table.TableCellRenderer;
26 import javax.swing.table.TableColumn;
28 import businessLogic.BLFacade;
30 import domain.RegularUser;
32 public class AnularApuestaGUI extends JFrame {
34 private JPanel contentPane;
35 private JScrollPane scrollPaneApuestas = new JScrollPane();
37 private String[] nombresColumnas = { "Fecha", "Evento", "Pregunta", "Apuesta a ", "Cant. apostada", "Cuota", "" };
38 private DefaultTableModel tableModelApuestas = new DefaultTableModel(null, nombresColumnas) {
40 public boolean isCellEditable(int row, int column) {
45 private static BLFacade facade = LoginGUI.getBusinessLogic();
47 private RegularUser userlog;
48 private JButton btnAtras;
49 private JLabel lblApuestas;
50 private JLabel lblInfo;
51 private JSeparator separator;
52 private JLabel lblSaldo;
53 private RegularUser newUserActualizado;
54 private JLabel lblNewLabel_1;
56 public AnularApuestaGUI(RegularUser ru) {
57 getContentPane().setBackground(Color.WHITE);
59 newUserActualizado = ru;
61 // setTitle(ResourceBundle.getBundle("Etiquetas").getString("MainGUI.btnAnularApuesta.text")
62 // + " " + userlog.getUserName());
63 setTitle("btnAnularApuesta"
65 + userlog.getUserName());
67 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
68 setBounds(100, 100, 1100, 500);
69 getContentPane().setLayout(null);
71 JButton btnEliminar = new JButton("Anular");
72 btnEliminar.setName("Anular");
73 Vector<Bet> apuestasUsuario = facade.getApuestasAbiertas(userlog);
74 Vector<Bet> apuestasAbiertas = new Vector<Bet>();
75 for (Bet bet : apuestasUsuario) {
76 if (bet.getEstadoApuesta().equals("Pendiente")) {
77 Vector<Object> row = new Vector<Object>();
78 row.add(bet.getForecast().getQuestion().getEvent().getEventDate().toString().substring(0, 11));
79 row.add(bet.getForecast().getQuestion().getEvent().getDescription());
80 row.add(bet.getForecast().getQuestion().getQuestion());
81 row.add(bet.getForecast().getForecast());
82 row.add(bet.getAmount());
83 row.add(bet.getForecast().getFee());
84 row.addElement(btnEliminar);
85 apuestasAbiertas.addElement(bet);
86 tableModelApuestas.addRow(row);
90 // OVERRIDE DE METODO PARA QUE SE AJUSTEN AUTOMATICAMENTE LAS COLUMNAS DE LA
91 // TABLA SEGUN EL CONTENIDO
92 tabla = new JTable(tableModelApuestas) {
94 public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
95 Component component = super.prepareRenderer(renderer, row, column);
96 int rendererWidth = component.getPreferredSize().width;
97 TableColumn tableColumn = getColumnModel().getColumn(column);
98 tableColumn.setPreferredWidth(
99 Math.max(rendererWidth + getIntercellSpacing().width, tableColumn.getPreferredWidth()));
105 tabla.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
107 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
108 boolean hasFocus, int row, int column) {
109 final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
112 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
118 tabla.addMouseListener(new MouseAdapter() {
120 public void mouseClicked(MouseEvent ev) {
122 int column = tabla.getColumnModel().getColumnIndexAtX(ev.getX());
123 int row = ev.getY() / tabla.getRowHeight();
125 if (row < tabla.getRowCount() && row >= 0 && column < tabla.getColumnCount() && column >= 0) {
126 Object value = tabla.getValueAt(row, column);
127 if (value instanceof JButton) {
128 ((JButton) value).doClick();
129 JButton boton = (JButton) value;
131 int i = tabla.getSelectedRow();
132 Bet apu = apuestasAbiertas.get(i);
134 // int dialogButton = JOptionPane.YES_NO_OPTION;
135 // JOptionPane.showConfirmDialog(getContentPane(), "¿Seguro que quieres anular la apuesta?",
136 // "CUIDADO!", dialogButton);
137 // if (dialogButton == JOptionPane.YES_OPTION) {
138 // System.out.println("CLIC EN SI");
140 System.out.println("Anulando la apuesta: " + apu.getForecast().getForecast() + " / "
141 + apu.getForecast().getQuestion() + " / "
142 + apu.getForecast().getQuestion().getEvent().getDescription() + "de la tabla");
143 tableModelApuestas.removeRow(row);
144 apuestasAbiertas.remove(i);
145 if (facade.anularApuesta(apu)) {
147 JOptionPane.showMessageDialog(getContentPane(),
148 "La apuesta a " + apu.getForecast().getForecast()
149 + " ha sido anulada. \nEl importe de " + apu.getAmount() + "€"
150 + " será reintegrado inmediatamente...");
152 System.out.println("APUESTA ANULADA");
153 // lblSaldo.setText(ResourceBundle.getBundle("Etiquetas").getString("MainGUI.lblSaldo")
154 // + " " + (newUserActualizado.getBalance() + apu.getAmount()) + "€");
156 "Balance" + " " + (newUserActualizado.getBalance() + apu.getAmount()) + "€");
160 // if (dialogButton == JOptionPane.NO_OPTION) {
161 // System.out.println("CLIC EN NO");
162 // remove(dialogButton);
165 newUserActualizado = facade.getRegularUserByUsername(userlog.getUserName());
167 } catch (Exception e) {
176 tabla.setDefaultRenderer(Object.class, new Render());
178 scrollPaneApuestas.setBounds(new Rectangle(40, 190, 996, 119));
179 scrollPaneApuestas.setViewportView(tabla);
180 this.getContentPane().add(scrollPaneApuestas);
182 btnAtras = new JButton();
183 btnAtras.setForeground(Color.WHITE);
184 btnAtras.setFont(new Font("Dialog", Font.BOLD, 14));
185 btnAtras.setBackground(SystemColor.controlShadow);
186 // btnAtras.setText(ResourceBundle.getBundle("Etiquetas").getString("Close"));
187 btnAtras.setText("Close");
189 btnAtras.addActionListener(new ActionListener() {
191 public void actionPerformed(ActionEvent arg0) {
193 RegularUser usuarioActualizado = facade.getRegularUserByUsername(userlog.getUserName());
195 JFrame a = new MainGUI(usuarioActualizado);
196 a.setAlwaysOnTop(true);
202 btnAtras.setBounds(52, 376, 99, 26);
203 getContentPane().add(btnAtras);
205 lblApuestas = new JLabel("Apuestas abiertas:");
206 lblApuestas.setBounds(40, 156, 135, 16);
207 getContentPane().add(lblApuestas);
209 lblInfo = new JLabel(
210 "Aquí podrás cancelar una apuesta que aún sigue en curso. Se te devolverá el dinero apostado.");
211 lblInfo.setBounds(66, 48, 666, 47);
212 getContentPane().add(lblInfo);
214 separator = new JSeparator();
215 separator.setBounds(64, 94, 535, 26);
216 getContentPane().add(separator);
218 JPanel panel = new JPanel();
219 panel.setBackground(new Color(0, 0, 128));
220 panel.setBounds(655, 26, 136, 36);
221 getContentPane().add(panel);
222 panel.setLayout(null);
224 // lblSaldo = new JLabel(ResourceBundle.getBundle("Etiquetas").getString("MainGUI.lblSaldo") //$NON-NLS-1$ //$NON-NLS-2$
225 // + " " + userlog.getBalance() + "€");
226 lblSaldo = new JLabel("Balance" //$NON-NLS-1$ //$NON-NLS-2$
227 + " " + userlog.getBalance() + "€");
228 lblSaldo.setBounds(10, 8, 197, 19);
230 lblSaldo.setFont(new Font("Tahoma", Font.BOLD, 14));
231 lblSaldo.setForeground(Color.WHITE);
233 ImageIcon icon = new ImageIcon("imagenes/info.png");
234 lblNewLabel_1 = new JLabel(icon);
235 lblNewLabel_1.setBounds(23, 48, 55, 40);
236 getContentPane().add(lblNewLabel_1);