1 package org.wcb.gui.renderer;
2
3 import org.wcb.resources.MessageResourceRegister;
4 import org.wcb.resources.MessageKey;
5 import org.wcb.model.vo.hibernate.Logbook;
6 import org.wcb.model.vo.hibernate.AircraftBO;
7 import org.wcb.model.vo.hibernate.AirportBO;
8 import org.wcb.model.vo.TotalLogEntriesVO;
9 import org.wcb.model.bd.LogbookDelegate;
10 import org.wcb.model.bd.AircraftDelegate;
11 import org.wcb.model.bd.AirportDelegate;
12 import org.wcb.model.util.SpringUtil;
13 import org.wcb.model.service.IServicesConstants;
14 import org.wcb.gui.table.model.AircraftSelectModel;
15 import org.wcb.gui.table.model.LogbookTableModel;
16 import org.wcb.gui.table.model.AirportModel;
17
18 import javax.swing.*;
19 import javax.swing.table.TableCellRenderer;
20 import javax.swing.table.TableCellEditor;
21 import javax.swing.table.TableColumnModel;
22 import javax.swing.table.TableModel;
23 import java.awt.event.ActionListener;
24 import java.awt.event.ActionEvent;
25 import java.awt.*;
26 import java.net.URL;
27 import java.text.SimpleDateFormat;
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 public class DeleteButtonTableCellEditor extends AbstractCellEditor
57 implements TableCellRenderer, TableCellEditor, ActionListener
58 {
59 private JButton renderButton;
60 private JButton deleteButton;
61 private Object tableObject;
62 private TableModel model;
63 private int selectedRow;
64 private JLabel blankLabel = new JLabel("");
65
66 public DeleteButtonTableCellEditor(JTable table, int column)
67 {
68 super();
69 URL rptImageURL = DeleteButtonTableCellEditor.class.getClassLoader().getResource("org/wcb/resources/gui/delete.png");
70 ImageIcon deleteIcon = new ImageIcon(rptImageURL);
71 renderButton = new JButton(deleteIcon);
72 renderButton.setToolTipText(MessageResourceRegister.getInstance().getValue(MessageKey.BUTTON_DELETE));
73 deleteButton = new JButton(deleteIcon);
74 deleteButton.setToolTipText(MessageResourceRegister.getInstance().getValue(MessageKey.BUTTON_DELETE));
75 deleteButton.setFocusPainted(false);
76 deleteButton.addActionListener(this);
77 TableColumnModel columnModel = table.getColumnModel();
78 model = table.getModel();
79 columnModel.getColumn(column).setCellRenderer(this);
80 columnModel.getColumn(column).setCellEditor(this);
81 columnModel.getColumn(column).setMaxWidth(25);
82 table.setRowHeight(20);
83 }
84
85 public Component getTableCellRendererComponent(
86 JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
87 {
88 if(value instanceof TotalLogEntriesVO)
89 {
90 blankLabel.setBackground(new Color(0x000a5a));
91 return blankLabel;
92 }
93 if (hasFocus)
94 {
95 renderButton.setForeground(table.getForeground());
96 renderButton.setBackground(UIManager.getColor("Button.background"));
97 }
98 else if (isSelected)
99 {
100 renderButton.setForeground(table.getSelectionForeground());
101 renderButton.setBackground(table.getSelectionBackground());
102 }
103 else
104 {
105 renderButton.setForeground(table.getForeground());
106 renderButton.setBackground(UIManager.getColor("Button.background"));
107 }
108 return renderButton;
109 }
110
111 public Component getTableCellEditorComponent(
112 JTable table, Object value, boolean isSelected, int row, int column)
113 {
114 if(value instanceof TotalLogEntriesVO) {
115 tableObject = "";
116 blankLabel.setBackground(new Color(0x000a5a));
117 return blankLabel;
118 }
119 tableObject = value;
120 selectedRow = row;
121 return deleteButton;
122 }
123
124 public Object getCellEditorValue()
125 {
126 return tableObject;
127 }
128
129 public void actionPerformed(ActionEvent e)
130 {
131 fireEditingStopped();
132 if (tableObject instanceof Logbook)
133 {
134 deleteLogbookEntry();
135 }
136 if (tableObject instanceof AircraftBO)
137 {
138 confirmDeleteAircraftEntry();
139 }
140 if (tableObject instanceof AirportBO)
141 {
142 confirmDeleteAirportEntry();
143 }
144 }
145
146 private void confirmDeleteAirportEntry() {
147 AirportBO itemSelected = (AirportBO) tableObject;
148 int optionselected = JOptionPane.showConfirmDialog(null,"Do you want to delete the airport " + itemSelected.getFaa() + "? \n It does not cause any reporting problems.", "Confirm Delete", JOptionPane.YES_NO_OPTION);
149 if (optionselected == JOptionPane.YES_OPTION) {
150 AirportDelegate delegate = (AirportDelegate) SpringUtil.getApplicationContext().getBean(IServicesConstants.AIRPORT_DELEGATE);
151 boolean success = delegate.deleteAirport(itemSelected);
152 if (success) {
153 ((AirportModel)model).removeRow(selectedRow);
154 }
155 }
156 }
157
158 private void confirmDeleteAircraftEntry() {
159 AircraftBO itemSelected = (AircraftBO) tableObject;
160 LogbookDelegate logDelegate = new LogbookDelegate();
161 if (logDelegate.isAirplaneInLogbook(itemSelected.getRegistrationNumber())) {
162 int optionselected = JOptionPane.showConfirmDialog(null, "Do you want to delete " + itemSelected.getRegistrationNumber() + "? \n This may cause issues on reports, such as the FAA 8710,\n because aircraft deleted are defaulted to AIRPLANE types.", "Confirm Delete", JOptionPane.YES_NO_OPTION);
163 if (optionselected == JOptionPane.YES_OPTION) {
164 AircraftDelegate delegate = (AircraftDelegate) SpringUtil.getApplicationContext().getBean(IServicesConstants.AIRCRAFT_DELEGATE);
165 boolean success = delegate.deleteAircraft(itemSelected);
166 if (success) {
167 ((AircraftSelectModel)model).removeRow(selectedRow);
168 }
169 }
170 } else {
171 AircraftDelegate delegate = (AircraftDelegate) SpringUtil.getApplicationContext().getBean(IServicesConstants.AIRCRAFT_DELEGATE);
172 boolean success = delegate.deleteAircraft(itemSelected);
173 if (success) {
174 ((AircraftSelectModel)model).removeRow(selectedRow);
175 }
176 }
177 }
178
179 private void deleteLogbookEntry() {
180 Logbook itemSelected = (Logbook) tableObject;
181 SimpleDateFormat formatter = new SimpleDateFormat("MMM dd, yyyy");
182 int optionselected = JOptionPane.showConfirmDialog(null, "Do you want to delete the entry \nfor the date " + formatter.format(itemSelected.getEntryDate()) + "?", "Confirm Delete", JOptionPane.YES_NO_OPTION);
183 if (optionselected == JOptionPane.YES_OPTION) {
184 LogbookDelegate delegate = new LogbookDelegate();
185 boolean success = delegate.deleteLogEntry(itemSelected);
186 if (success) {
187 ((LogbookTableModel)model).removeRow(selectedRow);
188 }
189 }
190 }
191 }