Mercurial > 510Connectbot
annotate src/org/tn5250j/framework/tn5250/ScreenFields.java @ 414:12b2a3a35afe
more debugging looking for duplicate transmission
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Sat, 25 Oct 2014 10:52:39 -0700 |
parents | 77ac18bc1b2f |
children |
rev | line source |
---|---|
3 | 1 /** |
2 * Title: tn5250J | |
3 * Copyright: Copyright (c) 2001 | |
4 * Company: | |
5 * @author Kenneth J. Pouncey | |
6 * @version 0.5 | |
7 * | |
8 * Description: | |
9 * | |
10 * This program is free software; you can redistribute it and/or modify | |
11 * it under the terms of the GNU General Public License as published by | |
12 * the Free Software Foundation; either version 2, or (at your option) | |
13 * any later version. | |
14 * | |
15 * This program is distributed in the hope that it will be useful, | |
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 * GNU General Public License for more details. | |
19 * | |
20 * You should have received a copy of the GNU General Public License | |
21 * along with this software; see the file COPYING. If not, write to | |
22 * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, | |
23 * Boston, MA 02111-1307 USA | |
24 * | |
25 */ | |
26 package org.tn5250j.framework.tn5250; | |
27 | |
28 import static org.tn5250j.TN5250jConstants.CMD_READ_INPUT_FIELDS; | |
29 import static org.tn5250j.TN5250jConstants.CMD_READ_MDT_FIELDS; | |
30 import static org.tn5250j.TN5250jConstants.CMD_READ_MDT_IMMEDIATE_ALT; | |
31 | |
32 import java.io.ByteArrayOutputStream; | |
33 | |
34 import org.tn5250j.encoding.ICodePage; | |
35 | |
36 public class ScreenFields { | |
37 | |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
38 private ScreenField[] screenFields; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
39 private ScreenField currentField; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
40 private ScreenField saveCurrent; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
41 private int sizeFields; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
42 private boolean cpfExists; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
43 private int nextField; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
44 private int fieldIds; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
45 private Screen5250 screen; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
46 private boolean masterMDT; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
47 protected boolean currentModified; |
3 | 48 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
49 public ScreenFields(Screen5250 s) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
50 screen = s; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
51 screenFields = new ScreenField[256]; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
52 } |
3 | 53 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
54 protected void clearFFT() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
55 sizeFields = nextField = fieldIds = 0; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
56 cpfExists = false; // clear the cursor progression fields flag |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
57 currentField = null; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
58 masterMDT = false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
59 } |
3 | 60 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
61 protected boolean existsAtPos(int lastPos) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
62 ScreenField sf = null; |
3 | 63 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
64 // from 14.6.12 for Start of Field Order 5940 function manual |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
65 // examine the format table for an entry that begins at the current |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
66 // starting address plus 1. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
67 for (int x = 0; x < sizeFields; x++) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
68 sf = screenFields[x]; |
3 | 69 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
70 if (lastPos == sf.startPos()) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
71 currentField = sf; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
72 currentModified = false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
73 return true; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
74 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
75 } |
3 | 76 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
77 return false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
78 } |
3 | 79 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
80 public boolean isMasterMDT() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
81 return masterMDT; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
82 } |
3 | 83 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
84 protected void setMasterMDT() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
85 masterMDT = true; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
86 } |
3 | 87 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
88 public boolean isCurrentField() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
89 return currentField == null; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
90 } |
3 | 91 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
92 public boolean isCurrentFieldFER() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
93 return currentField.isFER(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
94 } |
3 | 95 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
96 public boolean isCurrentFieldDupEnabled() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
97 return currentField.isDupEnabled(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
98 } |
3 | 99 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
100 public boolean isCurrentFieldToUpper() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
101 return currentField.isToUpper(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
102 } |
3 | 103 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
104 public boolean isCurrentFieldBypassField() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
105 return currentField.isBypassField(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
106 } |
3 | 107 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
108 public boolean isCurrentFieldHighlightedEntry() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
109 if (currentField != null) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
110 return currentField.isHiglightedEntry(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
111 else |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
112 return false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
113 } |
3 | 114 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
115 public boolean isCurrentFieldAutoEnter() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
116 return currentField.isAutoEnter(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
117 } |
3 | 118 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
119 public boolean withinCurrentField(int pos) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
120 return currentField.withinField(pos); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
121 } |
3 | 122 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
123 public boolean isCurrentFieldContinued() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
124 return currentField.isContinued(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
125 } |
3 | 126 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
127 public boolean isCurrentFieldContinuedFirst() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
128 return currentField.isContinuedFirst(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
129 } |
3 | 130 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
131 public boolean isCurrentFieldContinuedMiddle() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
132 return currentField.isContinuedMiddle(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
133 } |
3 | 134 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
135 public boolean isCurrentFieldContinuedLast() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
136 return currentField.isContinuedLast(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
137 } |
3 | 138 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
139 public boolean isCurrentFieldModified() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
140 return currentModified; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
141 } |
3 | 142 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
143 /** |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
144 * This routine is used to check if we can send the Aid key to the host |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
145 * |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
146 * Taken from Section 16.2.1.2 Enter/Rec Adv Key |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
147 * |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
148 * In the normal unlocked state, when the workstation operator presses the |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
149 * Enter/Rec Adv key: |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
150 * |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
151 * 1. The 5494 checks for the completion of mandatory-fill, self-check, and |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
152 * right-adjust fields when in an active field. (An active field is one in |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
153 * which the workstation operator has begun entering data.) If the |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
154 * requirements of the field have not been satisfied, an error occurs. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
155 * |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
156 * @return |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
157 * |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
158 */ |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
159 public boolean isCanSendAid() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
160 // We also have to check if we are still in the field. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
161 if (currentField != null && |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
162 (currentField.getAdjustment() > 0 || currentField.isSignedNumeric()) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
163 && currentModified && isInField() |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
164 && !currentField.isCanSend()) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
165 return false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
166 else |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
167 return true; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
168 } |
3 | 169 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
170 protected void saveCurrentField() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
171 saveCurrent = currentField; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
172 } |
3 | 173 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
174 protected void restoreCurrentField() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
175 currentField = saveCurrent; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
176 } |
3 | 177 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
178 protected void setCurrentField(ScreenField sf) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
179 currentField = sf; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
180 } |
3 | 181 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
182 protected void setCurrentFieldMDT() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
183 currentField.setMDT(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
184 currentModified = true; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
185 masterMDT = true; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
186 } |
3 | 187 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
188 protected void setCurrentFieldFFWs(int ffw1, int ffw2) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
189 masterMDT = currentField.setFFWs(ffw1, ffw2); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
190 } |
3 | 191 |
192 | |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
193 protected ScreenField setField(int attr, int row, int col, int len, int ffw1, |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
194 int ffw2, int fcw1, int fcw2) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
195 ScreenField sf = null; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
196 screenFields[nextField] = new ScreenField(screen); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
197 screenFields[nextField].setField(attr, row, col, len, ffw1, ffw2, fcw1, fcw2); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
198 sf = screenFields[nextField++]; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
199 sizeFields++; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
200 // set the field id if it is not a bypass field |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
201 // this is used for cursor progression |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
202 // changed this because of problems not allocating field id's for |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
203 // all fields. kjp 2002/10/21 |
3 | 204 // if (!sf.isBypassField()) |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
205 sf.setFieldId(++fieldIds); |
3 | 206 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
207 // check if the cursor progression field flag should be set. |
3 | 208 // if ((fcw1 & 0x88) == 0x88) |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
209 if (fcw1 == 0x88) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
210 cpfExists = true; |
3 | 211 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
212 if (currentField != null) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
213 currentField.next = sf; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
214 sf.prev = currentField; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
215 } |
3 | 216 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
217 currentField = sf; |
3 | 218 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
219 // check if the Modified Data Tag was set while creating the field |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
220 if (!masterMDT) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
221 masterMDT = currentField.mdt; |
3 | 222 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
223 currentModified = false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
224 return currentField; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
225 } |
3 | 226 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
227 public ScreenField getField(int index) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
228 return screenFields[index]; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
229 } |
3 | 230 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
231 public ScreenField getCurrentField() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
232 return currentField; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
233 } |
3 | 234 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
235 public int getCurrentFieldPos() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
236 return currentField.getCurrentPos(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
237 } |
3 | 238 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
239 protected int getCurrentFieldShift() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
240 return currentField.getFieldShift(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
241 } |
3 | 242 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
243 public String getCurrentFieldText() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
244 return currentField.getText(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
245 } |
3 | 246 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
247 public int getCurrentFieldHighlightedAttr() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
248 return currentField.getHighlightedAttr(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
249 } |
3 | 250 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
251 public int getSize() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
252 return sizeFields; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
253 } |
3 | 254 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
255 public int getFieldCount() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
256 return sizeFields; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
257 } |
3 | 258 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
259 protected boolean isInField(int pos) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
260 return isInField(pos, true); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
261 } |
3 | 262 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
263 protected boolean isInField() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
264 return isInField(screen.getLastPos(), true); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
265 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
266 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
267 protected boolean isInField(int pos, boolean chgToField) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
268 ScreenField sf; |
3 | 269 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
270 for (int x = 0; x < sizeFields; x++) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
271 sf = screenFields[x]; |
3 | 272 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
273 if (sf.withinField(pos)) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
274 if (chgToField) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
275 if (!currentField.equals(sf)) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
276 currentModified = false; |
3 | 277 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
278 currentField = sf; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
279 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
280 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
281 return true; |
3 | 282 } |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
283 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
284 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
285 return false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
286 } |
3 | 287 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
288 /** |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
289 * Searches the collection for the target string and returns the iOhioField |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
290 * object containing that string. The string must be totally contained |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
291 * within the field to be considered a match. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
292 * |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
293 * @param targetString The target string. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
294 * @param startPos The row and column where to start the search. The position |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
295 * is inclusive (for example, row 1, col 1 means that |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
296 * position 1,1 will be used as the starting location and |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
297 * 1,1 will be included in the search). |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
298 * @param length The length from startPos to include in the search. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
299 * @param dir An OHIO_DIRECTION value: |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
300 * |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
301 * <table BORDER COLS=3 WIDTH="50%" > |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
302 * <tr><th>Constant </th><th>Value</th> |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
303 * <th>Description</th></tr> |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
304 * <tr><td>OS_OHIO_DIRECTION_FORWARD </td><td>0</td> |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
305 * <td>Forward (beginning towards end)</td></tr> |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
306 * <tr><td>OS_OHIO_DIRECTION_BACKWARD </td><td>1</td> |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
307 * <td>Backward (end towards beginning)</td></tr> |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
308 * </table> |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
309 * Constant Value Description |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
310 * ignoreCase - Indicates whether the search is case sensitive. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
311 * True means that case will be ignored. False means the search will |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
312 * be case sensitive. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
313 * @return If found, an iOhioField object containing the target string. If |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
314 * not found, returns a null. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
315 */ |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
316 public ScreenField findByString(String targetString, |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
317 int startPos, |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
318 int length, |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
319 int dir, |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
320 boolean ignoreCase) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
321 // first lets check if the string exists in the screen space |
3 | 322 // iOhioPosition pos = screen.findString(targetString, startPos, length, |
323 // dir, ignoreCase); | |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
324 // if it does exist then lets search the fields by the position that |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
325 // was found and return the results of that search. |
3 | 326 // if (pos != null) { |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
327 return findByPosition(startPos); |
3 | 328 // } |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
329 //return null; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
330 } |
3 | 331 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
332 /** |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
333 * Searches the collection for the target position and returns the ScreenField |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
334 * object containing that position. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
335 * |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
336 * @param targetPosition The target row and column expressed as a linear |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
337 * position within the presentation space. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
338 * |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
339 * @return If found, a ScreenField object containing the target position. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
340 * If not found, returns a null. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
341 */ |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
342 public ScreenField findByPosition(int targetPosition) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
343 ScreenField sf = null; |
3 | 344 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
345 for (int x = 0; x < sizeFields; x++) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
346 sf = screenFields[x]; |
3 | 347 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
348 if (sf.withinField(targetPosition)) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
349 return sf; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
350 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
351 } |
3 | 352 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
353 return null; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
354 } |
3 | 355 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
356 /** |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
357 * Searches the collection for the target position and returns the ScreenField |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
358 * object containing that position. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
359 * |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
360 * @param row The beginning row to start search with in the presentation space. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
361 * @param col The beginning column to start search with in the presentation space. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
362 * |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
363 * @return If found, a ScreenField object containing the target position. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
364 * If not found, returns a null. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
365 */ |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
366 public ScreenField findByPosition(int row, int col) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
367 return findByPosition(screen.getPos(row, col)); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
368 } |
3 | 369 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
370 public ScreenField[] getFields() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
371 ScreenField[] fields = new ScreenField[sizeFields]; |
3 | 372 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
373 for (int x = 0; x < sizeFields; x++) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
374 fields[x] = screenFields[x]; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
375 } |
3 | 376 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
377 return fields; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
378 } |
3 | 379 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
380 public ScreenField getFirstInputField() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
381 if (sizeFields <= 0) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
382 return null; |
3 | 383 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
384 int f = 0; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
385 ScreenField sf = screenFields[f]; |
3 | 386 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
387 while (sf.isBypassField() && f++ < sizeFields) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
388 sf = screenFields[f]; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
389 } |
3 | 390 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
391 if (sf.isBypassField()) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
392 return null; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
393 else |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
394 return sf; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
395 } |
3 | 396 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
397 public void gotoFieldNext() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
398 // sanity check - we were getting null pointers after a restore of screen |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
399 // and cursor was not positioned on a field when returned |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
400 // *** Note *** to myself |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
401 // maybe this is fixed I will have to check this some time |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
402 int lastPos = screen.getLastPos(); |
3 | 403 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
404 if (currentField == null && (sizeFields != 0) && !isInField(lastPos, true)) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
405 int pos = lastPos; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
406 screen.setCursorOff(); |
3 | 407 screen.advancePos(); |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
408 lastPos = screen.getLastPos(); |
3 | 409 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
410 while (!isInField() && pos != lastPos) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
411 screen.advancePos(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
412 } |
3 | 413 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
414 screen.setCursorOn(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
415 } |
3 | 416 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
417 // if we are still null do nothing |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
418 if (currentField == null) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
419 return; |
3 | 420 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
421 ScreenField sf = currentField; |
3 | 422 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
423 if (!sf.withinField(lastPos)) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
424 screen.setCursorOff(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
425 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
426 if (sizeFields > 0) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
427 // lets get the current position so we can test if we have looped |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
428 // the screen and not found a valid field. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
429 int pos = lastPos; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
430 int savPos = lastPos; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
431 boolean done = false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
432 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
433 do { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
434 screen.advancePos(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
435 lastPos = screen.getLastPos(); |
3 | 436 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
437 if (isInField(lastPos) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
438 || pos == lastPos) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
439 if (!currentField.isBypassField()) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
440 screen.gotoField(currentField); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
441 done = true; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
442 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
443 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
444 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
445 while (!done && lastPos != savPos); |
3 | 446 } |
447 | |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
448 currentModified = false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
449 screen.setCursorOn(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
450 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
451 else { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
452 if (!cpfExists) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
453 do { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
454 sf = sf.next; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
455 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
456 while (sf != null && sf.isBypassField()); |
3 | 457 } |
458 else { | |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
459 int f = 0; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
460 int cp = sf.getCursorProgression(); |
3 | 461 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
462 if (cp == 0) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
463 do { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
464 sf = sf.next; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
465 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
466 while (sf != null && sf.isBypassField()); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
467 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
468 else { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
469 ScreenField sf1 = null; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
470 boolean found = false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
471 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
472 while (!found && f < sizeFields) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
473 sf1 = screenFields[f++]; |
3 | 474 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
475 if (sf1.getFieldId() == cp) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
476 found = true; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
477 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
478 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
479 if (found) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
480 sf = sf1; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
481 else { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
482 do { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
483 sf = sf.next; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
484 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
485 while (sf != null && sf.isBypassField()); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
486 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
487 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
488 sf1 = null; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
489 } |
3 | 490 } |
491 | |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
492 if (sf == null) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
493 screen.gotoField(1); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
494 else { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
495 currentField = sf; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
496 screen.gotoField(currentField); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
497 } |
3 | 498 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
499 currentModified = false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
500 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
501 } |
3 | 502 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
503 public void gotoFieldPrev() { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
504 ScreenField sf = currentField; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
505 int lastPos = screen.getLastPos(); |
3 | 506 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
507 if (!sf.withinField(lastPos)) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
508 screen.setCursorOff(); |
3 | 509 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
510 if (sizeFields > 0) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
511 // lets get the current position so we can test if we have looped |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
512 // the screen and not found a valid field. |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
513 int pos = lastPos; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
514 int savPos = lastPos; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
515 boolean done = false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
516 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
517 do { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
518 screen.changePos(-1); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
519 lastPos = screen.getLastPos(); |
3 | 520 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
521 if (isInField(lastPos) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
522 || (pos == lastPos)) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
523 if (!currentField.isBypassField()) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
524 screen.gotoField(currentField); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
525 done = true; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
526 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
527 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
528 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
529 while (!done && lastPos != savPos); |
3 | 530 } |
531 | |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
532 screen.setCursorOn(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
533 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
534 else { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
535 if (sf.startPos() == lastPos) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
536 if (!cpfExists) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
537 do { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
538 sf = sf.prev; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
539 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
540 while (sf != null && sf.isBypassField()); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
541 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
542 else { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
543 int f = 0; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
544 int cp = sf.getFieldId(); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
545 ScreenField sf1 = null; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
546 boolean found = false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
547 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
548 while (!found && f < sizeFields) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
549 sf1 = screenFields[f++]; |
3 | 550 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
551 if (sf1.getCursorProgression() == cp) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
552 found = true; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
553 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
554 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
555 if (found) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
556 sf = sf1; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
557 else { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
558 do { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
559 sf = sf.prev; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
560 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
561 while (sf != null && sf.isBypassField()); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
562 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
563 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
564 sf1 = null; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
565 } |
3 | 566 } |
567 | |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
568 if (sf == null) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
569 int size = sizeFields; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
570 sf = screenFields[size - 1]; |
3 | 571 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
572 while (sf.isBypassField() && size-- > 0) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
573 sf = screenFields[size]; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
574 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
575 } |
3 | 576 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
577 currentField = sf; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
578 currentModified = false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
579 screen.gotoField(currentField); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
580 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
581 } |
3 | 582 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
583 protected void readFormatTable(ByteArrayOutputStream baosp, int readType, ICodePage codePage) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
584 ScreenField sf; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
585 boolean isSigned = false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
586 char c; |
3 | 587 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
588 if (masterMDT) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
589 StringBuffer sb = new StringBuffer(); |
3 | 590 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
591 for (int x = 0; x < sizeFields; x++) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
592 isSigned = false; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
593 sf = screenFields[x]; |
3 | 594 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
595 if (sf.mdt || (readType == CMD_READ_INPUT_FIELDS)) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
596 sb.setLength(0); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
597 sb.append(sf.getText()); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
598 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
599 if (readType == CMD_READ_MDT_FIELDS || |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
600 readType == CMD_READ_MDT_IMMEDIATE_ALT) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
601 int len = sb.length() - 1; |
3 | 602 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
603 // we strip out all '\u0020' and less |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
604 while (len >= 0 && |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
605 // (sb.charAt(len) <= ' ' || sb.charAt(len) >= '\uff20' )) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
606 (sb.charAt(len) < ' ' || sb.charAt(len) >= '\uff20')) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
607 // if we have the dup character and dup is enabled then we |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
608 // stop here |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
609 if (sb.charAt(len) == 0x1C && sf.isDupEnabled()) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
610 break; |
3 | 611 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
612 sb.deleteCharAt(len--); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
613 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
614 } |
3 | 615 |
616 // System.out.println("field " + sf.toString()); | |
617 // System.out.println(">" + sb.toString() + "<"); | |
618 // System.out.println(" field is all nulls"); | |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
619 if (sf.isSignedNumeric() && sb.length() > 0 && sb.charAt(sb.length() - 1) == '-') { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
620 isSigned = true; |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
621 sb.setLength(sb.length() - 1); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
622 } |
3 | 623 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
624 int len3 = sb.length(); |
3 | 625 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
626 if (len3 > 0 || (readType == CMD_READ_MDT_FIELDS || |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
627 readType == CMD_READ_MDT_IMMEDIATE_ALT)) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
628 if ((readType == CMD_READ_MDT_FIELDS || |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
629 readType == CMD_READ_MDT_IMMEDIATE_ALT)) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
630 baosp.write(17); // start of field data |
3 | 631 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
632 if (sf.isSelectionField()) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
633 baosp.write(screen.getRow(sf.selectionPos) + 1); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
634 baosp.write(screen.getCol(sf.selectionPos) + 1); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
635 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
636 else { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
637 baosp.write(sf.startRow() + 1); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
638 baosp.write(sf.startCol() + 1); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
639 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
640 } |
3 | 641 |
642 // int len = sb.length(); | |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
643 if (sf.isSelectionField()) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
644 baosp.write(0); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
645 baosp.write(sf.selectionIndex + 0x1F); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
646 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
647 else { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
648 for (int k = 0; k < len3; k++) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
649 c = sb.charAt(k); |
3 | 650 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
651 // here we have to check for special instances of the |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
652 // characters in the string field. Attribute bytes |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
653 // are encoded with an offset of \uff00 |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
654 // This is a hack !!!!!!!!!!! |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
655 // See ScreenField object for a description |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
656 if (c < ' ' || c >= '\uff20') { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
657 // if it is an offset attribute byte we just pass |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
658 // it straight on to the output stream |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
659 if (c >= '\uff20' && c <= '\uff3f') { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
660 baosp.write(c - '\uff00'); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
661 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
662 else |
3 | 663 |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
664 // check for dup character |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
665 if (c == 0x1C) |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
666 baosp.write(c); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
667 else |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
668 baosp.write(codePage.uni2ebcdic(' ')); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
669 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
670 else { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
671 if (isSigned && k == len3 - 1) { |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
672 baosp.write(0xd0 | (0x0f & c)); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
673 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
674 else |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
675 baosp.write(codePage.uni2ebcdic(c)); |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
676 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
677 } |
3 | 678 } |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
679 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
680 } |
3 | 681 } |
112
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
682 } |
77ac18bc1b2f
cleanup java formatting
Carl Byington <carl@five-ten-sg.com>
parents:
69
diff
changeset
|
683 } |
3 | 684 |
685 } |