Iteración 3(Versión sin idiomas)
[ISBets21MAUBRY] / eclipse-workspace / ISBets21MAUBRY / src / main / java / gui / AnularApuestaGUI.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.awt.event.MouseAdapter;
11 import java.awt.event.MouseEvent;
12 import java.util.Vector;
13
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;
27
28 import businessLogic.BLFacade;
29 import domain.Bet;
30 import domain.RegularUser;
31
32 public class AnularApuestaGUI extends JFrame {
33
34         private JPanel contentPane;
35         private JScrollPane scrollPaneApuestas = new JScrollPane();
36         private JTable tabla;
37         private String[] nombresColumnas = { "Fecha", "Evento", "Pregunta", "Apuesta a ", "Cant. apostada", "Cuota", "" };
38         private DefaultTableModel tableModelApuestas = new DefaultTableModel(null, nombresColumnas) {
39                 @Override
40                 public boolean isCellEditable(int row, int column) {
41                         return false;
42                 }
43         };
44
45         private static BLFacade facade = LoginGUI.getBusinessLogic();
46
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;
55
56         public AnularApuestaGUI(RegularUser ru) {
57                 getContentPane().setBackground(Color.WHITE);
58                 userlog = ru;
59                 newUserActualizado = ru;
60
61 //              setTitle(ResourceBundle.getBundle("Etiquetas").getString("MainGUI.btnAnularApuesta.text")
62 //                              + "                                                                                                      " + userlog.getUserName());
63                 setTitle("btnAnularApuesta"
64                                 + "                                                                                                      "
65                                 + userlog.getUserName());
66
67                 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
68                 setBounds(100, 100, 1100, 500);
69                 getContentPane().setLayout(null);
70
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);
87                         }
88                 }
89
90                 // OVERRIDE DE METODO PARA QUE SE AJUSTEN AUTOMATICAMENTE LAS COLUMNAS DE LA
91                 // TABLA SEGUN EL CONTENIDO
92                 tabla = new JTable(tableModelApuestas) {
93                         @Override
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()));
100                                 return component;
101                         }
102
103                 };
104
105                 tabla.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
106                         @Override
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,
110                                                 column);
111
112                                 c.setBackground(row % 2 != 0 ? new Color(233, 233, 233) : Color.WHITE);
113
114                                 return c;
115                         }
116                 });
117
118                 tabla.addMouseListener(new MouseAdapter() {
119                         @Override
120                         public void mouseClicked(MouseEvent ev) {
121
122                                 int column = tabla.getColumnModel().getColumnIndexAtX(ev.getX());
123                                 int row = ev.getY() / tabla.getRowHeight();
124
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;
130                                                 try {
131                                                         int i = tabla.getSelectedRow();
132                                                         Bet apu = apuestasAbiertas.get(i);
133
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");
139
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)) {
146
147                                                                 JOptionPane.showMessageDialog(getContentPane(),
148                                                                                 "La apuesta a " + apu.getForecast().getForecast()
149                                                                                                 + " ha sido anulada. \nEl importe de " + apu.getAmount() + "€"
150                                                                                                 + " será reintegrado inmediatamente...");
151
152                                                                 System.out.println("APUESTA ANULADA");
153 //                                                              lblSaldo.setText(ResourceBundle.getBundle("Etiquetas").getString("MainGUI.lblSaldo")
154 //                                                                              + " " + (newUserActualizado.getBalance() + apu.getAmount()) + "€");
155                                                                 lblSaldo.setText(
156                                                                                 "Balance" + " " + (newUserActualizado.getBalance() + apu.getAmount()) + "€");
157                                                         }
158
159 //                                                      }
160 //                                                      if (dialogButton == JOptionPane.NO_OPTION) {
161 //                                                              System.out.println("CLIC EN NO");
162 //                                                              remove(dialogButton);
163 //                                                      }
164
165                                                         newUserActualizado = facade.getRegularUserByUsername(userlog.getUserName());
166
167                                                 } catch (Exception e) {
168                                                 }
169
170                                         }
171                                 }
172
173                         }
174                 });
175
176                 tabla.setDefaultRenderer(Object.class, new Render());
177
178                 scrollPaneApuestas.setBounds(new Rectangle(40, 190, 996, 119));
179                 scrollPaneApuestas.setViewportView(tabla);
180                 this.getContentPane().add(scrollPaneApuestas);
181
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");
188
189                 btnAtras.addActionListener(new ActionListener() {
190                         @Override
191                         public void actionPerformed(ActionEvent arg0) {
192
193                                 RegularUser usuarioActualizado = facade.getRegularUserByUsername(userlog.getUserName());
194
195                                 JFrame a = new MainGUI(usuarioActualizado);
196                                 a.setAlwaysOnTop(true);
197                                 a.setVisible(true);
198                                 dispose();
199
200                         }
201                 });
202                 btnAtras.setBounds(52, 376, 99, 26);
203                 getContentPane().add(btnAtras);
204
205                 lblApuestas = new JLabel("Apuestas abiertas:");
206                 lblApuestas.setBounds(40, 156, 135, 16);
207                 getContentPane().add(lblApuestas);
208
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);
213
214                 separator = new JSeparator();
215                 separator.setBounds(64, 94, 535, 26);
216                 getContentPane().add(separator);
217
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);
223
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);
229                 panel.add(lblSaldo);
230                 lblSaldo.setFont(new Font("Tahoma", Font.BOLD, 14));
231                 lblSaldo.setForeground(Color.WHITE);
232
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);
237
238         }
239 }