Mercurial > 510Connectbot
diff src/org/tn5250j/framework/tn5250/WTDSFParser.java @ 112:77ac18bc1b2f
cleanup java formatting
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Wed, 18 Jun 2014 13:03:01 -0700 |
parents | b29b39f386a4 |
children |
line wrap: on
line diff
--- a/src/org/tn5250j/framework/tn5250/WTDSFParser.java Wed Jun 18 13:00:19 2014 -0700 +++ b/src/org/tn5250j/framework/tn5250/WTDSFParser.java Wed Jun 18 13:03:01 2014 -0700 @@ -53,143 +53,133 @@ */ public class WTDSFParser { private static final String TAG = "WTDSFParser"; - private Screen5250 screen52; - private tnvt vt; - private ICodePage codePage; - int pos; - byte[] segment; - int length; - boolean error; - boolean guiStructsExist; + private Screen5250 screen52; + private tnvt vt; + private ICodePage codePage; + int pos; + byte[] segment; + int length; + boolean error; + boolean guiStructsExist; - private final List<Window> guiStructs = new ArrayList<Window>(3); - private final List<ChoiceField> choices = new ArrayList<ChoiceField>(3); + private final List<Window> guiStructs = new ArrayList<Window>(3); + private final List<ChoiceField> choices = new ArrayList<ChoiceField>(3); - WTDSFParser (tnvt vt) { + WTDSFParser(tnvt vt) { + this.vt = vt; + screen52 = vt.screen52; + codePage = vt.codePage; + } - this.vt = vt; - screen52 = vt.screen52; - codePage = vt.codePage; - - } - - protected class ChoiceField { + protected class ChoiceField { - int x; - int y; - int row; - int col; - int width; - int height; - char mnemonic; - int fieldId; - int selectIndex; + int x; + int y; + int row; + int col; + int width; + int height; + char mnemonic; + int fieldId; + int selectIndex; - ChoiceField(int row, int col, int fldRow, int fldCol) { - x = row; - y = col; - row = fldRow; - col = fldCol; - } - } + ChoiceField(int row, int col, int fldRow, int fldCol) { + x = row; + y = col; + row = fldRow; + col = fldCol; + } + } - protected class Window { + protected class Window { - byte[] window; - int pos; + byte[] window; + int pos; - Window(byte[] seg, int pos) { - - //Log.i(TAG,"window created at " + pos); - window = seg; - this.pos = pos; - guiStructsExist = true; - } + Window(byte[] seg, int pos) { + //Log.i(TAG,"window created at " + pos); + window = seg; + this.pos = pos; + guiStructsExist = true; + } - } - - protected void addChoiceField(int row,int col,int fldRow, int fldCol, String text) { - - ChoiceField cf = new ChoiceField(row,col, fldRow, fldCol); - cf.fieldId = screen52.getScreenFields().getCurrentField().getFieldId(); - choices.add(cf); + } - } - - protected boolean isGuisExists () { + protected void addChoiceField(int row, int col, int fldRow, int fldCol, String text) { + ChoiceField cf = new ChoiceField(row, col, fldRow, fldCol); + cf.fieldId = screen52.getScreenFields().getCurrentField().getFieldId(); + choices.add(cf); + } - return guiStructsExist; + protected boolean isGuisExists() { + return guiStructsExist; + } - } + protected byte[] getSegmentAtPos(int pos) { + int len = guiStructs.size(); - protected byte[] getSegmentAtPos(int pos) { - int len = guiStructs.size(); - for (int x = 0; x < len; x++) { - Window w = guiStructs.get(x); - if (w.pos == pos) - return w.window; - } + for (int x = 0; x < len; x++) { + Window w = guiStructs.get(x); - return null; + if (w.pos == pos) + return w.window; + } - } - - protected void clearGuiStructs() { + return null; + } - guiStructs.clear(); - } - - protected boolean parseWriteToDisplayStructuredField(byte[] seg) { - -// bk = vt.bk; + protected void clearGuiStructs() { + guiStructs.clear(); + } - error = false; - boolean done = false; - boolean windowDefined = false; + protected boolean parseWriteToDisplayStructuredField(byte[] seg) { +// bk = vt.bk; + error = false; + boolean done = false; + boolean windowDefined = false; // int nextone; - pos = 0; - segment = seg; - + pos = 0; + segment = seg; // try { - length = (( segment[pos++] & 0xff )<< 8 | (segment[pos++] & 0xff)); + length = ((segment[pos++] & 0xff) << 8 | (segment[pos++] & 0xff)); - while (!done) { + while (!done) { int s = segment[pos++] & 0xff; - switch (s) { - - case 0xD9: // Class Type 0xD9 - Create Window - switch (segment[pos++]) { - case 0x50: // Define Selection Field - - defineSelectionField(length); - done = true; - break; - case 0x51: // Create Window + switch (s) { + case 0xD9: // Class Type 0xD9 - Create Window + switch (segment[pos++]) { + case 0x50: // Define Selection Field + defineSelectionField(length); + done = true; + break; - guiStructs.add(new Window(segment, screen52.getLastPos())); + case 0x51: // Create Window + guiStructs.add(new Window(segment, screen52.getLastPos())); + boolean cr = false; + int rows = 0; + int cols = 0; - boolean cr = false; - int rows = 0; - int cols = 0; - // pull down not supported yet - if ((segment[pos++] & 0x80) == 0x80) - cr = true; // restrict cursor - pos++; // get reserved field pos 6 - pos++; // get reserved field pos 7 - rows = segment[pos++]; // get window depth rows pos 8 - cols = segment[pos++]; // get window width cols pos 9 - length -= 9; - if (length == 0) { - done = true; + // pull down not supported yet + if ((segment[pos++] & 0x80) == 0x80) + cr = true; // restrict cursor + + pos++; // get reserved field pos 6 + pos++; // get reserved field pos 7 + rows = segment[pos++]; // get window depth rows pos 8 + cols = segment[pos++]; // get window width cols pos 9 + length -= 9; + + if (length == 0) { + done = true; // System.out.println("Create Window"); // System.out.println(" restrict cursor " + cr); // System.out.println(" Depth = " + rows + " Width = " + cols); // screen52.createWindow(rows,cols,1,true,32,58, - createWindow(rows,cols,1,true,32,58, + createWindow(rows, cols, 1, true, 32, 58, '.', '.', '.', @@ -198,91 +188,97 @@ ':', '.', ':'); - windowDefined = true; - break; - } + windowDefined = true; + break; + } - // pos 10 is Minor Structure - int ml = 0; - int type = 0; - int lastPos = screen52.getLastPos(); + // pos 10 is Minor Structure + int ml = 0; + int type = 0; + int lastPos = screen52.getLastPos(); // if (cr) // screen52.setPendingInsert(true, // screen52.getCurrentRow(), // screen52.getCurrentCol()); - int mAttr = 0; - int cAttr = 0; - - while (length > 0) { + int mAttr = 0; + int cAttr = 0; - // get minor length - ml = ( segment[pos++] & 0xff ); - length -= ml; + while (length > 0) { + // get minor length + ml = (segment[pos++] & 0xff); + length -= ml; + // only normal windows are supported at this time + type = segment[pos++]; - // only normal windows are supported at this time - type = segment[pos++]; + switch (type) { + case 0x01 : // Border presentation + boolean gui = false; - switch (type) { + if ((segment[pos++] & 0x80) == 0x80) + gui = true; - case 0x01 : // Border presentation - boolean gui = false; - if ((segment[pos++] & 0x80) == 0x80) - gui = true; - mAttr = segment[pos++]; - cAttr = segment[pos++]; + mAttr = segment[pos++]; + cAttr = segment[pos++]; + char ul = '.'; + char upper = '.'; + char ur = '.'; + char left = ':'; + char right = ':'; + char ll = ':'; + char bottom = '.'; + char lr = ':'; - char ul = '.'; - char upper = '.'; - char ur = '.'; - char left = ':'; - char right = ':'; - char ll = ':'; - char bottom = '.'; - char lr = ':'; + // if minor length is greater than 5 then + // the border characters are specified + if (ml > 5) { + ul = codePage.ebcdic2uni(segment[pos++]); - // if minor length is greater than 5 then - // the border characters are specified - if (ml > 5) { - ul = codePage.ebcdic2uni(segment[pos++]); // ul = getASCIIChar(segment[pos++]); - if (ul == 0) - ul = '.'; + if (ul == 0) + ul = '.'; + + upper = codePage.ebcdic2uni(segment[pos++]); - upper = codePage.ebcdic2uni(segment[pos++]); // upper = getASCIIChar(segment[pos++]); - if (upper == 0) - upper = '.'; + if (upper == 0) + upper = '.'; + + ur = codePage.ebcdic2uni(segment[pos++]); - ur = codePage.ebcdic2uni(segment[pos++]); // ur = getASCIIChar(segment[pos++]); - if (ur == 0) - ur = '.'; + if (ur == 0) + ur = '.'; + + left = codePage.ebcdic2uni(segment[pos++]); - left = codePage.ebcdic2uni(segment[pos++]); // left = getASCIIChar(segment[pos++]); - if (left == 0) - left = ':'; + if (left == 0) + left = ':'; + + right = codePage.ebcdic2uni(segment[pos++]); - right = codePage.ebcdic2uni(segment[pos++]); // right = getASCIIChar(segment[pos++]); - if (right == 0) - right = ':'; + if (right == 0) + right = ':'; - ll = codePage.ebcdic2uni(segment[pos++]); + ll = codePage.ebcdic2uni(segment[pos++]); + // ll = getASCIIChar(segment[pos++]); - if (ll == 0) - ll = ':'; + if (ll == 0) + ll = ':'; - bottom = codePage.ebcdic2uni(segment[pos++]); + bottom = codePage.ebcdic2uni(segment[pos++]); + // bottom = getASCIIChar(segment[pos++]); - if (bottom == 0) - bottom = '.'; + if (bottom == 0) + bottom = '.'; - lr = codePage.ebcdic2uni(segment[pos++]); + lr = codePage.ebcdic2uni(segment[pos++]); + // lr = getASCIIChar(segment[pos++]); - if (lr == 0) - lr = ':'; - } + if (lr == 0) + lr = ':'; + } // System.out.println("Create Window"); // System.out.println(" restrict cursor " + cr); @@ -298,42 +294,43 @@ // " lr = " + lr // ); // screen52.createWindow(rows,cols,type,gui,mAttr,cAttr, - createWindow(rows,cols,type,gui,mAttr,cAttr, - ul, - upper, - ur, - left, - right, - ll, - bottom, - lr); - windowDefined = true; - break; - // - // The following shows the input for window with a title - // - // +0000 019A12A0 00000400 00020411 00200107 .?.?..?...?..?. - // +0010 00000018 00000011 06131500 37D95180 ........?.?..R?? - // +0020 00000A24 0D018023 23404040 40404040 ..??..??? - // +0030 40211000 000000D7 C2C1D9C4 C5D4D67A \uFFFD.....PBARDEMO: - // +0040 40D79996 879985A2 A2408281 99408485 Progress bar de - // +0050 94961108 1520D5A4 94828599 40968640 mo.???Number of - // +0060 8595A399 8985A24B 4B4B4B4B 4B7A2011 entries......:?. - // +0070 082E2040 404040F5 F0F06BF0 F0F02011 ?.? 500,000?. - // +0080 091520C3 A4999985 95A34085 95A399A8 \uFFFD??Current entry - // +0090 4095A494 8285994B 4B4B7A20 11092E20 number...:?.\uFFFD.? - // +00A0 40404040 4040F56B F0F0F020 110A1520 5,000?.??? - // +00B0 D9859481 89958995 87408595 A3998985 Remaining entrie - // +00C0 A24B4B4B 4B4B4B7A 20110A2E 20404040 s......:?.?.? - // +00D0 40F4F9F5 6BF0F0F0 20110C15 20E2A381 495,000?..??Sta - // +00E0 99A340A3 8994854B 4B4B4B4B 4B4B4B4B rt time......... - // +00F0 4B4B4B4B 7A20110C 2F2040F7 7AF5F37A ....:?...? 7:53: + createWindow(rows, cols, type, gui, mAttr, cAttr, + ul, + upper, + ur, + left, + right, + ll, + bottom, + lr); + windowDefined = true; + break; - case 0x10 : // Window title/footer - if (!windowDefined) { + // + // The following shows the input for window with a title + // + // +0000 019A12A0 00000400 00020411 00200107 .?.?..?...?..?. + // +0010 00000018 00000011 06131500 37D95180 ........?.?..R?? + // +0020 00000A24 0D018023 23404040 40404040 ..??..??? + // +0030 40211000 000000D7 C2C1D9C4 C5D4D67A \uFFFD.....PBARDEMO: + // +0040 40D79996 879985A2 A2408281 99408485 Progress bar de + // +0050 94961108 1520D5A4 94828599 40968640 mo.???Number of + // +0060 8595A399 8985A24B 4B4B4B4B 4B7A2011 entries......:?. + // +0070 082E2040 404040F5 F0F06BF0 F0F02011 ?.? 500,000?. + // +0080 091520C3 A4999985 95A34085 95A399A8 \uFFFD??Current entry + // +0090 4095A494 8285994B 4B4B7A20 11092E20 number...:?.\uFFFD.? + // +00A0 40404040 4040F56B F0F0F020 110A1520 5,000?.??? + // +00B0 D9859481 89958995 87408595 A3998985 Remaining entrie + // +00C0 A24B4B4B 4B4B4B7A 20110A2E 20404040 s......:?.?.? + // +00D0 40F4F9F5 6BF0F0F0 20110C15 20E2A381 495,000?..??Sta + // +00E0 99A340A3 8994854B 4B4B4B4B 4B4B4B4B rt time......... + // +00F0 4B4B4B4B 7A20110C 2F2040F7 7AF5F37A ....:?...? 7:53: + + case 0x10 : // Window title/footer + if (!windowDefined) { // screen52.createWindow(rows,cols,1,true,32,58, - guiStructs.add(new Window(segment, screen52.getLastPos())); - createWindow(rows,cols,1,true,32,58, + guiStructs.add(new Window(segment, screen52.getLastPos())); + createWindow(rows, cols, 1, true, 32, 58, '.', '.', '.', @@ -342,608 +339,562 @@ ':', '.', ':'); - windowDefined = true; - } - - byte orientation = segment[pos++]; - mAttr = segment[pos++]; - cAttr = segment[pos++]; + windowDefined = true; + } - //reserved - pos++; - ml -= 6; + byte orientation = segment[pos++]; + mAttr = segment[pos++]; + cAttr = segment[pos++]; + //reserved + pos++; + ml -= 6; + StringBuffer hfBuffer = new StringBuffer(ml); - StringBuffer hfBuffer = new StringBuffer(ml); - while (ml-- > 0) { - //LDC - 13/02/2003 - Convert it to unicode - hfBuffer.append(codePage.ebcdic2uni(segment[pos++])); + while (ml-- > 0) { + //LDC - 13/02/2003 - Convert it to unicode + hfBuffer.append(codePage.ebcdic2uni(segment[pos++])); // hfBuffer.append(getASCIIChar(segment[pos++])); - - } + } - Log.d(TAG, - " orientation " + Integer.toBinaryString(orientation) + - " mAttr " + mAttr + - " cAttr " + cAttr + - " Header/Footer " + hfBuffer); - screen52.writeWindowTitle(lastPos, - rows, - cols, - orientation, - mAttr, - cAttr, - hfBuffer); - break; - default: - Log.w(TAG,"Invalid Window minor structure"); - length = 0; - done = true; - } + Log.d(TAG, + " orientation " + Integer.toBinaryString(orientation) + + " mAttr " + mAttr + + " cAttr " + cAttr + + " Header/Footer " + hfBuffer); + screen52.writeWindowTitle(lastPos, + rows, + cols, + orientation, + mAttr, + cAttr, + hfBuffer); + break; - } - - done = true; + default: + Log.w(TAG, "Invalid Window minor structure"); + length = 0; + done = true; + } + } - break; - - case 0x53: // Scroll Bar - int sblen = 15; - byte sbflag = segment[pos++]; // flag position 5 + done = true; + break; - pos++; // reserved position 6 - - // position 7,8 - int totalRowScrollable = (( segment[pos++] & 0xff )<< 8 - | (segment[pos++] & 0xff)); - - // position 9,10 - int totalColScrollable = (( segment[pos++] & 0xff )<< 8 + case 0x53: // Scroll Bar + int sblen = 15; + byte sbflag = segment[pos++]; // flag position 5 + pos++; // reserved position 6 + // position 7,8 + int totalRowScrollable = ((segment[pos++] & 0xff) << 8 + | (segment[pos++] & 0xff)); + // position 9,10 + int totalColScrollable = ((segment[pos++] & 0xff) << 8 + | (segment[pos++] & 0xff)); + // position 11,12 + int sliderRowPos = ((segment[pos++] & 0xff) << 8 | (segment[pos++] & 0xff)); - - // position 11,12 - int sliderRowPos = (( segment[pos++] & 0xff )<< 8 + // position 13,14 + int sliderColPos = ((segment[pos++] & 0xff) << 8 | (segment[pos++] & 0xff)); - - // position 13,14 - int sliderColPos = (( segment[pos++] & 0xff )<< 8 - | (segment[pos++] & 0xff)); - - // position 15 - int sliderRC = segment[pos++]; + // position 15 + int sliderRC = segment[pos++]; + screen52.createScrollBar(sbflag, totalRowScrollable, + totalColScrollable, + sliderRowPos, + sliderColPos, + sliderRC); + length -= 15; + done = true; + break; - screen52.createScrollBar(sbflag,totalRowScrollable, - totalColScrollable, - sliderRowPos, - sliderColPos, - sliderRC); - length -= 15; - - done = true; - - break; - - case 0x5B: // Remove GUI ScrollBar field + case 0x5B: // Remove GUI ScrollBar field + pos++; // reserved must be set to off pos 5 + pos++; // reserved must be set to zero pos 6 + done = true; + break; - pos++; // reserved must be set to off pos 5 - pos++; // reserved must be set to zero pos 6 - - done = true; - break; + case 0x5F: // Remove All GUI Constructs + Log.i(TAG, "remove all gui contructs"); + clearGuiStructs(); + guiStructsExist = false; + int len = 4; + int d = 0; + length -= s; - case 0x5F: // Remove All GUI Constructs - Log.i(TAG,"remove all gui contructs"); - clearGuiStructs(); - guiStructsExist = false; - int len = 4; - int d = 0; - length -= s; - while (--len > 0) - d = segment[pos++]; + while (--len > 0) + d = segment[pos++]; + // if (length > 0) { // len = (segment[pos++] & 0xff )<< 8; // // while (--len > 0) // d = segment[pos++]; // } + screen52.clearGuiStuff(); + // per 14.6.13.4 documentation we should clear the + // format table after this command + screen52.clearTable(); + done = true; + break; - screen52.clearGuiStuff(); - // per 14.6.13.4 documentation we should clear the - // format table after this command - screen52.clearTable(); - done = true; - break; - case 0x59: // remove gui window - Log.i(TAG," remove window at " + screen52.getCurrentPos()); - done = true; - break; + case 0x59: // remove gui window + Log.i(TAG, " remove window at " + screen52.getCurrentPos()); + done = true; + break; - case 0x60: // Erase/Draw Grid Lines - not supported - // do not know what they are - // as of 03/11/2002 we should not be getting - // this anymore but I will leave it here - // just in case. + case 0x60: // Erase/Draw Grid Lines - not supported + // do not know what they are + // as of 03/11/2002 we should not be getting + // this anymore but I will leave it here + // just in case. // System.out.println("erase/draw grid lines " + length); - len = 6; - d = 0; - length -= 9; - while (--len > 0) - d = segment[pos++]; - if (length > 0) { - len = (segment[pos++] & 0xff )<< 8; + len = 6; + d = 0; + length -= 9; + + while (--len > 0) + d = segment[pos++]; + + if (length > 0) { + len = (segment[pos++] & 0xff) << 8; + + while (--len > 0) { + d = segment[pos++]; + } + } + + done = true; + break; - while (--len > 0) { - d = segment[pos++]; - } - } - done = true; - break; - default: - vt.sendNegResponse(NR_REQUEST_ERROR,0x03,0x01,0x01,"invalid wtd structured field sub command " - + ( pos - 1)); + default: + vt.sendNegResponse(NR_REQUEST_ERROR, 0x03, 0x01, 0x01, "invalid wtd structured field sub command " + + (pos - 1)); // + bk.getByteOffset(-1)); - error = true; - break; - } - break; + error = true; + break; + } + + break; - default: - vt.sendNegResponse(NR_REQUEST_ERROR,0x03,0x01,0x01, - "invalid wtd structured field command " - + (pos - 1)); + default: + vt.sendNegResponse(NR_REQUEST_ERROR, 0x03, 0x01, 0x01, + "invalid wtd structured field command " + + (pos - 1)); // + bk.getByteOffset(-1)); - error = true; - break; + error = true; + break; } if (error) - done = true; + done = true; + } - } // } // catch (Exception e) {}; - - return error; - - } - - /** - * Creates a window on the screen - * - * @param depth - * @param width - * @param type - * @param gui - * @param monoAttr - * @param colorAttr - * @param ul - * @param upper - * @param ur - * @param left - * @param right - * @param ll - * @param bottom - * @param lr - */ - protected void createWindow(int depth, int width, int type, boolean gui, - int monoAttr, int colorAttr, int ul, int upper, int ur, int left, - int right, int ll, int bottom, int lr) { - - int lastPos = screen52.getLastPos(); - int numCols = screen52.getColumns(); - - int c = screen52.getCol(lastPos); - int w = 0; - width++; + return error; + } - w = width; - char initChar = Screen5250.initChar; - int initAttr = Screen5250.initAttr; - - // set leading attribute byte - screen52.setScreenCharAndAttr(initChar, initAttr, true); - - // set upper left - if (gui) { - screen52.setScreenCharAndAttr((char) ul, colorAttr, UPPER_LEFT, false); - } - else { - screen52.setScreenCharAndAttr((char) ul, colorAttr, false); - } + /** + * Creates a window on the screen + * + * @param depth + * @param width + * @param type + * @param gui + * @param monoAttr + * @param colorAttr + * @param ul + * @param upper + * @param ur + * @param left + * @param right + * @param ll + * @param bottom + * @param lr + */ + protected void createWindow(int depth, int width, int type, boolean gui, + int monoAttr, int colorAttr, int ul, int upper, int ur, int left, + int right, int ll, int bottom, int lr) { + int lastPos = screen52.getLastPos(); + int numCols = screen52.getColumns(); + int c = screen52.getCol(lastPos); + int w = 0; + width++; + w = width; + char initChar = Screen5250.initChar; + int initAttr = Screen5250.initAttr; + // set leading attribute byte + screen52.setScreenCharAndAttr(initChar, initAttr, true); - // draw top row - while (w-- >= 0) { - if (gui) { - screen52.setScreenCharAndAttr((char) upper, colorAttr, UPPER,false); - } - else { - screen52.setScreenCharAndAttr((char) upper, colorAttr, false); - } - } + // set upper left + if (gui) { + screen52.setScreenCharAndAttr((char) ul, colorAttr, UPPER_LEFT, false); + } + else { + screen52.setScreenCharAndAttr((char) ul, colorAttr, false); + } - // set upper right - if (gui) { - screen52.setScreenCharAndAttr((char) ur, colorAttr, UPPER_RIGHT, false); - } - else { - screen52.setScreenCharAndAttr((char) ur, colorAttr, false); + // draw top row + while (w-- >= 0) { + if (gui) { + screen52.setScreenCharAndAttr((char) upper, colorAttr, UPPER, false); + } + else { + screen52.setScreenCharAndAttr((char) upper, colorAttr, false); + } + } - } + // set upper right + if (gui) { + screen52.setScreenCharAndAttr((char) ur, colorAttr, UPPER_RIGHT, false); + } + else { + screen52.setScreenCharAndAttr((char) ur, colorAttr, false); + } - // set ending attribute byte - screen52.setScreenCharAndAttr(initChar, initAttr, true); + // set ending attribute byte + screen52.setScreenCharAndAttr(initChar, initAttr, true); + lastPos = ((screen52.getRow(lastPos) + 1) * numCols) + c; + screen52.goto_XY(lastPos); - lastPos = ((screen52.getRow(lastPos) + 1) * numCols) + c; - screen52.goto_XY(lastPos); - - // now handle body of window - while (depth-- > 0) { + // now handle body of window + while (depth-- > 0) { + // set leading attribute byte + screen52.setScreenCharAndAttr(initChar, initAttr, true); - // set leading attribute byte - screen52.setScreenCharAndAttr(initChar, initAttr, true); - // set left - if (gui) { - screen52.setScreenCharAndAttr((char) left, colorAttr, GUI_LEFT, false); - } - else { - screen52.setScreenCharAndAttr((char) left, colorAttr, false); - - } + // set left + if (gui) { + screen52.setScreenCharAndAttr((char) left, colorAttr, GUI_LEFT, false); + } + else { + screen52.setScreenCharAndAttr((char) left, colorAttr, false); + } - w = width - 2; - screen52.setScreenCharAndAttr(initChar, initAttr, NO_GUI, true); - // fill it in - while (w-- >= 0) { -// if (!planes.isUseGui(screen52.getLastPos())) - screen52.setScreenCharAndAttr(initChar, initAttr, NO_GUI, false); - } - screen52.setScreenCharAndAttr(initChar, initAttr, NO_GUI, true); + w = width - 2; + screen52.setScreenCharAndAttr(initChar, initAttr, NO_GUI, true); - // set right - if (gui) { - screen52.setScreenCharAndAttr((char) right, colorAttr, GUI_RIGHT, false); + // fill it in + while (w-- >= 0) { +// if (!planes.isUseGui(screen52.getLastPos())) + screen52.setScreenCharAndAttr(initChar, initAttr, NO_GUI, false); + } + + screen52.setScreenCharAndAttr(initChar, initAttr, NO_GUI, true); - } - else { - screen52.setScreenCharAndAttr((char) right, colorAttr, false); - - } - - screen52.setScreenCharAndAttr(initChar, initAttr, true); + // set right + if (gui) { + screen52.setScreenCharAndAttr((char) right, colorAttr, GUI_RIGHT, false); + } + else { + screen52.setScreenCharAndAttr((char) right, colorAttr, false); + } - lastPos = ((screen52.getRow(lastPos) + 1) * numCols) + c; - screen52.goto_XY(lastPos); - } + screen52.setScreenCharAndAttr(initChar, initAttr, true); + lastPos = ((screen52.getRow(lastPos) + 1) * numCols) + c; + screen52.goto_XY(lastPos); + } - // set leading attribute byte - screen52.setScreenCharAndAttr(initChar, initAttr, true); - if (gui) { - screen52.setScreenCharAndAttr((char) ll, colorAttr, LOWER_LEFT, false); + // set leading attribute byte + screen52.setScreenCharAndAttr(initChar, initAttr, true); - } - else { - screen52.setScreenCharAndAttr((char) ll, colorAttr, false); + if (gui) { + screen52.setScreenCharAndAttr((char) ll, colorAttr, LOWER_LEFT, false); + } + else { + screen52.setScreenCharAndAttr((char) ll, colorAttr, false); + } - } - w = width; + w = width; - // draw bottom row - while (w-- >= 0) { - if (gui) { - screen52.setScreenCharAndAttr((char) bottom, colorAttr, BOTTOM, false); - } - else { - screen52.setScreenCharAndAttr((char) bottom, colorAttr, false); - - } - } + // draw bottom row + while (w-- >= 0) { + if (gui) { + screen52.setScreenCharAndAttr((char) bottom, colorAttr, BOTTOM, false); + } + else { + screen52.setScreenCharAndAttr((char) bottom, colorAttr, false); + } + } - // set lower right - if (gui) { - screen52.setScreenCharAndAttr((char) lr, colorAttr, LOWER_RIGHT, false); - } - else { - screen52.setScreenCharAndAttr((char) lr, colorAttr, false); - } - - // set ending attribute byte - screen52.setScreenCharAndAttr(initChar, initAttr, true); - - } + // set lower right + if (gui) { + screen52.setScreenCharAndAttr((char) lr, colorAttr, LOWER_RIGHT, false); + } + else { + screen52.setScreenCharAndAttr((char) lr, colorAttr, false); + } -/* *** NEVER USED LOCALLY ************************************************** */ -// private void clearWindowBody(ScreenPlanes planes, int startPos, int depth, int width) { -// -// int lastPos = startPos; -// char initChar = Screen5250.initChar; -// int initAttr = Screen5250.initAttr; -// -// // now handle body of window -// while (depth-- > 0) { -// -// // set leading attribute byte -//// planes.setScreenCharAndAttr(lastPos,initChar, initAttr, true); -//// setDirty(lastPos); -//// advancePos(); -//// -//// // set left -//// planes.setScreenCharAndAttr(lastPos, (char) left, colorAttr, false); -//// -//// if (gui) { -//// planes.setUseGUI(lastPos,GUI_LEFT); -//// } -//// setDirty(lastPos); -//// advancePos(); -// -// int w = width; -// // fill it in -// while (w-- >= 0) { -//// screen[lastPos].setCharAndAttr(initChar, initAttr, true); -// planes.setScreenCharAndAttr(lastPos,initChar, initAttr, true); -//// screen[lastPos].setUseGUI(NO_GUI); -// planes.setUseGUI(lastPos,NO_GUI); -//// setDirty(lastPos); -// lastPos++; -// advancePos(); -// } -// -//// // set right -//// // screen[lastPos].setCharAndAttr((char) right, colorAttr, false); -//// planes.setScreenCharAndAttr(lastPos,(char) right, colorAttr, false); -//// if (gui) { -//// // screen[lastPos].setUseGUI(RIGHT); -//// planes.setUseGUI(lastPos,GUI_RIGHT); -//// } -//// -//// setDirty(lastPos); -//// advancePos(); -//// -//// // set ending attribute byte -//// // screen[lastPos].setCharAndAttr(initChar, initAttr, true); -//// planes.setScreenCharAndAttr(lastPos,initChar, initAttr, true); -//// setDirty(lastPos); -// -// lastPos = startPos; -// } -// -// } + // set ending attribute byte + screen52.setScreenCharAndAttr(initChar, initAttr, true); + } -/* *** NEVER USED LOCALLY ************************************************** */ -// private void setDirty(int pos) { + /* *** NEVER USED LOCALLY ************************************************** */ +// private void clearWindowBody(ScreenPlanes planes, int startPos, int depth, int width) { // -// screen52.setDirty(pos); +// int lastPos = startPos; +// char initChar = Screen5250.initChar; +// int initAttr = Screen5250.initAttr; +// +// // now handle body of window +// while (depth-- > 0) { // -// } - -/* *** NEVER USED LOCALLY ************************************************** */ -// private void advancePos() { +// // set leading attribute byte +//// planes.setScreenCharAndAttr(lastPos,initChar, initAttr, true); +//// setDirty(lastPos); +//// advancePos(); +//// +//// // set left +//// planes.setScreenCharAndAttr(lastPos, (char) left, colorAttr, false); +//// +//// if (gui) { +//// planes.setUseGUI(lastPos,GUI_LEFT); +//// } +//// setDirty(lastPos); +//// advancePos(); // -// screen52.advancePos(); -// } - - private void defineSelectionField(int majLen) { - - // 0030: 20 00 2C 3E 00 00 00 69 12 A0 00 00 04 00 00 03 .,>...i........ - // 0040: 04 40 04 11 00 28 01 07 00 00 00 19 00 00 04 11 .@...(.......... - // 0050: 14 19 15 00 48 D9 50 00 60 00 11 01 84 84 00 00 ....H.P.`....... - // 0060: 05 03 01 01 00 00 00 13 01 E0 00 21 00 21 00 3B ...........!.!.; - // 0070: 22 20 20 20 20 3A 24 20 20 3A 0B 10 08 00 E0 00 " :$ :...... - // 0080: D6 95 85 40 40 0B 10 08 00 E0 00 E3 A6 96 40 40 ...@@.........@@ - // 0090: 0B 10 08 00 E0 00 E3 88 99 85 85 04 52 00 00 FF ............R... - // 00A0: EF . - try { - int flag1 = segment[pos++]; // Flag byte 1 - byte 5 - int flag2 = segment[pos++]; // Flag byte 2 - byte 6 - int flag3 = segment[pos++]; // Flag byte 3 - byte 7 - int typeSelection = segment[pos++]; // Type of selection Field - byte 8 - - // GUI Device Characteristics: - // This byte is used if the target device is a GUI PWS or a GUI-like - // NWS. If neigher of these WS are the targets, this byte is ignored - int guiDevice = segment[pos++]; // byte 9 - int withMnemonic = segment[pos++]; // byte 10 - int noMnemonic = segment[pos++]; // byte 11 +// int w = width; +// // fill it in +// while (w-- >= 0) { +//// screen[lastPos].setCharAndAttr(initChar, initAttr, true); +// planes.setScreenCharAndAttr(lastPos,initChar, initAttr, true); +//// screen[lastPos].setUseGUI(NO_GUI); +// planes.setUseGUI(lastPos,NO_GUI); +//// setDirty(lastPos); +// lastPos++; +// advancePos(); +// } +// +//// // set right +//// // screen[lastPos].setCharAndAttr((char) right, colorAttr, false); +//// planes.setScreenCharAndAttr(lastPos,(char) right, colorAttr, false); +//// if (gui) { +//// // screen[lastPos].setUseGUI(RIGHT); +//// planes.setUseGUI(lastPos,GUI_RIGHT); +//// } +//// +//// setDirty(lastPos); +//// advancePos(); +//// +//// // set ending attribute byte +//// // screen[lastPos].setCharAndAttr(initChar, initAttr, true); +//// planes.setScreenCharAndAttr(lastPos,initChar, initAttr, true); +//// setDirty(lastPos); +// +// lastPos = startPos; +// } +// +// } - pos++; // Reserved - byte 12 - pos++; // Reserved - byte 13 - - int cols = segment[pos++]; // Text Size - byte 14 - int rows = segment[pos++]; // Rows - byte 15 + /* *** NEVER USED LOCALLY ************************************************** */ +// private void setDirty(int pos) { +// +// screen52.setDirty(pos); +// +// } - int maxColChoice = segment[pos++]; // byte 16 num of column choices - int padding = segment[pos++]; // byte 17 - int numSepChar = segment[pos++]; // byte 18 - int ctySepChar = segment[pos++]; // byte 19 - int cancelAID = segment[pos++]; // byte 20 + /* *** NEVER USED LOCALLY ************************************************** */ +// private void advancePos() { +// +// screen52.advancePos(); +// } - int cnt = 0; - int minLen = 0; - majLen -= 21; - Log.d(TAG," row: " + screen52.getCurrentRow() - + " col: " + screen52.getCurrentCol() - + " type " + typeSelection - + " gui " + guiDevice - + " withMnemonic " + Integer.toHexString(withMnemonic & 0xf0) - + " noMnemonic " + Integer.toHexString(noMnemonic & 0xf0) - + " noMnemonic " + Integer.toBinaryString(noMnemonic) - + " noMnemonicType " + Integer.toBinaryString((noMnemonic & 0xf0)) - + " noMnemonicSel " + Integer.toBinaryString((noMnemonic & 0x0f)) - + " maxcols " + maxColChoice - + " cols " + cols - + " rows " + rows); - int rowCtr = 0; - int colCtr = 0; - int chcRowStart = screen52.getCurrentRow(); - int chcColStart = screen52.getCurrentCol(); - int chcRow = chcRowStart; - int chcCol = chcColStart; - int chcPos = screen52.getPos(chcRow-1,chcCol); - + private void defineSelectionField(int majLen) { + // 0030: 20 00 2C 3E 00 00 00 69 12 A0 00 00 04 00 00 03 .,>...i........ + // 0040: 04 40 04 11 00 28 01 07 00 00 00 19 00 00 04 11 .@...(.......... + // 0050: 14 19 15 00 48 D9 50 00 60 00 11 01 84 84 00 00 ....H.P.`....... + // 0060: 05 03 01 01 00 00 00 13 01 E0 00 21 00 21 00 3B ...........!.!.; + // 0070: 22 20 20 20 20 3A 24 20 20 3A 0B 10 08 00 E0 00 " :$ :...... + // 0080: D6 95 85 40 40 0B 10 08 00 E0 00 E3 A6 96 40 40 ...@@.........@@ + // 0090: 0B 10 08 00 E0 00 E3 88 99 85 85 04 52 00 00 FF ............R... + // 00A0: EF . + try { + int flag1 = segment[pos++]; // Flag byte 1 - byte 5 + int flag2 = segment[pos++]; // Flag byte 2 - byte 6 + int flag3 = segment[pos++]; // Flag byte 3 - byte 7 + int typeSelection = segment[pos++]; // Type of selection Field - byte 8 + // GUI Device Characteristics: + // This byte is used if the target device is a GUI PWS or a GUI-like + // NWS. If neigher of these WS are the targets, this byte is ignored + int guiDevice = segment[pos++]; // byte 9 + int withMnemonic = segment[pos++]; // byte 10 + int noMnemonic = segment[pos++]; // byte 11 + pos++; // Reserved - byte 12 + pos++; // Reserved - byte 13 + int cols = segment[pos++]; // Text Size - byte 14 + int rows = segment[pos++]; // Rows - byte 15 + int maxColChoice = segment[pos++]; // byte 16 num of column choices + int padding = segment[pos++]; // byte 17 + int numSepChar = segment[pos++]; // byte 18 + int ctySepChar = segment[pos++]; // byte 19 + int cancelAID = segment[pos++]; // byte 20 + int cnt = 0; + int minLen = 0; + majLen -= 21; + Log.d(TAG, " row: " + screen52.getCurrentRow() + + " col: " + screen52.getCurrentCol() + + " type " + typeSelection + + " gui " + guiDevice + + " withMnemonic " + Integer.toHexString(withMnemonic & 0xf0) + + " noMnemonic " + Integer.toHexString(noMnemonic & 0xf0) + + " noMnemonic " + Integer.toBinaryString(noMnemonic) + + " noMnemonicType " + Integer.toBinaryString((noMnemonic & 0xf0)) + + " noMnemonicSel " + Integer.toBinaryString((noMnemonic & 0x0f)) + + " maxcols " + maxColChoice + + " cols " + cols + + " rows " + rows); + int rowCtr = 0; + int colCtr = 0; + int chcRowStart = screen52.getCurrentRow(); + int chcColStart = screen52.getCurrentCol(); + int chcRow = chcRowStart; + int chcCol = chcColStart; + int chcPos = screen52.getPos(chcRow - 1, chcCol); // client access //0000 00 04 ac 9e b9 35 00 01 02 32 bb 4e 08 00 45 00 .....5...2.N..E. //0010 00 3c 4f 8e 40 00 80 06 00 00 c1 a8 33 58 c1 a8 .<O.@.......3X.. //0020 33 01 09 e4 00 17 5b bf b7 a4 c3 41 43 d1 50 18 3.....[....AC.P. //0030 fc de e9 d8 00 00 00 12 12 a0 00 00 04 00 80 03 ................ //0040 16 18 f1 11 14 1a 00 22 ff ef .......".. - - int colAvail = 0x20; - int colSelAvail = 0x20; - int fld = 0; - - do { - minLen = segment[pos++]; // Minor Length byte 21 - - int minType = segment[pos++]; // Minor Type - - switch (minType) { + int colAvail = 0x20; + int colSelAvail = 0x20; + int fld = 0; - case 0x01: // Choice Presentation Display - - // flag - int flagCP1 = segment[pos++]; - - pos++; // mon select cursor avail emphasis - byte4 - colSelAvail = segment[pos++]; // -byte 5 - - pos++; // mon select cursor - byte 6 - int colSelCur = segment[pos++]; // -byte 7 - - pos++; // mon select cursor not avail emphasis - byte 8 - int colSelNotAvail = segment[pos++]; // -byte 9 + do { + minLen = segment[pos++]; // Minor Length byte 21 + int minType = segment[pos++]; // Minor Type - pos++; // mon avail emphasis - byte 10 - colAvail = segment[pos++]; // -byte 11 - - pos++; // mon select emphasis - byte 12 - int colSel = segment[pos++]; // -byte 13 - - pos++; // mon not avail emphasis - byte 14 - int colNotAvail = segment[pos++]; // -byte 15 - - pos++; // mon indicator emphasis - byte 16 - int colInd = segment[pos++]; // -byte 17 + switch (minType) { + case 0x01: // Choice Presentation Display + // flag + int flagCP1 = segment[pos++]; + pos++; // mon select cursor avail emphasis - byte4 + colSelAvail = segment[pos++]; // -byte 5 + pos++; // mon select cursor - byte 6 + int colSelCur = segment[pos++]; // -byte 7 + pos++; // mon select cursor not avail emphasis - byte 8 + int colSelNotAvail = segment[pos++]; // -byte 9 + pos++; // mon avail emphasis - byte 10 + colAvail = segment[pos++]; // -byte 11 + pos++; // mon select emphasis - byte 12 + int colSel = segment[pos++]; // -byte 13 + pos++; // mon not avail emphasis - byte 14 + int colNotAvail = segment[pos++]; // -byte 15 + pos++; // mon indicator emphasis - byte 16 + int colInd = segment[pos++]; // -byte 17 + pos++; // mon indicator not avail emphasis - byte 18 + int colNotAvailInd = segment[pos++]; // -byte 19 + break; - pos++; // mon indicator not avail emphasis - byte 18 - int colNotAvailInd = segment[pos++]; // -byte 19 - - break; - - case 0x10: // Choice Text minor structure + case 0x10: // Choice Text minor structure + cnt = 5; + int flagCT1 = segment[pos++]; + int flagCT2 = segment[pos++]; + int flagCT3 = segment[pos++]; + int mnemOffset = 0; + boolean aid = false; + boolean selected = false; - cnt = 5; - int flagCT1 = segment[pos++]; - int flagCT2 = segment[pos++]; - int flagCT3 = segment[pos++]; - int mnemOffset = 0; - boolean aid = false; - boolean selected = false; + // is in selected state + if ((flagCT1 & 0x40) == 0x40) { + Log.d(TAG, " selected "); + selected = true; + } - // is in selected state - if ((flagCT1 & 0x40) == 0x40) { - Log.d(TAG," selected "); - selected = true; - } - - //System.out.println(Integer.toBinaryString((flagCT1 & 0xf0))); - // is mnemonic offset specified - if ((flagCT1 & 0x08) == 8) { - Log.d(TAG," mnemOffset " + mnemOffset); - mnemOffset = segment[pos++]; - cnt++; - } + //System.out.println(Integer.toBinaryString((flagCT1 & 0xf0))); + // is mnemonic offset specified + if ((flagCT1 & 0x08) == 8) { + Log.d(TAG, " mnemOffset " + mnemOffset); + mnemOffset = segment[pos++]; + cnt++; + } - // is aid key specified - if ((flagCT1 & 0x04) == 4) { - - aid = true; - Log.d(TAG," aidKey " + aid); + // is aid key specified + if ((flagCT1 & 0x04) == 4) { + aid = true; + Log.d(TAG, " aidKey " + aid); // cnt++; - } + } - // is single digit number specified - if ((flagCT1 & 0x01) == 0x01) { - Log.d(TAG," single digit " ); - pos++; - cnt++; - } + // is single digit number specified + if ((flagCT1 & 0x01) == 0x01) { + Log.d(TAG, " single digit "); + pos++; + cnt++; + } - // is double digint number specified - if ((flagCT1 & 0x02) == 0x02) { - Log.d(TAG," double digit " ); + // is double digint number specified + if ((flagCT1 & 0x02) == 0x02) { + Log.d(TAG, " double digit "); + pos++; + cnt++; + } - pos++; - cnt++; - } - - String s = ""; - byte byte0 = 0; - fld++; - - screen52.setCursor(chcRowStart,chcColStart); + String s = ""; + byte byte0 = 0; + fld++; + screen52.setCursor(chcRowStart, chcColStart); - // we do not add a selection if it is marked as unavailable - if ((flagCT1 & 0x80) != 0x80) { - screen52.addField(0x26,1,0,0,0,0); - screen52.getScreenFields().getCurrentField().setFieldChar('.'); - screen52.getScreenFields().getCurrentField().setSelectionFieldInfo(17, - fld, - chcPos); - screen52.setCursor(chcRowStart,chcColStart + 3); + // we do not add a selection if it is marked as unavailable + if ((flagCT1 & 0x80) != 0x80) { + screen52.addField(0x26, 1, 0, 0, 0, 0); + screen52.getScreenFields().getCurrentField().setFieldChar('.'); + screen52.getScreenFields().getCurrentField().setSelectionFieldInfo(17, + fld, + chcPos); + screen52.setCursor(chcRowStart, chcColStart + 3); - for (;cnt < minLen; cnt++) { + for (; cnt < minLen; cnt++) { + byte0 = segment[pos++]; + s += vt.codePage.ebcdic2uni(byte0); + screen52.setChar(vt.codePage.ebcdic2uni(byte0)); + } - byte0 = segment[pos++]; - s += vt.codePage.ebcdic2uni(byte0); - screen52.setChar(vt.codePage.ebcdic2uni(byte0)); - - } - - addChoiceField(chcRowStart,chcColStart,chcRow,chcCol,s); - } + addChoiceField(chcRowStart, chcColStart, chcRow, chcCol, s); + } // screen52.getScreenFields().getCurrentField().setMDT(); - - Log.d(TAG,s + " selected " + selected); + Log.d(TAG, s + " selected " + selected); // chcRowStart; - //maxColChoice - colCtr++; -// rowCtr++; - if (colCtr >= maxColChoice) { + //maxColChoice + colCtr++; - rowCtr++; - colCtr=0; - chcColStart = chcCol; - chcRowStart = chcRow + rowCtr; - if (rowCtr > rows) { - chcRowStart = chcRow; - rowCtr = 0; - chcColStart = chcColStart + 3 + cols + padding; - } - } - else { - chcColStart = chcColStart + padding + cols + 3; +// rowCtr++; + if (colCtr >= maxColChoice) { + rowCtr++; + colCtr = 0; + chcColStart = chcCol; + chcRowStart = chcRow + rowCtr; + + if (rowCtr > rows) { + chcRowStart = chcRow; + rowCtr = 0; + chcColStart = chcColStart + 3 + cols + padding; + } + } + else { + chcColStart = chcColStart + padding + cols + 3; // - } + } + + break; - break; - default: - for (cnt = 2;cnt < minLen; cnt++) { - - pos++; - } - - } + default: + for (cnt = 2; cnt < minLen; cnt++) { + pos++; + } + } - majLen -= minLen; + majLen -= minLen; + } + while (majLen > 0); + } + catch (Exception exc) { + Log.w(TAG, " defineSelectionField :", exc); + exc.printStackTrace(); + } + } - } while (majLen > 0); - } - catch (Exception exc) { - Log.w(TAG," defineSelectionField :", exc); - exc.printStackTrace(); - } - } - - // negotiating commands + // negotiating commands // private static final byte IAC = (byte)-1; // 255 FF // private static final byte DONT = (byte)-2; //254 FE // private static final byte DO = (byte)-3; //253 FD @@ -966,7 +917,7 @@ // private static final byte NEGOTIATE_ESC = (byte)2; // 2 // private static final byte USERVAR = (byte)3; // 3 - // miscellaneous + // miscellaneous // private static final byte ESC = 0x04; // 04 // private static final char char0 = 0;