1 package org.wcb.gui.forms.e6b;
2
3 import org.wcb.e6b.Xhwind;
4 import org.wcb.gui.forms.e6b.event.CalculateFormActionListener;
5
6 import javax.swing.*;
7 import java.awt.*;
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 public class RunwayXWindPanel extends JPanel implements ICalculateForm{
36
37 private JTextField windDirection;
38 private JTextField windSpeed;
39 private JTextField runwayDirection;
40 private JButton calculateButton;
41 private JButton clearButton;
42 private JTextField headWindResults;
43 private JTextField crossWindResults;
44
45 public RunwayXWindPanel() {
46 setBorder(BorderFactory.createTitledBorder("Runway Crosswinds"));
47 initComponents();
48 }
49
50 public void clearForm() {
51 windDirection.setText("");
52 windSpeed.setText("");
53 runwayDirection.setText(null);
54 }
55
56 private void initComponents() {
57 windDirection = new JTextField(5);
58 windSpeed = new JTextField(5);
59 runwayDirection = new JTextField(5);
60
61 calculateButton = new JButton("Calculate Crosswind");
62 clearButton = new JButton("Clear Crosswind Values");
63 headWindResults = new JTextField(20);
64 crossWindResults = new JTextField(20);
65 calculateButton.addActionListener(new CalculateFormActionListener(this));
66 clearButton.addActionListener(new CalculateFormActionListener(this));
67
68 setLayout(new GridBagLayout());
69 GridBagConstraints gridBagConstraints;
70
71 gridBagConstraints = new GridBagConstraints();
72 gridBagConstraints.gridx = 0;
73 gridBagConstraints.gridy = 1;
74 gridBagConstraints.anchor = GridBagConstraints.WEST;
75 add(new JLabel("Wind (from) Compass Direction"), gridBagConstraints);
76
77 gridBagConstraints = new GridBagConstraints();
78 gridBagConstraints.gridx = 1;
79 gridBagConstraints.gridy = 1;
80 gridBagConstraints.anchor = GridBagConstraints.WEST;
81 add(windDirection, gridBagConstraints);
82
83 gridBagConstraints = new GridBagConstraints();
84 gridBagConstraints.gridx = 0;
85 gridBagConstraints.gridy = 2;
86 gridBagConstraints.anchor = GridBagConstraints.WEST;
87 add(new JLabel("Wind Speed"), gridBagConstraints);
88
89 gridBagConstraints = new GridBagConstraints();
90 gridBagConstraints.gridx = 1;
91 gridBagConstraints.gridy = 2;
92 gridBagConstraints.anchor = GridBagConstraints.WEST;
93 add(windSpeed, gridBagConstraints);
94
95 gridBagConstraints = new GridBagConstraints();
96 gridBagConstraints.gridx = 0;
97 gridBagConstraints.gridy = 3;
98 gridBagConstraints.anchor = GridBagConstraints.WEST;
99 add(new JLabel("Runway Heading"), gridBagConstraints);
100
101 gridBagConstraints = new GridBagConstraints();
102 gridBagConstraints.gridx = 1;
103 gridBagConstraints.gridy = 3;
104 gridBagConstraints.anchor = GridBagConstraints.WEST;
105 add(runwayDirection, gridBagConstraints);
106
107
108 gridBagConstraints = new GridBagConstraints();
109 gridBagConstraints.gridx = 0;
110 gridBagConstraints.gridy = 4;
111 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
112 gridBagConstraints.anchor = GridBagConstraints.WEST;
113 add(calculateButton, gridBagConstraints);
114
115 gridBagConstraints = new GridBagConstraints();
116 gridBagConstraints.gridx = 1;
117 gridBagConstraints.gridy = 4;
118 gridBagConstraints.anchor = GridBagConstraints.WEST;
119 add(clearButton, gridBagConstraints);
120
121 gridBagConstraints = new GridBagConstraints();
122 gridBagConstraints.gridx = 0;
123 gridBagConstraints.gridy = 5;
124 gridBagConstraints.anchor = GridBagConstraints.WEST;
125 add(new JLabel("Calculated Headwind="), gridBagConstraints);
126
127 gridBagConstraints = new GridBagConstraints();
128 gridBagConstraints.gridx = 1;
129 gridBagConstraints.gridy = 5;
130 gridBagConstraints.anchor = GridBagConstraints.WEST;
131 add(headWindResults, gridBagConstraints);
132
133 gridBagConstraints = new GridBagConstraints();
134 gridBagConstraints.gridx = 0;
135 gridBagConstraints.gridy = 6;
136 gridBagConstraints.anchor = GridBagConstraints.WEST;
137 add(new JLabel("Calculated Crosswind="), gridBagConstraints);
138
139 gridBagConstraints = new GridBagConstraints();
140 gridBagConstraints.gridx = 1;
141 gridBagConstraints.gridy = 6;
142 gridBagConstraints.anchor = GridBagConstraints.WEST;
143 add(crossWindResults, gridBagConstraints);
144 }
145
146 public Integer getWindSpeed() {
147 int returnValue;
148 try {
149 returnValue = Integer.parseInt(windSpeed.getText());
150 } catch (NumberFormatException nfe) {
151 returnValue = 0;
152 }
153 return returnValue;
154 }
155
156 public void setWindSpeed(int windSpeed) {
157 this.windSpeed.setText(windSpeed + "");
158 }
159
160 public Integer getRunwayDirection() {
161 int returnValue;
162 try {
163 returnValue = Integer.parseInt(runwayDirection.getText());
164 } catch (NumberFormatException nfe) {
165 returnValue = 0;
166 }
167 return returnValue;
168 }
169
170 public void setRunwayDirection(int runwayDirection) {
171 this.runwayDirection.setText(runwayDirection + "");
172 }
173
174 public Integer getWindDirection() {
175 int returnValue;
176 try {
177 returnValue = Integer.parseInt(windDirection.getText());
178 } catch (NumberFormatException nfe) {
179 returnValue = 0;
180 }
181 return returnValue;
182 }
183
184 public void setWindDirection(double windDirection) {
185 this.windDirection.setText(windDirection + "");
186 }
187
188 public void calculateResult() {
189 Xhwind wind = new Xhwind();
190 wind.setRunwayDirection(this.getRunwayDirection());
191 wind.setWindDirection(this.getWindDirection());
192 wind.setWindSpeed(this.getWindSpeed());
193 wind.calculate();
194 headWindResults.setText(Math.abs(wind.getHeadwindResult()) + " knots from a "+ wind.getHeadwindDirection());
195 crossWindResults.setText(Math.abs(wind.getCrosswindResult()) + " knots from the " + wind.getCrossWindDirection());
196 }
197 }