home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / JTable.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  28.3 KB  |  1,575 lines

  1. package javax.swing;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.Color;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Dimension;
  8. import java.awt.LayoutManager;
  9. import java.awt.Point;
  10. import java.awt.Rectangle;
  11. import java.awt.event.InputEvent;
  12. import java.awt.event.KeyEvent;
  13. import java.awt.event.MouseEvent;
  14. import java.io.IOException;
  15. import java.io.ObjectInputStream;
  16. import java.io.ObjectOutputStream;
  17. import java.util.Enumeration;
  18. import java.util.EventObject;
  19. import java.util.Hashtable;
  20. import java.util.Vector;
  21. import javax.accessibility.Accessible;
  22. import javax.accessibility.AccessibleContext;
  23. import javax.swing.border.Border;
  24. import javax.swing.event.CellEditorListener;
  25. import javax.swing.event.ChangeEvent;
  26. import javax.swing.event.ListSelectionEvent;
  27. import javax.swing.event.ListSelectionListener;
  28. import javax.swing.event.TableColumnModelEvent;
  29. import javax.swing.event.TableColumnModelListener;
  30. import javax.swing.event.TableModelEvent;
  31. import javax.swing.event.TableModelListener;
  32. import javax.swing.plaf.TableUI;
  33. import javax.swing.plaf.UIResource;
  34. import javax.swing.table.DefaultTableColumnModel;
  35. import javax.swing.table.DefaultTableModel;
  36. import javax.swing.table.JTableHeader;
  37. import javax.swing.table.TableCellEditor;
  38. import javax.swing.table.TableCellRenderer;
  39. import javax.swing.table.TableColumn;
  40. import javax.swing.table.TableColumnModel;
  41. import javax.swing.table.TableModel;
  42.  
  43. public class JTable extends JComponent implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible {
  44.    private static final String uiClassID = "TableUI";
  45.    public static final int AUTO_RESIZE_OFF = 0;
  46.    public static final int AUTO_RESIZE_NEXT_COLUMN = 1;
  47.    public static final int AUTO_RESIZE_SUBSEQUENT_COLUMNS = 2;
  48.    public static final int AUTO_RESIZE_LAST_COLUMN = 3;
  49.    public static final int AUTO_RESIZE_ALL_COLUMNS = 4;
  50.    protected TableModel dataModel;
  51.    protected TableColumnModel columnModel;
  52.    protected ListSelectionModel selectionModel;
  53.    protected JTableHeader tableHeader;
  54.    protected int rowHeight;
  55.    protected int rowMargin;
  56.    protected Color gridColor;
  57.    protected boolean showHorizontalLines;
  58.    protected boolean showVerticalLines;
  59.    protected int autoResizeMode;
  60.    protected boolean autoCreateColumnsFromModel;
  61.    protected Dimension preferredViewportSize;
  62.    protected boolean rowSelectionAllowed;
  63.    protected boolean cellSelectionEnabled;
  64.    protected transient Component editorComp;
  65.    protected transient TableCellEditor cellEditor;
  66.    protected transient int editingColumn;
  67.    protected transient int editingRow;
  68.    protected transient Hashtable defaultRenderersByColumnClass;
  69.    protected transient Hashtable defaultEditorsByColumnClass;
  70.    protected Color selectionForeground;
  71.    protected Color selectionBackground;
  72.    private boolean reentrantCall;
  73.    private SizeSequence rowModel;
  74.    // $FF: synthetic field
  75.    static Class class$java$lang$Object;
  76.    // $FF: synthetic field
  77.    static Class class$java$lang$Number;
  78.    // $FF: synthetic field
  79.    static Class class$java$lang$Float;
  80.    // $FF: synthetic field
  81.    static Class class$java$lang$Double;
  82.    // $FF: synthetic field
  83.    static Class class$java$util$Date;
  84.    // $FF: synthetic field
  85.    static Class class$javax$swing$Icon;
  86.    // $FF: synthetic field
  87.    static Class class$javax$swing$ImageIcon;
  88.    // $FF: synthetic field
  89.    static Class class$java$lang$Boolean;
  90.  
  91.    public JTable() {
  92.       this((TableModel)null, (TableColumnModel)null, (ListSelectionModel)null);
  93.    }
  94.  
  95.    public JTable(TableModel var1) {
  96.       this(var1, (TableColumnModel)null, (ListSelectionModel)null);
  97.    }
  98.  
  99.    public JTable(TableModel var1, TableColumnModel var2) {
  100.       this(var1, var2, (ListSelectionModel)null);
  101.    }
  102.  
  103.    public JTable(TableModel var1, TableColumnModel var2, ListSelectionModel var3) {
  104.       this.reentrantCall = false;
  105.       ((Container)this).setLayout((LayoutManager)null);
  106.       if (var2 == null) {
  107.          var2 = this.createDefaultColumnModel();
  108.          this.autoCreateColumnsFromModel = true;
  109.       }
  110.  
  111.       this.setColumnModel(var2);
  112.       if (var3 == null) {
  113.          var3 = this.createDefaultSelectionModel();
  114.       }
  115.  
  116.       this.setSelectionModel(var3);
  117.       if (var1 == null) {
  118.          var1 = this.createDefaultDataModel();
  119.       }
  120.  
  121.       this.setModel(var1);
  122.       this.initializeLocalVars();
  123.       this.updateUI();
  124.    }
  125.  
  126.    public JTable(int var1, int var2) {
  127.       this(new DefaultTableModel(var1, var2));
  128.    }
  129.  
  130.    public JTable(Vector var1, Vector var2) {
  131.       this(new 1(var2, var1));
  132.    }
  133.  
  134.    public JTable(Object[][] var1, Object[] var2) {
  135.       this(new 2(var2, var1));
  136.    }
  137.  
  138.    public void addNotify() {
  139.       super.addNotify();
  140.       this.configureEnclosingScrollPane();
  141.    }
  142.  
  143.    protected void configureEnclosingScrollPane() {
  144.       Container var1 = ((Component)this).getParent();
  145.       if (var1 instanceof JViewport) {
  146.          Container var2 = ((Component)var1).getParent();
  147.          if (var2 instanceof JScrollPane) {
  148.             JScrollPane var3 = (JScrollPane)var2;
  149.             JViewport var4 = var3.getViewport();
  150.             if (var4 == null || var4.getView() != this) {
  151.                return;
  152.             }
  153.  
  154.             var3.setColumnHeaderView(this.getTableHeader());
  155.             Border var5 = ((JComponent)var3).getBorder();
  156.             if (var5 == null || var5 instanceof UIResource) {
  157.                ((JComponent)var3).setBorder(UIManager.getBorder("Table.scrollPaneBorder"));
  158.             }
  159.          }
  160.       }
  161.  
  162.    }
  163.  
  164.    public void removeNotify() {
  165.       this.unconfigureEnclosingScrollPane();
  166.       super.removeNotify();
  167.    }
  168.  
  169.    protected void unconfigureEnclosingScrollPane() {
  170.       Container var1 = ((Component)this).getParent();
  171.       if (var1 instanceof JViewport) {
  172.          Container var2 = ((Component)var1).getParent();
  173.          if (var2 instanceof JScrollPane) {
  174.             JScrollPane var3 = (JScrollPane)var2;
  175.             JViewport var4 = var3.getViewport();
  176.             if (var4 == null || var4.getView() != this) {
  177.                return;
  178.             }
  179.  
  180.             var3.setColumnHeaderView((Component)null);
  181.          }
  182.       }
  183.  
  184.    }
  185.  
  186.    public static JScrollPane createScrollPaneForTable(JTable var0) {
  187.       return new JScrollPane(var0);
  188.    }
  189.  
  190.    public void setTableHeader(JTableHeader var1) {
  191.       if (this.tableHeader != var1) {
  192.          JTableHeader var2 = this.tableHeader;
  193.          if (var2 != null) {
  194.             var2.setTable((JTable)null);
  195.          }
  196.  
  197.          this.tableHeader = var1;
  198.          if (var1 != null) {
  199.             var1.setTable(this);
  200.          }
  201.  
  202.          ((JComponent)this).firePropertyChange("tableHeader", var2, var1);
  203.       }
  204.  
  205.    }
  206.  
  207.    public JTableHeader getTableHeader() {
  208.       return this.tableHeader;
  209.    }
  210.  
  211.    public void setRowHeight(int var1) {
  212.       if (var1 <= 0) {
  213.          throw new IllegalArgumentException("New row height less than 1");
  214.       } else {
  215.          int var2 = this.rowHeight;
  216.          this.rowHeight = var1;
  217.          this.rowModel = null;
  218.          this.resizeAndRepaint();
  219.          ((JComponent)this).firePropertyChange("rowHeight", var2, var1);
  220.       }
  221.    }
  222.  
  223.    public int getRowHeight() {
  224.       return this.rowHeight;
  225.    }
  226.  
  227.    private SizeSequence getRowModel() {
  228.       if (this.rowModel == null) {
  229.          this.rowModel = new SizeSequence(this.getRowCount(), this.getRowHeight());
  230.       }
  231.  
  232.       return this.rowModel;
  233.    }
  234.  
  235.    public void setRowHeight(int var1, int var2) {
  236.       if (var2 <= 0) {
  237.          throw new IllegalArgumentException("New row height less than 1");
  238.       } else {
  239.          this.getRowModel().setSize(var1, var2);
  240.          this.resizeAndRepaint();
  241.       }
  242.    }
  243.  
  244.    public int getRowHeight(int var1) {
  245.       return this.rowModel == null ? this.getRowHeight() : this.rowModel.getSize(var1);
  246.    }
  247.  
  248.    public void setRowMargin(int var1) {
  249.       int var2 = this.rowMargin;
  250.       this.rowMargin = var1;
  251.       this.resizeAndRepaint();
  252.       ((JComponent)this).firePropertyChange("rowMargin", var2, var1);
  253.    }
  254.  
  255.    public int getRowMargin() {
  256.       return this.rowMargin;
  257.    }
  258.  
  259.    public void setIntercellSpacing(Dimension var1) {
  260.       this.setRowMargin(var1.height);
  261.       this.getColumnModel().setColumnMargin(var1.width);
  262.       this.resizeAndRepaint();
  263.    }
  264.  
  265.    public Dimension getIntercellSpacing() {
  266.       return new Dimension(this.getColumnModel().getColumnMargin(), this.rowMargin);
  267.    }
  268.  
  269.    public void setGridColor(Color var1) {
  270.       if (var1 == null) {
  271.          throw new IllegalArgumentException("New color is null");
  272.       } else {
  273.          Color var2 = this.gridColor;
  274.          this.gridColor = var1;
  275.          ((JComponent)this).firePropertyChange("gridColor", var2, var1);
  276.          ((Component)this).repaint();
  277.       }
  278.    }
  279.  
  280.    public Color getGridColor() {
  281.       return this.gridColor;
  282.    }
  283.  
  284.    public void setShowGrid(boolean var1) {
  285.       this.setShowHorizontalLines(var1);
  286.       this.setShowVerticalLines(var1);
  287.       ((Component)this).repaint();
  288.    }
  289.  
  290.    public void setShowHorizontalLines(boolean var1) {
  291.       this.showHorizontalLines = var1;
  292.       ((JComponent)this).firePropertyChange("showHorizontalLines", var1, var1);
  293.       ((Component)this).repaint();
  294.    }
  295.  
  296.    public void setShowVerticalLines(boolean var1) {
  297.       this.showVerticalLines = var1;
  298.       ((JComponent)this).firePropertyChange("showVerticalLines", var1, var1);
  299.       ((Component)this).repaint();
  300.    }
  301.  
  302.    public boolean getShowHorizontalLines() {
  303.       return this.showHorizontalLines;
  304.    }
  305.  
  306.    public boolean getShowVerticalLines() {
  307.       return this.showVerticalLines;
  308.    }
  309.  
  310.    public void setAutoResizeMode(int var1) {
  311.       if (var1 == 0 || var1 == 1 || var1 == 2 || var1 == 3 || var1 == 4) {
  312.          int var2 = this.autoResizeMode;
  313.          this.autoResizeMode = var1;
  314.          this.resizeAndRepaint();
  315.          if (this.tableHeader != null) {
  316.             this.tableHeader.resizeAndRepaint();
  317.          }
  318.  
  319.          ((JComponent)this).firePropertyChange("autoResizeMode", var2, this.autoResizeMode);
  320.       }
  321.  
  322.    }
  323.  
  324.    public int getAutoResizeMode() {
  325.       return this.autoResizeMode;
  326.    }
  327.  
  328.    public void setAutoCreateColumnsFromModel(boolean var1) {
  329.       if (this.autoCreateColumnsFromModel != var1) {
  330.          boolean var2 = this.autoCreateColumnsFromModel;
  331.          this.autoCreateColumnsFromModel = var1;
  332.          if (var1) {
  333.             this.createDefaultColumnsFromModel();
  334.          }
  335.  
  336.          ((JComponent)this).firePropertyChange("autoCreateColumnsFromModel", var2, var1);
  337.       }
  338.  
  339.    }
  340.  
  341.    public boolean getAutoCreateColumnsFromModel() {
  342.       return this.autoCreateColumnsFromModel;
  343.    }
  344.  
  345.    public void createDefaultColumnsFromModel() {
  346.       TableModel var1 = this.getModel();
  347.       if (var1 != null) {
  348.          TableColumnModel var2 = this.getColumnModel();
  349.  
  350.          while(var2.getColumnCount() > 0) {
  351.             var2.removeColumn(var2.getColumn(0));
  352.          }
  353.  
  354.          for(int var3 = 0; var3 < var1.getColumnCount(); ++var3) {
  355.             TableColumn var4 = new TableColumn(var3);
  356.             this.addColumn(var4);
  357.          }
  358.       }
  359.  
  360.    }
  361.  
  362.    public void setDefaultRenderer(Class var1, TableCellRenderer var2) {
  363.       if (var2 != null) {
  364.          this.defaultRenderersByColumnClass.put(var1, var2);
  365.       } else {
  366.          this.defaultRenderersByColumnClass.remove(var1);
  367.       }
  368.  
  369.    }
  370.  
  371.    public TableCellRenderer getDefaultRenderer(Class var1) {
  372.       if (var1 == null) {
  373.          return null;
  374.       } else {
  375.          Object var2 = this.defaultRenderersByColumnClass.get(var1);
  376.          return var2 != null ? (TableCellRenderer)var2 : this.getDefaultRenderer(var1.getSuperclass());
  377.       }
  378.    }
  379.  
  380.    public void setDefaultEditor(Class var1, TableCellEditor var2) {
  381.       if (var2 != null) {
  382.          this.defaultEditorsByColumnClass.put(var1, var2);
  383.       } else {
  384.          this.defaultEditorsByColumnClass.remove(var1);
  385.       }
  386.  
  387.    }
  388.  
  389.    public TableCellEditor getDefaultEditor(Class var1) {
  390.       if (var1 == null) {
  391.          return null;
  392.       } else {
  393.          Object var2 = this.defaultEditorsByColumnClass.get(var1);
  394.          return var2 != null ? (TableCellEditor)var2 : this.getDefaultEditor(var1.getSuperclass());
  395.       }
  396.    }
  397.  
  398.    public void setSelectionMode(int var1) {
  399.       this.clearSelection();
  400.       this.getSelectionModel().setSelectionMode(var1);
  401.       this.getColumnModel().getSelectionModel().setSelectionMode(var1);
  402.    }
  403.  
  404.    public void setRowSelectionAllowed(boolean var1) {
  405.       boolean var2 = this.rowSelectionAllowed;
  406.       this.rowSelectionAllowed = var1;
  407.       ((JComponent)this).firePropertyChange("rowSelectionAllowed", var2, var1);
  408.    }
  409.  
  410.    public boolean getRowSelectionAllowed() {
  411.       return this.rowSelectionAllowed;
  412.    }
  413.  
  414.    public void setColumnSelectionAllowed(boolean var1) {
  415.       boolean var2 = this.columnModel.getColumnSelectionAllowed();
  416.       this.columnModel.setColumnSelectionAllowed(var1);
  417.       ((JComponent)this).firePropertyChange("columnSelectionAllowed", var2, var1);
  418.    }
  419.  
  420.    public boolean getColumnSelectionAllowed() {
  421.       return this.columnModel.getColumnSelectionAllowed();
  422.    }
  423.  
  424.    public void setCellSelectionEnabled(boolean var1) {
  425.       this.setRowSelectionAllowed(var1);
  426.       this.setColumnSelectionAllowed(var1);
  427.       boolean var2 = this.cellSelectionEnabled;
  428.       this.cellSelectionEnabled = var1;
  429.       ((JComponent)this).firePropertyChange("cellSelectionEnabled", var2, var1);
  430.    }
  431.  
  432.    public boolean getCellSelectionEnabled() {
  433.       return this.getRowSelectionAllowed() && this.getColumnSelectionAllowed();
  434.    }
  435.  
  436.    public void selectAll() {
  437.       if (this.isEditing()) {
  438.          this.removeEditor();
  439.       }
  440.  
  441.       this.setRowSelectionInterval(0, this.getRowCount() - 1);
  442.       this.setColumnSelectionInterval(0, this.getColumnCount() - 1);
  443.    }
  444.  
  445.    public void clearSelection() {
  446.       this.columnModel.getSelectionModel().clearSelection();
  447.       this.selectionModel.clearSelection();
  448.    }
  449.  
  450.    private int boundRow(int var1) throws IllegalArgumentException {
  451.       if (var1 >= 0 && var1 < this.getRowCount()) {
  452.          return var1;
  453.       } else {
  454.          throw new IllegalArgumentException("Row index out of range");
  455.       }
  456.    }
  457.  
  458.    private int boundColumn(int var1) {
  459.       if (var1 >= 0 && var1 < this.getColumnCount()) {
  460.          return var1;
  461.       } else {
  462.          throw new IllegalArgumentException("Column index out of range");
  463.       }
  464.    }
  465.  
  466.    public void setRowSelectionInterval(int var1, int var2) {
  467.       this.selectionModel.setSelectionInterval(this.boundRow(var1), this.boundRow(var2));
  468.    }
  469.  
  470.    public void setColumnSelectionInterval(int var1, int var2) {
  471.       this.columnModel.getSelectionModel().setSelectionInterval(this.boundColumn(var1), this.boundColumn(var2));
  472.    }
  473.  
  474.    public void addRowSelectionInterval(int var1, int var2) {
  475.       this.selectionModel.addSelectionInterval(this.boundRow(var1), this.boundRow(var2));
  476.    }
  477.  
  478.    public void addColumnSelectionInterval(int var1, int var2) {
  479.       this.columnModel.getSelectionModel().addSelectionInterval(this.boundColumn(var1), this.boundColumn(var2));
  480.    }
  481.  
  482.    public void removeRowSelectionInterval(int var1, int var2) {
  483.       this.selectionModel.removeSelectionInterval(this.boundRow(var1), this.boundRow(var2));
  484.    }
  485.  
  486.    public void removeColumnSelectionInterval(int var1, int var2) {
  487.       this.columnModel.getSelectionModel().removeSelectionInterval(this.boundColumn(var1), this.boundColumn(var2));
  488.    }
  489.  
  490.    public int getSelectedRow() {
  491.       return this.selectionModel.getMinSelectionIndex();
  492.    }
  493.  
  494.    public int getSelectedColumn() {
  495.       return this.columnModel.getSelectionModel().getMinSelectionIndex();
  496.    }
  497.  
  498.    public int[] getSelectedRows() {
  499.       if (this.selectionModel != null) {
  500.          int var1 = this.selectionModel.getMinSelectionIndex();
  501.          int var2 = this.selectionModel.getMaxSelectionIndex();
  502.          if (var1 != -1 && var2 != -1) {
  503.             int[] var3 = new int[1 + (var2 - var1)];
  504.             int var4 = 0;
  505.  
  506.             for(int var5 = var1; var5 <= var2; ++var5) {
  507.                if (this.selectionModel.isSelectedIndex(var5)) {
  508.                   var3[var4++] = var5;
  509.                }
  510.             }
  511.  
  512.             int[] var6 = new int[var4];
  513.             System.arraycopy(var3, 0, var6, 0, var4);
  514.             return var6;
  515.          } else {
  516.             return new int[0];
  517.          }
  518.       } else {
  519.          return new int[0];
  520.       }
  521.    }
  522.  
  523.    public int[] getSelectedColumns() {
  524.       return this.columnModel.getSelectedColumns();
  525.    }
  526.  
  527.    public int getSelectedRowCount() {
  528.       if (this.selectionModel != null) {
  529.          int var1 = this.selectionModel.getMinSelectionIndex();
  530.          int var2 = this.selectionModel.getMaxSelectionIndex();
  531.          int var3 = 0;
  532.  
  533.          for(int var4 = var1; var4 <= var2; ++var4) {
  534.             if (this.selectionModel.isSelectedIndex(var4)) {
  535.                ++var3;
  536.             }
  537.          }
  538.  
  539.          return var3;
  540.       } else {
  541.          return 0;
  542.       }
  543.    }
  544.  
  545.    public int getSelectedColumnCount() {
  546.       return this.columnModel.getSelectedColumnCount();
  547.    }
  548.  
  549.    public boolean isRowSelected(int var1) {
  550.       return this.selectionModel != null ? this.selectionModel.isSelectedIndex(var1) : false;
  551.    }
  552.  
  553.    public boolean isColumnSelected(int var1) {
  554.       return this.columnModel.getSelectionModel().isSelectedIndex(var1);
  555.    }
  556.  
  557.    public boolean isCellSelected(int var1, int var2) {
  558.       if (!this.getRowSelectionAllowed() && !this.getColumnSelectionAllowed()) {
  559.          return false;
  560.       } else {
  561.          return (!this.getRowSelectionAllowed() || this.isRowSelected(var1)) && (!this.getColumnSelectionAllowed() || this.isColumnSelected(var2));
  562.       }
  563.    }
  564.  
  565.    private void changeSelectionModel(ListSelectionModel var1, int var2, boolean var3, boolean var4) {
  566.       if (var4) {
  567.          if (var3) {
  568.             var1.setAnchorSelectionIndex(var2);
  569.          } else {
  570.             var1.setLeadSelectionIndex(var2);
  571.          }
  572.       } else if (var3) {
  573.          if (var1.isSelectedIndex(var2)) {
  574.             var1.removeSelectionInterval(var2, var2);
  575.          } else {
  576.             var1.addSelectionInterval(var2, var2);
  577.          }
  578.       } else {
  579.          var1.setSelectionInterval(var2, var2);
  580.       }
  581.  
  582.    }
  583.  
  584.    public void changeSelection(int var1, int var2, boolean var3, boolean var4) {
  585.       if (((JComponent)this).getAutoscrolls()) {
  586.          Rectangle var5 = this.getCellRect(var1, var2, false);
  587.          if (var5 != null) {
  588.             ((JComponent)this).scrollRectToVisible(var5);
  589.          }
  590.       }
  591.  
  592.       ListSelectionModel var7 = this.getSelectionModel();
  593.       ListSelectionModel var6 = this.getColumnModel().getSelectionModel();
  594.       this.changeSelectionModel(var6, var2, var3, var4);
  595.       this.changeSelectionModel(var7, var1, var3, var4);
  596.    }
  597.  
  598.    public Color getSelectionForeground() {
  599.       return this.selectionForeground;
  600.    }
  601.  
  602.    public void setSelectionForeground(Color var1) {
  603.       Color var2 = this.selectionForeground;
  604.       this.selectionForeground = var1;
  605.       ((JComponent)this).firePropertyChange("selectionForeground", var2, var1);
  606.       if (!var1.equals(var2)) {
  607.          ((Component)this).repaint();
  608.       }
  609.  
  610.    }
  611.  
  612.    public Color getSelectionBackground() {
  613.       return this.selectionBackground;
  614.    }
  615.  
  616.    public void setSelectionBackground(Color var1) {
  617.       Color var2 = this.selectionBackground;
  618.       this.selectionBackground = var1;
  619.       ((JComponent)this).firePropertyChange("selectionBackground", var2, var1);
  620.       if (!var1.equals(var2)) {
  621.          ((Component)this).repaint();
  622.       }
  623.  
  624.    }
  625.  
  626.    public TableColumn getColumn(Object var1) {
  627.       TableColumnModel var2 = this.getColumnModel();
  628.       int var3 = var2.getColumnIndex(var1);
  629.       return var2.getColumn(var3);
  630.    }
  631.  
  632.    public int convertColumnIndexToModel(int var1) {
  633.       return var1 < 0 ? var1 : this.getColumnModel().getColumn(var1).getModelIndex();
  634.    }
  635.  
  636.    public int convertColumnIndexToView(int var1) {
  637.       if (var1 < 0) {
  638.          return var1;
  639.       } else {
  640.          TableColumnModel var2 = this.getColumnModel();
  641.  
  642.          for(int var3 = 0; var3 < this.getColumnCount(); ++var3) {
  643.             if (var2.getColumn(var3).getModelIndex() == var1) {
  644.                return var3;
  645.             }
  646.          }
  647.  
  648.          return -1;
  649.       }
  650.    }
  651.  
  652.    public int getRowCount() {
  653.       return this.getModel().getRowCount();
  654.    }
  655.  
  656.    public int getColumnCount() {
  657.       return this.getColumnModel().getColumnCount();
  658.    }
  659.  
  660.    public String getColumnName(int var1) {
  661.       return this.getModel().getColumnName(this.convertColumnIndexToModel(var1));
  662.    }
  663.  
  664.    public Class getColumnClass(int var1) {
  665.       return this.getModel().getColumnClass(this.convertColumnIndexToModel(var1));
  666.    }
  667.  
  668.    public Object getValueAt(int var1, int var2) {
  669.       return this.getModel().getValueAt(var1, this.convertColumnIndexToModel(var2));
  670.    }
  671.  
  672.    public void setValueAt(Object var1, int var2, int var3) {
  673.       this.getModel().setValueAt(var1, var2, this.convertColumnIndexToModel(var3));
  674.    }
  675.  
  676.    public boolean isCellEditable(int var1, int var2) {
  677.       return this.getModel().isCellEditable(var1, this.convertColumnIndexToModel(var2));
  678.    }
  679.  
  680.    public void addColumn(TableColumn var1) {
  681.       int var2 = var1.getModelIndex();
  682.       String var3 = this.getModel().getColumnName(var2);
  683.       if (var1.getHeaderValue() == null) {
  684.          var1.setHeaderValue(var3);
  685.       }
  686.  
  687.       this.getColumnModel().addColumn(var1);
  688.    }
  689.  
  690.    public void removeColumn(TableColumn var1) {
  691.       this.getColumnModel().removeColumn(var1);
  692.    }
  693.  
  694.    public void moveColumn(int var1, int var2) {
  695.       this.getColumnModel().moveColumn(var1, var2);
  696.    }
  697.  
  698.    public int columnAtPoint(Point var1) {
  699.       return this.getColumnModel().getColumnIndexAtX(var1.x);
  700.    }
  701.  
  702.    public int rowAtPoint(Point var1) {
  703.       int var2 = var1.y;
  704.       int var3 = this.rowModel == null ? var2 / this.getRowHeight() : this.rowModel.getIndex(var2);
  705.       if (var3 < 0) {
  706.          return -1;
  707.       } else {
  708.          return var3 >= this.getRowCount() ? -1 : var3;
  709.       }
  710.    }
  711.  
  712.    public Rectangle getCellRect(int var1, int var2, boolean var3) {
  713.       Rectangle var4 = new Rectangle();
  714.       boolean var5 = true;
  715.       if (var1 < 0) {
  716.          var5 = false;
  717.       } else if (var1 >= this.getRowCount()) {
  718.          var4.y = ((JComponent)this).getHeight();
  719.          var5 = false;
  720.       } else {
  721.          var4.height = this.getRowHeight(var1);
  722.          var4.y = this.rowModel == null ? var1 * var4.height : this.rowModel.getPosition(var1);
  723.       }
  724.  
  725.       if (var2 < 0) {
  726.          var5 = false;
  727.       } else if (var2 >= this.getColumnCount()) {
  728.          var4.x = ((JComponent)this).getWidth();
  729.          var5 = false;
  730.       } else {
  731.          TableColumnModel var6 = this.getColumnModel();
  732.  
  733.          for(int var7 = 0; var7 < var2; ++var7) {
  734.             var4.x += var6.getColumn(var7).getWidth();
  735.          }
  736.  
  737.          var4.width = var6.getColumn(var2).getWidth();
  738.       }
  739.  
  740.       if (var5 && !var3) {
  741.          int var8 = this.getRowMargin();
  742.          int var9 = this.getColumnModel().getColumnMargin();
  743.          var4.setBounds(var4.x + var9 / 2, var4.y + var8 / 2, var4.width - var9, var4.height - var8);
  744.       }
  745.  
  746.       return var4;
  747.    }
  748.  
  749.    private int viewIndexForColumn(TableColumn var1) {
  750.       TableColumnModel var2 = this.getColumnModel();
  751.  
  752.       for(int var3 = 0; var3 < var2.getColumnCount(); ++var3) {
  753.          if (var2.getColumn(var3) == var1) {
  754.             return var3;
  755.          }
  756.       }
  757.  
  758.       return -1;
  759.    }
  760.  
  761.    public void doLayout() {
  762.       this.sizeColumnsToFit(-1);
  763.       super.doLayout();
  764.    }
  765.  
  766.    public void sizeColumnsToFit(boolean var1) {
  767.       int var2 = this.autoResizeMode;
  768.       this.setAutoResizeMode(var1 ? 3 : 4);
  769.       this.sizeColumnsToFit(-1);
  770.       this.setAutoResizeMode(var2);
  771.    }
  772.  
  773.    public void sizeColumnsToFit(int var1) {
  774.       if (var1 == -1) {
  775.          this.setWidthsFromPreferredWidths(false);
  776.       } else if (this.autoResizeMode == 0) {
  777.          TableColumn var2 = this.getColumnModel().getColumn(var1);
  778.          var2.setPreferredWidth(var2.getWidth());
  779.       } else {
  780.          int var3 = ((JComponent)this).getWidth() - this.getColumnModel().getTotalColumnWidth();
  781.          this.accommodateDelta(var1, var3);
  782.       }
  783.  
  784.    }
  785.  
  786.    private void setWidthsFromPreferredWidths(boolean var1) {
  787.       int var2 = ((JComponent)this).getWidth();
  788.       int var3 = ((JComponent)this).getPreferredSize().width;
  789.       int var4 = !var1 ? var2 : var3;
  790.       TableColumnModel var5 = this.columnModel;
  791.       3 var6 = new 3(this, var5, var1);
  792.       this.adjustSizes((long)var4, (Resizable3)var6, var1);
  793.    }
  794.  
  795.    private void accommodateDelta(int var1, int var2) {
  796.       int var3 = this.getColumnCount();
  797.       int var4;
  798.       int var5;
  799.       switch (this.autoResizeMode) {
  800.          case 1:
  801.             var4 = var1 + 1;
  802.             var5 = var4 + 1;
  803.             break;
  804.          case 2:
  805.             var4 = var1 + 1;
  806.             var5 = var3;
  807.             break;
  808.          case 3:
  809.             var4 = var3 - 1;
  810.             var5 = var4 + 1;
  811.             break;
  812.          case 4:
  813.             var4 = 0;
  814.             var5 = var3;
  815.             break;
  816.          default:
  817.             return;
  818.       }
  819.  
  820.       TableColumnModel var8 = this.columnModel;
  821.       4 var9 = new 4(this, var5, var4, var8);
  822.       int var10 = 0;
  823.  
  824.       for(int var11 = var4; var11 < var5; ++var11) {
  825.          TableColumn var12 = this.columnModel.getColumn(var11);
  826.          int var13 = var12.getWidth();
  827.          var10 += var13;
  828.       }
  829.  
  830.       this.adjustSizes((long)(var10 + var2), (Resizable3)var9, false);
  831.       this.setWidthsFromPreferredWidths(true);
  832.    }
  833.  
  834.    private void adjustSizes(long var1, Resizable3 var3, boolean var4) {
  835.       int var5 = var3.getElementCount();
  836.       long var6 = 0L;
  837.  
  838.       for(int var8 = 0; var8 < var5; ++var8) {
  839.          var6 += (long)var3.getMidPointAt(var8);
  840.       }
  841.  
  842.       Object var9;
  843.       if (var1 < var6 == !var4) {
  844.          var9 = new 5(this, var3);
  845.       } else {
  846.          var9 = new 6(this, var3);
  847.       }
  848.  
  849.       this.adjustSizes(var1, (Resizable2)var9, !var4);
  850.    }
  851.  
  852.    private void adjustSizes(long var1, Resizable2 var3, boolean var4) {
  853.       long var5 = 0L;
  854.       long var7 = 0L;
  855.  
  856.       for(int var9 = 0; var9 < var3.getElementCount(); ++var9) {
  857.          var5 += (long)var3.getLowerBoundAt(var9);
  858.          var7 += (long)var3.getUpperBoundAt(var9);
  859.       }
  860.  
  861.       if (var4) {
  862.          var1 = Math.min(Math.max(var5, var1), var7);
  863.       }
  864.  
  865.       for(int var10 = 0; var10 < var3.getElementCount(); ++var10) {
  866.          int var11 = var3.getLowerBoundAt(var10);
  867.          int var12 = var3.getUpperBoundAt(var10);
  868.          int var13;
  869.          if (var5 == var7) {
  870.             var13 = var11;
  871.          } else {
  872.             double var14 = (double)(var1 - var5) / (double)(var7 - var5);
  873.             var13 = (int)Math.round((double)var11 + var14 * (double)(var12 - var11));
  874.          }
  875.  
  876.          var3.setSizeAt(var13, var10);
  877.          var1 -= (long)var13;
  878.          var5 -= (long)var11;
  879.          var7 -= (long)var12;
  880.       }
  881.  
  882.    }
  883.  
  884.    public String getToolTipText(MouseEvent var1) {
  885.       String var2 = null;
  886.       Point var3 = var1.getPoint();
  887.       int var4 = this.columnAtPoint(var3);
  888.       int var5 = this.rowAtPoint(var3);
  889.       if (var4 != -1 && var5 != -1) {
  890.          TableCellRenderer var6 = this.getCellRenderer(var5, var4);
  891.          Component var7 = this.prepareRenderer(var6, var5, var4);
  892.          if (var7 instanceof JComponent) {
  893.             Rectangle var8 = this.getCellRect(var5, var4, false);
  894.             var3.translate(-var8.x, -var8.y);
  895.             MouseEvent var9 = new MouseEvent(var7, ((AWTEvent)var1).getID(), ((InputEvent)var1).getWhen(), ((InputEvent)var1).getModifiers(), var3.x, var3.y, var1.getClickCount(), var1.isPopupTrigger());
  896.             var2 = ((JComponent)var7).getToolTipText(var9);
  897.          }
  898.       }
  899.  
  900.       if (var2 == null) {
  901.          var2 = ((JComponent)this).getToolTipText();
  902.       }
  903.  
  904.       return var2;
  905.    }
  906.  
  907.    public boolean editCellAt(int var1, int var2) {
  908.       return this.editCellAt(var1, var2, (EventObject)null);
  909.    }
  910.  
  911.    public boolean editCellAt(int var1, int var2, EventObject var3) {
  912.       if (this.cellEditor != null && !this.cellEditor.stopCellEditing()) {
  913.          return false;
  914.       } else if (var1 >= 0 && var1 < this.getRowCount() && var2 >= 0 && var2 < this.getColumnCount()) {
  915.          if (!this.isCellEditable(var1, var2)) {
  916.             return false;
  917.          } else {
  918.             TableCellEditor var4 = this.getCellEditor(var1, var2);
  919.             if (var4 != null && var4.isCellEditable(var3)) {
  920.                this.editorComp = this.prepareEditor(var4, var1, var2);
  921.                if (this.editorComp == null) {
  922.                   this.removeEditor();
  923.                   return false;
  924.                } else {
  925.                   this.editorComp.setBounds(this.getCellRect(var1, var2, false));
  926.                   ((Container)this).add(this.editorComp);
  927.                   this.editorComp.validate();
  928.                   this.setCellEditor(var4);
  929.                   this.setEditingRow(var1);
  930.                   this.setEditingColumn(var2);
  931.                   var4.addCellEditorListener(this);
  932.                   return true;
  933.                }
  934.             } else {
  935.                return false;
  936.             }
  937.          }
  938.       } else {
  939.          return false;
  940.       }
  941.    }
  942.  
  943.    public boolean isEditing() {
  944.       return this.cellEditor != null;
  945.    }
  946.  
  947.    public Component getEditorComponent() {
  948.       return this.editorComp;
  949.    }
  950.  
  951.    public int getEditingColumn() {
  952.       return this.editingColumn;
  953.    }
  954.  
  955.    public int getEditingRow() {
  956.       return this.editingRow;
  957.    }
  958.  
  959.    public TableUI getUI() {
  960.       return (TableUI)super.ui;
  961.    }
  962.  
  963.    public void setUI(TableUI var1) {
  964.       if (super.ui != var1) {
  965.          super.setUI(var1);
  966.          ((Component)this).repaint();
  967.       }
  968.  
  969.    }
  970.  
  971.    private void updateSubComponentUI(Object var1) {
  972.       if (var1 != null) {
  973.          Component var2 = null;
  974.          if (var1 instanceof Component) {
  975.             var2 = (Component)var1;
  976.          }
  977.  
  978.          if (var1 instanceof DefaultCellEditor) {
  979.             var2 = ((DefaultCellEditor)var1).getComponent();
  980.          }
  981.  
  982.          if (var2 != null && var2 instanceof JComponent) {
  983.             ((JComponent)var2).updateUI();
  984.          }
  985.  
  986.       }
  987.    }
  988.  
  989.    public void updateUI() {
  990.       TableColumnModel var1 = this.getColumnModel();
  991.  
  992.       for(int var2 = 0; var2 < var1.getColumnCount(); ++var2) {
  993.          TableColumn var3 = var1.getColumn(var2);
  994.          this.updateSubComponentUI(var3.getCellRenderer());
  995.          this.updateSubComponentUI(var3.getCellEditor());
  996.          this.updateSubComponentUI(var3.getHeaderRenderer());
  997.       }
  998.  
  999.       Enumeration var5 = this.defaultRenderersByColumnClass.elements();
  1000.  
  1001.       while(var5.hasMoreElements()) {
  1002.          this.updateSubComponentUI(var5.nextElement());
  1003.       }
  1004.  
  1005.       Enumeration var4 = this.defaultEditorsByColumnClass.elements();
  1006.  
  1007.       while(var4.hasMoreElements()) {
  1008.          this.updateSubComponentUI(var4.nextElement());
  1009.       }
  1010.  
  1011.       this.setUI((TableUI)UIManager.getUI(this));
  1012.       this.resizeAndRepaint();
  1013.    }
  1014.  
  1015.    public String getUIClassID() {
  1016.       return "TableUI";
  1017.    }
  1018.  
  1019.    public void setModel(TableModel var1) {
  1020.       if (var1 == null) {
  1021.          throw new IllegalArgumentException("Cannot set a null TableModel");
  1022.       } else {
  1023.          if (this.dataModel != var1) {
  1024.             TableModel var2 = this.dataModel;
  1025.             if (var2 != null) {
  1026.                var2.removeTableModelListener(this);
  1027.             }
  1028.  
  1029.             this.dataModel = var1;
  1030.             var1.addTableModelListener(this);
  1031.             if (this.getColumnModel() != null) {
  1032.                this.tableChanged(new TableModelEvent(var1, -1));
  1033.             }
  1034.  
  1035.             ((JComponent)this).firePropertyChange("model", var2, var1);
  1036.          }
  1037.  
  1038.       }
  1039.    }
  1040.  
  1041.    public TableModel getModel() {
  1042.       return this.dataModel;
  1043.    }
  1044.  
  1045.    public void setColumnModel(TableColumnModel var1) {
  1046.       if (var1 == null) {
  1047.          throw new IllegalArgumentException("Cannot set a null ColumnModel");
  1048.       } else {
  1049.          TableColumnModel var2 = this.columnModel;
  1050.          if (var1 != var2) {
  1051.             if (var2 != null) {
  1052.                var2.removeColumnModelListener(this);
  1053.             }
  1054.  
  1055.             this.columnModel = var1;
  1056.             var1.addColumnModelListener(this);
  1057.             if (this.tableHeader != null) {
  1058.                this.tableHeader.setColumnModel(var1);
  1059.             }
  1060.  
  1061.             ((JComponent)this).firePropertyChange("columnModel", var2, var1);
  1062.             this.resizeAndRepaint();
  1063.          }
  1064.  
  1065.       }
  1066.    }
  1067.  
  1068.    public TableColumnModel getColumnModel() {
  1069.       return this.columnModel;
  1070.    }
  1071.  
  1072.    public void setSelectionModel(ListSelectionModel var1) {
  1073.       if (var1 == null) {
  1074.          throw new IllegalArgumentException("Cannot set a null SelectionModel");
  1075.       } else {
  1076.          ListSelectionModel var2 = this.selectionModel;
  1077.          if (var1 != var2) {
  1078.             if (var2 != null) {
  1079.                var2.removeListSelectionListener(this);
  1080.             }
  1081.  
  1082.             this.selectionModel = var1;
  1083.             if (var1 != null) {
  1084.                var1.addListSelectionListener(this);
  1085.             }
  1086.  
  1087.             ((JComponent)this).firePropertyChange("selectionModel", var2, var1);
  1088.             ((Component)this).repaint();
  1089.          }
  1090.  
  1091.       }
  1092.    }
  1093.  
  1094.    public ListSelectionModel getSelectionModel() {
  1095.       return this.selectionModel;
  1096.    }
  1097.  
  1098.    public void tableChanged(TableModelEvent var1) {
  1099.       if (var1 != null && var1.getFirstRow() != -1) {
  1100.          if (this.rowModel != null) {
  1101.             ((Component)this).repaint();
  1102.          }
  1103.  
  1104.          if (var1.getType() == 1) {
  1105.             this.tableRowsInserted(var1);
  1106.          } else if (var1.getType() == -1) {
  1107.             this.tableRowsDeleted(var1);
  1108.          } else {
  1109.             int var2 = var1.getColumn();
  1110.             int var3 = var1.getFirstRow();
  1111.             int var4 = var1.getLastRow();
  1112.             Rectangle var5;
  1113.             if (var2 == -1) {
  1114.                var5 = new Rectangle(0, var3 * this.getRowHeight(), this.getColumnModel().getTotalColumnWidth(), 0);
  1115.             } else {
  1116.                int var6 = this.convertColumnIndexToView(var2);
  1117.                var5 = this.getCellRect(var3, var6, false);
  1118.             }
  1119.  
  1120.             if (var4 != Integer.MAX_VALUE) {
  1121.                var5.height = (var4 - var3 + 1) * this.getRowHeight();
  1122.                ((Component)this).repaint(var5.x, var5.y, var5.width, var5.height);
  1123.             } else {
  1124.                this.clearSelection();
  1125.                this.resizeAndRepaint();
  1126.             }
  1127.  
  1128.          }
  1129.       } else {
  1130.          this.clearSelection();
  1131.          if (this.getAutoCreateColumnsFromModel()) {
  1132.             this.createDefaultColumnsFromModel();
  1133.          } else {
  1134.             this.resizeAndRepaint();
  1135.          }
  1136.       }
  1137.    }
  1138.  
  1139.    private void tableRowsInserted(TableModelEvent var1) {
  1140.       int var2 = var1.getFirstRow();
  1141.       int var3 = var1.getLastRow();
  1142.       if (var2 < 0) {
  1143.          var2 = 0;
  1144.       }
  1145.  
  1146.       if (var3 < 0) {
  1147.          var3 = this.getRowCount() - 1;
  1148.       }
  1149.  
  1150.       int var4 = var3 - var2 + 1;
  1151.       this.selectionModel.insertIndexInterval(var2, var4, true);
  1152.       if (this.rowModel != null) {
  1153.          this.rowModel.insertEntries(var2, var4, this.getRowHeight());
  1154.       }
  1155.  
  1156.       int var5 = this.getRowHeight();
  1157.       Rectangle var6 = new Rectangle(0, var2 * var5, this.getColumnModel().getTotalColumnWidth(), (this.getRowCount() - var2) * var5);
  1158.       ((JComponent)this).revalidate();
  1159.       ((JComponent)this).repaint(var6);
  1160.    }
  1161.  
  1162.    private void tableRowsDeleted(TableModelEvent var1) {
  1163.       int var2 = var1.getFirstRow();
  1164.       int var3 = var1.getLastRow();
  1165.       if (var2 < 0) {
  1166.          var2 = 0;
  1167.       }
  1168.  
  1169.       if (var3 < 0) {
  1170.          var3 = this.getRowCount() - 1;
  1171.       }
  1172.  
  1173.       int var4 = var3 - var2 + 1;
  1174.       int var5 = this.getRowCount() + var4;
  1175.       this.selectionModel.removeIndexInterval(var2, var3);
  1176.       if (this.rowModel != null) {
  1177.          this.rowModel.removeEntries(var2, var4);
  1178.       }
  1179.  
  1180.       int var6 = this.getRowHeight();
  1181.       Rectangle var7 = new Rectangle(0, var2 * var6, this.getColumnModel().getTotalColumnWidth(), (var5 - var2) * var6);
  1182.       ((JComponent)this).revalidate();
  1183.       ((JComponent)this).repaint(var7);
  1184.    }
  1185.  
  1186.    public void columnAdded(TableColumnModelEvent var1) {
  1187.       if (this.isEditing()) {
  1188.          this.removeEditor();
  1189.       }
  1190.  
  1191.       this.resizeAndRepaint();
  1192.    }
  1193.  
  1194.    public void columnRemoved(TableColumnModelEvent var1) {
  1195.       if (this.isEditing()) {
  1196.          this.removeEditor();
  1197.       }
  1198.  
  1199.       this.resizeAndRepaint();
  1200.    }
  1201.  
  1202.    public void columnMoved(TableColumnModelEvent var1) {
  1203.       if (this.isEditing()) {
  1204.          this.removeEditor();
  1205.       }
  1206.  
  1207.       ((Component)this).repaint();
  1208.    }
  1209.  
  1210.    public void columnMarginChanged(ChangeEvent var1) {
  1211.       if (!this.reentrantCall) {
  1212.          this.reentrantCall = true;
  1213.          if (this.isEditing()) {
  1214.             this.removeEditor();
  1215.          }
  1216.  
  1217.          TableColumn var2 = null;
  1218.          if (this.tableHeader != null) {
  1219.             var2 = this.tableHeader.getResizingColumn();
  1220.          }
  1221.  
  1222.          if (var2 != null) {
  1223.             if (this.autoResizeMode != 0) {
  1224.                int var3 = this.viewIndexForColumn(var2);
  1225.                int var4 = ((JComponent)this).getWidth() - this.getColumnModel().getTotalColumnWidth();
  1226.                this.accommodateDelta(var3, var4);
  1227.                ((Component)this).repaint();
  1228.                this.reentrantCall = false;
  1229.                return;
  1230.             }
  1231.  
  1232.             var2.setPreferredWidth(var2.getWidth());
  1233.          }
  1234.  
  1235.          this.resizeAndRepaint();
  1236.          this.reentrantCall = false;
  1237.       }
  1238.    }
  1239.  
  1240.    private int limit(int var1, int var2, int var3) {
  1241.       return Math.min(var3, Math.max(var1, var2));
  1242.    }
  1243.  
  1244.    public void columnSelectionChanged(ListSelectionEvent var1) {
  1245.       if (this.getRowCount() > 0 && this.getColumnCount() > 0) {
  1246.          int var2 = this.limit(var1.getFirstIndex(), 0, this.getColumnCount() - 1);
  1247.          int var3 = this.limit(var1.getLastIndex(), 0, this.getColumnCount() - 1);
  1248.          Rectangle var4 = this.getCellRect(0, var2, false);
  1249.          Rectangle var5 = this.getCellRect(this.getRowCount() - 1, var3, false);
  1250.          Rectangle var6 = var4.union(var5);
  1251.          ((JComponent)this).repaint(var6);
  1252.       }
  1253.    }
  1254.  
  1255.    public void valueChanged(ListSelectionEvent var1) {
  1256.       if (this.getRowCount() > 0 && this.getColumnCount() > 0) {
  1257.          int var2 = this.limit(var1.getFirstIndex(), 0, this.getRowCount() - 1);
  1258.          int var3 = this.limit(var1.getLastIndex(), 0, this.getRowCount() - 1);
  1259.          Rectangle var4 = this.getCellRect(var2, 0, false);
  1260.          Rectangle var5 = this.getCellRect(var3, this.getColumnCount() - 1, false);
  1261.          Rectangle var6 = var4.union(var5);
  1262.          ((JComponent)this).repaint(var6);
  1263.       }
  1264.    }
  1265.  
  1266.    public void editingStopped(ChangeEvent var1) {
  1267.       TableCellEditor var2 = this.getCellEditor();
  1268.       if (var2 != null) {
  1269.          Object var3 = var2.getCellEditorValue();
  1270.          this.setValueAt(var3, this.editingRow, this.editingColumn);
  1271.          this.removeEditor();
  1272.       }
  1273.  
  1274.    }
  1275.  
  1276.    public void editingCanceled(ChangeEvent var1) {
  1277.       this.removeEditor();
  1278.    }
  1279.  
  1280.    public void setPreferredScrollableViewportSize(Dimension var1) {
  1281.       this.preferredViewportSize = var1;
  1282.    }
  1283.  
  1284.    public Dimension getPreferredScrollableViewportSize() {
  1285.       return this.preferredViewportSize;
  1286.    }
  1287.  
  1288.    public int getScrollableUnitIncrement(Rectangle var1, int var2, int var3) {
  1289.       return var2 == 0 ? 100 : this.getRowHeight();
  1290.    }
  1291.  
  1292.    public int getScrollableBlockIncrement(Rectangle var1, int var2, int var3) {
  1293.       if (var2 == 1) {
  1294.          int var4 = this.getRowHeight();
  1295.          return var4 > 0 ? Math.max(var4, var1.height / var4 * var4) : var1.height;
  1296.       } else {
  1297.          return var1.width;
  1298.       }
  1299.    }
  1300.  
  1301.    public boolean getScrollableTracksViewportWidth() {
  1302.       return this.autoResizeMode != 0;
  1303.    }
  1304.  
  1305.    public boolean getScrollableTracksViewportHeight() {
  1306.       return false;
  1307.    }
  1308.  
  1309.    protected boolean processKeyBinding(KeyStroke var1, KeyEvent var2, int var3, boolean var4) {
  1310.       boolean var5 = super.processKeyBinding(var1, var2, var3, var4);
  1311.       if (!var5 && var3 == 1 && ((JComponent)this).hasFocus()) {
  1312.          Component var6 = this.getEditorComponent();
  1313.          if (var6 == null) {
  1314.             if (var2 == null || ((AWTEvent)var2).getID() != 401) {
  1315.                return false;
  1316.             }
  1317.  
  1318.             int var7 = var2.getKeyCode();
  1319.             if (var7 == 16 || var7 == 17 || var7 == 18) {
  1320.                return false;
  1321.             }
  1322.  
  1323.             int var8 = this.getSelectionModel().getAnchorSelectionIndex();
  1324.             int var9 = this.getColumnModel().getSelectionModel().getAnchorSelectionIndex();
  1325.             if (var8 != -1 && var9 != -1 && !this.isEditing() && !this.editCellAt(var8, var9)) {
  1326.                return false;
  1327.             }
  1328.  
  1329.             var6 = this.getEditorComponent();
  1330.             if (var6 == null) {
  1331.                return false;
  1332.             }
  1333.          }
  1334.  
  1335.          if (var6 instanceof JComponent) {
  1336.             var5 = ((JComponent)var6).processKeyBinding(var1, var2, 0, var4);
  1337.          }
  1338.       }
  1339.  
  1340.       return var5;
  1341.    }
  1342.  
  1343.    private void setLazyValue(Hashtable var1, Class var2, String var3) {
  1344.       var1.put(var2, new UIDefaults.ProxyLazyValue(var3));
  1345.    }
  1346.  
  1347.    private void setLazyRenderer(Class var1, String var2) {
  1348.       this.setLazyValue(this.defaultRenderersByColumnClass, var1, var2);
  1349.    }
  1350.  
  1351.    protected void createDefaultRenderers() {
  1352.       this.defaultRenderersByColumnClass = new UIDefaults();
  1353.       this.setLazyRenderer(class$java$lang$Object == null ? (class$java$lang$Object = class$("java.lang.Object")) : class$java$lang$Object, "javax.swing.table.DefaultTableCellRenderer");
  1354.       this.setLazyRenderer(class$java$lang$Number == null ? (class$java$lang$Number = class$("java.lang.Number")) : class$java$lang$Number, "javax.swing.JTable$NumberRenderer");
  1355.       this.setLazyRenderer(class$java$lang$Float == null ? (class$java$lang$Float = class$("java.lang.Float")) : class$java$lang$Float, "javax.swing.JTable$DoubleRenderer");
  1356.       this.setLazyRenderer(class$java$lang$Double == null ? (class$java$lang$Double = class$("java.lang.Double")) : class$java$lang$Double, "javax.swing.JTable$DoubleRenderer");
  1357.       this.setLazyRenderer(class$java$util$Date == null ? (class$java$util$Date = class$("java.util.Date")) : class$java$util$Date, "javax.swing.JTable$DateRenderer");
  1358.       this.setLazyRenderer(class$javax$swing$Icon == null ? (class$javax$swing$Icon = class$("javax.swing.Icon")) : class$javax$swing$Icon, "javax.swing.JTable$IconRenderer");
  1359.       this.setLazyRenderer(class$javax$swing$ImageIcon == null ? (class$javax$swing$ImageIcon = class$("javax.swing.ImageIcon")) : class$javax$swing$ImageIcon, "javax.swing.JTable$IconRenderer");
  1360.       this.setLazyRenderer(class$java$lang$Boolean == null ? (class$java$lang$Boolean = class$("java.lang.Boolean")) : class$java$lang$Boolean, "javax.swing.JTable$BooleanRenderer");
  1361.    }
  1362.  
  1363.    private void setLazyEditor(Class var1, String var2) {
  1364.       this.setLazyValue(this.defaultEditorsByColumnClass, var1, var2);
  1365.    }
  1366.  
  1367.    protected void createDefaultEditors() {
  1368.       this.defaultEditorsByColumnClass = new UIDefaults();
  1369.       this.setLazyEditor(class$java$lang$Object == null ? (class$java$lang$Object = class$("java.lang.Object")) : class$java$lang$Object, "javax.swing.JTable$GenericEditor");
  1370.       this.setLazyEditor(class$java$lang$Number == null ? (class$java$lang$Number = class$("java.lang.Number")) : class$java$lang$Number, "javax.swing.JTable$NumberEditor");
  1371.       this.setLazyEditor(class$java$lang$Boolean == null ? (class$java$lang$Boolean = class$("java.lang.Boolean")) : class$java$lang$Boolean, "javax.swing.JTable$BooleanEditor");
  1372.    }
  1373.  
  1374.    protected void initializeLocalVars() {
  1375.       this.getSelectionModel().setAnchorSelectionIndex(0);
  1376.       ((JComponent)this).setOpaque(true);
  1377.       this.createDefaultRenderers();
  1378.       this.createDefaultEditors();
  1379.       this.setTableHeader(this.createDefaultTableHeader());
  1380.       this.setShowGrid(true);
  1381.       this.setAutoResizeMode(2);
  1382.       this.setRowHeight(16);
  1383.       this.setRowMargin(1);
  1384.       this.setRowSelectionAllowed(true);
  1385.       this.setCellEditor((TableCellEditor)null);
  1386.       this.setEditingColumn(-1);
  1387.       this.setEditingRow(-1);
  1388.       this.setPreferredScrollableViewportSize(new Dimension(450, 400));
  1389.       ToolTipManager var1 = ToolTipManager.sharedInstance();
  1390.       var1.registerComponent(this);
  1391.       ((JComponent)this).setAutoscrolls(true);
  1392.    }
  1393.  
  1394.    protected TableModel createDefaultDataModel() {
  1395.       return new DefaultTableModel();
  1396.    }
  1397.  
  1398.    protected TableColumnModel createDefaultColumnModel() {
  1399.       return new DefaultTableColumnModel();
  1400.    }
  1401.  
  1402.    protected ListSelectionModel createDefaultSelectionModel() {
  1403.       return new DefaultListSelectionModel();
  1404.    }
  1405.  
  1406.    protected JTableHeader createDefaultTableHeader() {
  1407.       return new JTableHeader(this.columnModel);
  1408.    }
  1409.  
  1410.    protected void resizeAndRepaint() {
  1411.       ((JComponent)this).revalidate();
  1412.       ((Component)this).repaint();
  1413.    }
  1414.  
  1415.    public TableCellEditor getCellEditor() {
  1416.       return this.cellEditor;
  1417.    }
  1418.  
  1419.    public void setCellEditor(TableCellEditor var1) {
  1420.       TableCellEditor var2 = this.cellEditor;
  1421.       this.cellEditor = var1;
  1422.       ((JComponent)this).firePropertyChange("tableCellEditor", var2, var1);
  1423.    }
  1424.  
  1425.    public void setEditingColumn(int var1) {
  1426.       this.editingColumn = var1;
  1427.    }
  1428.  
  1429.    public void setEditingRow(int var1) {
  1430.       this.editingRow = var1;
  1431.    }
  1432.  
  1433.    public TableCellRenderer getCellRenderer(int var1, int var2) {
  1434.       TableColumn var3 = this.getColumnModel().getColumn(var2);
  1435.       TableCellRenderer var4 = var3.getCellRenderer();
  1436.       if (var4 == null) {
  1437.          var4 = this.getDefaultRenderer(this.getColumnClass(var2));
  1438.       }
  1439.  
  1440.       return var4;
  1441.    }
  1442.  
  1443.    public Component prepareRenderer(TableCellRenderer var1, int var2, int var3) {
  1444.       Object var4 = this.getValueAt(var2, var3);
  1445.       boolean var5 = this.isCellSelected(var2, var3);
  1446.       boolean var6 = this.selectionModel.getAnchorSelectionIndex() == var2;
  1447.       boolean var7 = this.columnModel.getSelectionModel().getAnchorSelectionIndex() == var3;
  1448.       boolean var8 = var6 && var7 && ((JComponent)this).hasFocus();
  1449.       return var1.getTableCellRendererComponent(this, var4, var5, var8, var2, var3);
  1450.    }
  1451.  
  1452.    public TableCellEditor getCellEditor(int var1, int var2) {
  1453.       TableColumn var3 = this.getColumnModel().getColumn(var2);
  1454.       TableCellEditor var4 = var3.getCellEditor();
  1455.       if (var4 == null) {
  1456.          var4 = this.getDefaultEditor(this.getColumnClass(var2));
  1457.       }
  1458.  
  1459.       return var4;
  1460.    }
  1461.  
  1462.    public Component prepareEditor(TableCellEditor var1, int var2, int var3) {
  1463.       Object var4 = this.getValueAt(var2, var3);
  1464.       boolean var5 = this.isCellSelected(var2, var3);
  1465.       Component var6 = var1.getTableCellEditorComponent(this, var4, var5, var2, var3);
  1466.       if (var6 instanceof JComponent) {
  1467.          ((JComponent)var6).setNextFocusableComponent(this);
  1468.       }
  1469.  
  1470.       return var6;
  1471.    }
  1472.  
  1473.    public void removeEditor() {
  1474.       TableCellEditor var1 = this.getCellEditor();
  1475.       if (var1 != null) {
  1476.          var1.removeCellEditorListener(this);
  1477.          ((JComponent)this).requestFocus();
  1478.          if (this.editorComp != null) {
  1479.             ((Container)this).remove(this.editorComp);
  1480.          }
  1481.  
  1482.          Rectangle var2 = this.getCellRect(this.editingRow, this.editingColumn, false);
  1483.          this.setCellEditor((TableCellEditor)null);
  1484.          this.setEditingColumn(-1);
  1485.          this.setEditingRow(-1);
  1486.          this.editorComp = null;
  1487.          ((JComponent)this).repaint(var2);
  1488.       }
  1489.  
  1490.    }
  1491.  
  1492.    private void writeObject(ObjectOutputStream var1) throws IOException {
  1493.       var1.defaultWriteObject();
  1494.       if (super.ui != null && this.getUIClassID().equals("TableUI")) {
  1495.          super.ui.installUI(this);
  1496.       }
  1497.  
  1498.    }
  1499.  
  1500.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  1501.       var1.defaultReadObject();
  1502.       if (super.ui != null && this.getUIClassID().equals("TableUI")) {
  1503.          super.ui.installUI(this);
  1504.       }
  1505.  
  1506.       this.createDefaultRenderers();
  1507.       this.createDefaultEditors();
  1508.       if (((JComponent)this).getToolTipText() == null) {
  1509.          ToolTipManager.sharedInstance().registerComponent(this);
  1510.       }
  1511.  
  1512.    }
  1513.  
  1514.    void compWriteObjectNotify() {
  1515.       super.compWriteObjectNotify();
  1516.       if (((JComponent)this).getToolTipText() == null) {
  1517.          ToolTipManager.sharedInstance().unregisterComponent(this);
  1518.       }
  1519.  
  1520.    }
  1521.  
  1522.    protected String paramString() {
  1523.       String var1 = this.gridColor != null ? this.gridColor.toString() : "";
  1524.       String var2 = this.showHorizontalLines ? "true" : "false";
  1525.       String var3 = this.showVerticalLines ? "true" : "false";
  1526.       String var4;
  1527.       if (this.autoResizeMode == 0) {
  1528.          var4 = "AUTO_RESIZE_OFF";
  1529.       } else if (this.autoResizeMode == 1) {
  1530.          var4 = "AUTO_RESIZE_NEXT_COLUMN";
  1531.       } else if (this.autoResizeMode == 2) {
  1532.          var4 = "AUTO_RESIZE_SUBSEQUENT_COLUMNS";
  1533.       } else if (this.autoResizeMode == 3) {
  1534.          var4 = "AUTO_RESIZE_LAST_COLUMN";
  1535.       } else if (this.autoResizeMode == 4) {
  1536.          var4 = "AUTO_RESIZE_ALL_COLUMNS";
  1537.       } else {
  1538.          var4 = "";
  1539.       }
  1540.  
  1541.       String var5 = this.autoCreateColumnsFromModel ? "true" : "false";
  1542.       String var6 = this.preferredViewportSize != null ? this.preferredViewportSize.toString() : "";
  1543.       String var7 = this.rowSelectionAllowed ? "true" : "false";
  1544.       String var8 = this.cellSelectionEnabled ? "true" : "false";
  1545.       String var9 = this.selectionForeground != null ? this.selectionForeground.toString() : "";
  1546.       String var10 = this.selectionBackground != null ? this.selectionBackground.toString() : "";
  1547.       return super.paramString() + ",autoCreateColumnsFromModel=" + var5 + ",autoResizeMode=" + var4 + ",cellSelectionEnabled=" + var8 + ",editingColumn=" + this.editingColumn + ",editingRow=" + this.editingRow + ",gridColor=" + var1 + ",preferredViewportSize=" + var6 + ",rowHeight=" + this.rowHeight + ",rowMargin=" + this.rowMargin + ",rowSelectionAllowed=" + var7 + ",selectionBackground=" + var10 + ",selectionForeground=" + var9 + ",showHorizontalLines=" + var2 + ",showVerticalLines=" + var3;
  1548.    }
  1549.  
  1550.    public boolean isManagingFocus() {
  1551.       return true;
  1552.    }
  1553.  
  1554.    public boolean isFocusTraversable() {
  1555.       return true;
  1556.    }
  1557.  
  1558.    public AccessibleContext getAccessibleContext() {
  1559.       if (super.accessibleContext == null) {
  1560.          super.accessibleContext = new AccessibleJTable(this);
  1561.       }
  1562.  
  1563.       return super.accessibleContext;
  1564.    }
  1565.  
  1566.    // $FF: synthetic method
  1567.    static Class class$(String var0) {
  1568.       try {
  1569.          return Class.forName(var0);
  1570.       } catch (ClassNotFoundException var2) {
  1571.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  1572.       }
  1573.    }
  1574. }
  1575.