1 package org.wcb.gui.forms;
2
3 import org.wcb.model.vo.hibernate.AircraftBO;
4 import org.wcb.gui.table.model.AircraftSelectModel;
5 import org.wcb.gui.renderer.EditButtonTableCellEditor;
6 import org.wcb.gui.renderer.SelectButtonTableCellEditor;
7 import org.wcb.gui.renderer.DeleteButtonTableCellEditor;
8 import org.wcb.gui.dialog.AircraftTableDisplayDialog;
9 import org.wcb.gui.dialog.AircraftEditDialog;
10 import org.wcb.gui.component.WaveButton;
11 import org.wcb.gui.component.JXTitlePanel;
12 import org.wcb.gui.component.border.SearchFieldBorder;
13 import org.wcb.resources.MessageKey;
14 import org.wcb.resources.MessageResourceRegister;
15 import org.jdesktop.swingx.border.DropShadowBorder;
16
17 import javax.swing.*;
18 import javax.swing.border.Border;
19 import javax.swing.border.CompoundBorder;
20 import java.awt.event.ActionListener;
21 import java.awt.event.ActionEvent;
22 import java.awt.event.KeyListener;
23 import java.awt.event.KeyEvent;
24 import java.awt.*;
25
26
27
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 public class AircraftTableDisplayForm extends JXTitlePanel implements ActionListener, KeyListener {
54
55
56 private JButton jButtonAddAircraft;
57 private JTable jTableAircraft;
58 private JTextField searchField;
59 private AircraftSelectModel tableModel;
60 private AircraftBO aircraft;
61 private AircraftTableDisplayDialog parentDialog;
62
63 public AircraftTableDisplayForm(JDialog comp, boolean bDisplaySelect) {
64 super("Select an Aircraft", new Color(0x522aec));
65 Border shadow = new DropShadowBorder(Color.BLACK, 1, 5, .3f, 15, true, true, true, true);
66 setBorder(new CompoundBorder(shadow, getBorder()));
67 if (comp instanceof AircraftTableDisplayDialog)
68 {
69 parentDialog = (AircraftTableDisplayDialog) comp;
70 }
71 if(bDisplaySelect) {
72 tableModel = new AircraftSelectModel();
73 jTableAircraft = new JTable(tableModel);
74 new SelectButtonTableCellEditor(jTableAircraft, 0, this);
75 new EditButtonTableCellEditor(jTableAircraft, 3);
76 new DeleteButtonTableCellEditor(jTableAircraft, 4);
77 } else {
78 tableModel = new AircraftSelectModel(new String[] {"Registration", "Type", "",""});
79 jTableAircraft = new JTable(tableModel);
80 new EditButtonTableCellEditor(jTableAircraft, 2);
81 new DeleteButtonTableCellEditor(jTableAircraft, 3);
82 }
83 initComponents();
84 }
85
86 private void initComponents() {
87 jButtonAddAircraft = new WaveButton(MessageResourceRegister.getInstance().getValue(MessageKey.BUTTON_ADD_AIRCRAFT));
88 searchField = new JTextField(20);
89 searchField.addKeyListener(this);
90 searchField.setBorder(new SearchFieldBorder());
91
92 setLayout(new BorderLayout());
93
94 JPanel jSearchPanel = new JPanel();
95 jSearchPanel.add(new JLabel(MessageResourceRegister.getInstance().getValue(MessageKey.LABEL_SEARCH_AIRCRAFT)));
96 jSearchPanel.add(searchField);
97 add(jSearchPanel, BorderLayout.NORTH);
98
99 JScrollPane jScrollPane1 = new JScrollPane();
100 jScrollPane1.setBorder(BorderFactory.createTitledBorder("Aircrafts"));
101 jScrollPane1.setViewportView(jTableAircraft);
102
103 add(jScrollPane1, BorderLayout.CENTER);
104
105 JPanel jPanelSouth = new JPanel();
106 jPanelSouth.setLayout(new GridBagLayout());
107 GridBagConstraints gridBagConstraints = new GridBagConstraints();
108 gridBagConstraints.anchor = GridBagConstraints.EAST;
109 jPanelSouth.add(jButtonAddAircraft, gridBagConstraints);
110
111 add(jPanelSouth, BorderLayout.SOUTH);
112 initListeners();
113 }
114
115 private void initListeners() {
116 jButtonAddAircraft.addActionListener(this);
117 }
118
119 public void refresh() {
120 tableModel.refreshModel();
121 }
122
123
124
125
126
127 public AircraftBO getSelectedRow() {
128 return aircraft;
129 }
130
131 public void setSelectedRow(AircraftBO value) {
132 aircraft = value;
133 parentDialog.fireAircraftSelected();
134 }
135
136 public void actionPerformed(ActionEvent evt) {
137 Object src = evt.getSource();
138 if (src.equals(jButtonAddAircraft))
139 {
140 AircraftEditDialog addAircraft = new AircraftEditDialog(this);
141 addAircraft.setVisible(true);
142 }
143 }
144
145 private void search() {
146 String searchString = searchField.getText().toUpperCase();
147 if (searchString.length() > 0) {
148 for (int icount = 0; icount < tableModel.getRowCount(); icount++ ) {
149 AircraftBO aircraft = tableModel.getItemAt(icount);
150 if(aircraft.getRegistrationNumber().startsWith(searchString)) {
151 jTableAircraft.setRowSelectionInterval(icount, icount);
152 break;
153 }
154 }
155 }
156 }
157
158 public void keyTyped(KeyEvent kvt) {
159 this.search();
160 }
161
162 public void keyPressed(KeyEvent evt) {
163
164 }
165
166 public void keyReleased(KeyEvent evt) {
167
168 }
169 }