home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Java / JDesignerPro / Jdp3_0.exe / data1.cab / Program_Files / JDPTextGrid.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-09  |  44.7 KB  |  3,799 lines

  1. import java.awt.Color;
  2. import java.awt.Component;
  3. import java.awt.Container;
  4. import java.awt.Dimension;
  5. import java.awt.Event;
  6. import java.awt.Font;
  7. import java.awt.FontMetrics;
  8. import java.awt.Graphics;
  9. import java.awt.Image;
  10. import java.awt.Insets;
  11. import java.awt.List;
  12. import java.awt.Panel;
  13. import java.awt.Rectangle;
  14. import java.awt.Scrollbar;
  15. import java.awt.image.ImageObserver;
  16. import java.util.Date;
  17. import java.util.StringTokenizer;
  18. import java.util.Vector;
  19.  
  20. public class JDPTextGrid extends Panel {
  21.    JDPUser user;
  22.    Scrollbar scrollEast;
  23.    Scrollbar scrollSouth;
  24.    Image offscreen;
  25.    Rectangle offscreensize;
  26.    Event thisEvent;
  27.    JDPMaskEdit JDPMaskEditMain;
  28.    String[][] currentText;
  29.    String[][] rowKey;
  30.    String[] recordLockValue;
  31.    String[] editMask;
  32.    String[] editMaskType;
  33.    int currentSelectedRow;
  34.    int currentSelectedColumn;
  35.    boolean[] columnSelected;
  36.    boolean[] rowSelected;
  37.    boolean[][] cellSelected;
  38.    boolean[][] cellChanged;
  39.    Font[][] cellFont;
  40.    Color[][] cellColor;
  41.    boolean[] rowChanged;
  42.    int[] columnWidth;
  43.    int[] columnHeight;
  44.    boolean[] rightJustify;
  45.    boolean columnHeaderOn = true;
  46.    String[] columnHeader;
  47.    int[] columnHeaderStyle;
  48.    int[] columnStyle;
  49.    Color[] columnHeaderColor;
  50.    Color[] columnColor;
  51.    Color[] columnBGColor;
  52.    boolean[] columnProtected;
  53.    boolean[][] fieldProtected;
  54.    boolean[] columnDisabled;
  55.    boolean[][] fieldDisabled;
  56.    boolean[] sortDescending;
  57.    int lockedColumns;
  58.    boolean scrollEastDisabled;
  59.    boolean scrollSouthDisabled;
  60.    Scrollbar pullDownScroll;
  61.    int[][] fieldType;
  62.    int[] fieldTypeCol;
  63.    int[][] spinnerMin;
  64.    int[][] spinnerMax;
  65.    boolean[][] isPullDown;
  66.    boolean[] isPullDownCol;
  67.    int[][] pullDownType;
  68.    int[] pullDownColType;
  69.    Rectangle pullDownRect;
  70.    boolean isPulledDown;
  71.    List[][] pullDownList;
  72.    JDPList pullDownDisplayList;
  73.    Vector[][] pullDownValue;
  74.    JDPCalendarPicker calendar;
  75.    JDPPopupComponent popup;
  76.    int xindexpulldown;
  77.    int yindexpulldown;
  78.    int xpulldown;
  79.    int ypulldown;
  80.    int wpulldown;
  81.    int hpulldown;
  82.    Rectangle[] pullDownCells;
  83.    int columnHeaderHeight;
  84.    int columnHeadHeight;
  85.    int lastFontHeight;
  86.    boolean rowHeaderOn = true;
  87.    String[] rowHeader;
  88.    String rowHeadJustify;
  89.    int rowHeaderWidth = 25;
  90.    int rowHeadWidth;
  91.    Color[][] rowGridColor;
  92.    Color[][] columnGridColor;
  93.    int[] columnOrder;
  94.    Color gridColor;
  95.    int minimumWidth = 60;
  96.    int minimumHeight = 60;
  97.    String clipBoard = "";
  98.    boolean[][] cursorInThisField;
  99.    boolean fieldSelected;
  100.    boolean[][] saveColumnSelected;
  101.    char[] buffer;
  102.    int nChars;
  103.    int maxchars = 30;
  104.    boolean highlight;
  105.    // $FF: renamed from: gr java.awt.Graphics
  106.    Graphics field_0;
  107.    Rectangle[][] mouseRect;
  108.    Rectangle[] colButton;
  109.    Rectangle[] rowButton;
  110.    Rectangle[] colHeadRect;
  111.    Rectangle[] rowHeadRect;
  112.    int totalColumns;
  113.    int totalRows;
  114.    int totalDataRows;
  115.    int currentColumn;
  116.    int currentRow;
  117.    int prevColumn;
  118.    int prevRow;
  119.    int cursorColumn;
  120.    int cursorRow;
  121.    int xOffset;
  122.    int yOffset;
  123.    int originalxOffset;
  124.    int displayedColumns;
  125.    int displayedRows;
  126.    int dragCount;
  127.    boolean draggingColMouse;
  128.    boolean draggingColButton;
  129.    boolean columnMoved;
  130.    int saveColumnWidth;
  131.    int currentXpos;
  132.    int columnButtonOffset;
  133.    int dragCol;
  134.    int initColXpoint;
  135.    boolean draggingRowMouse;
  136.    int saveColumnHeight;
  137.    int dragRow;
  138.    int initRowYpoint;
  139.    Rectangle Bounds;
  140.    int[] widths;
  141.    Font lastFont;
  142.    Font lastPlainFont;
  143.    Font plainFont;
  144.    Font boldFont;
  145.    // $FF: renamed from: fm java.awt.FontMetrics
  146.    FontMetrics field_1;
  147.    boolean thisGridOnly;
  148.    int initSelectColumn = -1;
  149.    int initSelectRow = -1;
  150.    boolean mousePressed;
  151.    int lastpos;
  152.    int thisSubstring;
  153.    int selectedFrom;
  154.    int selectedTo;
  155.    int cursorPos;
  156.    int initcursorPos;
  157.    int lastevtx;
  158.    int lastevty;
  159.    boolean paintAll;
  160.    boolean fieldDisplay;
  161.    int visColumns;
  162.    int visRows;
  163.    boolean nothingChanged;
  164.    Dimension prevSize;
  165.    String[] maskEdit;
  166.    String[] maskType;
  167.    String searchString = "";
  168.    boolean sortingEnabled;
  169.    Color textHighlightText;
  170.    Color textHighlight;
  171.    Color back;
  172.    Component[][] customPopup;
  173.    Rectangle upButton;
  174.    Rectangle downButton;
  175.    Rectangle checkboxRect;
  176.    public static final int COLUMN_MOVED = 10001;
  177.    public static final int COLUMN_RESIZED = 10002;
  178.    public static final int ROW_RESIZED = 10003;
  179.    public static final int TEXTFIELD = 0;
  180.    public static final int PULLDOWN = 1;
  181.    public static final int SPINNER = 2;
  182.    public static final int CHECKBOX = 3;
  183.    public static final int REGULAR = 0;
  184.    public static final int DATE = 1;
  185.    public static final int CUSTOM = 2;
  186.    public static final int EXTENDED_REGULAR = 3;
  187.  
  188.    void repaintColHead(int var1, int var2) {
  189.       if (this.draggingColMouse) {
  190.          if (var1 < 0) {
  191.             this.rowHeaderWidth = this.saveColumnWidth + var2 - this.initColXpoint;
  192.             ((Component)this).repaint(1, 5, this.Bounds.width, this.columnHeadHeight + 1);
  193.          } else if (this.saveColumnWidth + var2 - this.initColXpoint > 10) {
  194.             this.columnWidth[this.columnOrder[var1 + this.xOffset]] = this.saveColumnWidth + var2 - this.initColXpoint;
  195.             ((Component)this).repaint(this.initColXpoint - this.saveColumnWidth, 5, this.Bounds.width, this.columnHeadHeight + 1);
  196.          }
  197.       } else if (var1 < 0) {
  198.          this.rowHeaderWidth = this.saveColumnWidth + var2 - this.initColXpoint;
  199.          ((Component)this).repaint(1, 5, this.Bounds.width, this.columnHeadHeight + 1);
  200.       } else {
  201.          this.currentXpos = var2;
  202.          ((Component)this).repaint(this.rowHeadWidth, 5, this.Bounds.width, this.columnHeadHeight + 1);
  203.       }
  204.  
  205.       this.nothingChanged = false;
  206.    }
  207.  
  208.    void repaintRowHead(int var1, int var2) {
  209.       if (var1 < 0) {
  210.          this.columnHeaderHeight = this.saveColumnHeight + var2 - this.initRowYpoint;
  211.          ((Component)this).repaint();
  212.       } else {
  213.          if (this.saveColumnHeight + var2 - this.initRowYpoint > 15) {
  214.             this.columnHeight[var1 + this.yOffset] = this.saveColumnHeight + var2 - this.initRowYpoint;
  215.             ((Component)this).repaint();
  216.          }
  217.  
  218.       }
  219.    }
  220.  
  221.    public void setSpinnerMax(int var1, int var2, int var3) {
  222.       this.setFieldType(var1, var2, 2);
  223.       this.spinnerMax[var1][var2] = var3 - 999999999;
  224.       this.reDraw();
  225.    }
  226.  
  227.    public void sortItems(boolean var1, int var2, boolean var3) {
  228.       Object var4 = null;
  229.       int var5 = 0;
  230.       float var7 = -9999999.0F;
  231.       float var8 = 0.0F;
  232.       long var9 = -9999999L;
  233.       long[] var11 = null;
  234.       if (this.pullDownColType[var2] == 1) {
  235.          var11 = new long[this.totalRows];
  236.  
  237.          for(int var22 = 0; var22 < this.totalRows; ++var22) {
  238.             var11[var22] = 0L;
  239.             String var6 = this.currentText[var2][var22];
  240.             if (var6 != null && !var6.equals("")) {
  241.                var11[var22] = JDPDate.unformat(var6).getTime();
  242.             }
  243.          }
  244.       }
  245.  
  246.       int var42 = this.totalRows;
  247.  
  248.       for(int var23 = 0; var23 < var42; ++var23) {
  249.          var5 = var23;
  250.          String var28 = null;
  251.          var9 = -9999999L;
  252.          var7 = -9999999.0F;
  253.  
  254.          for(int var24 = var23; var24 < var42; ++var24) {
  255.             boolean var25 = true;
  256.  
  257.             for(int var26 = 0; var26 < this.totalColumns; ++var26) {
  258.                if (this.currentText[var26][var24] != null && !this.currentText[var26][var24].equals("")) {
  259.                   var25 = false;
  260.                   break;
  261.                }
  262.             }
  263.  
  264.             if (!var25) {
  265.                String var30 = this.currentText[var2][var24];
  266.                if (var30 == null) {
  267.                   var30 = "";
  268.                }
  269.  
  270.                if (this.rightJustify[var2]) {
  271.                   try {
  272.                      var8 = Float.valueOf(var30);
  273.                   } catch (Exception var27) {
  274.                      var8 = 0.0F;
  275.                   }
  276.  
  277.                   if (var7 == -9999999.0F || !var3 && var8 < var7 || var3 && var8 > var7) {
  278.                      var7 = var8;
  279.                      var5 = var24;
  280.                   }
  281.                } else if (this.pullDownColType[var2] == 1) {
  282.                   if (var9 == -9999999L || !var3 && var11[var24] < var9 || var3 && var11[var24] > var9) {
  283.                      var9 = var11[var24];
  284.                      var5 = var24;
  285.                   }
  286.                } else {
  287.                   if (var1) {
  288.                      var30 = var30.toLowerCase();
  289.                   }
  290.  
  291.                   if (var28 == null || !var3 && var30.compareTo(var28) < 0 || var3 && var30.compareTo(var28) > 0) {
  292.                      var28 = var30;
  293.                      var5 = var24;
  294.                   }
  295.                }
  296.             }
  297.          }
  298.  
  299.          if (var23 < var5 || var5 != -1) {
  300.             boolean var12 = this.rowChanged[var23];
  301.             this.rowChanged[var23] = this.rowChanged[var5];
  302.             this.rowChanged[var5] = var12;
  303.             int var13 = this.columnHeight[var23];
  304.             this.columnHeight[var23] = this.columnHeight[var5];
  305.             this.columnHeight[var5] = var13;
  306.             if (var11 != null) {
  307.                long var14 = var11[var23];
  308.                var11[var23] = var11[var5];
  309.                var11[var5] = var14;
  310.             }
  311.  
  312.             if (!this.rowHeader[0].equals("0")) {
  313.                String var16 = this.rowHeader[var23];
  314.                this.rowHeader[var23] = this.rowHeader[var5];
  315.                this.rowHeader[var5] = var16;
  316.             }
  317.  
  318.             for(int var43 = 0; var43 < this.totalColumns; ++var43) {
  319.                String var38 = this.currentText[var43][var23];
  320.                this.currentText[var43][var23] = this.currentText[var43][var5];
  321.                this.currentText[var43][var5] = var38;
  322.                Color var18 = this.cellColor[var43][var23];
  323.                this.cellColor[var43][var23] = this.cellColor[var43][var5];
  324.                this.cellColor[var43][var5] = var18;
  325.                Font var17 = this.cellFont[var43][var23];
  326.                this.cellFont[var43][var23] = this.cellFont[var43][var5];
  327.                this.cellFont[var43][var5] = var17;
  328.                var18 = this.rowGridColor[var43][var23];
  329.                this.rowGridColor[var43][var23] = this.rowGridColor[var43][var5];
  330.                this.rowGridColor[var43][var5] = var18;
  331.                var18 = this.columnGridColor[var43][var23];
  332.                this.columnGridColor[var43][var23] = this.columnGridColor[var43][var5];
  333.                this.columnGridColor[var43][var5] = var18;
  334.                var12 = this.fieldProtected[var43][var23];
  335.                this.fieldProtected[var43][var23] = this.fieldProtected[var43][var5];
  336.                this.fieldProtected[var43][var5] = var12;
  337.                var12 = this.fieldDisabled[var43][var23];
  338.                this.fieldDisabled[var43][var23] = this.fieldDisabled[var43][var5];
  339.                this.fieldDisabled[var43][var5] = var12;
  340.                var12 = this.isPullDown[var43][var23];
  341.                this.isPullDown[var43][var23] = this.isPullDown[var43][var5];
  342.                this.isPullDown[var43][var5] = var12;
  343.                var13 = this.pullDownType[var43][var23];
  344.                this.pullDownType[var43][var23] = this.pullDownType[var43][var5];
  345.                this.pullDownType[var43][var5] = var13;
  346.                if (this.pullDownList[var43].length > 1) {
  347.                   List var20 = this.pullDownList[var43][var23];
  348.                   this.pullDownList[var43][var23] = this.pullDownList[var43][var5];
  349.                   this.pullDownList[var43][var5] = var20;
  350.                   Vector var19 = this.pullDownValue[var43][var23];
  351.                   this.pullDownValue[var43][var23] = this.pullDownValue[var43][var5];
  352.                   this.pullDownValue[var43][var5] = var19;
  353.                }
  354.  
  355.                if (this.customPopup[var43].length > 1) {
  356.                   Component var21 = this.customPopup[var43][var23];
  357.                   this.customPopup[var43][var23] = this.customPopup[var43][var5];
  358.                   this.customPopup[var43][var5] = var21;
  359.                }
  360.             }
  361.  
  362.             if (this.rowKey != null) {
  363.                for(int var44 = 0; var44 < this.rowKey[0].length; ++var44) {
  364.                   String var39 = this.rowKey[var23][var44];
  365.                   this.rowKey[var23][var44] = this.rowKey[var5][var44];
  366.                   this.rowKey[var5][var44] = var39;
  367.                }
  368.             }
  369.          }
  370.       }
  371.  
  372.       this.reDraw();
  373.    }
  374.  
  375.    int[] getWidths() {
  376.       this.field_1 = this.field_0.getFontMetrics();
  377.       this.widths = this.field_1.getWidths();
  378.       return this.widths;
  379.    }
  380.  
  381.    public int getSpinnerMax(int var1, int var2) {
  382.       return this.spinnerMax[var1][var2] + 999999999;
  383.    }
  384.  
  385.    public void setColumnHeaderHeight(int var1) {
  386.       this.columnHeaderHeight = var1;
  387.       this.reDraw();
  388.    }
  389.  
  390.    public int getColumnHeaderHeight() {
  391.       return this.columnHeaderHeight;
  392.    }
  393.  
  394.    public void setColumnSelected(int var1, boolean var2) {
  395.       this.columnSelected[var1] = var2;
  396.  
  397.       for(int var3 = 0; var3 < this.totalRows; ++var3) {
  398.          this.cellSelected[var1][var3] = var2;
  399.       }
  400.  
  401.       this.currentSelectedColumn = var1;
  402.       this.reDraw();
  403.    }
  404.  
  405.    public boolean getColumnSelected(int var1) {
  406.       return this.columnSelected[var1];
  407.    }
  408.  
  409.    public void setGridColor(Color var1) {
  410.       this.gridColor = var1;
  411.       this.reDraw();
  412.    }
  413.  
  414.    public Color getGridColor() {
  415.       return this.gridColor;
  416.    }
  417.  
  418.    public void newTable() {
  419.       if (this.currentText == null || this.currentText.length < 1) {
  420.          this.currentText = new String[50][50];
  421.       }
  422.  
  423.       this.totalColumns = this.currentText.length;
  424.       this.totalRows = this.currentText[0].length;
  425.       if (this.editMask == null || this.editMask.length != this.totalColumns) {
  426.          this.editMask = new String[this.totalColumns];
  427.       }
  428.  
  429.       if (this.editMaskType == null || this.editMaskType.length != this.totalColumns) {
  430.          this.editMaskType = new String[this.totalColumns];
  431.       }
  432.  
  433.       if (this.columnSelected == null || this.cellSelected.length != this.totalColumns) {
  434.          this.columnSelected = new boolean[this.totalColumns];
  435.       }
  436.  
  437.       if (this.recordLockValue == null || this.recordLockValue.length != this.totalRows) {
  438.          this.recordLockValue = new String[this.totalRows];
  439.       }
  440.  
  441.       if (this.rowSelected == null || this.rowSelected.length != this.totalRows) {
  442.          this.rowSelected = new boolean[this.totalRows];
  443.       }
  444.  
  445.       if (this.cellSelected == null || this.cellSelected.length != this.totalColumns || this.cellSelected[0].length != this.totalRows) {
  446.          this.cellSelected = new boolean[this.totalColumns][this.totalRows];
  447.       }
  448.  
  449.       if (this.cellChanged == null || this.cellChanged.length != this.totalColumns || this.cellChanged[0].length != this.totalRows) {
  450.          this.cellChanged = new boolean[this.totalColumns][this.totalRows];
  451.       }
  452.  
  453.       if (this.cellColor == null || this.cellColor.length != this.totalColumns || this.cellColor[0].length != this.totalRows) {
  454.          this.cellColor = new Color[this.totalColumns][this.totalRows];
  455.       }
  456.  
  457.       if (this.cellFont == null || this.cellFont.length != this.totalColumns || this.cellFont[0].length != this.totalRows) {
  458.          this.cellFont = new Font[this.totalColumns][this.totalRows];
  459.       }
  460.  
  461.       if (this.rowGridColor == null || this.rowGridColor.length != this.totalColumns || this.rowGridColor[0].length != this.totalRows) {
  462.          this.rowGridColor = new Color[this.totalColumns][this.totalRows];
  463.       }
  464.  
  465.       if (this.columnGridColor == null || this.columnGridColor.length != this.totalColumns || this.columnGridColor[0].length != this.totalRows) {
  466.          this.columnGridColor = new Color[this.totalColumns][this.totalRows];
  467.       }
  468.  
  469.       if (this.rowChanged == null || this.rowChanged.length != this.totalRows) {
  470.          this.rowChanged = new boolean[this.totalRows];
  471.       }
  472.  
  473.       if (this.rightJustify == null || this.rightJustify.length != this.totalColumns) {
  474.          this.rightJustify = new boolean[this.totalColumns];
  475.       }
  476.  
  477.       if (this.columnHeader == null || this.columnHeader.length != this.totalColumns) {
  478.          this.columnHeader = new String[this.totalColumns];
  479.  
  480.          for(int var1 = 0; var1 < this.totalColumns; ++var1) {
  481.             this.columnHeader[var1] = Integer.toString(var1);
  482.          }
  483.       }
  484.  
  485.       if (this.columnHeaderStyle == null || this.columnHeaderStyle.length != this.totalColumns) {
  486.          this.columnHeaderStyle = new int[this.totalColumns];
  487.  
  488.          for(int var4 = 0; var4 < this.totalColumns; ++var4) {
  489.             this.columnHeaderStyle[var4] = 1;
  490.          }
  491.       }
  492.  
  493.       if (this.columnStyle == null || this.columnStyle.length != this.totalColumns) {
  494.          this.columnStyle = new int[this.totalColumns];
  495.  
  496.          for(int var5 = 0; var5 < this.totalColumns; ++var5) {
  497.             this.columnStyle[var5] = 0;
  498.          }
  499.       }
  500.  
  501.       if (this.columnHeaderColor == null || this.columnHeaderColor.length != this.totalColumns) {
  502.          this.columnHeaderColor = new Color[this.totalColumns];
  503.  
  504.          for(int var6 = 0; var6 < this.totalColumns; ++var6) {
  505.             this.columnHeaderColor[var6] = Color.black;
  506.          }
  507.       }
  508.  
  509.       if (this.columnColor == null || this.columnColor.length != this.totalColumns) {
  510.          this.columnColor = new Color[this.totalColumns];
  511.  
  512.          for(int var7 = 0; var7 < this.totalColumns; ++var7) {
  513.             this.columnColor[var7] = Color.black;
  514.          }
  515.       }
  516.  
  517.       if (this.columnBGColor == null || this.columnBGColor.length != this.totalColumns) {
  518.          this.columnBGColor = new Color[this.totalColumns];
  519.  
  520.          for(int var8 = 0; var8 < this.totalColumns; ++var8) {
  521.             this.columnBGColor[var8] = Color.white;
  522.          }
  523.       }
  524.  
  525.       if (this.columnProtected == null || this.columnProtected.length != this.totalColumns) {
  526.          this.columnProtected = new boolean[this.totalColumns];
  527.       }
  528.  
  529.       if (this.fieldProtected == null || this.fieldProtected.length != this.totalColumns || this.fieldProtected[0].length != this.totalRows) {
  530.          this.fieldProtected = new boolean[this.totalColumns][this.totalRows];
  531.       }
  532.  
  533.       if (this.columnDisabled == null || this.columnDisabled.length != this.totalColumns) {
  534.          this.columnDisabled = new boolean[this.totalColumns];
  535.       }
  536.  
  537.       if (this.fieldDisabled == null || this.fieldDisabled.length != this.totalColumns || this.fieldDisabled[0].length != this.totalRows) {
  538.          this.fieldDisabled = new boolean[this.totalColumns][this.totalRows];
  539.       }
  540.  
  541.       if (this.sortDescending == null || this.sortDescending.length != this.totalColumns) {
  542.          this.sortDescending = new boolean[this.totalColumns];
  543.       }
  544.  
  545.       if (this.fieldType == null || this.fieldType.length != this.totalColumns || this.fieldType[0].length != this.totalRows) {
  546.          this.fieldType = new int[this.totalColumns][this.totalRows];
  547.       }
  548.  
  549.       if (this.fieldTypeCol == null || this.fieldTypeCol.length != this.totalColumns) {
  550.          this.fieldTypeCol = new int[this.totalColumns];
  551.       }
  552.  
  553.       if (this.spinnerMin == null || this.spinnerMin.length != this.totalColumns || this.spinnerMin[0].length != this.totalRows) {
  554.          this.spinnerMin = new int[this.totalColumns][this.totalRows];
  555.       }
  556.  
  557.       if (this.spinnerMax == null || this.spinnerMax.length != this.totalColumns || this.spinnerMax[0].length != this.totalRows) {
  558.          this.spinnerMax = new int[this.totalColumns][this.totalRows];
  559.       }
  560.  
  561.       if (this.isPullDown == null || this.isPullDown.length != this.totalColumns || this.isPullDown[0].length != this.totalRows) {
  562.          this.isPullDown = new boolean[this.totalColumns][this.totalRows];
  563.       }
  564.  
  565.       if (this.isPullDownCol == null || this.isPullDownCol.length != this.totalColumns) {
  566.          this.isPullDownCol = new boolean[this.totalColumns];
  567.       }
  568.  
  569.       if (this.pullDownType == null || this.pullDownType.length != this.totalColumns || this.pullDownType[0].length != this.totalRows) {
  570.          this.pullDownType = new int[this.totalColumns][this.totalRows];
  571.       }
  572.  
  573.       if (this.pullDownColType == null || this.pullDownColType.length != this.totalColumns) {
  574.          this.pullDownColType = new int[this.totalColumns];
  575.       }
  576.  
  577.       if (this.pullDownList == null || this.pullDownList.length != this.totalColumns) {
  578.          this.pullDownList = new List[this.totalColumns][this.totalRows];
  579.       }
  580.  
  581.       if (this.pullDownValue == null || this.pullDownValue.length != this.totalColumns) {
  582.          this.pullDownValue = new Vector[this.totalColumns][this.totalRows];
  583.       }
  584.  
  585.       if (this.customPopup == null || this.customPopup.length != this.totalColumns || this.customPopup[0].length != this.totalRows) {
  586.          this.customPopup = new Component[this.totalColumns][this.totalRows];
  587.       }
  588.  
  589.       if (this.rowHeader == null || this.rowHeader.length != this.totalRows) {
  590.          this.rowHeader = new String[this.totalRows];
  591.  
  592.          for(int var9 = 0; var9 < this.totalRows; ++var9) {
  593.             this.rowHeader[var9] = Integer.toString(var9);
  594.          }
  595.       }
  596.  
  597.       if (this.columnWidth == null || this.columnWidth.length != this.totalColumns) {
  598.          this.columnWidth = new int[this.totalColumns];
  599.  
  600.          for(int var10 = 0; var10 < this.totalColumns; ++var10) {
  601.             this.columnWidth[var10] = 100;
  602.          }
  603.       }
  604.  
  605.       if (this.columnHeight == null || this.columnHeight.length != this.totalRows) {
  606.          this.columnHeight = new int[this.totalRows];
  607.  
  608.          for(int var11 = 0; var11 < this.totalRows; ++var11) {
  609.             this.columnHeight[var11] = 18;
  610.          }
  611.       }
  612.  
  613.       if (this.columnOrder == null || this.columnOrder.length != this.totalColumns) {
  614.          this.columnOrder = new int[this.totalColumns];
  615.  
  616.          for(int var12 = 0; var12 < this.totalColumns; this.columnOrder[var12] = var12++) {
  617.          }
  618.       }
  619.  
  620.       if (this.field_0 != null) {
  621.          for(int var13 = 0; var13 < this.totalRows; ++var13) {
  622.             this.field_0.setFont(this.boldFont);
  623.             this.columnHeight[var13] = this.StringHeight() + 3;
  624.  
  625.             for(int var2 = 0; var2 < this.totalColumns; ++var2) {
  626.                if (this.cellFont[var2][var13] != null) {
  627.                   this.field_0.setFont(this.cellFont[var2][var13]);
  628.                   int var3 = this.StringHeight();
  629.                   if (var3 > this.columnHeight[var13]) {
  630.                      this.columnHeight[var13] = var3 + 2;
  631.                   }
  632.                }
  633.             }
  634.          }
  635.       }
  636.  
  637.       this.buffer = new char[this.maxchars];
  638.       this.mouseRect = new Rectangle[this.totalColumns][this.totalRows];
  639.       this.colButton = new Rectangle[this.totalColumns];
  640.       this.rowButton = new Rectangle[this.totalRows];
  641.       this.colHeadRect = new Rectangle[this.totalColumns + 1];
  642.       this.rowHeadRect = new Rectangle[this.totalRows + 1];
  643.       this.cursorInThisField = new boolean[this.totalColumns][this.totalRows];
  644.       this.saveColumnSelected = new boolean[this.totalColumns][this.totalRows];
  645.       if (this.currentColumn >= this.totalColumns) {
  646.          this.currentColumn = 0;
  647.       }
  648.  
  649.       if (this.currentRow >= this.totalRows) {
  650.          this.currentRow = 0;
  651.       }
  652.  
  653.       if (this.scrollEast != null) {
  654.          this.scrollEast.setValue(0);
  655.       }
  656.  
  657.       if (this.scrollSouth != null) {
  658.          this.scrollSouth.setValue(0);
  659.       }
  660.  
  661.       this.visColumns = 0;
  662.       this.visRows = 0;
  663.       this.xOffset = 0;
  664.       this.yOffset = 0;
  665.       this.isPulledDown = false;
  666.       this.nothingChanged = false;
  667.       ((Component)this).repaint();
  668.    }
  669.  
  670.    public void setFieldTypeCol(int var1, int var2) {
  671.       this.fieldTypeCol[var1] = var2;
  672.       this.setPullDownCol(var1, var2 == 1);
  673.       if (var2 == 3) {
  674.          this.setColumnProtected(var1, true);
  675.       }
  676.  
  677.       this.reDraw();
  678.    }
  679.  
  680.    public int getCurrentRow() {
  681.       return this.currentRow;
  682.    }
  683.  
  684.    public int getCurrentColumn() {
  685.       return this.currentColumn;
  686.    }
  687.  
  688.    public int getFieldTypeCol(int var1) {
  689.       return this.fieldTypeCol[var1];
  690.    }
  691.  
  692.    public void layout() {
  693.       ((Component)this).repaint();
  694.    }
  695.  
  696.    void drawSelectedField(int var1, int var2, int var3, int var4, int var5, int var6) {
  697.       int var7 = this.columnOrder[this.currentColumn];
  698.       if (this.isPulledDown && this.currentText[var1][var2].equals("") && (this.isPullDown[var7][this.getPulldownRow(var7, this.currentRow)] || this.isPullDownCol[var7])) {
  699.          if (this.pullDownType[var7][this.getPulldownRow(var7, this.currentRow)] != 1 && this.pullDownColType[var7] != 1) {
  700.             if (this.pullDownType[var7][this.getPulldownRow(var7, this.currentRow)] != 2 && this.pullDownColType[var7] != 2 && this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].countItems() > 0) {
  701.                this.currentText[var7][this.currentRow] = this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].getItem(0);
  702.                this.selectedFrom = 0;
  703.                this.selectedTo = this.currentText[var7][this.currentRow].length();
  704.             }
  705.          } else if (this.calendar != null) {
  706.             this.currentText[var7][this.currentRow] = this.calendar.getDateString();
  707.          }
  708.       }
  709.  
  710.       if ((this.isPullDown[var7][this.getPulldownRow(var7, this.currentRow)] || this.isPullDownCol[var7]) && (this.columnProtected[var7] || this.fieldProtected[var7][this.currentRow])) {
  711.          this.selectedFrom = 0;
  712.          this.selectedTo = this.currentText[var7][this.currentRow].length();
  713.       }
  714.  
  715.       String var8 = this.currentText[var7][this.currentRow];
  716.       this.lastpos = 0;
  717.       if (this.cursorPos < 0) {
  718.          this.cursorPos = 0;
  719.       }
  720.  
  721.       if (this.selectedFrom < 0) {
  722.          this.selectedFrom = 0;
  723.       }
  724.  
  725.       if (this.selectedTo < 0) {
  726.          this.selectedTo = 0;
  727.       }
  728.  
  729.       if (this.selectedTo > var8.length()) {
  730.          this.selectedTo = var8.length();
  731.       }
  732.  
  733.       if (this.selectedFrom > var8.length()) {
  734.          this.selectedFrom = var8.length();
  735.       }
  736.  
  737.       if (this.cursorPos > var8.length()) {
  738.          this.cursorPos = var8.length();
  739.       }
  740.  
  741.       if (this.cursorPos < this.lastpos) {
  742.          this.lastpos = this.cursorPos - 1;
  743.       }
  744.  
  745.       if (this.lastpos < 0) {
  746.          this.lastpos = 0;
  747.       }
  748.  
  749.       this.field_0.setColor(this.columnBGColor[var1]);
  750.       this.field_0.fillRect(var3 + 3, var4 + 3, var5 - 5, var6 - 5);
  751.       if (this.cellColor[var1][var2] != null) {
  752.          this.field_0.setColor(this.cellColor[var1][var2]);
  753.       } else {
  754.          this.field_0.setColor(this.columnColor[var1]);
  755.       }
  756.  
  757.       if (this.cellFont[var1][var2] != null) {
  758.          this.field_0.setFont(this.cellFont[var1][var2]);
  759.       } else if (this.columnStyle[var1] == 1) {
  760.          this.field_0.setFont(this.boldFont);
  761.       }
  762.  
  763.       int var9 = this.StringHeight();
  764.       if (this.thisSubstring > var8.length()) {
  765.          this.thisSubstring = var8.length();
  766.       }
  767.  
  768.       this.field_0.drawString(var8.substring(0, this.thisSubstring), var3 + 3, var4 + var9 - 1);
  769.       if (this.selectedFrom < this.selectedTo) {
  770.          int var10 = 0;
  771.          int var11 = var5 - 1;
  772.          int var12 = var8.length();
  773.          if (var12 > this.selectedTo) {
  774.             var12 = this.selectedTo;
  775.          }
  776.  
  777.          if (var12 > this.thisSubstring) {
  778.             var12 = this.thisSubstring;
  779.          }
  780.  
  781.          int var13 = this.lastpos;
  782.          if (var13 < this.selectedFrom) {
  783.             var13 = this.selectedFrom;
  784.             var10 = this.user.u.StringWidth(this.field_0, var8.substring(this.lastpos, this.selectedFrom));
  785.          }
  786.  
  787.          this.user.u.StringWidth(this.field_0, var8.substring(var13, var12));
  788.          var11 = this.user.u.StringWidth(this.field_0, var8.substring(var13, var12));
  789.          if (var11 > var5 - 5) {
  790.             var11 = var5 - 5;
  791.          }
  792.  
  793.          this.field_0.setColor(this.textHighlight);
  794.          this.field_0.fillRect(var3 + 3 + var10, var4 + 2, var11, var6 - 3);
  795.          this.field_0.setColor(this.textHighlightText);
  796.          this.field_0.drawString(var8.substring(var13, var12), var3 + 3 + var10, var4 + var9 - 1);
  797.       } else if (this.fieldSelected) {
  798.          int var14 = this.user.u.StringWidth(this.field_0, var8.substring(this.lastpos).substring(0, this.cursorPos - this.lastpos));
  799.          Font var16 = this.field_0.getFont();
  800.          Font var17 = new Font(var16.getName(), var16.getStyle(), var16.getSize() + 2);
  801.          if (!this.columnProtected[this.columnOrder[this.currentColumn]] && !this.fieldProtected[this.columnOrder[this.currentColumn]][this.currentRow] && !this.columnDisabled[this.columnOrder[this.currentColumn]] && !this.fieldDisabled[this.columnOrder[this.currentColumn]][this.currentRow]) {
  802.             this.field_0.setFont(var17);
  803.             this.field_0.drawString("|", var3 + 2 + var14, var4 + var9 - 1);
  804.          }
  805.  
  806.          this.field_0.setFont(this.plainFont);
  807.       }
  808.  
  809.       this.field_0.setColor(this.textHighlight);
  810.       this.field_0.drawRect(var3 + 1, var4 + 1, var5 - 2, var6 - 2);
  811.       this.field_0.drawRect(var3 + 2, var4 + 2, var5 - 4, var6 - 4);
  812.       if (var1 == this.totalColumns - 1) {
  813.          this.thisGridOnly = false;
  814.       }
  815.  
  816.       if (!this.isPullDown[var1][var2] && !this.isPullDownCol[var1]) {
  817.          if (this.fieldType[var1][var2] != 3 && this.fieldTypeCol[var1] != 3) {
  818.             if (this.fieldType[var1][var2] == 2 || this.fieldTypeCol[var1] == 2) {
  819.                this.drawSpinner(var1, var2, var3, var4, var5, var6);
  820.             }
  821.          } else {
  822.             this.drawCheckbox(var1, var2, var3, var4, var5, var6);
  823.          }
  824.  
  825.          this.pullDownRect = null;
  826.       } else {
  827.          if (!this.fieldDisabled[this.columnOrder[this.currentColumn]][this.currentRow] && !this.columnDisabled[this.columnOrder[this.currentColumn]]) {
  828.             this.drawPullDown(var1, var2, var3, var4, var5, var6);
  829.          }
  830.  
  831.       }
  832.    }
  833.  
  834.    public String getSelectedText() {
  835.       return this.currentText[this.getCurrentColumn()][this.getCurrentRow()].substring(this.selectedFrom, this.selectedTo);
  836.    }
  837.  
  838.    public void setTableDimensions(int var1, int var2) {
  839.       this.currentText = new String[var1][var2];
  840.       this.newTable();
  841.    }
  842.  
  843.    public Dimension getTableDimensions() {
  844.       return new Dimension(this.totalColumns, this.totalRows);
  845.    }
  846.  
  847.    public void setCellFont(int var1, int var2, Font var3) {
  848.       this.cellFont[var1][var2] = var3;
  849.       this.reDraw();
  850.    }
  851.  
  852.    public boolean getSortingEnabled() {
  853.       return this.sortingEnabled;
  854.    }
  855.  
  856.    public void setSortingEnabled(boolean var1) {
  857.       this.sortingEnabled = var1;
  858.    }
  859.  
  860.    public Font getCellFont(int var1, int var2) {
  861.       return this.cellFont[var1][var2];
  862.    }
  863.  
  864.    public void setColumnEnabled(int var1, boolean var2) {
  865.       this.columnDisabled[var1] = !var2;
  866.       this.reDraw();
  867.    }
  868.  
  869.    public boolean getColumnEnabled(int var1) {
  870.       return !this.columnDisabled[var1];
  871.    }
  872.  
  873.    public void setPullDownColType(int var1, int var2) {
  874.       this.isPullDownCol[var1] = true;
  875.       this.pullDownType[var1][0] = var2;
  876.       this.setFieldTypeCol(var1, 1);
  877.       this.reDraw();
  878.    }
  879.  
  880.    public void setMinimumWidth(int var1) {
  881.       this.minimumWidth = var1;
  882.    }
  883.  
  884.    public int getMinimumWidth() {
  885.       return this.minimumWidth;
  886.    }
  887.  
  888.    int StringHeight() {
  889.       if (this.field_0 == null) {
  890.          return 0;
  891.       } else {
  892.          if (this.lastFont == null || this.field_0.getFont().getSize() != this.lastFont.getSize()) {
  893.             this.getWidths();
  894.             this.lastFont = this.field_0.getFont();
  895.          }
  896.  
  897.          return this.field_1.getHeight();
  898.       }
  899.    }
  900.  
  901.    public void setEditMask(String var1, int var2, String var3) {
  902.       this.editMask[var2] = var3;
  903.       this.editMaskType[var2] = var1;
  904.    }
  905.  
  906.    public void setSpinnerMin(int var1, int var2, int var3) {
  907.       this.setFieldType(var1, var2, 2);
  908.       this.spinnerMin[var1][var2] = var3 + 999999999;
  909.       this.reDraw();
  910.    }
  911.  
  912.    public int getSpinnerMin(int var1, int var2) {
  913.       return this.spinnerMin[var1][var2] - 999999999;
  914.    }
  915.  
  916.    public void setPopupComponent(int var1, int var2, Component var3) {
  917.       this.customPopup[var1][var2] = var3;
  918.       this.pullDownType[var1][var2] = 2;
  919.    }
  920.  
  921.    public void setPopupComponent(int var1, Component var2) {
  922.       this.customPopup[var1][0] = var2;
  923.       this.pullDownColType[var1] = 2;
  924.    }
  925.  
  926.    public Component getPopupComponent(int var1, int var2) {
  927.       return this.customPopup[var1][var2];
  928.    }
  929.  
  930.    public Component getPopupComponent(int var1) {
  931.       return this.customPopup[var1][0];
  932.    }
  933.  
  934.    void reorderColumns(int var1, int var2) {
  935.       if (var1 >= this.lockedColumns) {
  936.          int var3 = 0;
  937.          int var4 = 0;
  938.  
  939.          for(int var8 = var2 - this.columnButtonOffset; var3 < var8 - this.rowHeadWidth && var4 + this.xOffset < this.totalColumns; ++var4) {
  940.             var3 += this.columnWidth[this.columnOrder[var4 + this.xOffset]];
  941.          }
  942.  
  943.          --var4;
  944.          int var5 = var1 + this.originalxOffset;
  945.          int var6 = var4 + this.xOffset;
  946.          if (var6 < this.lockedColumns - 1) {
  947.             var6 = this.lockedColumns - 1;
  948.          }
  949.  
  950.          int var7 = this.columnOrder[var5];
  951.          var4 = var5;
  952.          if (var5 < var6) {
  953.             for(var4 = var5; var4 < var6; ++var4) {
  954.                if (this.columnOrder[var4] != this.columnOrder[var4 + 1]) {
  955.                   this.columnMoved = true;
  956.                }
  957.  
  958.                this.columnOrder[var4] = this.columnOrder[var4 + 1];
  959.             }
  960.          }
  961.  
  962.          if (var5 > var6) {
  963.             for(var4 = var5; var4 > var6 + 1; --var4) {
  964.                if (this.columnOrder[var4] != this.columnOrder[var4 - 1]) {
  965.                   this.columnMoved = true;
  966.                }
  967.  
  968.                this.columnOrder[var4] = this.columnOrder[var4 - 1];
  969.             }
  970.          }
  971.  
  972.          this.columnOrder[var4] = var7;
  973.          ((Component)this).repaint();
  974.       }
  975.    }
  976.  
  977.    public void setSpinnerMaxCol(int var1, int var2) {
  978.       this.setFieldTypeCol(var1, 2);
  979.       this.spinnerMax[var1][0] = var2 - 999999999;
  980.       this.reDraw();
  981.    }
  982.  
  983.    public int getSpinnerMaxCol(int var1) {
  984.       return this.spinnerMax[var1][0] + 999999999;
  985.    }
  986.  
  987.    public void setColumnProtected(int var1, boolean var2) {
  988.       this.columnProtected[var1] = var2;
  989.       this.reDraw();
  990.    }
  991.  
  992.    public boolean getColumnProtected(int var1) {
  993.       return this.columnProtected[var1];
  994.    }
  995.  
  996.    void repaintGrid(int var1, int var2) {
  997.       int var5 = 2;
  998.       int var6 = 2;
  999.       if (this.fieldSelected) {
  1000.          if (var1 < this.xOffset) {
  1001.             this.xOffset = var1;
  1002.             this.thisGridOnly = false;
  1003.          }
  1004.  
  1005.          if (var2 < this.yOffset) {
  1006.             this.yOffset = var2;
  1007.             this.thisGridOnly = false;
  1008.          }
  1009.  
  1010.          if (var1 > this.xOffset + this.displayedColumns) {
  1011.             this.xOffset = var1;
  1012.             this.thisGridOnly = false;
  1013.          }
  1014.  
  1015.          if (var2 > this.yOffset + this.displayedRows) {
  1016.             this.yOffset = var2;
  1017.             this.thisGridOnly = false;
  1018.          }
  1019.  
  1020.          ((Component)this).repaint();
  1021.       }
  1022.  
  1023.       var1 -= this.xOffset;
  1024.       var2 -= this.yOffset;
  1025.       if (var1 < this.columnWidth.length) {
  1026.          if (var2 < this.columnHeight.length) {
  1027.             if (this.rowHeaderOn) {
  1028.                var5 += this.rowHeaderWidth;
  1029.             }
  1030.  
  1031.             int var7;
  1032.             for(var7 = 0; var7 < var1; ++var7) {
  1033.                var5 += this.columnWidth[this.columnOrder[var7 + this.xOffset]];
  1034.             }
  1035.  
  1036.             int var10000 = this.columnWidth[this.columnOrder[var7 + this.xOffset]];
  1037.             if (this.columnHeaderOn) {
  1038.                var6 += this.columnHeaderHeight;
  1039.             }
  1040.  
  1041.             for(var7 = 0; var7 < var2; ++var7) {
  1042.                var6 += this.columnHeight[var7 + this.yOffset];
  1043.             }
  1044.  
  1045.             var10000 = this.columnHeight[var7 + this.yOffset];
  1046.             this.fieldDisplay = true;
  1047.             ((Component)this).repaint();
  1048.          }
  1049.       }
  1050.    }
  1051.  
  1052.    public int getTableColumns() {
  1053.       return this.totalColumns;
  1054.    }
  1055.  
  1056.    public void setRowHeaderOn(boolean var1) {
  1057.       this.rowHeaderOn = var1;
  1058.       this.reDraw();
  1059.    }
  1060.  
  1061.    public boolean getRowHeaderOn() {
  1062.       return this.rowHeaderOn;
  1063.    }
  1064.  
  1065.    public void setLockedColumns(int var1) {
  1066.       this.lockedColumns = var1;
  1067.    }
  1068.  
  1069.    public int getLockedColumns() {
  1070.       return this.lockedColumns;
  1071.    }
  1072.  
  1073.    public void setCellEnabled(int var1, int var2, boolean var3) {
  1074.       this.fieldDisabled[var1][var2] = !var3;
  1075.       this.reDraw();
  1076.    }
  1077.  
  1078.    public boolean getCellEnabled(int var1, int var2) {
  1079.       return !this.fieldDisabled[var1][var2];
  1080.    }
  1081.  
  1082.    public void setScrollEastDisabled(boolean var1) {
  1083.       this.scrollEastDisabled = var1;
  1084.       this.reDraw();
  1085.    }
  1086.  
  1087.    public boolean getScrollEastDisabled() {
  1088.       return this.scrollEastDisabled;
  1089.    }
  1090.  
  1091.    void createCalendar() {
  1092.       if (this.calendar == null) {
  1093.          this.calendar = new JDPCalendarPicker();
  1094.          this.calendar.setBorder(true);
  1095.          this.calendar.setFont(((Component)this).getFont());
  1096.          this.calendar.setForeground(((Component)this).getForeground());
  1097.          this.calendar.setBackground(this.back);
  1098.       }
  1099.  
  1100.    }
  1101.  
  1102.    public Insets insets() {
  1103.       return new Insets(3, 3, 0, 0);
  1104.    }
  1105.  
  1106.    void drawDatePullDown() {
  1107.       this.pullDownCells = null;
  1108.       if (!this.isPulledDown) {
  1109.          if (this.popup.isVisible() && this.popup.getEventListener().equals(this)) {
  1110.             this.popup.hide();
  1111.             ((Component)this).requestFocus();
  1112.          }
  1113.  
  1114.       } else {
  1115.          byte var1 = 0;
  1116.          this.xpulldown += ((Component)this).bounds().x;
  1117.          this.ypulldown += ((Component)this).bounds().y;
  1118.  
  1119.          for(Container var2 = ((Component)this).getParent(); var2 != null && !var2.equals(this.popup.getParent()); var2 = ((Component)var2).getParent()) {
  1120.             Rectangle var3 = ((Component)var2).bounds();
  1121.             this.xpulldown += var3.x;
  1122.             this.ypulldown += var3.y;
  1123.          }
  1124.  
  1125.          this.loadPulldown();
  1126.          Container var5 = this.popup.getParent();
  1127.          if (var5 != null) {
  1128.             Rectangle var4 = ((Component)var5).bounds();
  1129.             if (this.ypulldown + this.hpulldown + var1 < var4.height) {
  1130.                this.popup.display(this.xpulldown + 3, this.ypulldown + this.hpulldown + 2);
  1131.             } else {
  1132.                this.popup.display(this.xpulldown + 3, this.ypulldown - this.hpulldown + 2);
  1133.             }
  1134.          } else {
  1135.             this.popup.display(this.xpulldown + 3, this.ypulldown - var1);
  1136.          }
  1137.  
  1138.          this.popup.setEventListener(this);
  1139.          this.calendar.requestFocus();
  1140.       }
  1141.    }
  1142.  
  1143.    void drawCustomPullDown() {
  1144.       this.pullDownCells = null;
  1145.       if (!this.isPulledDown) {
  1146.          if (this.popup.isVisible() && this.popup.getEventListener().equals(this)) {
  1147.             this.popup.hide();
  1148.             ((Component)this).requestFocus();
  1149.          }
  1150.  
  1151.       } else {
  1152.          byte var1 = 0;
  1153.          this.xpulldown += ((Component)this).bounds().x;
  1154.          this.ypulldown += ((Component)this).bounds().y;
  1155.  
  1156.          for(Container var2 = ((Component)this).getParent(); var2 != null && !var2.equals(this.popup.getParent()); var2 = ((Component)var2).getParent()) {
  1157.             Rectangle var3 = ((Component)var2).bounds();
  1158.             this.xpulldown += var3.x;
  1159.             this.ypulldown += var3.y;
  1160.          }
  1161.  
  1162.          FontMetrics var7 = ((Component)this).getGraphics().getFontMetrics();
  1163.          var7.getHeight();
  1164.          this.popup.removeAll();
  1165.          this.popup.setFont(((Component)this).getFont());
  1166.          this.popup.setForeground(((Component)this).getForeground());
  1167.          this.popup.setBackground(this.back);
  1168.          int var4 = 0;
  1169.          if (this.customPopup != null) {
  1170.             if (this.customPopup[this.currentColumn].length > 1 && this.customPopup[this.currentColumn][this.currentRow] != null) {
  1171.                var4 = this.currentRow;
  1172.             }
  1173.  
  1174.             if (this.customPopup[this.currentColumn][var4] != null) {
  1175.                this.popup.add("Center", this.customPopup[this.currentColumn][var4]);
  1176.             }
  1177.          }
  1178.  
  1179.          Container var5 = this.popup.getParent();
  1180.          if (var5 != null) {
  1181.             Rectangle var6 = ((Component)var5).bounds();
  1182.             if (this.ypulldown + this.hpulldown + var1 < var6.height) {
  1183.                this.popup.display(this.xpulldown + 3, this.ypulldown + this.hpulldown + 2);
  1184.             } else {
  1185.                this.popup.display(this.xpulldown + 3, this.ypulldown - this.hpulldown + 2);
  1186.             }
  1187.          } else {
  1188.             this.popup.display(this.xpulldown + 3, this.ypulldown - var1);
  1189.          }
  1190.  
  1191.          this.popup.setEventListener(this);
  1192.          this.customPopup[this.currentColumn][var4].requestFocus();
  1193.       }
  1194.    }
  1195.  
  1196.    void keyDown(Event var1) {
  1197.       int var2 = this.currentColumn;
  1198.       int var3 = this.columnOrder[this.currentColumn];
  1199.       int var4 = this.currentRow;
  1200.       String var5 = this.currentText[var3][var4];
  1201.       this.fieldSelected = true;
  1202.       if (var1.modifiers == 2) {
  1203.          switch (var1.key) {
  1204.             case 3:
  1205.                if (this.cellSelected[var2][var4]) {
  1206.                   this.clipBoard = var5;
  1207.                   return;
  1208.                }
  1209.  
  1210.                if (this.selectedFrom < this.selectedTo) {
  1211.                   this.clipBoard = var5.substring(this.selectedFrom, this.selectedTo);
  1212.                }
  1213.  
  1214.                return;
  1215.             case 22:
  1216.                if (this.cellSelected[var2][var4]) {
  1217.                   this.currentText[var3][this.currentRow] = this.clipBoard;
  1218.                } else {
  1219.                   String var9 = var5.substring(0, this.selectedFrom) + this.clipBoard + var5.substring(this.selectedTo);
  1220.                   this.currentText[var3][this.currentRow] = var9;
  1221.                }
  1222.  
  1223.                this.cursorPos += this.clipBoard.length();
  1224.                this.selectedFrom = this.cursorPos;
  1225.                this.selectedTo = this.cursorPos;
  1226.                this.thisGridOnly = true;
  1227.                this.repaintGrid(this.currentColumn, this.currentRow);
  1228.                return;
  1229.             case 24:
  1230.                if (this.cellSelected[var2][var4]) {
  1231.                   this.clipBoard = var5;
  1232.                   this.currentText[var3][this.currentRow] = "";
  1233.                   this.cursorPos = 0;
  1234.                } else if (this.selectedFrom < this.selectedTo) {
  1235.                   this.clipBoard = var5.substring(this.selectedFrom, this.selectedTo);
  1236.                   this.currentText[var3][this.currentRow] = var5.substring(0, this.selectedFrom) + var5.substring(this.selectedTo);
  1237.                   this.cursorPos = this.selectedFrom;
  1238.                }
  1239.  
  1240.                this.selectedFrom = this.cursorPos;
  1241.                this.selectedTo = this.cursorPos;
  1242.                this.thisGridOnly = true;
  1243.                this.repaintGrid(this.currentColumn, this.currentRow);
  1244.                return;
  1245.             default:
  1246.          }
  1247.       } else {
  1248.          switch (var1.key) {
  1249.             case 8:
  1250.             case 127:
  1251.                if (!this.columnProtected[var3] && !this.fieldProtected[var3][var4] && !this.columnDisabled[var3] && !this.fieldDisabled[var3][var4] && var5.length() > 0 && (this.cursorPos > 0 && var1.key == 8 || this.cursorPos >= 0 && var1.key == 127)) {
  1252.                   String var6;
  1253.                   if (this.selectedFrom == this.selectedTo) {
  1254.                      if (var1.key == 8) {
  1255.                         var6 = var5.substring(0, this.selectedFrom - 1) + var5.substring(this.selectedTo);
  1256.                         this.cursorPos += -1;
  1257.                      } else {
  1258.                         var6 = var5.substring(0, this.selectedFrom);
  1259.                         if (var5.length() > this.selectedTo + 1) {
  1260.                            var6 = var6 + var5.substring(this.selectedTo + 1);
  1261.                         }
  1262.                      }
  1263.                   } else {
  1264.                      var6 = var5.substring(0, this.selectedFrom) + var5.substring(this.selectedTo);
  1265.                      this.cursorPos = this.selectedFrom;
  1266.                   }
  1267.  
  1268.                   this.selectedFrom = this.cursorPos;
  1269.                   this.selectedTo = this.cursorPos;
  1270.                   this.currentText[var3][var4] = var6;
  1271.                   this.cellChanged[var3][var4] = true;
  1272.                   this.rowChanged[var4] = true;
  1273.                   this.thisGridOnly = true;
  1274.                   this.repaintGrid(this.currentColumn, this.currentRow);
  1275.                }
  1276.  
  1277.                return;
  1278.             case 9:
  1279.             case 10:
  1280.                if (var1.modifiers == 1) {
  1281.                   --var1.modifiers;
  1282.                   this.shiftField(-1, 0, var1);
  1283.                   return;
  1284.                }
  1285.  
  1286.                this.shiftField(1, 0, var1);
  1287.                return;
  1288.             default:
  1289.                if (!this.columnProtected[var3] && !this.fieldProtected[var3][var4] && !this.columnDisabled[var3] && !this.fieldDisabled[var3][var4]) {
  1290.                   this.buffer = new char[1];
  1291.                   this.buffer[0] = (char)var1.key;
  1292.                   String var8 = new String(new String(this.buffer));
  1293.                   String var7 = var5;
  1294.                   if (this.selectedFrom <= var5.length() && this.selectedTo <= var5.length()) {
  1295.                      var7 = var5.substring(0, this.selectedFrom) + var8 + var5.substring(this.selectedTo);
  1296.                   }
  1297.  
  1298.                   if (this.selectedFrom == this.selectedTo) {
  1299.                      ++this.cursorPos;
  1300.                   } else {
  1301.                      this.cursorPos = this.selectedFrom + 1;
  1302.                   }
  1303.  
  1304.                   this.selectedFrom = this.cursorPos;
  1305.                   this.selectedTo = this.cursorPos;
  1306.                   this.currentText[var3][var4] = var7;
  1307.                   this.thisGridOnly = true;
  1308.                   this.cellChanged[var3][var4] = true;
  1309.                   this.rowChanged[var4] = true;
  1310.                   this.repaintGrid(this.currentColumn, this.currentRow);
  1311.                }
  1312.          }
  1313.       }
  1314.    }
  1315.  
  1316.    public void setCursorInThisCell(int var1, int var2) {
  1317.       this.cursorInThisField = new boolean[this.totalColumns][this.totalRows];
  1318.       this.currentColumn = 0;
  1319.       this.currentRow = 0;
  1320.       if (var1 >= 0) {
  1321.          this.currentColumn = var1;
  1322.       }
  1323.  
  1324.       if (var2 >= 0) {
  1325.          this.currentRow = var2;
  1326.       }
  1327.  
  1328.       this.selectedFrom = 0;
  1329.       this.selectedTo = 0;
  1330.       if (var1 >= 0 && var2 >= 0) {
  1331.          for(this.cursorInThisField[var1][var2] = true; this.xOffset >= var1; this.xOffset += -1) {
  1332.          }
  1333.  
  1334.          while(this.yOffset >= var2) {
  1335.             this.yOffset += -1;
  1336.          }
  1337.  
  1338.          while(this.xOffset < var1 && var1 > this.xOffset + this.displayedColumns - 2) {
  1339.             ++this.xOffset;
  1340.          }
  1341.  
  1342.          while(this.yOffset < var2 && var2 > this.yOffset + this.displayedRows - 2) {
  1343.             ++this.yOffset;
  1344.          }
  1345.  
  1346.          this.setCellSelected(var1, var2, true);
  1347.          if (this.currentText[var1][var2] != null) {
  1348.             this.selectedTo = this.currentText[var1][var2].length();
  1349.          }
  1350.       }
  1351.  
  1352.       this.reDraw();
  1353.    }
  1354.  
  1355.    public boolean getCursorInThisCell(int var1, int var2) {
  1356.       return this.cursorInThisField[var1][var2];
  1357.    }
  1358.  
  1359.    int getPulldownRow(int var1, int var2) {
  1360.       return this.isPullDownCol[var1] ? 0 : var2;
  1361.    }
  1362.  
  1363.    public void setRowChanged(int var1, boolean var2) {
  1364.       this.rowChanged[var1] = var2;
  1365.    }
  1366.  
  1367.    public boolean getRowChanged(int var1) {
  1368.       return this.rowChanged[var1];
  1369.    }
  1370.  
  1371.    public void reDraw() {
  1372.       this.thisGridOnly = false;
  1373.       this.nothingChanged = false;
  1374.       ((Component)this).repaint();
  1375.    }
  1376.  
  1377.    public void paint(Graphics var1) {
  1378.       this.update(var1);
  1379.    }
  1380.  
  1381.    public void setRowSelected(int var1, boolean var2) {
  1382.       this.rowSelected[var1] = var2;
  1383.  
  1384.       for(int var3 = 0; var3 < this.totalColumns; ++var3) {
  1385.          this.cellSelected[var3][var1] = var2;
  1386.       }
  1387.  
  1388.       this.currentSelectedRow = var1;
  1389.       this.reDraw();
  1390.    }
  1391.  
  1392.    public boolean getRowSelected(int var1) {
  1393.       return this.rowSelected[var1];
  1394.    }
  1395.  
  1396.    public void setCellProtected(int var1, int var2, boolean var3) {
  1397.       this.fieldProtected[var1][var2] = var3;
  1398.       this.reDraw();
  1399.    }
  1400.  
  1401.    public boolean getCellProtected(int var1, int var2) {
  1402.       return this.fieldProtected[var1][var2];
  1403.    }
  1404.  
  1405.    public int getSelectedColumn() {
  1406.       return this.currentSelectedColumn;
  1407.    }
  1408.  
  1409.    void shiftField(int var1, int var2, Event var3) {
  1410.       int var4 = this.xOffset;
  1411.       int var5 = this.yOffset;
  1412.       this.fieldSelected = false;
  1413.       this.prevColumn = this.currentColumn;
  1414.       this.prevRow = this.currentRow;
  1415.       int var6 = this.columnOrder[this.currentColumn];
  1416.       if (this.isPulledDown && this.pullDownType[var6][this.getPulldownRow(var6, this.currentRow)] != 1 && this.pullDownColType[var6] != 1 && this.pullDownType[var6][this.getPulldownRow(var6, this.currentRow)] != 2 && this.pullDownColType[var6] != 2) {
  1417.          int var14 = this.pullDownList[var6][this.getPulldownRow(var6, this.currentRow)].getSelectedIndex();
  1418.          if (var14 + var2 > this.pullDownList[var6][this.getPulldownRow(var6, this.currentRow)].countItems()) {
  1419.             var2 = this.pullDownList[var6][this.getPulldownRow(var6, this.currentRow)].countItems() - var14;
  1420.          }
  1421.  
  1422.          if (var14 + var2 >= 0 && var14 + var2 < this.pullDownList[var6][this.getPulldownRow(var6, this.currentRow)].countItems()) {
  1423.             this.pullDownList[var6][this.getPulldownRow(var6, this.currentRow)].select(var14 + var2);
  1424.             this.pullDownList[var6][this.getPulldownRow(var6, this.currentRow)].makeVisible(var14 + var2);
  1425.             this.currentText[var6][this.currentRow] = this.pullDownList[var6][this.getPulldownRow(var6, this.currentRow)].getSelectedItem();
  1426.          }
  1427.  
  1428.          ((Component)this).repaint();
  1429.       } else {
  1430.          this.cursorInThisField[this.currentColumn][this.currentRow] = false;
  1431.          if (var3.modifiers == 1) {
  1432.             for(int var7 = 0; var7 < this.totalColumns; ++var7) {
  1433.                this.columnSelected[var7] = false;
  1434.  
  1435.                for(int var8 = 0; var8 < this.totalRows; ++var8) {
  1436.                   this.rowSelected[var8] = false;
  1437.                   this.saveColumnSelected[var7][var8] = this.cellSelected[var7][var8];
  1438.                   if (var3.modifiers != 2) {
  1439.                      this.cellSelected[var7][var8] = false;
  1440.                   }
  1441.                }
  1442.             }
  1443.  
  1444.             this.cursorColumn += var1;
  1445.             this.cursorRow += var2;
  1446.             if (this.cursorColumn < this.xOffset && this.xOffset > 0) {
  1447.                this.xOffset += -1;
  1448.             }
  1449.  
  1450.             if (this.cursorColumn - this.xOffset >= this.displayedColumns - 1 && this.displayedColumns < this.totalColumns) {
  1451.                ++this.xOffset;
  1452.             }
  1453.  
  1454.             if (this.cursorRow < this.yOffset && this.yOffset > 0) {
  1455.                this.yOffset += -1;
  1456.             }
  1457.  
  1458.             if (this.cursorRow - this.yOffset >= this.displayedRows - 1 && this.displayedRows < this.totalRows) {
  1459.                ++this.yOffset;
  1460.             }
  1461.  
  1462.             this.paintAll = true;
  1463.          } else {
  1464.             this.resetSelections();
  1465.             if (!this.paintAll) {
  1466.                this.repaintGrid(this.currentColumn, this.currentRow);
  1467.             }
  1468.  
  1469.             this.currentColumn += var1;
  1470.             this.currentRow += var2;
  1471.             if (this.currentColumn >= this.totalColumns) {
  1472.                this.currentColumn = 0;
  1473.                ++this.currentRow;
  1474.             }
  1475.  
  1476.             if (this.currentRow >= this.totalRows) {
  1477.                this.currentRow = 0;
  1478.             }
  1479.  
  1480.             if (this.currentColumn < 0) {
  1481.                this.currentColumn = 0;
  1482.             }
  1483.  
  1484.             if (this.currentRow < 0) {
  1485.                this.currentRow = 0;
  1486.             }
  1487.  
  1488.             this.cursorColumn = this.currentColumn;
  1489.             this.cursorRow = this.currentRow;
  1490.             this.initSelectColumn = this.cursorColumn;
  1491.             this.initSelectRow = this.cursorRow;
  1492.             if (this.currentColumn < this.xOffset && this.xOffset > 0) {
  1493.                this.xOffset += -1;
  1494.             }
  1495.  
  1496.             if (this.currentColumn - this.xOffset >= this.displayedColumns - 1 && this.displayedColumns < this.totalColumns) {
  1497.                ++this.xOffset;
  1498.             }
  1499.  
  1500.             if (this.currentRow < this.yOffset && this.yOffset > 0) {
  1501.                this.yOffset += -1;
  1502.             }
  1503.  
  1504.             if (this.currentRow - this.yOffset >= this.displayedRows - 1 && this.displayedRows < this.totalRows) {
  1505.                ++this.yOffset;
  1506.             }
  1507.          }
  1508.  
  1509.          if (var3.modifiers == 1) {
  1510.             int var13 = this.cursorColumn - this.initSelectColumn;
  1511.             byte var15 = 1;
  1512.             if (var13 < 0) {
  1513.                var15 = -1;
  1514.             }
  1515.  
  1516.             int var9 = this.cursorRow - this.initSelectRow;
  1517.             byte var10 = 1;
  1518.             if (var9 < 0) {
  1519.                var10 = -1;
  1520.             }
  1521.  
  1522.             for(int var11 = this.initSelectColumn; var11 != this.cursorColumn + var15; var11 += var15) {
  1523.                for(int var12 = this.initSelectRow; var12 != this.cursorRow + var10; var12 += var10) {
  1524.                   if (var11 < this.totalColumns && var12 < this.totalRows && var11 >= 0 && var12 >= 0) {
  1525.                      this.cellSelected[var11][var12] = true;
  1526.                   }
  1527.                }
  1528.             }
  1529.  
  1530.             for(int var16 = 0; var16 < this.displayedColumns; ++var16) {
  1531.                for(int var17 = 0; var17 < this.displayedRows; ++var17) {
  1532.                   if (var16 + this.xOffset < this.totalColumns && var17 + this.yOffset < this.totalRows && this.cellSelected[var16 + this.xOffset][var17 + this.yOffset] != this.saveColumnSelected[var16 + this.xOffset][var17 + this.yOffset]) {
  1533.                   }
  1534.                }
  1535.             }
  1536.          }
  1537.  
  1538.          this.cursorInThisField[this.currentColumn][this.currentRow] = true;
  1539.          if (this.currentText[this.currentColumn][this.currentRow] == null) {
  1540.             this.currentText[this.currentColumn][this.currentRow] = "";
  1541.          }
  1542.  
  1543.          this.cursorPos = this.currentText[this.currentColumn][this.currentRow].length();
  1544.          this.selectedFrom = 0;
  1545.          this.selectedTo = this.cursorPos;
  1546.          this.fieldDisplay = true;
  1547.          if (this.xOffset != var4) {
  1548.             ((Component)this).repaint();
  1549.          } else if (this.yOffset != var5) {
  1550.             ((Component)this).repaint();
  1551.          } else if (this.paintAll) {
  1552.             ((Component)this).repaint();
  1553.          } else {
  1554.             this.repaintGrid(this.currentColumn, this.currentRow);
  1555.          }
  1556.  
  1557.          this.thisEvent = new Event(this, 1005, "JDPTextGrid");
  1558.          ((Component)this).postEvent(this.thisEvent);
  1559.          this.thisEvent = new Event(this, 1004, "JDPTextGrid");
  1560.       }
  1561.    }
  1562.  
  1563.    void drawCheckbox(int var1, int var2, int var3, int var4, int var5, int var6) {
  1564.       Color var7 = this.field_0.getColor();
  1565.       this.field_0.setColor(this.columnBGColor[var1]);
  1566.       this.field_0.fillRect(var3 + 3, var4 + 3, var5 - 5, var6 - 5);
  1567.       var3 = var3 + var5 / 2 - 4;
  1568.       var4 += 4;
  1569.       this.field_0.setColor(JDPUtils.darker(this.gridColor));
  1570.       this.field_0.drawRect(var3, var4 - 1, 10, 10);
  1571.       if (this.cursorInThisField[this.columnOrder[var1]][var2]) {
  1572.          this.checkboxRect = new Rectangle(var3 + 3, var4 + 1, 12, 12);
  1573.       }
  1574.  
  1575.       if (this.currentText[var1][var2].equals("Y")) {
  1576.          this.field_0.setColor(Color.black);
  1577.          this.field_0.drawLine(var3 + 2, var4 + 3, var3 + 4, var4 + 5);
  1578.          this.field_0.drawLine(var3 + 2, var4 + 4, var3 + 4, var4 + 6);
  1579.          this.field_0.drawLine(var3 + 2, var4 + 5, var3 + 4, var4 + 7);
  1580.          this.field_0.drawLine(var3 + 4, var4 + 5, var3 + 8, var4 + 1);
  1581.          this.field_0.drawLine(var3 + 4, var4 + 6, var3 + 8, var4 + 2);
  1582.          this.field_0.drawLine(var3 + 4, var4 + 7, var3 + 8, var4 + 3);
  1583.       }
  1584.  
  1585.       this.field_0.setColor(var7);
  1586.    }
  1587.  
  1588.    public void resetSelections() {
  1589.       int var1 = -1;
  1590.       this.currentSelectedRow = -1;
  1591.       this.currentSelectedColumn = -1;
  1592.  
  1593.       for(int var2 = 0; var2 < this.totalColumns; ++var2) {
  1594.          this.columnSelected[var2] = false;
  1595.  
  1596.          for(int var3 = 0; var3 < this.totalRows; ++var3) {
  1597.             if (this.rowSelected[var3]) {
  1598.                var1 = var3;
  1599.             }
  1600.  
  1601.             this.rowSelected[var3] = false;
  1602.             if (this.cellSelected[var2][var3]) {
  1603.                this.paintAll = true;
  1604.             }
  1605.  
  1606.             this.cellSelected[var2][var3] = false;
  1607.          }
  1608.       }
  1609.  
  1610.       if (var1 >= 0) {
  1611.          this.thisEvent = new Event(this, 702, new Integer(var1));
  1612.          ((Component)this).postEvent(this.thisEvent);
  1613.       }
  1614.  
  1615.    }
  1616.  
  1617.    public String getText(int var1, int var2) {
  1618.       return this.currentText[var1][var2];
  1619.    }
  1620.  
  1621.    public void setText(String var1) {
  1622.       this.currentText[this.columnOrder[this.currentColumn]][this.currentRow] = var1;
  1623.       this.reDraw();
  1624.    }
  1625.  
  1626.    public void setFieldType(int var1, int var2, int var3) {
  1627.       this.fieldType[var1][var2] = var3;
  1628.       this.setPullDown(var1, var2, var3 == 1);
  1629.       if (var3 == 3) {
  1630.          this.setCellProtected(var1, var2, true);
  1631.       }
  1632.  
  1633.       this.reDraw();
  1634.    }
  1635.  
  1636.    public int getFieldType(int var1, int var2) {
  1637.       return this.fieldType[var1][var2];
  1638.    }
  1639.  
  1640.    public void setText(String var1, int var2, int var3) {
  1641.       this.currentText[this.columnOrder[var2]][var3] = var1;
  1642.       this.reDraw();
  1643.    }
  1644.  
  1645.    public String getText() {
  1646.       return this.currentText[this.columnOrder[this.currentColumn]][this.currentRow];
  1647.    }
  1648.  
  1649.    public void setPullDownType(int var1, int var2, int var3) {
  1650.       this.isPullDown[var1][var2] = true;
  1651.       this.pullDownType[var1][var2] = var3;
  1652.       this.reDraw();
  1653.    }
  1654.  
  1655.    public void setRowHeaderWidth(int var1) {
  1656.       this.rowHeaderWidth = var1;
  1657.       this.reDraw();
  1658.    }
  1659.  
  1660.    public int getColumnOffset() {
  1661.       return this.xOffset;
  1662.    }
  1663.  
  1664.    public void setColumnOffset(int var1) {
  1665.       this.xOffset = var1;
  1666.       this.reDraw();
  1667.    }
  1668.  
  1669.    public int getRowHeaderWidth() {
  1670.       return this.rowHeaderWidth;
  1671.    }
  1672.  
  1673.    public void setRowHeader(int var1, String var2) {
  1674.       this.rowHeader[var1] = var2;
  1675.       this.reDraw();
  1676.    }
  1677.  
  1678.    public String getRowHeader(int var1) {
  1679.       return this.rowHeader[var1];
  1680.    }
  1681.  
  1682.    public void select(int var1, int var2) {
  1683.       this.selectedFrom = var1;
  1684.       this.selectedTo = var2;
  1685.       this.cursorPos = var1;
  1686.       this.reDraw();
  1687.    }
  1688.  
  1689.    void loadPulldown() {
  1690.       this.createCalendar();
  1691.       this.calendar.setDate(this.getText());
  1692.       FontMetrics var1 = ((Component)this).getGraphics().getFontMetrics();
  1693.       var1.getHeight();
  1694.       this.popup.removeAll();
  1695.       this.popup.setFont(((Component)this).getFont());
  1696.       this.popup.setForeground(((Component)this).getForeground());
  1697.       this.popup.setBackground(this.back);
  1698.       this.popup.add("Center", this.calendar);
  1699.    }
  1700.  
  1701.    public void setColumnHeaderColor(int var1, Color var2) {
  1702.       this.columnHeaderColor[var1] = var2;
  1703.       this.reDraw();
  1704.    }
  1705.  
  1706.    public Color getColumnHeaderColor(int var1) {
  1707.       return this.columnHeaderColor[var1];
  1708.    }
  1709.  
  1710.    public void setColumnColor(int var1, Color var2) {
  1711.       this.columnColor[var1] = var2;
  1712.       this.reDraw();
  1713.    }
  1714.  
  1715.    public Color getColumnColor(int var1) {
  1716.       return this.columnColor[var1];
  1717.    }
  1718.  
  1719.    public void setColumnBGColor(int var1, Color var2) {
  1720.       this.columnBGColor[var1] = var2;
  1721.       this.reDraw();
  1722.    }
  1723.  
  1724.    public Color getColumnBGColor(int var1) {
  1725.       return this.columnBGColor[var1];
  1726.    }
  1727.  
  1728.    public void setRowGridColor(int var1, int var2, Color var3) {
  1729.       this.rowGridColor[var1][var2] = var3;
  1730.       this.reDraw();
  1731.    }
  1732.  
  1733.    public Color getRowGridColor(int var1, int var2) {
  1734.       return this.rowGridColor[var1][var2];
  1735.    }
  1736.  
  1737.    public void setMinimumHeight(int var1) {
  1738.       this.minimumHeight = var1;
  1739.    }
  1740.  
  1741.    public Dimension preferredSize() {
  1742.       return this.minimumSize();
  1743.    }
  1744.  
  1745.    public int getMinimumHeight() {
  1746.       return this.minimumHeight;
  1747.    }
  1748.  
  1749.    public void setSpinnerMinCol(int var1, int var2) {
  1750.       this.setFieldTypeCol(var1, 2);
  1751.       this.spinnerMin[var1][0] = var2 + 999999999;
  1752.       this.reDraw();
  1753.    }
  1754.  
  1755.    public int getSpinnerMinCol(int var1) {
  1756.       return this.spinnerMin[var1][0] - 999999999;
  1757.    }
  1758.  
  1759.    public void setRightJustify(int var1, boolean var2) {
  1760.       this.rightJustify[var1] = var2;
  1761.       this.reDraw();
  1762.    }
  1763.  
  1764.    public boolean getRightJustify(int var1) {
  1765.       return this.rightJustify[var1];
  1766.    }
  1767.  
  1768.    public void setRowKeyArray(String[][] var1) {
  1769.       this.rowKey = var1;
  1770.    }
  1771.  
  1772.    public String[][] getRowKeyArray() {
  1773.       return this.rowKey;
  1774.    }
  1775.  
  1776.    public JDPTextGrid(JDPUser var1) {
  1777.       this.user = var1;
  1778.       if (!JDPUser.classactivated) {
  1779.          System.out.println("Software Violation - this class may only be used in conjunction with JDesignerPro.");
  1780.       } else {
  1781.          this.textHighlightText = JDPUtils.getTextHighlightText();
  1782.          this.textHighlight = JDPUtils.getTextHighlight();
  1783.          this.Bounds = ((Component)this).bounds();
  1784.          this.JDPMaskEditMain = new JDPMaskEdit();
  1785.          this.popup = var1.popup;
  1786.          this.newTable();
  1787.       }
  1788.    }
  1789.  
  1790.    public int getSelectionStart() {
  1791.       return this.selectedFrom;
  1792.    }
  1793.  
  1794.    String updateSpinner(int var1) {
  1795.       int var2 = 0;
  1796.  
  1797.       try {
  1798.          var2 = Integer.parseInt(this.getText()) + var1;
  1799.       } catch (Exception var3) {
  1800.       }
  1801.  
  1802.       if (this.fieldTypeCol[this.columnOrder[this.currentColumn]] == 2) {
  1803.          if (var2 < this.spinnerMin[this.columnOrder[this.currentColumn]][0] - 999999999) {
  1804.             var2 = this.spinnerMin[this.columnOrder[this.currentColumn]][0] - 999999999;
  1805.             this.setText(Integer.toString(var2));
  1806.          }
  1807.  
  1808.          if (var2 > this.spinnerMax[this.columnOrder[this.currentColumn]][0] + 999999999) {
  1809.             var2 = this.spinnerMax[this.columnOrder[this.currentColumn]][0] + 999999999;
  1810.             this.setText(Integer.toString(var2));
  1811.          }
  1812.       } else if (this.fieldType[this.columnOrder[this.currentColumn]][this.currentRow] == 2) {
  1813.          if (var2 < this.spinnerMin[this.columnOrder[this.currentColumn]][this.currentRow] - 999999999) {
  1814.             var2 = this.spinnerMin[this.columnOrder[this.currentColumn]][this.currentRow] - 999999999;
  1815.             this.setText(Integer.toString(var2));
  1816.          }
  1817.  
  1818.          if (var2 > this.spinnerMax[this.columnOrder[this.currentColumn]][this.currentRow] + 999999999) {
  1819.             var2 = this.spinnerMax[this.columnOrder[this.currentColumn]][this.currentRow] + 999999999;
  1820.             this.setText(Integer.toString(var2));
  1821.          }
  1822.       }
  1823.  
  1824.       return Integer.toString(var2);
  1825.    }
  1826.  
  1827.    void drawPullDownList() {
  1828.       this.pullDownCells = null;
  1829.       if (this.isPulledDown) {
  1830.          int var1 = this.columnOrder[this.currentColumn];
  1831.          this.xindexpulldown = var1;
  1832.          this.yindexpulldown = this.currentRow;
  1833.          if (this.isPullDown[var1][this.getPulldownRow(var1, this.currentRow)] || this.isPullDownCol[this.xindexpulldown]) {
  1834.             int var2 = this.pullDownList[this.xindexpulldown][this.getPulldownRow(this.xindexpulldown, this.yindexpulldown)].countItems();
  1835.  
  1836.             int var3;
  1837.             for(var3 = var2; this.ypulldown + this.hpulldown * (var3 + 1) > ((Component)this).bounds().height - 7; --var3) {
  1838.             }
  1839.  
  1840.             if (var3 < 2) {
  1841.                for(var3 = var2; this.ypulldown - this.hpulldown * (var3 + 1) < this.columnHeadHeight - 15; --var3) {
  1842.                }
  1843.  
  1844.                this.ypulldown -= this.hpulldown * (var3 + 1);
  1845.             }
  1846.  
  1847.             if (this.pullDownList[this.xindexpulldown][this.getPulldownRow(this.xindexpulldown, this.yindexpulldown)].getVisibleIndex() == -1) {
  1848.                this.pullDownList[this.xindexpulldown][this.getPulldownRow(this.xindexpulldown, this.yindexpulldown)].makeVisible(this.pullDownList[this.xindexpulldown][this.getPulldownRow(this.xindexpulldown, this.yindexpulldown)].getSelectedIndex());
  1849.             }
  1850.  
  1851.             int var4 = this.pullDownList[this.xindexpulldown][this.getPulldownRow(this.xindexpulldown, this.yindexpulldown)].getVisibleIndex();
  1852.             if (var4 + var3 > var2) {
  1853.                var4 = var2 - var3;
  1854.             }
  1855.  
  1856.             if (var4 < 0) {
  1857.                var4 = 0;
  1858.             }
  1859.  
  1860.             int var5 = var4 + var3;
  1861.             if (var5 > var2) {
  1862.                var5 = var2;
  1863.             }
  1864.  
  1865.             this.field_0.setColor(this.columnBGColor[this.xindexpulldown]);
  1866.             this.field_0.fillRect(this.xpulldown + 1, this.ypulldown + this.hpulldown, this.wpulldown - 2, this.hpulldown * var3);
  1867.             this.field_0.setColor(Color.black);
  1868.             this.field_0.drawRect(this.xpulldown, this.ypulldown + this.hpulldown, this.wpulldown - 1, this.hpulldown * var3);
  1869.             this.pullDownCells = new Rectangle[var2];
  1870.             if (this.cellColor[this.xindexpulldown][this.yindexpulldown] != null) {
  1871.                this.field_0.setColor(this.cellColor[this.xindexpulldown][this.yindexpulldown]);
  1872.             } else {
  1873.                this.field_0.setColor(this.columnColor[this.xindexpulldown]);
  1874.             }
  1875.  
  1876.             if (this.cellFont[this.xindexpulldown][this.yindexpulldown] != null) {
  1877.                this.field_0.setFont(this.cellFont[this.xindexpulldown][this.yindexpulldown]);
  1878.             } else if (this.columnStyle[this.xindexpulldown] == 1) {
  1879.                this.field_0.setFont(this.boldFont);
  1880.             }
  1881.  
  1882.             int var6 = this.StringHeight();
  1883.             boolean var7 = false;
  1884.  
  1885.             for(int var8 = var4; var8 < var5; ++var8) {
  1886.                String var9 = this.pullDownList[this.xindexpulldown][this.getPulldownRow(this.xindexpulldown, this.yindexpulldown)].getItem(var8);
  1887.                int var10 = var9.length();
  1888.                int var11 = this.user.u.StringWidth(this.field_0, var9);
  1889.                if (var11 > this.wpulldown - 12) {
  1890.                   var10 = 0;
  1891.  
  1892.                   while(this.user.u.StringWidth(this.field_0, var9.substring(0, var10++)) < this.wpulldown - 12) {
  1893.                   }
  1894.                }
  1895.  
  1896.                if (var10 > var9.length()) {
  1897.                   var10 = var9.length();
  1898.                }
  1899.  
  1900.                Color var12 = this.field_0.getColor();
  1901.                if (this.pullDownList[this.xindexpulldown][this.getPulldownRow(this.xindexpulldown, this.yindexpulldown)].getSelectedIndex() == var8) {
  1902.                   this.field_0.setColor(this.textHighlight);
  1903.                   this.field_0.fillRect(this.xpulldown + 1, this.ypulldown + this.hpulldown + this.hpulldown * (var8 - var4), this.wpulldown - 2, this.hpulldown);
  1904.                   this.field_0.setColor(this.textHighlightText);
  1905.                } else {
  1906.                   this.field_0.setColor(var12);
  1907.                }
  1908.  
  1909.                this.field_0.drawString(var9.substring(0, var10), this.xpulldown + 3, this.ypulldown + this.hpulldown + this.hpulldown * (var8 - var4) + var6 - 1);
  1910.                this.field_0.setColor(var12);
  1911.                this.pullDownCells[var8] = new Rectangle(this.xpulldown, this.ypulldown + this.hpulldown + this.hpulldown * (var8 - var4), this.wpulldown, this.hpulldown);
  1912.             }
  1913.  
  1914.             if (var4 <= 0 && var3 >= this.pullDownList[this.xindexpulldown][this.getPulldownRow(this.xindexpulldown, this.yindexpulldown)].countItems()) {
  1915.                if (this.pullDownScroll != null) {
  1916.                   this.pullDownScroll.hide();
  1917.                }
  1918.  
  1919.             } else {
  1920.                if (this.pullDownScroll == null) {
  1921.                   this.pullDownScroll = new Scrollbar(1, 0, 5, 0, 100);
  1922.                   ((Container)this).add(this.pullDownScroll);
  1923.                }
  1924.  
  1925.                int var13 = 0;
  1926.                if (System.getProperty("java.vendor").startsWith("Netscape") && System.getProperty("java.version").compareTo("1.1.5") < 0 || System.getProperty("java.vendor").startsWith("Microsoft") && System.getProperty("java.version").compareTo("1.1.4") < 0) {
  1927.                   var13 = var3;
  1928.                }
  1929.  
  1930.                this.pullDownScroll.setValues(var4, var3, 0, this.pullDownList[this.xindexpulldown][this.getPulldownRow(this.xindexpulldown, this.yindexpulldown)].countItems() - var13);
  1931.                this.pullDownScroll.move(this.xpulldown + this.wpulldown - 8, this.ypulldown + this.hpulldown + 4);
  1932.                this.pullDownScroll.resize(11, var3 * this.hpulldown);
  1933.                this.pullDownScroll.show();
  1934.             }
  1935.          }
  1936.       }
  1937.    }
  1938.  
  1939.    public void setPullDownList(int var1, int var2, List var3) {
  1940.       this.pullDownList[var1][var2] = var3;
  1941.       this.reDraw();
  1942.    }
  1943.  
  1944.    public void setCellChanged(int var1, int var2, boolean var3) {
  1945.       this.cellChanged[var1][var2] = var3;
  1946.    }
  1947.  
  1948.    public boolean getCellChanged(int var1, int var2) {
  1949.       return this.cellChanged[var1][var2];
  1950.    }
  1951.  
  1952.    public void setColumnWidth(int var1, int var2) {
  1953.       this.columnWidth[var1] = var2;
  1954.       this.reDraw();
  1955.    }
  1956.  
  1957.    public int getColumnWidth(int var1) {
  1958.       return this.columnWidth[var1];
  1959.    }
  1960.  
  1961.    public List getPullDownList(int var1, int var2) {
  1962.       return this.pullDownList[var1][var2];
  1963.    }
  1964.  
  1965.    public void setColumnHeader(int var1, String var2) {
  1966.       this.columnHeader[var1] = var2;
  1967.       this.reDraw();
  1968.    }
  1969.  
  1970.    public String getColumnHeader(int var1) {
  1971.       return this.columnHeader[var1];
  1972.    }
  1973.  
  1974.    void drawPullDown(int var1, int var2, int var3, int var4, int var5, int var6) {
  1975.       int var7 = this.columnOrder[this.currentColumn];
  1976.       if (var3 + var5 > ((Component)this).bounds().width - 19) {
  1977.          var5 = ((Component)this).bounds().width - 19 - var3;
  1978.       }
  1979.  
  1980.       int var8 = var3 + var5 - 10;
  1981.       this.field_0.setColor(this.columnBGColor[var1]);
  1982.       this.field_0.drawRect(var3 + 1, var4 + 1, var5 - 2, var6 - 2);
  1983.       this.field_0.drawRect(var3 + 2, var4 + 2, var5 - 4, var6 - 4);
  1984.       this.drawButton("", Color.black, 1, var8, var4 + 2, 10, var6 - 3);
  1985.       int[] var9 = new int[]{var8 + 4, var8 + 2, var8 + 7, var8 + 4};
  1986.       int[] var10 = new int[]{var4 + 11, var4 + 8, var4 + 8, var4 + 11};
  1987.       this.field_0.setColor(Color.black);
  1988.       this.field_0.fillPolygon(var9, var10, 3);
  1989.       this.field_0.setColor(JDPUtils.darker(this.gridColor));
  1990.       this.field_0.drawRect(var8 - 1, var4 + 1, var8 + 10, var4 + var6 - 4);
  1991.       if (!this.columnProtected[var7] && !this.fieldProtected[var7][this.currentRow]) {
  1992.          this.pullDownRect = new Rectangle(var8, var4 + 2, 10, var6 - 3);
  1993.       } else {
  1994.          this.pullDownRect = new Rectangle(var3, var4 + 2, var5, var6 - 3);
  1995.          if (this.currentText[var7][this.currentRow] == null || this.currentText[var7][this.currentRow].equals("")) {
  1996.             if (this.pullDownType[var7][this.getPulldownRow(var7, this.currentRow)] != 1 && this.pullDownColType[var7] != 1) {
  1997.                if (this.pullDownType[var7][this.getPulldownRow(var7, this.currentRow)] != 2 && this.pullDownColType[var7] != 2 && this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].countItems() > 0) {
  1998.                   this.currentText[var7][this.currentRow] = this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].getItem(0);
  1999.                }
  2000.             } else if (this.calendar != null) {
  2001.                this.currentText[var7][this.currentRow] = this.calendar.getDateString();
  2002.             }
  2003.          }
  2004.       }
  2005.  
  2006.       if (this.isPulledDown) {
  2007.          this.xindexpulldown = var1 + this.xOffset;
  2008.          this.yindexpulldown = var2 + this.yOffset;
  2009.          this.xpulldown = var3;
  2010.          this.ypulldown = var4;
  2011.          this.wpulldown = var5;
  2012.          this.hpulldown = var6;
  2013.          if (this.pullDownType[var7][this.getPulldownRow(var7, this.currentRow)] != 1 && this.pullDownColType[var7] != 1 && this.pullDownType[var7][this.getPulldownRow(var7, this.currentRow)] != 2 && this.pullDownColType[var7] != 2) {
  2014.             int var11 = 0;
  2015.  
  2016.             while(true) {
  2017.                if (var11 >= this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].countItems()) {
  2018.                   return;
  2019.                }
  2020.  
  2021.                if (this.currentText[var7][this.currentRow].equals(this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].getItem(var11))) {
  2022.                   if (this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].getSelectedIndex() == -1) {
  2023.                      this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].select(var11);
  2024.                   }
  2025.  
  2026.                   if (this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].getVisibleIndex() == -1) {
  2027.                      this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].makeVisible(var11);
  2028.                      return;
  2029.                   }
  2030.                   break;
  2031.                }
  2032.  
  2033.                ++var11;
  2034.             }
  2035.          }
  2036.       } else if (this.pullDownType[var7][this.getPulldownRow(var7, this.currentRow)] != 1 && this.pullDownColType[var7] != 1 && this.pullDownType[var7][this.getPulldownRow(var7, this.currentRow)] != 2 && this.pullDownColType[var7] != 2) {
  2037.          for(int var12 = 0; var12 < this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].countItems(); ++var12) {
  2038.             if (this.currentText[var7][this.currentRow].equals(this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].getItem(var12))) {
  2039.                this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].select(var12);
  2040.                this.pullDownList[var7][this.getPulldownRow(var7, this.currentRow)].makeVisible(var12);
  2041.             }
  2042.          }
  2043.       }
  2044.  
  2045.    }
  2046.  
  2047.    void drawListPullDown() {
  2048.       this.pullDownCells = null;
  2049.       if (!this.isPulledDown) {
  2050.          if (this.popup.isVisible() && this.popup.getEventListener().equals(this)) {
  2051.             this.popup.hide();
  2052.             ((Component)this).requestFocus();
  2053.          }
  2054.  
  2055.       } else {
  2056.          byte var1 = 0;
  2057.          this.xpulldown += ((Component)this).bounds().x;
  2058.          this.ypulldown += ((Component)this).bounds().y;
  2059.  
  2060.          for(Container var2 = ((Component)this).getParent(); var2 != null && !var2.equals(this.popup.getParent()); var2 = ((Component)var2).getParent()) {
  2061.             Rectangle var3 = ((Component)var2).bounds();
  2062.             this.xpulldown += var3.x;
  2063.             this.ypulldown += var3.y;
  2064.          }
  2065.  
  2066.          FontMetrics var8 = ((Component)this).getGraphics().getFontMetrics();
  2067.          int var4 = var8.getHeight() + 2;
  2068.          this.popup.removeAll();
  2069.          this.popup.setFont(((Component)this).getFont());
  2070.          this.popup.setForeground(((Component)this).getForeground());
  2071.          this.popup.setBackground(this.back);
  2072.          this.xindexpulldown = this.columnOrder[this.currentColumn];
  2073.          this.yindexpulldown = this.currentRow;
  2074.          if (this.pullDownDisplayList == null) {
  2075.             this.pullDownDisplayList = new JDPList(this.user);
  2076.             this.pullDownDisplayList.threeDBorder = false;
  2077.          }
  2078.  
  2079.          this.pullDownDisplayList.clear();
  2080.  
  2081.          for(int var5 = 0; var5 < this.pullDownList[this.xindexpulldown][this.getPulldownRow(this.xindexpulldown, this.yindexpulldown)].countItems(); ++var5) {
  2082.             this.pullDownDisplayList.addItem(this.pullDownList[this.xindexpulldown][this.getPulldownRow(this.xindexpulldown, this.yindexpulldown)].getItem(var5));
  2083.          }
  2084.  
  2085.          int var9 = this.pullDownList[this.xindexpulldown][this.getPulldownRow(this.xindexpulldown, this.yindexpulldown)].getSelectedIndex();
  2086.          if (var9 >= 0) {
  2087.             this.pullDownDisplayList.select(var9);
  2088.             this.pullDownDisplayList.makeVisible(var9);
  2089.          }
  2090.  
  2091.          this.popup.add("Center", this.pullDownDisplayList);
  2092.          this.pullDownDisplayList.setMinWidth(this.columnWidth[this.xindexpulldown]);
  2093.          this.pullDownDisplayList.setMinHeight(var4 * this.pullDownDisplayList.countItems() + 6);
  2094.          Container var6 = this.popup.getParent();
  2095.          if (var6 != null) {
  2096.             Rectangle var7 = ((Component)var6).bounds();
  2097.             if (this.ypulldown + this.hpulldown + var1 < var7.height) {
  2098.                this.popup.display(this.xpulldown + 3, this.ypulldown + this.hpulldown + 3, this.ypulldown + 4);
  2099.             } else {
  2100.                this.popup.display(this.xpulldown + 3, this.ypulldown - this.hpulldown + 3, this.ypulldown + 4);
  2101.             }
  2102.          } else {
  2103.             this.popup.display(this.xpulldown + 3, this.ypulldown - var1);
  2104.          }
  2105.  
  2106.          this.popup.setEventListener(this);
  2107.          this.pullDownDisplayList.requestFocus();
  2108.       }
  2109.    }
  2110.  
  2111.    void drawButton(String var1, Color var2, int var3, int var4, int var5, int var6, int var7) {
  2112.       this.drawButton(var1, (String)null, var2, var3, var4, var5, var6, var7);
  2113.    }
  2114.  
  2115.    void drawButton(String var1, boolean var2, Color var3, int var4, int var5, int var6, int var7, int var8) {
  2116.       String var9 = "Left";
  2117.       if (var2) {
  2118.          var9 = "Right";
  2119.       }
  2120.  
  2121.       this.drawButton(var1, var9, var3, var4, var5, var6, var7, var8);
  2122.    }
  2123.  
  2124.    public int getPrevRow() {
  2125.       return this.prevRow;
  2126.    }
  2127.  
  2128.    void drawButton(String var1, String var2, Color var3, int var4, int var5, int var6, int var7, int var8) {
  2129.       if (this.columnHeader != null && this.columnHeader.length > 1 && this.columnHeader[0] != null && this.columnHeader[0].equals("0") && this.columnHeader[1].equals("1")) {
  2130.          var2 = null;
  2131.       }
  2132.  
  2133.       this.field_0.setColor(this.back);
  2134.       this.field_0.fillRect(var5 + 1, var6 + 1, var7 - 1, var8 - 1);
  2135.       this.field_0.setColor(JDPUtils.brighter(this.back));
  2136.       this.field_0.drawLine(var5, var6, var5 + var7, var6);
  2137.       this.field_0.drawLine(var5, var6, var5, var6 + var8);
  2138.       this.field_0.setColor(JDPUtils.darker(JDPUtils.darker(this.gridColor)));
  2139.       this.field_0.setColor(Color.black);
  2140.       this.field_0.drawLine(var5 - 1, var6, var5 - 1, var6 + var8);
  2141.       this.field_0.drawLine(var5, var6 + var8, var5 + var7 - 2, var6 + var8);
  2142.       this.field_0.drawLine(var5 + var7 - 1, var6, var5 + var7 - 1, var6 + var8);
  2143.       this.field_0.setColor(var3);
  2144.       if (var1 != null) {
  2145.          if (var4 == 1) {
  2146.             this.field_0.setFont(this.boldFont);
  2147.          } else {
  2148.             this.field_0.setFont(this.plainFont);
  2149.          }
  2150.  
  2151.          int var9 = 0;
  2152.          if (var2 == null) {
  2153.             var9 = var5 + var7 / 2 - this.user.u.StringWidth(this.field_0, var1) / 2;
  2154.          } else if (var2.equals("Right")) {
  2155.             var9 = var5 + var7 - this.user.u.StringWidth(this.field_0, var1) - 3;
  2156.          } else {
  2157.             var9 = var5 + 2;
  2158.          }
  2159.  
  2160.          if (var9 <= var5) {
  2161.             var9 = var5 + 1;
  2162.          }
  2163.  
  2164.          int var10 = this.StringHeight() - 5;
  2165.          int var11 = var10 + (var8 - var10) / 2;
  2166.          if (var1.indexOf("|") >= 0) {
  2167.             var11 = var10 + 2;
  2168.  
  2169.             for(StringTokenizer var12 = new StringTokenizer(var1, "|"); var12.hasMoreTokens(); var11 += var10 + 2) {
  2170.                this.field_0.drawString(var12.nextToken(), var9, var6 + var11);
  2171.             }
  2172.          } else {
  2173.             if (var11 <= var10) {
  2174.                var11 = var10;
  2175.             }
  2176.  
  2177.             this.field_0.drawString(var1, var9, var6 + var11);
  2178.          }
  2179.  
  2180.          this.field_0.setFont(this.plainFont);
  2181.       }
  2182.  
  2183.       this.field_0.setColor(Color.black);
  2184.    }
  2185.  
  2186.    public boolean handleEvent(Event var1) {
  2187.       if (!((Component)this).isEnabled()) {
  2188.          return true;
  2189.       } else {
  2190.          int var2 = this.columnOrder[this.currentColumn];
  2191.          if (this.pullDownScroll != null && var1.target.equals(this.pullDownScroll) && this.isPulledDown) {
  2192.             this.nothingChanged = false;
  2193.             switch (var1.id) {
  2194.                case 601:
  2195.                case 602:
  2196.                case 603:
  2197.                case 604:
  2198.                case 605:
  2199.                   this.pullDownList[var2][this.getPulldownRow(var2, this.currentRow)].makeVisible(this.pullDownScroll.getValue());
  2200.                   ((Component)this).repaint();
  2201.                   return true;
  2202.                default:
  2203.                   return true;
  2204.             }
  2205.          } else if (this.scrollEast != null && var1.target.equals(this.scrollEast)) {
  2206.             this.nothingChanged = false;
  2207.             this.isPulledDown = false;
  2208.             switch (var1.id) {
  2209.                case 601:
  2210.                   this.yOffset += -1;
  2211.                   ((Component)this).repaint();
  2212.                   return true;
  2213.                case 602:
  2214.                   ++this.yOffset;
  2215.                   ((Component)this).repaint();
  2216.                   return true;
  2217.                case 603:
  2218.                   this.yOffset = this.scrollEast.getValue();
  2219.                   ((Component)this).repaint();
  2220.                   return true;
  2221.                case 604:
  2222.                   this.yOffset = this.scrollEast.getValue();
  2223.                   ((Component)this).repaint();
  2224.                   return true;
  2225.                case 605:
  2226.                   this.yOffset = this.scrollEast.getValue();
  2227.                   ((Component)this).repaint();
  2228.                   return true;
  2229.                default:
  2230.                   return false;
  2231.             }
  2232.          } else if (this.scrollSouth != null && var1.target.equals(this.scrollSouth)) {
  2233.             this.nothingChanged = false;
  2234.             this.isPulledDown = false;
  2235.             switch (var1.id) {
  2236.                case 601:
  2237.                   this.xOffset += -1;
  2238.                   ((Component)this).repaint();
  2239.                   return true;
  2240.                case 602:
  2241.                   ++this.xOffset;
  2242.                   ((Component)this).repaint();
  2243.                   return true;
  2244.                case 603:
  2245.                   this.xOffset = this.scrollSouth.getValue();
  2246.                   ((Component)this).repaint();
  2247.                   return true;
  2248.                case 604:
  2249.                   this.xOffset = this.scrollSouth.getValue();
  2250.                   ((Component)this).repaint();
  2251.                   return true;
  2252.                case 605:
  2253.                   this.xOffset = this.scrollSouth.getValue();
  2254.                   ((Component)this).repaint();
  2255.                   return true;
  2256.                default:
  2257.                   return false;
  2258.             }
  2259.          } else {
  2260.             switch (var1.id) {
  2261.                case 202:
  2262.                case 205:
  2263.                   ((Component)this).repaint();
  2264.                   return false;
  2265.                case 401:
  2266.                   this.nothingChanged = false;
  2267.                   if ((var1.key == 10 || var1.key > 31 && var1.key < 127) && (this.isPulledDown || (this.isPullDown[var2][this.currentRow] || this.isPullDownCol[var2]) && (this.columnProtected[var2] || this.fieldProtected[var2][this.currentRow]))) {
  2268.                      if (this.pullDownType[var2][this.getPulldownRow(var2, this.currentRow)] != 1 && this.pullDownColType[var2] != 1) {
  2269.                         if (this.pullDownType[var2][this.getPulldownRow(var2, this.currentRow)] != 2 && this.pullDownColType[var2] != 2) {
  2270.                            byte[] var26 = new byte[]{(byte)var1.key};
  2271.                            String var10001 = this.searchString;
  2272.                            this.searchString = var10001 + new String(var26);
  2273.                            if (!this.searchString.endsWith("\n")) {
  2274.                               for(int var34 = 0; var34 < this.pullDownList[var2][this.getPulldownRow(var2, this.currentRow)].countItems(); ++var34) {
  2275.                                  if (this.pullDownList[var2][this.getPulldownRow(var2, this.currentRow)].getItem(var34).startsWith(this.searchString)) {
  2276.                                     this.pullDownList[var2][this.getPulldownRow(var2, this.currentRow)].select(var34);
  2277.                                     this.pullDownList[var2][this.getPulldownRow(var2, this.currentRow)].makeVisible(var34);
  2278.                                     if (!this.isPulledDown) {
  2279.                                        this.currentText[var2][this.currentRow] = this.pullDownList[var2][this.getPulldownRow(var2, this.currentRow)].getSelectedItem();
  2280.                                     }
  2281.  
  2282.                                     ((Component)this).repaint();
  2283.                                     return false;
  2284.                                  }
  2285.                               }
  2286.                            } else {
  2287.                               this.searchString = "";
  2288.                               this.currentText[var2][this.currentRow] = this.pullDownList[var2][this.getPulldownRow(var2, this.currentRow)].getSelectedItem();
  2289.                               this.isPulledDown = false;
  2290.                            }
  2291.                         } else {
  2292.                            this.isPulledDown = false;
  2293.                         }
  2294.                      } else {
  2295.                         this.isPulledDown = false;
  2296.                      }
  2297.  
  2298.                      this.rowChanged[this.currentRow] = true;
  2299.                      this.fieldSelected = false;
  2300.                      this.selectedFrom = 0;
  2301.                      this.selectedTo = 0;
  2302.                      this.prevColumn = this.currentColumn;
  2303.                      this.prevRow = this.currentRow;
  2304.                      if (var1.key == 10) {
  2305.                         this.thisEvent = new Event(this, 1001, "JDPTextGrid");
  2306.                      } else {
  2307.                         this.thisEvent = new Event(this, 1005, "JDPTextGrid");
  2308.                      }
  2309.  
  2310.                      ((Component)this).repaint();
  2311.                      return true;
  2312.                   } else {
  2313.                      if (var1.key == 10) {
  2314.                         this.thisEvent = new Event(this, 1001, "JDPTextGrid");
  2315.                         ((Component)this).getParent().postEvent(this.thisEvent);
  2316.                         this.thisEvent = null;
  2317.                      }
  2318.  
  2319.                      if (var1.key != 32 || this.fieldType[var2][this.currentRow] != 3 && this.fieldTypeCol[var2] != 3) {
  2320.                         this.keyDown(var1);
  2321.                         if (this.downButton != null) {
  2322.                            this.updateSpinner(0);
  2323.                         }
  2324.  
  2325.                         return true;
  2326.                      } else {
  2327.                         if (this.currentText[var2][this.currentRow].equals("Y")) {
  2328.                            this.currentText[var2][this.currentRow] = "N";
  2329.                         } else {
  2330.                            this.currentText[var2][this.currentRow] = "Y";
  2331.                         }
  2332.  
  2333.                         this.cellChanged[var2][this.currentRow] = true;
  2334.                         this.rowChanged[this.currentRow] = true;
  2335.                         this.thisGridOnly = true;
  2336.                         ((Component)this).repaint();
  2337.                         return true;
  2338.                      }
  2339.                   }
  2340.                case 402:
  2341.                   if (this.editMask[this.currentColumn] != null && !this.editMask[this.currentColumn].equals("")) {
  2342.                      if (this.editMaskType[this.currentColumn].equals("String")) {
  2343.                         this.JDPMaskEditMain.formatString(this, this.editMask[this.currentColumn]);
  2344.                      } else if (this.editMaskType[this.currentColumn].equals("Float")) {
  2345.                         this.JDPMaskEditMain.formatFloat(this, this.editMask[this.currentColumn]);
  2346.                      }
  2347.                   }
  2348.  
  2349.                   return false;
  2350.                case 403:
  2351.                   this.nothingChanged = false;
  2352.                   switch (var1.key) {
  2353.                      case 1002:
  2354.                         if (this.isPulledDown) {
  2355.                            this.shiftField(0, -10, var1);
  2356.                            return true;
  2357.                         }
  2358.  
  2359.                         this.yOffset = this.yOffset - this.displayedRows + 1;
  2360.                         ((Component)this).repaint();
  2361.                         return true;
  2362.                      case 1003:
  2363.                         if (this.isPulledDown) {
  2364.                            this.shiftField(0, 10, var1);
  2365.                            return true;
  2366.                         }
  2367.  
  2368.                         this.yOffset = this.yOffset + this.displayedRows - 1;
  2369.                         ((Component)this).repaint();
  2370.                         return true;
  2371.                      case 1004:
  2372.                         this.shiftField(0, -1, var1);
  2373.                         return true;
  2374.                      case 1005:
  2375.                         if (!this.isPulledDown && (this.isPullDown[var2][this.currentRow] || this.isPullDownCol[var2]) && !this.columnDisabled[var2] && !this.fieldDisabled[var2][this.currentRow]) {
  2376.                            this.isPulledDown = true;
  2377.                            ((Component)this).repaint();
  2378.                            return true;
  2379.                         }
  2380.  
  2381.                         this.shiftField(0, 1, var1);
  2382.                         return true;
  2383.                      case 1006:
  2384.                         if (this.isPulledDown) {
  2385.                            this.isPulledDown = false;
  2386.                            ((Component)this).repaint();
  2387.                            return true;
  2388.                         }
  2389.  
  2390.                         if (this.fieldSelected) {
  2391.                            this.cursorPos += -1;
  2392.                            this.thisGridOnly = true;
  2393.                            if (var1.modifiers == 1) {
  2394.                               if (this.cursorPos >= this.selectedFrom) {
  2395.                                  this.selectedTo = this.cursorPos;
  2396.                               } else {
  2397.                                  this.selectedFrom = this.cursorPos;
  2398.                               }
  2399.                            } else {
  2400.                               if (this.selectedFrom < this.selectedTo) {
  2401.                                  this.cursorPos = this.selectedFrom;
  2402.                               }
  2403.  
  2404.                               this.selectedFrom = this.cursorPos;
  2405.                               this.selectedTo = this.cursorPos;
  2406.                            }
  2407.  
  2408.                            this.repaintGrid(this.currentColumn, this.currentRow);
  2409.                         } else {
  2410.                            this.shiftField(-1, 0, var1);
  2411.                         }
  2412.  
  2413.                         return true;
  2414.                      case 1007:
  2415.                         if (this.isPulledDown) {
  2416.                            this.isPulledDown = false;
  2417.                            ((Component)this).repaint();
  2418.                            return true;
  2419.                         }
  2420.  
  2421.                         if (this.fieldSelected) {
  2422.                            ++this.cursorPos;
  2423.                            this.thisGridOnly = true;
  2424.                            if (var1.modifiers == 1) {
  2425.                               if (this.cursorPos <= this.selectedTo) {
  2426.                                  this.selectedFrom = this.cursorPos;
  2427.                               } else {
  2428.                                  this.selectedTo = this.cursorPos;
  2429.                               }
  2430.                            } else {
  2431.                               if (this.selectedFrom < this.selectedTo) {
  2432.                                  this.cursorPos = this.selectedTo;
  2433.                               }
  2434.  
  2435.                               this.selectedFrom = this.cursorPos;
  2436.                               this.selectedTo = this.cursorPos;
  2437.                            }
  2438.  
  2439.                            this.repaintGrid(this.currentColumn, this.currentRow);
  2440.                         } else {
  2441.                            this.shiftField(1, 0, var1);
  2442.                         }
  2443.  
  2444.                         return true;
  2445.                      default:
  2446.                         return false;
  2447.                   }
  2448.                case 501:
  2449.                   if (var1.target != this) {
  2450.                      return false;
  2451.                   } else {
  2452.                      this.nothingChanged = false;
  2453.                      ((Component)this).requestFocus();
  2454.                      this.mousePressed = true;
  2455.                      this.dragCount = 0;
  2456.                      if (this.pullDownRect != null && this.pullDownRect.inside(var1.x, var1.y)) {
  2457.                         if (!this.isPulledDown) {
  2458.                            if (!this.columnDisabled[var2] && !this.fieldDisabled[var2][this.currentRow]) {
  2459.                               this.isPulledDown = true;
  2460.                            }
  2461.                         } else {
  2462.                            this.isPulledDown = false;
  2463.                            this.prevColumn = this.currentColumn;
  2464.                            this.prevRow = this.currentRow;
  2465.                            this.thisEvent = new Event(this, 1005, "JDPTextGrid");
  2466.                         }
  2467.  
  2468.                         ((Component)this).repaint();
  2469.                         return true;
  2470.                      } else if (this.isPulledDown) {
  2471.                         if (this.pullDownCells != null) {
  2472.                            for(int var25 = 0; var25 < this.pullDownCells.length; ++var25) {
  2473.                               if (this.pullDownCells[var25] != null && this.pullDownCells[var25].inside(var1.x, var1.y)) {
  2474.                                  this.pullDownList[var2][this.getPulldownRow(var2, this.currentRow)].select(var25);
  2475.                                  this.isPulledDown = false;
  2476.                                  this.currentText[var2][this.currentRow] = this.pullDownList[var2][this.getPulldownRow(var2, this.currentRow)].getSelectedItem();
  2477.                                  this.rowChanged[this.currentRow] = true;
  2478.                                  this.fieldSelected = false;
  2479.                                  this.selectedFrom = 0;
  2480.                                  this.selectedTo = 0;
  2481.                                  this.prevColumn = this.currentColumn;
  2482.                                  this.prevRow = this.currentRow;
  2483.                                  this.thisEvent = new Event(this, 1005, "JDPTextGrid");
  2484.                                  ((Component)this).repaint();
  2485.                                  return true;
  2486.                               }
  2487.                            }
  2488.                         }
  2489.  
  2490.                         this.prevColumn = this.currentColumn;
  2491.                         this.prevRow = this.currentRow;
  2492.                         this.thisEvent = new Event(this, 1005, "JDPTextGrid");
  2493.                         this.isPulledDown = false;
  2494.                         this.thisGridOnly = false;
  2495.                         ((Component)this).repaint();
  2496.                         return true;
  2497.                      } else {
  2498.                         if (var1.y < this.columnHeadHeight + 4) {
  2499.                            if (this.colHeadRect[0] != null && this.colHeadRect[0].inside(var1.x, var1.y)) {
  2500.                               this.saveColumnWidth = this.rowHeaderWidth;
  2501.                               this.dragCol = -1;
  2502.                               this.initColXpoint = var1.x;
  2503.                               this.draggingColMouse = true;
  2504.                               this.repaintColHead(this.dragCol, var1.x);
  2505.                               return true;
  2506.                            }
  2507.  
  2508.                            for(int var24 = 0; var24 < this.displayedColumns; ++var24) {
  2509.                               if (this.colButton[var24] != null && this.colButton[var24].inside(var1.x, var1.y)) {
  2510.                                  if (var1.modifiers != 1) {
  2511.                                     this.initSelectColumn = -1;
  2512.                                     this.initSelectRow = -1;
  2513.                                  }
  2514.  
  2515.                                  if (var1.modifiers != 2) {
  2516.                                     this.resetSelections();
  2517.                                  }
  2518.  
  2519.                                  int var33 = 0;
  2520.  
  2521.                                  for(int var37 = 0; var37 < var24; ++var37) {
  2522.                                     var33 += this.columnWidth[this.columnOrder[var37 + this.xOffset]];
  2523.                                  }
  2524.  
  2525.                                  this.columnButtonOffset = var1.x - var33 - this.rowHeadWidth;
  2526.                                  this.dragCol = var24;
  2527.                                  this.initColXpoint = var1.x;
  2528.                                  this.draggingColButton = true;
  2529.                                  this.originalxOffset = this.xOffset;
  2530.                                  return true;
  2531.                               }
  2532.  
  2533.                               if (this.colHeadRect[var24 + 1] != null && this.colHeadRect[var24 + 1].inside(var1.x, var1.y)) {
  2534.                                  this.saveColumnWidth = this.columnWidth[this.columnOrder[var24 + this.xOffset]];
  2535.                                  this.dragCol = var24;
  2536.                                  this.initColXpoint = var1.x;
  2537.                                  this.draggingColMouse = true;
  2538.                                  this.repaintColHead(this.dragCol, var1.x);
  2539.                                  return true;
  2540.                               }
  2541.                            }
  2542.                         } else if (var1.x < this.rowHeadWidth) {
  2543.                            if (this.rowHeadRect[0] != null && this.rowHeadRect[0].inside(var1.x, var1.y)) {
  2544.                               this.saveColumnHeight = this.columnHeaderHeight;
  2545.                               this.dragRow = -1;
  2546.                               this.initRowYpoint = var1.y;
  2547.                               this.draggingRowMouse = true;
  2548.                               this.repaintRowHead(this.dragRow, var1.y);
  2549.                               return true;
  2550.                            }
  2551.  
  2552.                            for(int var23 = 0; var23 < this.displayedRows; ++var23) {
  2553.                               if (this.rowButton[var23] != null && this.rowButton[var23].inside(var1.x, var1.y)) {
  2554.                                  if (var1.modifiers != 1) {
  2555.                                     this.initSelectColumn = -1;
  2556.                                     this.initSelectRow = -1;
  2557.                                  }
  2558.  
  2559.                                  if (var1.modifiers != 2) {
  2560.                                     this.resetSelections();
  2561.                                  }
  2562.  
  2563.                                  this.currentSelectedRow = var23 + this.yOffset;
  2564.                                  this.rowSelected[var23 + this.yOffset] = true;
  2565.  
  2566.                                  for(int var32 = 0; var32 < this.totalColumns; ++var32) {
  2567.                                     this.cellSelected[var32][var23 + this.yOffset] = true;
  2568.                                  }
  2569.  
  2570.                                  this.setCursorInThisCell(0, var23 + this.yOffset);
  2571.                                  this.thisEvent = new Event(this, (new Date()).getTime(), 701, var1.x, var1.y, var1.key, var1.modifiers, new Integer(var23 + this.yOffset));
  2572.                                  ((Component)this).repaint(this.rowHeadWidth + 1, this.columnHeadHeight + 1, this.Bounds.width, this.Bounds.height);
  2573.                                  return true;
  2574.                               }
  2575.  
  2576.                               if (this.rowHeadRect[var23 + 1] != null && this.rowHeadRect[var23 + 1].inside(var1.x, var1.y)) {
  2577.                                  this.saveColumnHeight = this.columnHeight[var23 + this.yOffset];
  2578.                                  this.dragRow = var23;
  2579.                                  this.initRowYpoint = var1.y;
  2580.                                  this.draggingRowMouse = true;
  2581.                                  this.repaintRowHead(this.dragRow, var1.y);
  2582.                                  return true;
  2583.                               }
  2584.                            }
  2585.                         } else {
  2586.                            if (this.checkboxRect != null && this.checkboxRect.inside(var1.x, var1.y)) {
  2587.                               if (this.currentText[var2][this.currentRow].equals("Y")) {
  2588.                                  this.currentText[var2][this.currentRow] = "N";
  2589.                               } else {
  2590.                                  this.currentText[var2][this.currentRow] = "Y";
  2591.                               }
  2592.  
  2593.                               this.cellChanged[this.columnOrder[this.currentColumn]][this.currentRow] = true;
  2594.                               this.rowChanged[this.currentRow] = true;
  2595.                               this.repaintGrid(this.currentColumn, this.currentRow);
  2596.                               return true;
  2597.                            }
  2598.  
  2599.                            if ((this.downButton == null || !this.downButton.inside(var1.x, var1.y)) && (this.upButton == null || !this.upButton.inside(var1.x, var1.y))) {
  2600.                               for(int var22 = 0; var22 < this.displayedColumns; ++var22) {
  2601.                                  for(int var31 = 0; var31 < this.displayedRows; ++var31) {
  2602.                                     if (this.mouseRect[var22][var31] != null && this.mouseRect[var22][var31].inside(var1.x, var1.y)) {
  2603.                                        if (var1.modifiers != 1) {
  2604.                                           this.initSelectColumn = -1;
  2605.                                           this.initSelectRow = -1;
  2606.                                        }
  2607.  
  2608.                                        if (var1.modifiers != 2) {
  2609.                                           this.resetSelections();
  2610.                                        }
  2611.  
  2612.                                        this.cursorInThisField[this.currentColumn][this.currentRow] = false;
  2613.                                        if (!this.paintAll) {
  2614.                                           this.repaintGrid(this.currentColumn, this.currentRow);
  2615.                                        }
  2616.  
  2617.                                        if (this.initSelectColumn < 0) {
  2618.                                           this.initSelectColumn = var22 + this.xOffset;
  2619.                                           this.initSelectRow = var31 + this.yOffset;
  2620.                                        }
  2621.  
  2622.                                        if (this.currentColumn == var22 + this.xOffset && this.currentRow == var31 + this.yOffset) {
  2623.                                           int var36 = 0;
  2624.                                           if (this.cellFont[this.columnOrder[var22 + this.xOffset]][var31 + this.yOffset] != null) {
  2625.                                              this.field_0.setFont(this.cellFont[this.columnOrder[var22 + this.xOffset]][var31 + this.yOffset]);
  2626.                                           } else if (this.columnStyle[this.columnOrder[var22 + this.xOffset]] == 1) {
  2627.                                              this.field_0.setFont(this.boldFont);
  2628.                                           }
  2629.  
  2630.                                           while(this.lastpos + var36 <= this.currentText[this.columnOrder[var22 + this.xOffset]][var31 + this.yOffset].length() && this.mouseRect[var22][var31].x + this.user.u.StringWidth(this.field_0, this.currentText[this.columnOrder[var22 + this.xOffset]][var31 + this.yOffset].substring(this.lastpos, this.lastpos + var36)) < var1.x) {
  2631.                                              ++var36;
  2632.                                           }
  2633.  
  2634.                                           this.cursorPos = this.lastpos + var36 - 1;
  2635.                                           this.selectedFrom = this.cursorPos;
  2636.                                           this.selectedTo = this.cursorPos;
  2637.                                           this.fieldSelected = true;
  2638.                                           this.initcursorPos = this.cursorPos;
  2639.                                           this.thisGridOnly = true;
  2640.                                           this.prevColumn = this.currentColumn;
  2641.                                           this.prevRow = this.currentRow;
  2642.                                        } else {
  2643.                                           this.prevColumn = this.currentColumn;
  2644.                                           this.prevRow = this.currentRow;
  2645.                                           this.thisEvent = new Event(this, 1005, "JDPTextGrid");
  2646.                                           ((Component)this).postEvent(this.thisEvent);
  2647.                                           this.thisEvent = new Event(this, (new Date()).getTime(), 1004, var1.x, var1.y, var1.key, var1.modifiers, "JDPTextGrid");
  2648.                                           this.fieldSelected = false;
  2649.                                           this.cursorPos = this.currentText[this.columnOrder[var22 + this.xOffset]][var31 + this.yOffset].length();
  2650.                                           this.selectedFrom = 0;
  2651.                                           this.selectedTo = this.cursorPos;
  2652.                                        }
  2653.  
  2654.                                        this.currentColumn = var22 + this.xOffset;
  2655.                                        this.currentRow = var31 + this.yOffset;
  2656.                                        this.cursorColumn = this.currentColumn;
  2657.                                        this.cursorRow = this.currentRow;
  2658.                                        this.cursorInThisField[this.currentColumn][this.currentRow] = true;
  2659.                                        this.fieldDisplay = true;
  2660.                                        if (this.isPulledDown || !this.isPullDown[this.columnOrder[this.currentColumn]][this.currentRow] && !this.isPullDownCol[this.columnOrder[this.currentColumn]] || this.columnDisabled[this.columnOrder[this.currentColumn]] || this.fieldDisabled[this.columnOrder[this.currentColumn]][this.currentRow] || !this.columnProtected[this.columnOrder[this.currentColumn]] && !this.fieldProtected[this.columnOrder[this.currentColumn]][this.currentRow]) {
  2661.                                           if (!this.paintAll) {
  2662.                                              this.repaintGrid(this.currentColumn, this.currentRow);
  2663.                                           } else {
  2664.                                              ((Component)this).repaint();
  2665.                                           }
  2666.  
  2667.                                           return true;
  2668.                                        }
  2669.  
  2670.                                        this.thisGridOnly = false;
  2671.                                        this.isPulledDown = true;
  2672.                                        ((Component)this).repaint();
  2673.                                        return true;
  2674.                                     }
  2675.                                  }
  2676.                               }
  2677.  
  2678.                               return false;
  2679.                            }
  2680.  
  2681.                            byte var21 = 1;
  2682.                            if (this.downButton.inside(var1.x, var1.y)) {
  2683.                               var21 = -1;
  2684.                            }
  2685.  
  2686.                            this.setText(this.updateSpinner(var21));
  2687.                            this.selectedFrom = 0;
  2688.                            this.selectedTo = this.getText().length();
  2689.                            this.thisGridOnly = true;
  2690.                            this.cellChanged[this.columnOrder[this.currentColumn]][this.currentRow] = true;
  2691.                            this.rowChanged[this.currentRow] = true;
  2692.                            this.repaintGrid(this.currentColumn, this.currentRow);
  2693.                            return true;
  2694.                         }
  2695.  
  2696.                         return false;
  2697.                      }
  2698.                   }
  2699.                case 502:
  2700.                   this.nothingChanged = false;
  2701.                   this.dragCount = 0;
  2702.                   if (var1.target != this) {
  2703.                      return false;
  2704.                   } else if (this.draggingColMouse) {
  2705.                      this.thisEvent = new Event(this, (new Date()).getTime(), 10002, var1.x, var1.y, var1.key, var1.modifiers, new Integer(this.dragCol));
  2706.                      ((Component)this).repaint();
  2707.                      this.draggingColMouse = false;
  2708.                      return true;
  2709.                   } else if (this.draggingColButton) {
  2710.                      this.reorderColumns(this.dragCol, var1.x);
  2711.                      if (!this.columnMoved) {
  2712.                         this.columnSelected[this.dragCol + this.xOffset] = true;
  2713.  
  2714.                         for(int var20 = 0; var20 < this.totalRows; ++var20) {
  2715.                            this.cellSelected[this.dragCol + this.xOffset][var20] = true;
  2716.                         }
  2717.  
  2718.                         if (this.sortingEnabled) {
  2719.                            this.sortItems(false, this.columnOrder[this.dragCol + this.xOffset], this.sortDescending[this.dragCol + this.xOffset]);
  2720.                            this.sortDescending[this.dragCol + this.xOffset] = !this.sortDescending[this.dragCol + this.xOffset];
  2721.                            this.setCursorInThisCell(this.dragCol + this.xOffset, -1);
  2722.                         }
  2723.  
  2724.                         this.currentSelectedColumn = this.dragCol + this.xOffset;
  2725.                         this.thisEvent = new Event(this, (new Date()).getTime(), 701, var1.x, var1.y, var1.key, var1.modifiers, new Integer(this.dragCol));
  2726.                      } else {
  2727.                         this.thisEvent = new Event(this, (new Date()).getTime(), 10001, var1.x, var1.y, var1.key, var1.modifiers, new Integer(this.dragCol));
  2728.                      }
  2729.  
  2730.                      ((Component)this).repaint();
  2731.                      this.columnMoved = false;
  2732.                      this.draggingColButton = false;
  2733.                      return true;
  2734.                   } else if (this.draggingRowMouse) {
  2735.                      this.thisEvent = new Event(this, (new Date()).getTime(), 10003, var1.x, var1.y, var1.key, var1.modifiers, new Integer(this.dragRow));
  2736.                      ((Component)this).repaint();
  2737.                      this.draggingRowMouse = false;
  2738.                      return true;
  2739.                   } else {
  2740.                      if (this.mousePressed) {
  2741.                         this.mousePressed = false;
  2742.                      }
  2743.  
  2744.                      for(int var19 = 0; var19 < this.displayedColumns; ++var19) {
  2745.                         for(int var30 = 0; var30 < this.displayedRows; ++var30) {
  2746.                            if (this.mouseRect[var19][var30] != null && this.mouseRect[var19][var30].inside(var1.x, var1.y) && (this.columnDisabled[this.columnOrder[this.currentColumn]] || this.fieldDisabled[this.columnOrder[this.currentColumn]][this.currentRow])) {
  2747.                               this.thisEvent = new Event(this, (new Date()).getTime(), 701, var1.x, var1.y, var1.key, var1.modifiers, new Integer(var30 + this.yOffset));
  2748.                               ((Component)this).postEvent(this.thisEvent);
  2749.                               this.thisEvent = null;
  2750.                               return true;
  2751.                            }
  2752.                         }
  2753.                      }
  2754.  
  2755.                      return false;
  2756.                   }
  2757.                case 503:
  2758.                   if (this.user.jdpMainWindow != null) {
  2759.                      if (this.user.jdpMainWindow.getCursorType() == 3) {
  2760.                         return false;
  2761.                      }
  2762.  
  2763.                      for(int var17 = 0; var17 < this.colHeadRect.length; ++var17) {
  2764.                         if (this.colHeadRect[var17] != null && this.colHeadRect[var17].inside(var1.x, var1.y)) {
  2765.                            this.user.jdpMainWindow.setCursor(10);
  2766.                            return false;
  2767.                         }
  2768.                      }
  2769.  
  2770.                      for(int var18 = 0; var18 < this.rowHeadRect.length; ++var18) {
  2771.                         if (this.rowHeadRect[var18] != null && this.rowHeadRect[var18].inside(var1.x, var1.y)) {
  2772.                            this.user.jdpMainWindow.setCursor(8);
  2773.                            return false;
  2774.                         }
  2775.                      }
  2776.  
  2777.                      this.user.jdpMainWindow.setCursor(0);
  2778.                   }
  2779.  
  2780.                   return false;
  2781.                case 505:
  2782.                   if (this.user.jdpMainWindow != null) {
  2783.                      if (this.user.jdpMainWindow.getCursorType() == 3) {
  2784.                         return false;
  2785.                      }
  2786.  
  2787.                      this.user.jdpMainWindow.setCursor(0);
  2788.                   }
  2789.  
  2790.                   return false;
  2791.                case 506:
  2792.                   this.nothingChanged = false;
  2793.                   if (!this.mousePressed && this.dragCount++ >= 2) {
  2794.                      if (var1.x == this.lastevtx && var1.y == this.lastevty) {
  2795.                         return true;
  2796.                      }
  2797.  
  2798.                      if (this.draggingColMouse) {
  2799.                         if (var1.x != this.lastevtx) {
  2800.                            this.repaintColHead(this.dragCol, var1.x);
  2801.                         }
  2802.  
  2803.                         this.lastevtx = var1.x;
  2804.                         return true;
  2805.                      }
  2806.  
  2807.                      if (this.draggingColButton) {
  2808.                         if (var1.x == this.lastevtx) {
  2809.                            return true;
  2810.                         }
  2811.  
  2812.                         if (var1.x < this.rowHeadWidth) {
  2813.                            if (this.xOffset > 0) {
  2814.                               this.xOffset += -1;
  2815.                            }
  2816.  
  2817.                            var1.x = this.rowHeadWidth + 3;
  2818.                         }
  2819.  
  2820.                         if (var1.x > this.Bounds.width - this.rowHeadWidth) {
  2821.                            ++this.xOffset;
  2822.                            var1.x = this.Bounds.width - this.rowHeadWidth - 2;
  2823.                         }
  2824.  
  2825.                         this.repaintColHead(this.dragCol, var1.x);
  2826.                         this.lastevtx = var1.x;
  2827.                         return true;
  2828.                      }
  2829.  
  2830.                      if (this.draggingRowMouse) {
  2831.                         if (var1.y != this.lastevty) {
  2832.                            this.repaintRowHead(this.dragRow, var1.y);
  2833.                         }
  2834.  
  2835.                         this.lastevty = var1.y;
  2836.                         return true;
  2837.                      }
  2838.  
  2839.                      this.lastevty = var1.y;
  2840.                      this.lastevtx = var1.x;
  2841.                      if (this.fieldSelected) {
  2842.                         if (var1.x > this.rowHeadWidth && var1.y > this.columnHeadHeight) {
  2843.                            int var13;
  2844.                            for(var13 = 0; this.lastpos + var13 <= this.currentText[var2][this.currentRow].length() && this.mouseRect[this.currentColumn - this.xOffset][this.currentRow - this.yOffset].x + this.user.u.StringWidth(this.field_0, this.currentText[var2][this.currentRow].substring(this.lastpos, this.lastpos + var13)) < var1.x; ++var13) {
  2845.                            }
  2846.  
  2847.                            int var4 = this.lastpos + var13 - 1;
  2848.                            if (var4 < 0 && this.cursorPos == 0) {
  2849.                               return true;
  2850.                            }
  2851.  
  2852.                            if (var4 < this.cursorPos) {
  2853.                               this.cursorPos = var4;
  2854.                               if (this.cursorPos >= this.selectedFrom) {
  2855.                                  this.selectedTo = this.cursorPos;
  2856.                               } else {
  2857.                                  this.selectedFrom = this.cursorPos;
  2858.                                  this.selectedTo = this.initcursorPos;
  2859.                               }
  2860.  
  2861.                               this.thisGridOnly = true;
  2862.                               this.repaintGrid(this.currentColumn, this.currentRow);
  2863.                               return true;
  2864.                            }
  2865.  
  2866.                            if (var4 > this.cursorPos) {
  2867.                               this.cursorPos = var4;
  2868.                               if (this.cursorPos <= this.selectedTo) {
  2869.                                  this.selectedFrom = this.cursorPos;
  2870.                               } else {
  2871.                                  this.selectedTo = this.cursorPos;
  2872.                                  this.selectedFrom = this.initcursorPos;
  2873.                               }
  2874.  
  2875.                               this.thisGridOnly = true;
  2876.                               this.repaintGrid(this.currentColumn, this.currentRow);
  2877.                               return true;
  2878.                            }
  2879.                         }
  2880.                      } else {
  2881.                         int var14 = this.rowHeadWidth;
  2882.                         int var27 = this.columnHeadHeight;
  2883.                         if (var1.x < this.rowHeadWidth) {
  2884.                            if (this.xOffset > 0) {
  2885.                               this.xOffset += -1;
  2886.                               var27 = 0;
  2887.                            }
  2888.  
  2889.                            var1.x = this.rowHeadWidth + 3;
  2890.                         }
  2891.  
  2892.                         if (var1.x > this.Bounds.width - this.rowHeadWidth) {
  2893.                            ++this.xOffset;
  2894.                            var27 = 0;
  2895.                            var1.x = this.Bounds.width - this.rowHeadWidth - 2;
  2896.                         }
  2897.  
  2898.                         if (var1.y < this.columnHeadHeight + 3) {
  2899.                            if (this.yOffset > 0) {
  2900.                               this.yOffset += -1;
  2901.                               var14 = 0;
  2902.                            }
  2903.  
  2904.                            var1.y = this.columnHeadHeight + 3;
  2905.                         }
  2906.  
  2907.                         if (var1.y > this.Bounds.height - this.columnHeadHeight) {
  2908.                            ++this.yOffset;
  2909.                            var14 = 0;
  2910.                            var1.y = this.Bounds.height - this.columnHeadHeight - 2;
  2911.                         }
  2912.  
  2913.                         for(int var5 = 0; var5 < this.totalColumns; ++var5) {
  2914.                            this.columnSelected[var5] = false;
  2915.  
  2916.                            for(int var6 = 0; var6 < this.totalRows; ++var6) {
  2917.                               this.rowSelected[var6] = false;
  2918.                               this.saveColumnSelected[var5][var6] = this.cellSelected[var5][var6];
  2919.                               if (var1.modifiers != 2) {
  2920.                                  this.cellSelected[var5][var6] = false;
  2921.                               }
  2922.                            }
  2923.                         }
  2924.  
  2925.                         this.currentSelectedRow = -1;
  2926.                         this.currentSelectedColumn = -1;
  2927.  
  2928.                         for(int var35 = 0; var35 < this.displayedColumns; ++var35) {
  2929.                            for(int var38 = 0; var38 < this.displayedRows; ++var38) {
  2930.                               if (this.mouseRect[var35][var38] != null && this.mouseRect[var35][var38].inside(var1.x, var1.y)) {
  2931.                                  if (this.initSelectColumn < 0) {
  2932.                                     this.initSelectColumn = var35 + this.xOffset;
  2933.                                     this.initSelectRow = var38 + this.yOffset;
  2934.                                     this.cellSelected[this.initSelectColumn][this.initSelectRow] = true;
  2935.                                  } else {
  2936.                                     int var7 = var35 + this.xOffset - this.initSelectColumn;
  2937.                                     byte var8 = 1;
  2938.                                     if (var7 < 0) {
  2939.                                        var8 = -1;
  2940.                                     }
  2941.  
  2942.                                     int var9 = var38 + this.yOffset - this.initSelectRow;
  2943.                                     byte var10 = 1;
  2944.                                     if (var9 < 0) {
  2945.                                        var10 = -1;
  2946.                                     }
  2947.  
  2948.                                     for(int var11 = this.initSelectColumn; var11 != var35 + this.xOffset + var8; var11 += var8) {
  2949.                                        for(int var12 = this.initSelectRow; var12 != var38 + this.yOffset + var10; var12 += var10) {
  2950.                                           if (var11 < this.totalColumns && var12 < this.totalRows && var11 >= 0 && var12 >= 0) {
  2951.                                              this.cellSelected[var11][var12] = true;
  2952.                                           }
  2953.                                        }
  2954.                                     }
  2955.                                  }
  2956.  
  2957.                                  ((Component)this).repaint();
  2958.                                  return true;
  2959.                               }
  2960.                            }
  2961.                         }
  2962.  
  2963.                         ((Component)this).repaint();
  2964.                      }
  2965.  
  2966.                      return false;
  2967.                   }
  2968.  
  2969.                   this.mousePressed = false;
  2970.                   return true;
  2971.                case 701:
  2972.                   if (var1.target.equals(this.pullDownDisplayList)) {
  2973.                      this.setText(this.pullDownDisplayList.getSelectedItem());
  2974.                      this.cellChanged[this.columnOrder[this.currentColumn]][this.currentRow] = true;
  2975.                      this.rowChanged[this.currentRow] = true;
  2976.                      if (!this.isPulledDown) {
  2977.                         return true;
  2978.                      }
  2979.  
  2980.                      this.isPulledDown = false;
  2981.                      if (this.columnProtected[this.columnOrder[this.getCurrentColumn()]] || this.fieldProtected[this.columnOrder[this.getCurrentColumn()]][this.getCurrentRow()]) {
  2982.                         this.selectedFrom = 0;
  2983.                         this.selectedTo = this.getText().length();
  2984.                      }
  2985.  
  2986.                      this.pullDownList[this.columnOrder[this.getCurrentColumn()]][this.getPulldownRow(this.columnOrder[this.getCurrentColumn()], this.getCurrentRow())].select(this.pullDownDisplayList.getSelectedIndex());
  2987.                      this.thisEvent = new Event(this, 1005, "JDPTextGrid");
  2988.                      ((Component)this).repaint();
  2989.                      return true;
  2990.                   }
  2991.  
  2992.                   return false;
  2993.                case 1001:
  2994.                   if (var1.target.equals(this.calendar)) {
  2995.                      this.setText(this.calendar.getDateString());
  2996.                      this.cellChanged[this.columnOrder[this.currentColumn]][this.currentRow] = true;
  2997.                      this.rowChanged[this.currentRow] = true;
  2998.                      if (!this.isPulledDown) {
  2999.                         return true;
  3000.                      }
  3001.  
  3002.                      this.isPulledDown = false;
  3003.                      if (this.columnProtected[this.columnOrder[this.getCurrentColumn()]] || this.fieldProtected[this.columnOrder[this.getCurrentColumn()]][this.getCurrentRow()]) {
  3004.                         this.selectedFrom = 0;
  3005.                         this.selectedTo = this.getText().length();
  3006.                      }
  3007.  
  3008.                      ((Component)this).repaint();
  3009.                      return true;
  3010.                   } else {
  3011.                      if (var1.target instanceof Component && !var1.target.equals(this)) {
  3012.                         if (var1.arg instanceof String) {
  3013.                            this.setText((String)var1.arg);
  3014.                         }
  3015.  
  3016.                         this.cellChanged[this.columnOrder[this.currentColumn]][this.currentRow] = true;
  3017.                         this.rowChanged[this.currentRow] = true;
  3018.                         if (!this.isPulledDown) {
  3019.                            return false;
  3020.                         }
  3021.  
  3022.                         this.isPulledDown = false;
  3023.                         if (this.columnProtected[this.columnOrder[this.getCurrentColumn()]] || this.fieldProtected[this.columnOrder[this.getCurrentColumn()]][this.getCurrentRow()]) {
  3024.                            this.selectedFrom = 0;
  3025.                            this.selectedTo = this.getText().length();
  3026.                         }
  3027.  
  3028.                         ((Component)this).repaint();
  3029.                         Event var3 = new Event(this, var1.when, var1.id, var1.x, var1.y, var1.key, var1.modifiers, var1.arg);
  3030.                         super.postEvent(var3);
  3031.                         return true;
  3032.                      }
  3033.  
  3034.                      return false;
  3035.                   }
  3036.                case 1005:
  3037.                   if (var1.target.equals(this) && this.isPulledDown) {
  3038.                      return true;
  3039.                   }
  3040.  
  3041.                   if (!var1.target.equals(this) && !var1.target.equals(this.pullDownScroll) && (this.calendar == null || !var1.target.equals(this.calendar) && !var1.target.equals(this.calendar.leftButton) && !var1.target.equals(this.calendar.rightButton)) && this.isPulledDown) {
  3042.                      this.isPulledDown = false;
  3043.                      this.thisGridOnly = false;
  3044.                      ((Component)this).repaint();
  3045.                   }
  3046.  
  3047.                   return false;
  3048.                default:
  3049.                   return false;
  3050.             }
  3051.          }
  3052.       }
  3053.    }
  3054.  
  3055.    public void setCellSelected(int var1, int var2, boolean var3) {
  3056.       this.cellSelected[var1][var2] = var3;
  3057.       this.reDraw();
  3058.    }
  3059.  
  3060.    public boolean getCellSelected(int var1, int var2) {
  3061.       return this.cellSelected[var1][var2];
  3062.    }
  3063.  
  3064.    public void setPullDown(int var1, int var2, boolean var3) {
  3065.       this.isPullDown[var1][var2] = var3;
  3066.       this.setFieldType(var1, var2, 1);
  3067.       this.reDraw();
  3068.    }
  3069.  
  3070.    public boolean getPullDown(int var1, int var2) {
  3071.       return this.isPullDown[var1][var2];
  3072.    }
  3073.  
  3074.    public int getColumnOrder(int var1) {
  3075.       return this.columnOrder[var1];
  3076.    }
  3077.  
  3078.    public void setCellColor(int var1, int var2, Color var3) {
  3079.       this.cellColor[var1][var2] = var3;
  3080.       this.reDraw();
  3081.    }
  3082.  
  3083.    public Color getCellColor(int var1, int var2) {
  3084.       return this.cellColor[var1][var2];
  3085.    }
  3086.  
  3087.    public void setColumnGridColor(int var1, int var2, Color var3) {
  3088.       this.columnGridColor[var1][var2] = var3;
  3089.       this.reDraw();
  3090.    }
  3091.  
  3092.    public Color getColumnGridColor(int var1, int var2) {
  3093.       return this.columnGridColor[var1][var2];
  3094.    }
  3095.  
  3096.    public int getPrevColumn() {
  3097.       return this.prevColumn;
  3098.    }
  3099.  
  3100.    public int getSelectionEnd() {
  3101.       return this.selectedTo;
  3102.    }
  3103.  
  3104.    public void setPullDownValue(int var1, int var2, Vector var3) {
  3105.       this.pullDownValue[var1][var2] = var3;
  3106.    }
  3107.  
  3108.    public void update(Graphics var1) {
  3109.       byte var2 = 6;
  3110.       byte var3 = 5;
  3111.       int var4 = 1;
  3112.       int var5 = 1;
  3113.       int var6 = 0;
  3114.       this.upButton = null;
  3115.       this.downButton = null;
  3116.       this.checkboxRect = null;
  3117.       this.thisGridOnly = false;
  3118.       Rectangle var11 = ((Component)this).getParent().getParent().bounds();
  3119.       var11.height -= var3;
  3120.       var11.width -= var2;
  3121.       if (this.Bounds == null || var11.width != this.Bounds.width || var11.height != this.Bounds.height) {
  3122.          this.nothingChanged = false;
  3123.       }
  3124.  
  3125.       Dimension var12 = ((Component)this).size();
  3126.       if (this.prevSize == null || var12.width != this.prevSize.width || var12.height != this.prevSize.height) {
  3127.          this.nothingChanged = false;
  3128.       }
  3129.  
  3130.       this.back = ((Component)this).getBackground();
  3131.       if (this.gridColor == null) {
  3132.          this.gridColor = ((Component)this).getParent().getBackground();
  3133.       }
  3134.  
  3135.       this.plainFont = ((Component)this).getFont();
  3136.       this.boldFont = new Font(this.plainFont.getName(), 1, this.plainFont.getSize());
  3137.       if (this.field_0 != null) {
  3138.          this.field_0.setFont(this.plainFont);
  3139.          this.prevSize = var12;
  3140.          int var13 = this.StringHeight();
  3141.          if (var13 != this.lastFontHeight) {
  3142.             if (this.columnHeaderHeight == 0) {
  3143.                this.columnHeaderHeight = var13;
  3144.             }
  3145.  
  3146.             this.lastFontHeight = var13;
  3147.  
  3148.             for(int var14 = 0; var14 < this.totalRows; ++var14) {
  3149.                this.columnHeight[var14] = var13 + 3;
  3150.             }
  3151.  
  3152.             this.nothingChanged = false;
  3153.          }
  3154.  
  3155.          if (this.lastPlainFont != null && this.plainFont.getName().equals(this.lastPlainFont.getName())) {
  3156.             this.nothingChanged = false;
  3157.             this.lastPlainFont = this.plainFont;
  3158.          }
  3159.       }
  3160.  
  3161.       if (!this.isPulledDown && this.popup != null && this.popup.getEventListener() != null && this.popup.getEventListener().equals(this)) {
  3162.          this.searchString = "";
  3163.          this.pullDownRect = null;
  3164.          this.popup.hide();
  3165.       }
  3166.  
  3167.       if (this.nothingChanged && this.offscreen != null) {
  3168.          var1.drawImage(this.offscreen, var2 - 3, var3 - 2, (ImageObserver)null);
  3169.          var1.clearRect(0, var12.height - 2, var12.width, var12.height);
  3170.          var1.clearRect(var12.width - 3, 0, var12.width, var12.height);
  3171.       } else {
  3172.          this.nothingChanged = true;
  3173.          byte var30 = 15;
  3174.          if (this.scrollSouthDisabled) {
  3175.             var30 = 3;
  3176.          }
  3177.  
  3178.          this.Bounds = ((Component)this).bounds();
  3179.          Rectangle var10000 = this.Bounds;
  3180.          var10000.height -= var3;
  3181.          var10000 = this.Bounds;
  3182.          var10000.width -= var2;
  3183.          Rectangle var31 = ((Component)this).bounds();
  3184.          var31.height -= var3;
  3185.          var31.width -= var2;
  3186.          if (this.Bounds.width > 0 && this.Bounds.height > 0) {
  3187.             if (this.offscreen == null || this.Bounds.width != this.offscreensize.width || this.Bounds.height != this.offscreensize.height) {
  3188.                this.offscreen = ((Component)this).createImage(this.Bounds.width, this.Bounds.height);
  3189.                this.offscreensize = this.Bounds;
  3190.                this.field_0 = this.offscreen.getGraphics();
  3191.                this.field_0.setFont(this.plainFont);
  3192.             }
  3193.  
  3194.             if (!this.isPulledDown && this.pullDownScroll != null && this.pullDownScroll.isVisible()) {
  3195.                this.pullDownScroll.hide();
  3196.                this.nothingChanged = false;
  3197.             }
  3198.  
  3199.             int var7;
  3200.             int var8;
  3201.             int var9;
  3202.             int var10;
  3203.             if (!this.thisGridOnly) {
  3204.                this.columnHeadHeight = this.columnHeaderHeight;
  3205.                this.rowHeadWidth = this.rowHeaderWidth;
  3206.                if (!this.columnHeaderOn) {
  3207.                   this.columnHeadHeight = 0;
  3208.                }
  3209.  
  3210.                if (!this.rowHeaderOn) {
  3211.                   this.rowHeadWidth = 0;
  3212.                }
  3213.  
  3214.                this.field_0.setColor(Color.black);
  3215.                var7 = 0;
  3216.                var9 = 0;
  3217.                var8 = 0;
  3218.                var10 = 0;
  3219.                if (this.xOffset < 0) {
  3220.                   this.xOffset = 0;
  3221.                }
  3222.  
  3223.                int var15;
  3224.                for(var15 = 0; var15 < this.Bounds.width - 15 - this.rowHeadWidth && var8 + this.xOffset < this.totalColumns; ++var8) {
  3225.                   var15 += this.columnWidth[this.columnOrder[var8 + this.xOffset]];
  3226.                }
  3227.  
  3228.                if (var15 < this.Bounds.width - 15 - this.rowHeadWidth && this.xOffset > 0) {
  3229.                   this.xOffset = this.totalColumns - 1;
  3230.  
  3231.                   int[] var10001;
  3232.                   int[] var10002;
  3233.                   int var10005;
  3234.                   for(var15 = 0; var15 < this.Bounds.width - 15 - this.rowHeadWidth && this.xOffset >= 0; var15 += var10001[var10002[var10005]]) {
  3235.                      var10001 = this.columnWidth;
  3236.                      var10002 = this.columnOrder;
  3237.                      var10005 = this.xOffset;
  3238.                      this.xOffset = var10005 + -1;
  3239.                   }
  3240.  
  3241.                   ++this.xOffset;
  3242.                   int var58 = var15 - this.columnWidth[this.columnOrder[this.xOffset]];
  3243.                   var8 = this.totalColumns - this.xOffset - 1;
  3244.                   ++this.xOffset;
  3245.                   ++this.xOffset;
  3246.                }
  3247.  
  3248.                if (var8 > this.totalColumns) {
  3249.                   var8 = this.totalColumns;
  3250.                }
  3251.  
  3252.                if (this.yOffset < 0) {
  3253.                   this.yOffset = 0;
  3254.                }
  3255.  
  3256.                int var16;
  3257.                for(var16 = 0; var16 < this.Bounds.height - var30 - this.columnHeadHeight && var10 + this.yOffset < this.totalRows; ++var10) {
  3258.                   var16 += this.columnHeight[var10 + this.yOffset];
  3259.                }
  3260.  
  3261.                if (var16 < this.Bounds.height - var30 - this.columnHeadHeight && this.yOffset > 0) {
  3262.                   this.yOffset = this.totalRows - 1;
  3263.  
  3264.                   int[] var61;
  3265.                   int var10004;
  3266.                   for(var16 = 0; var16 < this.Bounds.height - var30 - this.columnHeadHeight && this.yOffset >= 0; var16 += var61[var10004]) {
  3267.                      var61 = this.columnHeight;
  3268.                      var10004 = this.yOffset;
  3269.                      this.yOffset = var10004 + -1;
  3270.                   }
  3271.  
  3272.                   ++this.yOffset;
  3273.                   int var59 = var16 - this.columnHeight[this.yOffset];
  3274.                   var10 = this.totalRows - this.yOffset - 1;
  3275.                   ++this.yOffset;
  3276.                   ++this.yOffset;
  3277.                }
  3278.  
  3279.                if (var10 > this.totalRows) {
  3280.                   var10 = this.totalRows;
  3281.                }
  3282.  
  3283.                this.displayedColumns = var8;
  3284.                this.displayedRows = var10;
  3285.                if (this.displayedRows <= this.totalRows && !this.scrollEastDisabled) {
  3286.                   if (this.scrollEast == null) {
  3287.                      this.scrollEast = new Scrollbar(1, 0, 5, 0, 100);
  3288.                      ((Container)this).add(this.scrollEast);
  3289.                   }
  3290.  
  3291.                   this.scrollEast.move(this.Bounds.width - 10, 5);
  3292.                   this.scrollEast.resize(12, this.Bounds.height - var30);
  3293.                   this.scrollEast.show();
  3294.                } else {
  3295.                   this.displayedRows = this.totalRows;
  3296.                   var10 = this.totalRows;
  3297.                   if (this.scrollEast != null) {
  3298.                      this.scrollEast.hide();
  3299.                   }
  3300.                }
  3301.  
  3302.                if (this.displayedColumns <= this.totalColumns && !this.scrollSouthDisabled) {
  3303.                   if (this.scrollSouth == null) {
  3304.                      this.scrollSouth = new Scrollbar(0, 0, 5, 0, 100);
  3305.                      ((Container)this).add(this.scrollSouth);
  3306.                   }
  3307.  
  3308.                   this.scrollSouth.move(5, this.Bounds.height - 10);
  3309.                   if (this.scrollEast != null && this.scrollEast.isVisible()) {
  3310.                      this.scrollSouth.resize(this.Bounds.width - 15, 12);
  3311.                   } else {
  3312.                      this.scrollSouth.resize(this.Bounds.width - 3, 12);
  3313.                   }
  3314.  
  3315.                   this.scrollSouth.show();
  3316.                } else {
  3317.                   this.displayedColumns = this.totalColumns;
  3318.                   var8 = this.totalColumns;
  3319.                   if (this.scrollSouth != null) {
  3320.                      this.scrollSouth.hide();
  3321.                   }
  3322.                }
  3323.  
  3324.                if (this.xOffset > this.totalColumns - this.displayedColumns) {
  3325.                   this.xOffset = this.totalColumns - this.displayedColumns;
  3326.                }
  3327.  
  3328.                if (this.yOffset > this.totalRows - this.displayedRows) {
  3329.                   this.yOffset = this.totalRows - this.displayedRows;
  3330.                }
  3331.  
  3332.                int var17 = 0;
  3333.  
  3334.                for(int var18 = 0; var18 < this.totalRows; ++var18) {
  3335.                   var17 += this.columnHeight[var18];
  3336.                }
  3337.  
  3338.                if (this.scrollEast != null) {
  3339.                   int var44 = this.scrollEast.getValue();
  3340.                   int var19 = (int)((float)this.totalRows * ((float)(this.Bounds.height - var30 - this.columnHeadHeight) / (float)var17));
  3341.                   int var20 = (int)((float)this.totalRows * (((float)var17 - ((float)this.Bounds.height - (float)var30 - (float)this.columnHeadHeight)) / (float)var17)) + 1;
  3342.                   int var21 = 0;
  3343.                   if (System.getProperty("java.vendor").startsWith("Netscape") && System.getProperty("java.version").compareTo("1.1.5") < 0 || System.getProperty("java.vendor").startsWith("Microsoft") && System.getProperty("java.version").compareTo("1.1.4") < 0) {
  3344.                      var21 = var19;
  3345.                   }
  3346.  
  3347.                   this.scrollEast.setValues(var44, var19, 0, var20 + var19 - var21);
  3348.                }
  3349.  
  3350.                var17 = 0;
  3351.  
  3352.                for(int var45 = 0; var45 < this.totalColumns; ++var45) {
  3353.                   var17 += this.columnWidth[this.columnOrder[var45]];
  3354.                }
  3355.  
  3356.                if (this.scrollSouth != null) {
  3357.                   int var46 = this.scrollSouth.getValue();
  3358.                   int var48 = (int)((float)this.totalColumns * ((float)(this.Bounds.width - 15 - this.rowHeadWidth) / (float)var17));
  3359.                   int var50 = (int)((float)this.totalColumns * (((float)var17 - ((float)this.Bounds.width - 15.0F - (float)this.rowHeadWidth)) / (float)var17)) + 1;
  3360.                   int var52 = 0;
  3361.                   if (System.getProperty("java.vendor").startsWith("Netscape") && System.getProperty("java.version").compareTo("1.1.5") < 0 || System.getProperty("java.vendor").startsWith("Microsoft") && System.getProperty("java.version").compareTo("1.1.4") < 0) {
  3362.                      var52 = var48;
  3363.                   }
  3364.  
  3365.                   this.scrollSouth.setValues(var46, var48, 0, var50 + var48 - var52);
  3366.                }
  3367.  
  3368.                if (this.rowHeaderOn && this.columnHeaderOn) {
  3369.                   this.drawButton("", (String)null, Color.black, 1, var4 + 1, var5 + 1, this.rowHeadWidth, this.columnHeadHeight);
  3370.                }
  3371.             } else {
  3372.                var7 = this.currentColumn - this.xOffset;
  3373.                var8 = this.displayedColumns;
  3374.                var9 = this.currentRow - this.yOffset;
  3375.                var10 = this.currentRow - this.yOffset + 1;
  3376.                if (this.rowHeaderOn) {
  3377.                   var4 += this.rowHeaderWidth;
  3378.                }
  3379.  
  3380.                int var33 = 0;
  3381.  
  3382.                for(int var34 = 0; var34 < var7; ++var34) {
  3383.                   var4 += this.columnWidth[this.columnOrder[var34 + this.xOffset]];
  3384.                }
  3385.  
  3386.                if (this.columnHeaderOn) {
  3387.                   var5 = var5 + this.columnHeaderHeight + 1;
  3388.                }
  3389.  
  3390.                for(var33 = 0; var33 < var9; ++var33) {
  3391.                   var5 += this.columnHeight[var33 + this.yOffset];
  3392.                }
  3393.  
  3394.                int var60 = this.columnHeight[var33 + this.yOffset];
  3395.             }
  3396.  
  3397.             if (this.columnHeaderOn) {
  3398.                this.colHeadRect[0] = new Rectangle(this.rowHeaderWidth + var4 + 1, var5 + 3, 4, this.columnHeadHeight);
  3399.             }
  3400.  
  3401.             for(int var36 = var7; var36 < var8; ++var36) {
  3402.                if (var36 + this.xOffset >= this.columnOrder.length) {
  3403.                   this.xOffset = 0;
  3404.                }
  3405.  
  3406.                int var40 = this.columnOrder[var36 + this.xOffset];
  3407.                int var43 = var36 + this.xOffset;
  3408.                int var47 = this.columnWidth[var40];
  3409.                if (this.rowHeaderOn && var36 == 0 && !this.thisGridOnly) {
  3410.                   var4 += this.rowHeadWidth;
  3411.                }
  3412.  
  3413.                if (!this.thisGridOnly) {
  3414.                   var5 = 1;
  3415.                   if (this.columnHeaderOn) {
  3416.                      this.drawButton(this.columnHeader[var40], this.rightJustify[var40], this.columnHeaderColor[var40], this.columnHeaderStyle[var40], var4 + 1, var5 + 1, var47, this.columnHeadHeight);
  3417.                      this.colButton[var36] = new Rectangle(var4 + 5, var5 + 3, var47 - 4, this.columnHeadHeight);
  3418.                      this.colHeadRect[var36 + 1] = new Rectangle(var4 + var47 + 1, var5 + 3, 4, this.columnHeadHeight);
  3419.                      var5 = var5 + this.columnHeadHeight + 1;
  3420.                   }
  3421.                }
  3422.  
  3423.                if (!this.draggingColMouse && !this.draggingColButton) {
  3424.                   if (this.rowHeaderOn && var36 == 0) {
  3425.                      this.rowHeadRect[0] = new Rectangle(var4 - this.rowHeadWidth + 3, var5 + 1, this.rowHeadWidth, 4);
  3426.                   }
  3427.  
  3428.                   for(int var51 = var9; var51 < var10; ++var51) {
  3429.                      var6 = this.columnHeight[var51 + this.yOffset];
  3430.                      if (this.rowHeaderOn && var36 == 0 && !this.thisGridOnly) {
  3431.                         var4 -= this.rowHeadWidth;
  3432.                         this.drawButton(this.rowHeader[var51 + this.yOffset], this.rowHeadJustify, Color.black, 1, var4 + 1, var5 + 1, this.rowHeadWidth, var6 - 1);
  3433.                         this.rowButton[var51] = new Rectangle(var4 + 3, var5 + 5, this.rowHeadWidth, var6 - 4);
  3434.                         this.rowHeadRect[var51 + 1] = new Rectangle(var4 + 3, var5 + var6 + 1, this.rowHeadWidth, 4);
  3435.                         var4 += this.rowHeadWidth;
  3436.                      }
  3437.  
  3438.                      if (!this.draggingRowMouse) {
  3439.                         int var53 = var51 + this.yOffset;
  3440.                         if (this.currentText[var40][var53] == null) {
  3441.                            this.currentText[var40][var53] = "";
  3442.                         }
  3443.  
  3444.                         boolean var22 = false;
  3445.                         boolean var23 = false;
  3446.                         int var24 = 0;
  3447.  
  3448.                         for(int var25 = var36 + this.xOffset - 1; var25 >= this.xOffset; --var25) {
  3449.                            int var26 = this.columnOrder[var25];
  3450.                            var24 += this.columnWidth[var26];
  3451.                            if (this.cellFont[var26][var53] != null) {
  3452.                               this.field_0.setFont(this.cellFont[var26][var53]);
  3453.                            } else if (this.columnStyle[var26] == 1) {
  3454.                               this.field_0.setFont(this.boldFont);
  3455.                            }
  3456.  
  3457.                            if (this.currentText[var26][var53] != null && !this.currentText[var26][var53].equals("") && this.user.u.StringWidth(this.field_0, this.currentText[var26][var53]) > var24 - 2) {
  3458.                               var22 = true;
  3459.                               if (this.cursorInThisField[var25][var53] && this.fieldSelected) {
  3460.                                  var23 = true;
  3461.                               }
  3462.  
  3463.                               if (!this.thisGridOnly) {
  3464.                                  break;
  3465.                               }
  3466.                            }
  3467.  
  3468.                            if (this.currentText[var26][var53] != null && !this.currentText[var26][var53].equals("") && !this.thisGridOnly && !this.fieldSelected || this.thisGridOnly && this.cursorInThisField[var25][var53]) {
  3469.                               break;
  3470.                            }
  3471.                         }
  3472.  
  3473.                         this.field_0.setFont(this.plainFont);
  3474.                         if (this.fieldDisplay && this.cursorInThisField[var43][var53] || !this.currentText[var40][var53].equals("") && !var23 || !var22) {
  3475.                            if (this.cellFont[var40][var53] != null) {
  3476.                               this.field_0.setFont(this.cellFont[var40][var53]);
  3477.                            } else if (this.columnStyle[var40] == 1) {
  3478.                               this.field_0.setFont(this.boldFont);
  3479.                            }
  3480.  
  3481.                            int var54 = this.user.u.StringWidth(this.field_0, this.currentText[var40][var53]);
  3482.                            int var49 = var47;
  3483.                            this.thisSubstring = this.currentText[var40][var53].length();
  3484.                            if (var54 > var47 && var43 + 1 < this.totalColumns && (!this.fieldSelected || this.fieldSelected && !this.cursorInThisField[var43][var53]) && (this.currentText[this.columnOrder[var43 + 1]][var53] != null && !this.currentText[this.columnOrder[var43 + 1]][var53].equals("") || this.cursorInThisField[var43 + 1][var53])) {
  3485.                               this.thisSubstring = 0;
  3486.  
  3487.                               while(this.currentText[var40][var53].length() > this.thisSubstring && this.user.u.StringWidth(this.field_0, this.currentText[var40][var53].substring(0, this.thisSubstring++)) < var47) {
  3488.                               }
  3489.                            } else {
  3490.                               for(int var55 = var36 + this.xOffset; var54 + 3 > var49 && var55 + 1 < this.totalColumns; var49 += this.columnWidth[this.columnOrder[var55]]) {
  3491.                                  ++var55;
  3492.                               }
  3493.  
  3494.                               if (var54 > var49 && var43 + 1 < this.totalColumns) {
  3495.                                  this.thisSubstring = 0;
  3496.  
  3497.                                  while(this.user.u.StringWidth(this.field_0, this.currentText[var40][var53].substring(0, this.thisSubstring++)) < var47) {
  3498.                                  }
  3499.                               }
  3500.                            }
  3501.  
  3502.                            if (this.fieldSelected) {
  3503.                               this.mouseRect[var36][var51] = new Rectangle(var4 + 3, var5 + 3, var49, var6);
  3504.                            } else {
  3505.                               this.mouseRect[var36][var51] = new Rectangle(var4 + 3, var5 + 3, var47, var6);
  3506.                            }
  3507.  
  3508.                            if (this.cursorInThisField[var43][var53]) {
  3509.                               this.drawSelectedField(var40, var53, var4, var5, var49, var6);
  3510.                            } else {
  3511.                               if (this.cellSelected[var43][var53]) {
  3512.                                  this.field_0.setColor(this.textHighlight);
  3513.                               } else {
  3514.                                  this.field_0.setColor(this.columnBGColor[var40]);
  3515.                               }
  3516.  
  3517.                               this.field_0.fillRect(var4 + 1, var5 + 1, var49 - 1, var6 - 1);
  3518.                               if (this.rowGridColor[var40][var53] != null) {
  3519.                                  this.field_0.setColor(this.rowGridColor[var40][var53]);
  3520.                               } else {
  3521.                                  this.field_0.setColor(this.gridColor);
  3522.                               }
  3523.  
  3524.                               this.field_0.drawLine(var4, var5, var4 + var49, var5);
  3525.                               this.field_0.drawLine(var4, var5 + var6, var4 + var49, var5 + var6);
  3526.                               if (this.columnGridColor[var40][var53] != null) {
  3527.                                  this.field_0.setColor(this.columnGridColor[var40][var53]);
  3528.                               } else {
  3529.                                  this.field_0.setColor(this.gridColor);
  3530.                               }
  3531.  
  3532.                               this.field_0.drawLine(var4, var5, var4, var5 + var6);
  3533.                               this.field_0.drawLine(var4 + var49, var5, var4 + var49, var5 + var6);
  3534.                               this.field_0.setColor(Color.black);
  3535.                               if (this.columnHeaderOn && var51 == 0) {
  3536.                                  this.field_0.drawLine(var4 + 1, var5, var4 + var49 - 1, var5);
  3537.                               }
  3538.  
  3539.                               if (this.rowHeaderOn && var36 == 0) {
  3540.                                  this.field_0.drawLine(var4, var5, var4, var5 + var6);
  3541.                               }
  3542.  
  3543.                               if (this.cellSelected[var43][var53]) {
  3544.                                  this.field_0.setColor(this.textHighlightText);
  3545.                               } else if (this.cellColor[var40][var53] != null) {
  3546.                                  this.field_0.setColor(this.cellColor[var40][var53]);
  3547.                               } else {
  3548.                                  this.field_0.setColor(this.columnColor[var40]);
  3549.                               }
  3550.  
  3551.                               if (this.cellFont[var40][var53] != null) {
  3552.                                  this.field_0.setFont(this.cellFont[var40][var53]);
  3553.                               } else if (this.columnStyle[var40] == 1) {
  3554.                                  this.field_0.setFont(this.boldFont);
  3555.                               }
  3556.  
  3557.                               int var56 = 0;
  3558.                               if (this.rightJustify[var40]) {
  3559.                                  var56 = var47 - this.user.u.StringWidth(this.field_0, this.currentText[var40][var53]) - 5;
  3560.                                  if (var56 < 0) {
  3561.                                     var56 = 0;
  3562.                                  }
  3563.                               }
  3564.  
  3565.                               int var27 = this.StringHeight();
  3566.                               if (this.fieldType[var40][var53] != 3 && this.fieldTypeCol[var40] != 3) {
  3567.                                  if (this.currentText[var40][var53] != null && this.currentText[var40][var53].length() > 0) {
  3568.                                     this.field_0.drawString(this.currentText[var40][var53].substring(0, this.thisSubstring), var4 + 3 + var56, var5 + var27 - 1);
  3569.                                  }
  3570.                               } else {
  3571.                                  this.drawCheckbox(var40, var53, var4, var5, var47, var6);
  3572.                               }
  3573.                            }
  3574.                         }
  3575.                      }
  3576.  
  3577.                      if (!this.thisGridOnly) {
  3578.                         var5 += var6;
  3579.                      }
  3580.  
  3581.                      this.field_0.setFont(this.plainFont);
  3582.                   }
  3583.                }
  3584.  
  3585.                var4 += var47;
  3586.             }
  3587.  
  3588.             if (this.draggingColButton) {
  3589.                int var37 = this.columnOrder[this.dragCol + this.originalxOffset];
  3590.                if (this.columnHeaderStyle[var37] == 1) {
  3591.                   this.field_0.setFont(this.boldFont);
  3592.                } else {
  3593.                   this.field_0.setFont(this.plainFont);
  3594.                }
  3595.  
  3596.                int var41 = this.user.u.StringWidth(this.field_0, this.columnHeader[var37]);
  3597.                if (var41 < this.columnWidth[var37]) {
  3598.                   var41 = this.columnWidth[var37];
  3599.                }
  3600.  
  3601.                this.drawButton(this.columnHeader[var37], this.rightJustify[var37], this.columnHeaderColor[var37], this.columnHeaderStyle[var37], this.currentXpos - this.columnButtonOffset, 2, var41, this.columnHeadHeight);
  3602.             }
  3603.  
  3604.             if (!this.thisGridOnly) {
  3605.                this.field_0.setColor(this.back);
  3606.                if (var4 < this.Bounds.width) {
  3607.                   this.field_0.fillRect(var4 + 1, 1, this.Bounds.width - 1, this.Bounds.height - 1);
  3608.                   this.field_0.fillRect(var4, this.columnHeaderHeight + 3, this.Bounds.width - 1, this.Bounds.height - 1);
  3609.                }
  3610.  
  3611.                if (var5 < this.Bounds.height) {
  3612.                   this.field_0.fillRect(1, var5 + 1, this.Bounds.width - 1, this.Bounds.height - 1);
  3613.                }
  3614.  
  3615.                if (this.scrollEast != null && this.scrollSouth != null && this.scrollEast.isVisible() && this.scrollSouth.isVisible()) {
  3616.                   this.field_0.setColor(this.back);
  3617.                   this.field_0.fillRect(this.Bounds.width - 14, this.Bounds.height - 14, 13, 13);
  3618.                }
  3619.  
  3620.                this.field_0.setColor(JDPUtils.darker(this.gridColor));
  3621.                this.field_0.drawLine(0, 0, 0, this.Bounds.height);
  3622.                this.field_0.drawLine(0, 0, this.Bounds.width, 0);
  3623.                this.field_0.setColor(JDPUtils.darker(JDPUtils.darker(this.gridColor)));
  3624.                this.field_0.drawLine(1, 1, this.Bounds.width - 1, 1);
  3625.                this.field_0.drawLine(1, 1, 1, this.Bounds.height - 1);
  3626.             }
  3627.  
  3628.             this.field_0.setColor(this.back);
  3629.             this.field_0.drawLine(2, this.Bounds.height - 2, this.Bounds.width - 2, this.Bounds.height - 2);
  3630.             this.field_0.drawLine(this.Bounds.width - 2, 2, this.Bounds.width - 2, this.Bounds.height - 2);
  3631.             this.field_0.setColor(JDPUtils.brighter(this.back));
  3632.             this.field_0.drawLine(1, this.Bounds.height - 1, this.Bounds.width - 1, this.Bounds.height - 1);
  3633.             this.field_0.drawLine(this.Bounds.width - 1, 1, this.Bounds.width - 1, this.Bounds.height - 1);
  3634.             this.fieldDisplay = false;
  3635.             this.thisGridOnly = false;
  3636.             this.paintAll = false;
  3637.             int var38 = this.columnOrder[this.currentColumn];
  3638.             if ((this.getPulldownRow(var38, this.currentRow) < 0 || this.getPulldownRow(var38, this.currentRow) >= this.pullDownType[var38].length || this.pullDownType[var38][this.getPulldownRow(var38, this.currentRow)] != 1) && this.pullDownColType[var38] != 1) {
  3639.                if ((this.getPulldownRow(var38, this.currentRow) < 0 || this.getPulldownRow(var38, this.currentRow) >= this.pullDownType[var38].length || this.pullDownType[var38][this.getPulldownRow(var38, this.currentRow)] != 2) && this.pullDownColType[var38] != 2) {
  3640.                   if ((this.getPulldownRow(var38, this.currentRow) < 0 || this.getPulldownRow(var38, this.currentRow) >= this.pullDownType[var38].length || this.pullDownType[var38][this.getPulldownRow(var38, this.currentRow)] != 3) && this.pullDownColType[var38] != 3) {
  3641.                      this.drawPullDownList();
  3642.                   } else {
  3643.                      this.drawListPullDown();
  3644.                   }
  3645.                } else {
  3646.                   this.drawCustomPullDown();
  3647.                }
  3648.             } else {
  3649.                this.drawDatePullDown();
  3650.             }
  3651.  
  3652.             var1.drawImage(this.offscreen, var2 - 3, var3 - 2, (ImageObserver)null);
  3653.             var1.clearRect(0, var12.height - 2, var12.width, var12.height);
  3654.             var1.clearRect(var12.width - 3, 0, var12.width, var12.height);
  3655.             if (this.thisEvent != null) {
  3656.                ((Component)this).postEvent(this.thisEvent);
  3657.             }
  3658.  
  3659.             this.thisEvent = null;
  3660.             if (!this.nothingChanged) {
  3661.                ((Component)this).repaint();
  3662.             }
  3663.  
  3664.          }
  3665.       }
  3666.    }
  3667.  
  3668.    public Vector getPullDownValue(int var1, int var2) {
  3669.       return this.pullDownValue[var1][var2];
  3670.    }
  3671.  
  3672.    public int getTableRows() {
  3673.       return this.totalRows;
  3674.    }
  3675.  
  3676.    void drawSpinner(int var1, int var2, int var3, int var4, int var5, int var6) {
  3677.       Color var7 = this.field_0.getColor();
  3678.       var6 /= 2;
  3679.       var3 = var3 + var5 - 6;
  3680.       this.upButton = new Rectangle(var3, var4 + 4, 9, var6);
  3681.       this.downButton = new Rectangle(var3, var4 + 4 + var6, 9, var6);
  3682.       this.drawButton("", Color.black, 1, var3 - 3, var4 + 1, 9, var6 - 1);
  3683.       int var8 = var3 + 1;
  3684.       int var9 = var4 + var6 / 2;
  3685.       int[] var10 = new int[]{var8 - 3, var8, var8 + 3, var8 - 3};
  3686.       int[] var11 = new int[]{var9 + 2, var9 - 2, var9 + 2, var9 + 2};
  3687.       this.field_0.setColor(Color.black);
  3688.       this.field_0.fillPolygon(var10, var11, 3);
  3689.       this.drawButton("", Color.black, 1, var3 - 3, var4 + 1 + var6, 9, var6 - 1);
  3690.       var9 += var6;
  3691.       int[] var12 = new int[]{var8 - 2, var8, var8 + 3, var8 - 2};
  3692.       int[] var13 = new int[]{var9 - 1, var9 + 2, var9 - 1, var9 - 1};
  3693.       this.field_0.setColor(Color.black);
  3694.       this.field_0.fillPolygon(var12, var13, 3);
  3695.       this.field_0.setColor(var7);
  3696.    }
  3697.  
  3698.    public void setColumnHeaderStyle(int var1, int var2) {
  3699.       this.columnHeaderStyle[var1] = var2;
  3700.       this.reDraw();
  3701.    }
  3702.  
  3703.    public int getColumnHeaderStyle(int var1) {
  3704.       return this.columnHeaderStyle[var1];
  3705.    }
  3706.  
  3707.    public void setColumnStyle(int var1, int var2) {
  3708.       this.columnStyle[var1] = var2;
  3709.       this.reDraw();
  3710.    }
  3711.  
  3712.    public int getColumnStyle(int var1) {
  3713.       return this.columnStyle[var1];
  3714.    }
  3715.  
  3716.    public void setRowHeight(int var1, int var2) {
  3717.       this.columnHeight[var1] = var2;
  3718.       this.reDraw();
  3719.    }
  3720.  
  3721.    public int getRowHeight(int var1) {
  3722.       return this.columnHeight[var1];
  3723.    }
  3724.  
  3725.    public int getSelectedRow() {
  3726.       return this.currentSelectedRow;
  3727.    }
  3728.  
  3729.    public int getRowOffset() {
  3730.       return this.yOffset;
  3731.    }
  3732.  
  3733.    public void setRowOffset(int var1) {
  3734.       this.yOffset = var1;
  3735.       this.reDraw();
  3736.    }
  3737.  
  3738.    public Dimension minimumSize() {
  3739.       Dimension var1 = new Dimension(this.minimumWidth, this.minimumHeight);
  3740.       return var1;
  3741.    }
  3742.  
  3743.    public void setPullDownCol(int var1, boolean var2) {
  3744.       this.isPullDownCol[var1] = var2;
  3745.       this.reDraw();
  3746.    }
  3747.  
  3748.    public boolean getPullDownCol(int var1) {
  3749.       return this.isPullDownCol[var1];
  3750.    }
  3751.  
  3752.    public int getDisplayedRows() {
  3753.       return this.displayedRows;
  3754.    }
  3755.  
  3756.    public int getDisplayedColumns() {
  3757.       return this.displayedColumns;
  3758.    }
  3759.  
  3760.    public void setColumnHeaderOn(boolean var1) {
  3761.       this.columnHeaderOn = var1;
  3762.       this.reDraw();
  3763.    }
  3764.  
  3765.    public boolean getColumnHeaderOn() {
  3766.       return this.columnHeaderOn;
  3767.    }
  3768.  
  3769.    public String[] getSelectedKey() {
  3770.       String[] var1 = null;
  3771.       if (this.currentRow >= 0 && this.currentRow < this.rowKey.length) {
  3772.          var1 = new String[this.rowKey[0].length];
  3773.  
  3774.          for(int var2 = 0; var2 < var1.length; ++var2) {
  3775.             var1[var2] = this.rowKey[this.currentRow][var2];
  3776.          }
  3777.       }
  3778.  
  3779.       return var1;
  3780.    }
  3781.  
  3782.    public void setRowKey(String var1, int var2, int var3) {
  3783.       this.rowKey[var2][var3] = var1;
  3784.    }
  3785.  
  3786.    public String getRowKey(int var1, int var2) {
  3787.       return this.rowKey[var1][var2];
  3788.    }
  3789.  
  3790.    public void setScrollSouthDisabled(boolean var1) {
  3791.       this.scrollSouthDisabled = var1;
  3792.       this.reDraw();
  3793.    }
  3794.  
  3795.    public boolean getScrollSouthDisabled() {
  3796.       return this.scrollSouthDisabled;
  3797.    }
  3798. }
  3799.