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