home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / plaf / basic / BasicTableUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  10.2 KB  |  384 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Dimension;
  7. import java.awt.Graphics;
  8. import java.awt.Point;
  9. import java.awt.Rectangle;
  10. import java.awt.event.FocusListener;
  11. import java.awt.event.KeyListener;
  12. import java.util.Enumeration;
  13. import javax.swing.ActionMap;
  14. import javax.swing.CellRendererPane;
  15. import javax.swing.InputMap;
  16. import javax.swing.JComponent;
  17. import javax.swing.JScrollPane;
  18. import javax.swing.JTable;
  19. import javax.swing.LookAndFeel;
  20. import javax.swing.SwingUtilities;
  21. import javax.swing.UIManager;
  22. import javax.swing.event.MouseInputListener;
  23. import javax.swing.plaf.ActionMapUIResource;
  24. import javax.swing.plaf.ComponentUI;
  25. import javax.swing.plaf.TableUI;
  26. import javax.swing.plaf.UIResource;
  27. import javax.swing.table.JTableHeader;
  28. import javax.swing.table.TableCellRenderer;
  29. import javax.swing.table.TableColumn;
  30. import javax.swing.table.TableColumnModel;
  31.  
  32. public class BasicTableUI extends TableUI {
  33.    protected JTable table;
  34.    protected CellRendererPane rendererPane;
  35.    protected KeyListener keyListener;
  36.    protected FocusListener focusListener;
  37.    protected MouseInputListener mouseInputListener;
  38.  
  39.    protected KeyListener createKeyListener() {
  40.       return null;
  41.    }
  42.  
  43.    protected FocusListener createFocusListener() {
  44.       return new FocusHandler(this);
  45.    }
  46.  
  47.    protected MouseInputListener createMouseInputListener() {
  48.       return new MouseInputHandler(this);
  49.    }
  50.  
  51.    public static ComponentUI createUI(JComponent var0) {
  52.       return new BasicTableUI();
  53.    }
  54.  
  55.    public void installUI(JComponent var1) {
  56.       this.table = (JTable)var1;
  57.       this.rendererPane = new CellRendererPane();
  58.       this.table.add(this.rendererPane);
  59.       this.installDefaults();
  60.       this.installListeners();
  61.       this.installKeyboardActions();
  62.    }
  63.  
  64.    protected void installDefaults() {
  65.       LookAndFeel.installColorsAndFont(this.table, "Table.background", "Table.foreground", "Table.font");
  66.       Color var1 = this.table.getSelectionBackground();
  67.       if (var1 == null || var1 instanceof UIResource) {
  68.          this.table.setSelectionBackground(UIManager.getColor("Table.selectionBackground"));
  69.       }
  70.  
  71.       Color var2 = this.table.getSelectionForeground();
  72.       if (var2 == null || var2 instanceof UIResource) {
  73.          this.table.setSelectionForeground(UIManager.getColor("Table.selectionForeground"));
  74.       }
  75.  
  76.       Color var3 = this.table.getGridColor();
  77.       if (var3 == null || var3 instanceof UIResource) {
  78.          this.table.setGridColor(UIManager.getColor("Table.gridColor"));
  79.       }
  80.  
  81.       Container var4 = this.table.getParent();
  82.       if (var4 != null) {
  83.          var4 = ((Component)var4).getParent();
  84.          if (var4 != null && var4 instanceof JScrollPane) {
  85.             LookAndFeel.installBorder((JScrollPane)var4, "Table.scrollPaneBorder");
  86.          }
  87.       }
  88.  
  89.    }
  90.  
  91.    protected void installListeners() {
  92.       this.focusListener = this.createFocusListener();
  93.       this.keyListener = this.createKeyListener();
  94.       this.mouseInputListener = this.createMouseInputListener();
  95.       this.table.addFocusListener(this.focusListener);
  96.       this.table.addKeyListener(this.keyListener);
  97.       this.table.addMouseListener(this.mouseInputListener);
  98.       this.table.addMouseMotionListener(this.mouseInputListener);
  99.    }
  100.  
  101.    protected void installKeyboardActions() {
  102.       ActionMap var1 = this.getActionMap();
  103.       SwingUtilities.replaceUIActionMap(this.table, var1);
  104.       InputMap var2 = this.getInputMap(1);
  105.       SwingUtilities.replaceUIInputMap(this.table, 1, var2);
  106.    }
  107.  
  108.    InputMap getInputMap(int var1) {
  109.       return var1 == 1 ? (InputMap)UIManager.get("Table.ancestorInputMap") : null;
  110.    }
  111.  
  112.    ActionMap getActionMap() {
  113.       ActionMap var1 = (ActionMap)UIManager.get("Table.actionMap");
  114.       if (var1 == null) {
  115.          var1 = this.createActionMap();
  116.          if (var1 != null) {
  117.             UIManager.put("Table.actionMap", var1);
  118.          }
  119.       }
  120.  
  121.       return var1;
  122.    }
  123.  
  124.    ActionMap createActionMap() {
  125.       ActionMapUIResource var1 = new ActionMapUIResource();
  126.       ((ActionMap)var1).put("selectNextColumn", new NavigationalAction(1, 0, false, false, false));
  127.       ((ActionMap)var1).put("selectPreviousColumn", new NavigationalAction(-1, 0, false, false, false));
  128.       ((ActionMap)var1).put("selectNextRow", new NavigationalAction(0, 1, false, false, false));
  129.       ((ActionMap)var1).put("selectPreviousRow", new NavigationalAction(0, -1, false, false, false));
  130.       ((ActionMap)var1).put("selectNextColumnExtendSelection", new NavigationalAction(1, 0, false, true, false));
  131.       ((ActionMap)var1).put("selectPreviousColumnExtendSelection", new NavigationalAction(-1, 0, false, true, false));
  132.       ((ActionMap)var1).put("selectNextRowExtendSelection", new NavigationalAction(0, 1, false, true, false));
  133.       ((ActionMap)var1).put("selectPreviousRowExtendSelection", new NavigationalAction(0, -1, false, true, false));
  134.       ((ActionMap)var1).put("scrollUpChangeSelection", new PagingAction(false, false, true, false, (1)null));
  135.       ((ActionMap)var1).put("scrollDownChangeSelection", new PagingAction(false, true, true, false, (1)null));
  136.       ((ActionMap)var1).put("selectFirstColumn", new PagingAction(false, false, false, true, (1)null));
  137.       ((ActionMap)var1).put("selectLastColumn", new PagingAction(false, true, false, false, (1)null));
  138.       ((ActionMap)var1).put("scrollUpExtendSelection", new PagingAction(true, false, true, false, (1)null));
  139.       ((ActionMap)var1).put("scrollDownExtendSelection", new PagingAction(true, true, true, false, (1)null));
  140.       ((ActionMap)var1).put("selectFirstColumnExtendSelection", new PagingAction(true, false, false, true, (1)null));
  141.       ((ActionMap)var1).put("selectLastColumnExtendSelection", new PagingAction(true, true, false, false, (1)null));
  142.       ((ActionMap)var1).put("scrollLeftChangeSelection", new PagingAction(false, false, false, false, (1)null));
  143.       ((ActionMap)var1).put("scrollRightChangeSelection", new PagingAction(false, true, false, false, (1)null));
  144.       ((ActionMap)var1).put("selectFirstRow", new PagingAction(false, false, true, true, (1)null));
  145.       ((ActionMap)var1).put("selectLastRow", new PagingAction(false, true, true, true, (1)null));
  146.       ((ActionMap)var1).put("scrollRightExtendSelection", new PagingAction(true, false, false, false, (1)null));
  147.       ((ActionMap)var1).put("scrollLeftExtendSelection", new PagingAction(true, true, false, false, (1)null));
  148.       ((ActionMap)var1).put("selectFirstRowExtendSelection", new PagingAction(true, false, true, true, (1)null));
  149.       ((ActionMap)var1).put("selectLastRowExtendSelection", new PagingAction(true, true, true, true, (1)null));
  150.       ((ActionMap)var1).put("selectNextColumnCell", new NavigationalAction(1, 0, true, false, true));
  151.       ((ActionMap)var1).put("selectPreviousColumnCell", new NavigationalAction(-1, 0, true, false, true));
  152.       ((ActionMap)var1).put("selectNextRowCell", new NavigationalAction(0, 1, true, false, true));
  153.       ((ActionMap)var1).put("selectPreviousRowCell", new NavigationalAction(0, -1, true, false, true));
  154.       ((ActionMap)var1).put("selectAll", new SelectAllAction((1)null));
  155.       ((ActionMap)var1).put("cancel", new CancelEditingAction((1)null));
  156.       ((ActionMap)var1).put("startEditing", new StartEditingAction((1)null));
  157.       return var1;
  158.    }
  159.  
  160.    public void uninstallUI(JComponent var1) {
  161.       this.uninstallDefaults();
  162.       this.uninstallListeners();
  163.       this.uninstallKeyboardActions();
  164.       this.table.remove(this.rendererPane);
  165.       this.rendererPane = null;
  166.       this.table = null;
  167.    }
  168.  
  169.    protected void uninstallDefaults() {
  170.    }
  171.  
  172.    protected void uninstallListeners() {
  173.       this.table.removeFocusListener(this.focusListener);
  174.       this.table.removeKeyListener(this.keyListener);
  175.       this.table.removeMouseListener(this.mouseInputListener);
  176.       this.table.removeMouseMotionListener(this.mouseInputListener);
  177.       this.focusListener = null;
  178.       this.keyListener = null;
  179.       this.mouseInputListener = null;
  180.    }
  181.  
  182.    protected void uninstallKeyboardActions() {
  183.       SwingUtilities.replaceUIInputMap(this.table, 1, (InputMap)null);
  184.       SwingUtilities.replaceUIActionMap(this.table, (ActionMap)null);
  185.    }
  186.  
  187.    private Dimension createTableSize(long var1) {
  188.       int var3 = 0;
  189.       int var4 = this.table.getRowCount();
  190.       if (var4 > 0 && this.table.getColumnCount() > 0) {
  191.          Rectangle var5 = this.table.getCellRect(var4 - 1, 0, true);
  192.          var3 = var5.y + var5.height;
  193.       }
  194.  
  195.       long var7 = Math.abs(var1);
  196.       if (var7 > 2147483647L) {
  197.          var7 = 2147483647L;
  198.       }
  199.  
  200.       return new Dimension((int)var7, var3);
  201.    }
  202.  
  203.    public Dimension getMinimumSize(JComponent var1) {
  204.       long var2 = 0L;
  205.  
  206.       TableColumn var5;
  207.       for(Enumeration var4 = this.table.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getMinWidth()) {
  208.          var5 = (TableColumn)var4.nextElement();
  209.       }
  210.  
  211.       return this.createTableSize(var2);
  212.    }
  213.  
  214.    public Dimension getPreferredSize(JComponent var1) {
  215.       long var2 = 0L;
  216.  
  217.       TableColumn var5;
  218.       for(Enumeration var4 = this.table.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getPreferredWidth()) {
  219.          var5 = (TableColumn)var4.nextElement();
  220.       }
  221.  
  222.       return this.createTableSize(var2);
  223.    }
  224.  
  225.    public Dimension getMaximumSize(JComponent var1) {
  226.       long var2 = 0L;
  227.  
  228.       TableColumn var5;
  229.       for(Enumeration var4 = this.table.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getMaxWidth()) {
  230.          var5 = (TableColumn)var4.nextElement();
  231.       }
  232.  
  233.       return this.createTableSize(var2);
  234.    }
  235.  
  236.    public void paint(Graphics var1, JComponent var2) {
  237.       if (this.table.getRowCount() > 0 && this.table.getColumnCount() > 0) {
  238.          Rectangle var3 = var1.getClipBounds();
  239.          Point var4 = var3.getLocation();
  240.          Point var5 = new Point(var3.x + var3.width - 1, var3.y + var3.height - 1);
  241.          int var6 = this.table.rowAtPoint(var4);
  242.          int var7 = this.table.rowAtPoint(var5);
  243.          if (var6 == -1) {
  244.             var6 = 0;
  245.          }
  246.  
  247.          if (var7 == -1) {
  248.             var7 = this.table.getRowCount() - 1;
  249.          }
  250.  
  251.          int var8 = this.table.columnAtPoint(var4);
  252.          int var9 = this.table.columnAtPoint(var5);
  253.          if (var8 == -1) {
  254.             var8 = 0;
  255.          }
  256.  
  257.          if (var9 == -1) {
  258.             var9 = this.table.getColumnCount() - 1;
  259.          }
  260.  
  261.          this.paintGrid(var1, var6, var7, var8, var9);
  262.          this.paintCells(var1, var6, var7, var8, var9);
  263.       }
  264.    }
  265.  
  266.    private void paintGrid(Graphics var1, int var2, int var3, int var4, int var5) {
  267.       var1.setColor(this.table.getGridColor());
  268.       Rectangle var6 = this.table.getCellRect(var2, var4, true);
  269.       Rectangle var7 = this.table.getCellRect(var3, var5, true);
  270.       if (this.table.getShowHorizontalLines()) {
  271.          int var8 = var7.x + var7.width;
  272.          int var9 = var6.y;
  273.  
  274.          for(int var10 = var2; var10 <= var3; ++var10) {
  275.             var9 += this.table.getRowHeight(var10);
  276.             var1.drawLine(0, var9 - 1, var8 - 1, var9 - 1);
  277.          }
  278.       }
  279.  
  280.       if (this.table.getShowVerticalLines()) {
  281.          TableColumnModel var12 = this.table.getColumnModel();
  282.          int var13 = var7.y + var7.height;
  283.          int var14 = var6.x;
  284.  
  285.          for(int var11 = var4; var11 <= var5; ++var11) {
  286.             var14 += var12.getColumn(var11).getWidth();
  287.             var1.drawLine(var14 - 1, 0, var14 - 1, var13 - 1);
  288.          }
  289.       }
  290.  
  291.    }
  292.  
  293.    private int viewIndexForColumn(TableColumn var1) {
  294.       TableColumnModel var2 = this.table.getColumnModel();
  295.  
  296.       for(int var3 = 0; var3 < var2.getColumnCount(); ++var3) {
  297.          if (var2.getColumn(var3) == var1) {
  298.             return var3;
  299.          }
  300.       }
  301.  
  302.       return -1;
  303.    }
  304.  
  305.    private void paintCells(Graphics var1, int var2, int var3, int var4, int var5) {
  306.       JTableHeader var6 = this.table.getTableHeader();
  307.       TableColumn var7 = var6 == null ? null : var6.getDraggedColumn();
  308.       TableColumnModel var8 = this.table.getColumnModel();
  309.       int var9 = var8.getColumnMargin();
  310.  
  311.       for(int var10 = var2; var10 <= var3; ++var10) {
  312.          Rectangle var11 = this.table.getCellRect(var10, var4, false);
  313.  
  314.          for(int var12 = var4; var12 <= var5; ++var12) {
  315.             TableColumn var13 = var8.getColumn(var12);
  316.             int var14 = var13.getWidth();
  317.             var11.width = var14 - var9;
  318.             if (var13 != var7) {
  319.                this.paintCell(var1, var11, var10, var12);
  320.             }
  321.  
  322.             var11.x += var14;
  323.          }
  324.       }
  325.  
  326.       if (var7 != null) {
  327.          this.paintDraggedArea(var1, var2, var3, var7, var6.getDraggedDistance());
  328.       }
  329.  
  330.       this.rendererPane.removeAll();
  331.    }
  332.  
  333.    private void paintDraggedArea(Graphics var1, int var2, int var3, TableColumn var4, int var5) {
  334.       int var6 = this.viewIndexForColumn(var4);
  335.       Rectangle var7 = this.table.getCellRect(var2, var6, true);
  336.       Rectangle var8 = this.table.getCellRect(var3, var6, true);
  337.       Rectangle var9 = var7.union(var8);
  338.       var1.setColor(this.table.getParent().getBackground());
  339.       var1.fillRect(var9.x, var9.y, var9.width, var9.height);
  340.       var9.x += var5;
  341.       var1.setColor(this.table.getBackground());
  342.       var1.fillRect(var9.x, var9.y, var9.width, var9.height);
  343.       if (this.table.getShowVerticalLines()) {
  344.          var1.setColor(this.table.getGridColor());
  345.          int var10 = var9.x;
  346.          int var11 = var9.y;
  347.          int var12 = var10 + var9.width - 1;
  348.          int var13 = var11 + var9.height - 1;
  349.          var1.drawLine(var10 - 1, var11, var10 - 1, var13);
  350.          var1.drawLine(var12, var11, var12, var13);
  351.       }
  352.  
  353.       for(int var17 = var2; var17 <= var3; ++var17) {
  354.          Rectangle var18 = this.table.getCellRect(var17, var6, false);
  355.          var18.x += var5;
  356.          this.paintCell(var1, var18, var17, var6);
  357.          if (this.table.getShowHorizontalLines()) {
  358.             var1.setColor(this.table.getGridColor());
  359.             Rectangle var19 = this.table.getCellRect(var17, var6, true);
  360.             var19.x += var5;
  361.             int var20 = var19.x;
  362.             int var14 = var19.y;
  363.             int var15 = var20 + var19.width - 1;
  364.             int var16 = var14 + var19.height - 1;
  365.             var1.drawLine(var20, var16, var15, var16);
  366.          }
  367.       }
  368.  
  369.    }
  370.  
  371.    private void paintCell(Graphics var1, Rectangle var2, int var3, int var4) {
  372.       if (this.table.isEditing() && this.table.getEditingRow() == var3 && this.table.getEditingColumn() == var4) {
  373.          Component var7 = this.table.getEditorComponent();
  374.          var7.setBounds(var2);
  375.          var7.validate();
  376.       } else {
  377.          TableCellRenderer var5 = this.table.getCellRenderer(var3, var4);
  378.          Component var6 = this.table.prepareRenderer(var5, var3, var4);
  379.          this.rendererPane.paintComponent(var1, var6, this.table, var2.x, var2.y, var2.width, var2.height, true);
  380.       }
  381.  
  382.    }
  383. }
  384.