tn5250j/src/org/tn5250j SessionPopup.java,1.9,1.10 GuiGraphicBuffer.java,1.17,1.18 tnvt.java,1.44,1.45 Screen5250.java,1.61,1.62 Gui5250.java,1.61,1.62

"Kenneth J. Pouncey" <[email protected]> Mon, 05 Jul 2004 17:01:11 +0000
Newsgroups gmane.comp.java.tn5250j.cvs
Message-ID <[email protected]>
Update of /cvsroot/tn5250j/tn5250j/src/org/tn5250j
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24365/src/org/tn5250j

Modified Files:
	SessionPopup.java GuiGraphicBuffer.java tnvt.java 
	Screen5250.java Gui5250.java 
Log Message:
First part of headless the OIA

Index: SessionPopup.java
===================================================================
RCS file: /cvsroot/tn5250j/tn5250j/src/org/tn5250j/SessionPopup.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** SessionPopup.java	26 Jun 2004 05:44:03 -0000	1.9
--- SessionPopup.java	5 Jul 2004 17:00:47 -0000	1.10
***************
*** 188,192 ****
           createKeyboardItem(kbMenu,MNEMONIC_SYSREQ);
  
!          if (screen.isMessageWait() &&
                 OptionAccessFactory.getInstance().isValidOption(MNEMONIC_DISP_MESSAGES)) {
  
--- 188,192 ----
           createKeyboardItem(kbMenu,MNEMONIC_SYSREQ);
  
!          if (screen.getOIA().isMessageWait() &&
                 OptionAccessFactory.getInstance().isValidOption(MNEMONIC_DISP_MESSAGES)) {
  
***************
*** 225,229 ****
           createShortCutItems(kbMenu);
  
!          if (screen.isMessageWait() &&
              OptionAccessFactory.getInstance().isValidOption(MNEMONIC_DISP_MESSAGES)) {
  
--- 225,229 ----
           createShortCutItems(kbMenu);
  
!          if (screen.getOIA().isMessageWait() &&
              OptionAccessFactory.getInstance().isValidOption(MNEMONIC_DISP_MESSAGES)) {
  

Index: Gui5250.java
===================================================================
RCS file: /cvsroot/tn5250j/tn5250j/src/org/tn5250j/Gui5250.java,v
retrieving revision 1.61
retrieving revision 1.62
diff -C2 -d -r1.61 -r1.62
*** Gui5250.java	30 Jun 2004 06:18:56 -0000	1.61
--- Gui5250.java	5 Jul 2004 17:01:07 -0000	1.62
***************
*** 44,47 ****
--- 44,48 ----
  import org.tn5250j.event.SessionConfigListener;
  import org.tn5250j.event.SessionConfigEvent;
+ import org.tn5250j.event.ScreenOIAListener;
  import org.tn5250j.interfaces.SessionScrollerInterface;
  import org.tn5250j.keyboard.KeyboardHandler;
***************
*** 79,82 ****
--- 80,84 ----
     private TN5250jLogger log = TN5250jLogFactory.getLogger(this.getClass());
     private TN5250jLogger graphics = TN5250jLogFactory.getLogger("GFX");
+ 
     public Gui5250 () {
  
***************
*** 638,644 ****
        macroRunning = mr;
        if (macroRunning)
!          screen.setSRIndicatorOn();
        else
!          screen.setSRIndicatorOff();
  
        stopMacro = !macroRunning;
--- 640,646 ----
        macroRunning = mr;
        if (macroRunning)
!          screen.getOIA().setScriptActive(true);
        else
!          screen.getOIA().setScriptActive(false);
  
        stopMacro = !macroRunning;

Index: tnvt.java
===================================================================
RCS file: /cvsroot/tn5250j/tn5250j/src/org/tn5250j/tnvt.java,v
retrieving revision 1.44
retrieving revision 1.45
diff -C2 -d -r1.44 -r1.45
*** tnvt.java	5 Jul 2004 08:54:38 -0000	1.44
--- tnvt.java	5 Jul 2004 17:01:03 -0000	1.45
***************
*** 3,28 ****
  /**
   * Title: tn5250J Copyright: Copyright (c) 2001 Company:
!  * 
   * @author Kenneth J. Pouncey
   * @version 0.5
!  * 
   * Description:
!  * 
   * This program is free software; you can redistribute it and/or modify it under
   * the terms of the GNU General Public License as published by the Free Software
   * Foundation; either version 2, or (at your option) any later version.
!  * 
   * This program is distributed in the hope that it will be useful, but WITHOUT
   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
   * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
   * details.
!  * 
   * You should have received a copy of the GNU General Public License along with
   * this software; see the file COPYING. If not, write to the Free Software
   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
!  *  
   */
! package org.tn5250j; 
!  
  import java.awt.BorderLayout;
  import java.awt.Dimension;
--- 3,28 ----
  /**
   * Title: tn5250J Copyright: Copyright (c) 2001 Company:
!  *
   * @author Kenneth J. Pouncey
   * @version 0.5
!  *
   * Description:
!  *
   * This program is free software; you can redistribute it and/or modify it under
   * the terms of the GNU General Public License as published by the Free Software
   * Foundation; either version 2, or (at your option) any later version.
!  *
   * This program is distributed in the hope that it will be useful, but WITHOUT
   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
   * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
   * details.
!  *
   * You should have received a copy of the GNU General Public License along with
   * this software; see the file COPYING. If not, write to the Free Software
   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
!  *
   */
! package org.tn5250j;
! 
  import java.awt.BorderLayout;
  import java.awt.Dimension;
***************
*** 582,587 ****
  	/**
  	 * Help request -
! 	 * 
! 	 * 
  	 * See notes inside method
  	 */
--- 582,587 ----
  	/**
  	 * Help request -
! 	 *
! 	 *
  	 * See notes inside method
  	 */
***************
*** 609,614 ****
  	/**
  	 * Attention Key -
! 	 * 
! 	 * 
  	 * See notes inside method
  	 */
--- 609,614 ----
  	/**
  	 * Attention Key -
! 	 *
! 	 *
  	 * See notes inside method
  	 */
***************
*** 643,649 ****
  	 * System request - taken from the rfc1205 - 5250 Telnet interface section
  	 * 4.3
! 	 * 
  	 * See notes inside method
! 	 * 
  	 * @param sr -
  	 *            system request option
--- 643,649 ----
  	 * System request - taken from the rfc1205 - 5250 Telnet interface section
  	 * 4.3
! 	 *
  	 * See notes inside method
! 	 *
  	 * @param sr -
  	 *            system request option
***************
*** 766,770 ****
  	 * Cancel Invite - taken from the rfc1205 - 5250 Telnet interface section
  	 * 4.3
! 	 * 
  	 * See notes inside method
  	 */
--- 766,770 ----
  	 * Cancel Invite - taken from the rfc1205 - 5250 Telnet interface section
  	 * 4.3
! 	 *
  	 * See notes inside method
  	 */
***************
*** 927,934 ****
  	/**
  	 * Activate or deactivate the command scanning behaviour.
! 	 * 
  	 * @param scan
  	 *            if true, scanning is enabled; disabled otherwise.
! 	 * 
  	 * @see scan4Cmd()
  	 */
--- 927,934 ----
  	/**
  	 * Activate or deactivate the command scanning behaviour.
! 	 *
  	 * @param scan
  	 *            if true, scanning is enabled; disabled otherwise.
! 	 *
  	 * @see scan4Cmd()
  	 */
***************
*** 940,944 ****
  	/**
  	 * Checks whether command scanning is enabled.
! 	 * 
  	 * @return true is command scanning is enabled; false otherwise.
  	 */
--- 940,944 ----
  	/**
  	 * Checks whether command scanning is enabled.
! 	 *
  	 * @return true is command scanning is enabled; false otherwise.
  	 */
***************
*** 978,982 ****
  	 * encountered white space, separating the command from the rest of the
  	 * screen, is passed as starting index.
! 	 * 
  	 * Note that the character at the starting position can potentially be a
  	 * white space itself. The starting position in <code>execCommand</code>
--- 978,982 ----
  	 * encountered white space, separating the command from the rest of the
  	 * screen, is passed as starting index.
! 	 *
  	 * Note that the character at the starting position can potentially be a
  	 * white space itself. The starting position in <code>execCommand</code>
***************
*** 985,989 ****
  	 * indicate whether the tnvt should trigger a repaint or not. This would
  	 * allow the flashing of command sequences without them becoming visible.
! 	 * 
  	 * <ul>
  	 * <li><strong>PRE </strong> The screen character at position
--- 985,989 ----
  	 * indicate whether the tnvt should trigger a repaint or not. This would
  	 * allow the flashing of command sequences without them becoming visible.
! 	 *
  	 * <ul>
  	 * <li><strong>PRE </strong> The screen character at position
***************
*** 1110,1114 ****
  			case 11:
  				log.debug("Turn on message light");
! 				screen52.setMessageLightOn();
  				screen52.setCursorActive(true);
  
--- 1110,1114 ----
  			case 11:
  				log.debug("Turn on message light");
! 				screen52.getOIA().setMessageLightOn();
  				screen52.setCursorActive(true);
  
***************
*** 1116,1120 ****
  			case 12:
  				log.debug("Turn off Message light");
! 				screen52.setMessageLightOff();
  				screen52.setCursorActive(true);
  
--- 1116,1120 ----
  			case 12:
  				log.debug("Turn off Message light");
! 				screen52.getOIA().setMessageLightOff();
  				screen52.setCursorActive(true);
  
***************
*** 1157,1161 ****
  			}
  
! 			if (cursorOn && !screen52.isKeyboardLocked()) {
  				screen52.setCursorActive(true);
  				cursorOn = false;
--- 1157,1161 ----
  			}
  
! 			if (cursorOn && !screen52.getOIA().isKeyBoardLocked()) {
  				screen52.setCursorActive(true);
  				cursorOn = false;
***************
*** 1174,1178 ****
  			log.debug(" Pending unlock " + pendingUnlock);
  			log.debug(" Status Error " + screen52.isStatusErrorCode());
! 			log.debug(" Keyboard Locked " + screen52.isKeyboardLocked());
  			log.debug(" Cursor On " + cursorOn);
  			log.debug(" Cursor Active " + screen52.cursorActive);
--- 1174,1178 ----
  			log.debug(" Pending unlock " + pendingUnlock);
  			log.debug(" Status Error " + screen52.isStatusErrorCode());
! 			log.debug(" Keyboard Locked " + screen52.getOIA().isKeyBoardLocked());
  			log.debug(" Cursor On " + cursorOn);
  			log.debug(" Cursor Active " + screen52.cursorActive);
***************
*** 1385,1389 ****
  
  	/**
! 	 * 
  	 * @throws IOException
  	 */
--- 1385,1389 ----
  
  	/**
! 	 *
  	 * @throws IOException
  	 */
***************
*** 1653,1661 ****
  	/**
  	 * This routine handles sending negative responses back to the host.
! 	 * 
  	 * You can find a description of the types of responses to be sent back by
  	 * looking at section 12.4 of the 5250 Functions Reference manual
! 	 * 
! 	 * 
  	 * @param cat
  	 * @param modifier
--- 1653,1661 ----
  	/**
  	 * This routine handles sending negative responses back to the host.
! 	 *
  	 * You can find a description of the types of responses to be sent back by
  	 * looking at section 12.4 of the 5250 Functions Reference manual
! 	 *
! 	 *
  	 * @param cat
  	 * @param modifier
***************
*** 1663,1667 ****
  	 * @param uByte2
  	 * @param from
! 	 *  
  	 */
  	protected void sendNegResponse(int cat, int modifier, int uByte1,
--- 1663,1667 ----
  	 * @param uByte2
  	 * @param from
! 	 *
  	 */
  	protected void sendNegResponse(int cat, int modifier, int uByte1,
***************
*** 2152,2163 ****
  		}
  		if ((byte1 & 0x02) == 0x02) {
! 			screen52.setMessageLightOff();
  		}
  		if ((byte1 & 0x01) == 0x01) {
! 			screen52.setMessageLightOn();
  		}
  
  		if ((byte1 & 0x01) == 0x01 && (byte1 & 0x02) == 0x02) {
! 			screen52.setMessageLightOn();
  		}
  
--- 2152,2163 ----
  		}
  		if ((byte1 & 0x02) == 0x02) {
! 			screen52.getOIA().setMessageLightOff();
  		}
  		if ((byte1 & 0x01) == 0x01) {
! 			screen52.getOIA().setMessageLightOn();
  		}
  
  		if ((byte1 & 0x01) == 0x01 && (byte1 & 0x02) == 0x02) {
! 			screen52.getOIA().setMessageLightOn();
  		}
  
***************
*** 2816,2829 ****
  	/**
  	 * Method sendQueryResponse
! 	 * 
  	 * The query command is used to obtain information about the capabilities of
  	 * the 5250 display.
! 	 * 
  	 * The Query command must follow an Escape (0x04) and Write Structured Field
  	 * command (0xF3).
! 	 * 
  	 * This section is modeled after the rfc1205 - 5250 Telnet Interface section
  	 * 5.3
! 	 * 
  	 * @throws IOException
  	 */
--- 2816,2829 ----
  	/**
  	 * Method sendQueryResponse
! 	 *
  	 * The query command is used to obtain information about the capabilities of
  	 * the 5250 display.
! 	 *
  	 * The Query command must follow an Escape (0x04) and Write Structured Field
  	 * command (0xF3).
! 	 *
  	 * This section is modeled after the rfc1205 - 5250 Telnet Interface section
  	 * 5.3
! 	 *
  	 * @throws IOException
  	 */
***************
*** 2935,2943 ****
  	}
  
! 	protected final boolean negotiate(byte abyte0[]) throws IOException {
! 		int i = 0;
  
  
! 		// from server negotiations
        if(abyte0[i] == IAC) { // -1
  
--- 2935,2943 ----
  	}
  
!    protected final boolean negotiate(byte abyte0[]) throws IOException {
!       int i = 0;
  
  
!       // from server negotiations
        if(abyte0[i] == IAC) { // -1
  
***************
*** 2946,2955 ****
              switch(abyte0[i++]) {
  
! 				// we will not worry about what it WONT do
! 				case WONT: // -4
! 				default:
! 					break;
  
! 				case DO: //-3
  
                    // not sure why but since moving to V5R2 we are receiving a
--- 2946,2955 ----
              switch(abyte0[i++]) {
  
!                // we will not worry about what it WONT do
!                case WONT:            // -4
!                default:
!                  break;
  
!                case DO: //-3
  
                    // not sure why but since moving to V5R2 we are receiving a
***************
*** 2959,3095 ****
                    if (i < abyte0.length) {
                       switch(abyte0[i]) {
! 					case TERMINAL_TYPE: // 24
! 						baosp.write(IAC);
! 						baosp.write(WILL);
! 						baosp.write(TERMINAL_TYPE);
! 						writeByte(baosp.toByteArray());
! 						baosp.reset();
  
! 						break;
  
! 					case OPT_END_OF_RECORD: // 25
  
! 						baosp.write(IAC);
! 						baosp.write(WILL);
! 						baosp.write(OPT_END_OF_RECORD);
! 						writeByte(baosp.toByteArray());
! 						baosp.reset();
! 						break;
  
! 					case TRANSMIT_BINARY: // 0
  
! 						baosp.write(IAC);
! 						baosp.write(WILL);
! 						baosp.write(TRANSMIT_BINARY);
! 						writeByte(baosp.toByteArray());
! 						baosp.reset();
  
! 						break;
  
! 					case TIMING_MARK: // 6 rfc860
     //                        System.out.println("Timing Mark Received and notifying " +
! 					//                        "the server that we will not do it");
! 						baosp.write(IAC);
! 						baosp.write(WONT);
! 						baosp.write(TIMING_MARK);
! 						writeByte(baosp.toByteArray());
! 						baosp.reset();
  
! 						break;
  
! 					case NEW_ENVIRONMENT: // 39 rfc1572
! 						if (devName == null && user == null) {
! 							baosp.write(IAC);
! 							baosp.write(WONT);
! 							baosp.write(NEW_ENVIRONMENT);
! 							writeByte(baosp.toByteArray());
! 							baosp.reset();
  
                             }
                             else {
! 							baosp.write(IAC);
! 							baosp.write(WILL);
! 							baosp.write(NEW_ENVIRONMENT);
! 							writeByte(baosp.toByteArray());
! 							baosp.reset();
  
! 						}
! 						break;
  
! 					default: // every thing else we will not do at this time
! 						baosp.write(IAC);
! 						baosp.write(WONT);
! 						baosp.write(abyte0[i]); // either
! 						writeByte(baosp.toByteArray());
! 						baosp.reset();
  
! 						break;
! 					}
                   }
  
! 					i++;
! 					break;
  
! 				case WILL:
  
                   switch(abyte0[i]) {
! 					case OPT_END_OF_RECORD: // 25
! 						baosp.write(IAC);
! 						baosp.write(DO);
! 						baosp.write(OPT_END_OF_RECORD);
! 						writeByte(baosp.toByteArray());
! 						baosp.reset();
  
! 						break;
  
! 					case TRANSMIT_BINARY: // '\0'
! 						baosp.write(IAC);
! 						baosp.write(DO);
! 						baosp.write(TRANSMIT_BINARY);
! 						writeByte(baosp.toByteArray());
! 						baosp.reset();
  
! 						break;
! 					}
! 					i++;
! 					break;
  
! 				case SB: // -6
  
                    if(abyte0[i] == NEW_ENVIRONMENT && abyte0[i + 1] == 1) {
! 						negNewEnvironment();
  
                       while (++i < abyte0.length && abyte0[i + 1] != IAC);
! 					}
  
                    if(abyte0[i] == TERMINAL_TYPE && abyte0[i + 1] == 1) {
! 						baosp.write(IAC);
! 						baosp.write(SB);
! 						baosp.write(TERMINAL_TYPE);
! 						baosp.write(QUAL_IS);
                       if(!support132)
! 							baosp.write("IBM-3179-2".getBytes());
! 						else
! 							baosp.write("IBM-3477-FC".getBytes());
! 						baosp.write(IAC);
! 						baosp.write(SE);
! 						writeByte(baosp.toByteArray());
! 						baosp.reset();
  
! 						i++;
! 					}
! 					i++;
! 					break;
! 				}
! 			return true;
        }
        else {
! 			return false;
! 		}
! 	}
  
  	/**
  	 * Negotiate new environment string for device name
! 	 * 
  	 * @throws IOException
  	 */
--- 2959,3095 ----
                    if (i < abyte0.length) {
                       switch(abyte0[i]) {
!                         case TERMINAL_TYPE: // 24
!                            baosp.write(IAC);
!                            baosp.write(WILL);
!                            baosp.write(TERMINAL_TYPE);
!                            writeByte(baosp.toByteArray());
!                            baosp.reset();
  
!                            break;
  
!                        case OPT_END_OF_RECORD: // 25
  
!                            baosp.write(IAC);
!                            baosp.write(WILL);
!                            baosp.write(OPT_END_OF_RECORD);
!                            writeByte(baosp.toByteArray());
!                            baosp.reset();
!                            break;
  
!                        case TRANSMIT_BINARY: // 0
  
!                            baosp.write(IAC);
!                            baosp.write(WILL);
!                            baosp.write(TRANSMIT_BINARY);
!                            writeByte(baosp.toByteArray());
!                            baosp.reset();
  
!                            break;
  
!                        case TIMING_MARK: // 6   rfc860
     //                        System.out.println("Timing Mark Received and notifying " +
!    //                        "the server that we will not do it");
!                            baosp.write(IAC);
!                            baosp.write(WONT);
!                            baosp.write(TIMING_MARK);
!                            writeByte(baosp.toByteArray());
!                            baosp.reset();
  
!                            break;
  
!                        case NEW_ENVIRONMENT: // 39 rfc1572
!                            if (devName == null && user == null) {
!                               baosp.write(IAC);
!                               baosp.write(WONT);
!                               baosp.write(NEW_ENVIRONMENT);
!                               writeByte(baosp.toByteArray());
!                               baosp.reset();
  
                             }
                             else {
!                               baosp.write(IAC);
!                               baosp.write(WILL);
!                               baosp.write(NEW_ENVIRONMENT);
!                               writeByte(baosp.toByteArray());
!                               baosp.reset();
  
!                            }
!                            break;
  
!                        default:  // every thing else we will not do at this time
!                            baosp.write(IAC);
!                            baosp.write(WONT);
!                            baosp.write(abyte0[i]); // either
!                            writeByte(baosp.toByteArray());
!                            baosp.reset();
  
!                            break;
!                      }
                   }
  
!                  i++;
!                  break;
  
!                case WILL:
  
                   switch(abyte0[i]) {
!                     case OPT_END_OF_RECORD: // 25
!                         baosp.write(IAC);
!                         baosp.write(DO);
!                         baosp.write(OPT_END_OF_RECORD);
!                         writeByte(baosp.toByteArray());
!                         baosp.reset();
  
!                         break;
  
!                     case TRANSMIT_BINARY: // '\0'
!                         baosp.write(IAC);
!                         baosp.write(DO);
!                         baosp.write(TRANSMIT_BINARY);
!                         writeByte(baosp.toByteArray());
!                         baosp.reset();
  
!                         break;
!                  }
!                  i++;
!                  break;
  
!                case SB: // -6
  
                    if(abyte0[i] == NEW_ENVIRONMENT && abyte0[i + 1] == 1) {
!                      negNewEnvironment();
  
                       while (++i < abyte0.length && abyte0[i + 1] != IAC);
!                   }
  
                    if(abyte0[i] == TERMINAL_TYPE && abyte0[i + 1] == 1) {
!                      baosp.write(IAC);
!                      baosp.write(SB);
!                      baosp.write(TERMINAL_TYPE);
!                      baosp.write(QUAL_IS);
                       if(!support132)
!                          baosp.write("IBM-3179-2".getBytes());
!                      else
!                          baosp.write("IBM-3477-FC".getBytes());
!                      baosp.write(IAC);
!                      baosp.write(SE);
!                      writeByte(baosp.toByteArray());
!                      baosp.reset();
  
!                      i++;
!                   }
!                   i++;
!                   break;
!             }
!             return true;
        }
        else {
!          return false;
!       }
!    }
  
  	/**
  	 * Negotiate new environment string for device name
! 	 *
  	 * @throws IOException
  	 */
***************
*** 3171,3175 ****
  	 * unsuccessful attempt a sequential number is appended until we find one or
  	 * the controller says no way.
! 	 * 
  	 * @return String
  	 */
--- 3171,3175 ----
  	 * unsuccessful attempt a sequential number is appended until we find one or
  	 * the controller says no way.
! 	 *
  	 * @return String
  	 */

Index: GuiGraphicBuffer.java
===================================================================
RCS file: /cvsroot/tn5250j/tn5250j/src/org/tn5250j/GuiGraphicBuffer.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** GuiGraphicBuffer.java	30 Jun 2004 06:18:56 -0000	1.17
--- GuiGraphicBuffer.java	5 Jul 2004 17:01:03 -0000	1.18
***************
*** 35,41 ****
  import java.awt.font.*;
  
  import org.tn5250j.tools.logging.*;
  
! public class GuiGraphicBuffer {
  
     private BufferedImage bi;
--- 35,42 ----
  import java.awt.font.*;
  
+ import org.tn5250j.event.ScreenOIAListener;
  import org.tn5250j.tools.logging.*;
  
! public class GuiGraphicBuffer implements ScreenOIAListener {
  
     private BufferedImage bi;
***************
*** 67,75 ****
     private boolean resized = false;
     private boolean antialiased;
!    
     private TN5250jLogger log = TN5250jLogFactory.getLogger ("GFX");
-    
-    public GuiGraphicBuffer () {
  
        tArea = new Rectangle2D.Float();
        cArea = new Rectangle2D.Float();
--- 68,80 ----
     private boolean resized = false;
     private boolean antialiased;
! 
!    private Screen5250 screen;
! 
     private TN5250jLogger log = TN5250jLogFactory.getLogger ("GFX");
  
+    public GuiGraphicBuffer (Screen5250 screen) {
+ 
+       this.screen = screen;
+       screen.getOIA().addOIAListener(this);
        tArea = new Rectangle2D.Float();
        cArea = new Rectangle2D.Float();
***************
*** 511,514 ****
--- 516,654 ----
     }
  
+ //   public void setStatus(byte attr,byte value,String s) {
+    public void setStatus(ScreenOIA oia) {
+ 
+       int attr = oia.getLevel();
+       int value = oia.getInputInhibited();
+       String s = oia.getInhibitedText();
+       Graphics2D g2d = getWritingArea(screen.font);
+ 
+       if (g2d == null)
+          return;
+ 
+       try {
+          g2d.setColor(screen.colorBg);
+          g2d.fill(sArea);
+ 
+          float Y = ((int)sArea.getY() + screen.fmHeight)- (screen.lm.getLeading() + screen.lm.getDescent());
+ 
+          switch (attr) {
+ 
+ //   public static final int OIA_LEVEL_INPUT_INHIBITED   =  1;
+ 
+ //            case STATUS_SYSTEM:
+             case OIA_LEVEL_INPUT_INHIBITED:
+             case OIA_LEVEL_NOT_INHIBITED:
+                if (value == oia.INPUTINHIBITED_SYSTEM_WAIT) {
+                   g2d.setColor(screen.colorWhite);
+ 
+                   if (s != null)
+                      g2d.drawString(s,(float)sArea.getX(),Y);
+                   else
+                      g2d.drawString(xSystem,(float)sArea.getX(),Y);
+                }
+                break;
+ //            case STATUS_ERROR_CODE:
+             case OIA_LEVEL_INPUT_ERROR:
+                if (value == oia.INPUTINHIBITED_SYSTEM_WAIT) {
+                   g2d.setColor(screen.colorRed);
+ 
+                   if (s != null)
+                      g2d.drawString(s,(float)sArea.getX(),Y);
+                   else
+                      g2d.drawString(xError,(float)sArea.getX(),Y);
+ 
+                }
+                break;
+ 
+          }
+          g2d.dispose();
+       }
+       catch (Exception e) {
+ 
+          log.warn(" gui graphics setStatus " + e.getMessage());
+ 
+       }
+    }
+ 
+    // OIA_LEVEL
+    public static final int OIA_LEVEL_INPUT_INHIBITED   =  1;
+    public static final int OIA_LEVEL_NOT_INHIBITED   =  2;
+    public static final int OIA_LEVEL_MESSAGE_LIGHT_ON  =  3;
+    public static final int OIA_LEVEL_MESSAGE_LIGHT_OFF  =  4;
+    public static final int OIA_LEVEL_AUDIBLE_BELL  =  5;
+    public static final int OIA_LEVEL_INSERT_MODE  =  6;
+    public static final int OIA_LEVEL_KEYBOARD  =  7;
+    public static final int OIA_LEVEL_CLEAR_SCREEN  =  8;
+    public static final int OIA_LEVEL_SCREEN_SIZE  =  9;
+    public static final int OIA_LEVEL_INPUT_ERROR   =  10;
+    public static final int OIA_LEVEL_KEYS_BUFFERED   =  11;
+    public static final int OIA_LEVEL_SCRIPT   =  12;
+ 
+    public void onOIAChanged(ScreenOIA changedOIA) {
+ 
+       switch (changedOIA.getLevel()) {
+ 
+          case OIA_LEVEL_KEYS_BUFFERED:
+             if (changedOIA.isKeysBuffered()) {
+                Graphics2D g2d = getWritingArea(screen.font);
+                float Y = (screen.fmHeight * (screen.getRows() + 2))
+                      - (screen.lm.getLeading() + screen.lm.getDescent());
+                g2d.setColor(screen.colorYellow);
+                g2d.drawString("KB", (float) kbArea.getX(), Y);
+                screen.updateImage(kbArea.getBounds());
+                g2d.dispose();
+             }
+             else {
+ 
+                Graphics2D g2d = getWritingArea(screen.font);
+ 
+                g2d.setColor(screen.colorBg);
+                g2d.fill(kbArea);
+                screen.updateImage(kbArea.getBounds());
+                g2d.dispose();
+ 
+ 
+             }
+             break;
+          case OIA_LEVEL_MESSAGE_LIGHT_OFF:
+             Graphics2D g2d = getWritingArea(screen.font);
+ 
+             g2d.setColor(screen.colorBg);
+             g2d.fill(mArea);
+             screen.updateImage(mArea.getBounds());
+             g2d.dispose();
+             break;
+          case OIA_LEVEL_MESSAGE_LIGHT_ON:
+             g2d = getWritingArea(screen.font);
+             float Y = (screen.fmHeight * (screen.getRows() + 2))
+                   - (screen.lm.getLeading() + screen.lm.getDescent());
+             g2d.setColor(screen.colorBlue);
+             g2d.drawString("MW", (float) mArea.getX(), Y);
+             screen.updateImage(mArea.getBounds());
+             g2d.dispose();
+             break;
+          case OIA_LEVEL_SCRIPT:
+             if (changedOIA.isScriptActive()) {
+                drawScriptRunning(screen.colorGreen);
+                screen.updateImage(scriptArea.getBounds());
+             }
+             else {
+                eraseScriptRunning(screen.colorBg);
+                screen.updateImage(scriptArea.getBounds());
+ 
+             }
+             break;
+          case OIA_LEVEL_INPUT_INHIBITED:
+          case OIA_LEVEL_NOT_INHIBITED:
+             setStatus(changedOIA);
+             break;
+ 		// draw the status information
+ //		bi.setStatus(attr, value, s, fmWidth, fmHeight, lm, font, colorBg,
+ //				colorRed, colorWhite);
+ 
+       }
+    }
+ 
     /**
      * get the

Index: Screen5250.java
===================================================================
RCS file: /cvsroot/tn5250j/tn5250j/src/org/tn5250j/Screen5250.java,v
retrieving revision 1.61
retrieving revision 1.62
diff -C2 -d -r1.61 -r1.62
*** Screen5250.java	2 Jul 2004 13:52:07 -0000	1.61
--- Screen5250.java	5 Jul 2004 17:01:06 -0000	1.62
***************
*** 1,4 ****
  /**
!  * 
   * <p>
   * Title: Screen5250.jar
--- 1,4 ----
  /**
!  *
   * <p>
   * Title: Screen5250.jar
***************
[...2028 lines suppressed...]
  	public final Dimension getPreferredSize() {
***************
*** 5077,5084 ****
  
  	/**
! 	 * 
  	 * This routine is responsible for setting up a PrinterJob on this component
  	 * and initiating the print session.
! 	 *  
  	 */
  	public final void printMe() {
--- 4904,4911 ----
  
  	/**
! 	 *
  	 * This routine is responsible for setting up a PrinterJob on this component
  	 * and initiating the print session.
! 	 *
  	 */
  	public final void printMe() {



-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 - 
digital self defense, top technical experts, no vendor pitches, 
unmatched networking opportunities. Visit www.blackhat.com