home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.awt.event.FocusListener;
- import java.awt.event.KeyListener;
- import java.util.Enumeration;
- import javax.swing.ActionMap;
- import javax.swing.CellRendererPane;
- import javax.swing.InputMap;
- import javax.swing.JComponent;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.LookAndFeel;
- import javax.swing.SwingUtilities;
- import javax.swing.UIManager;
- import javax.swing.event.MouseInputListener;
- import javax.swing.plaf.ActionMapUIResource;
- import javax.swing.plaf.ComponentUI;
- import javax.swing.plaf.TableUI;
- import javax.swing.plaf.UIResource;
- import javax.swing.table.JTableHeader;
- import javax.swing.table.TableCellRenderer;
- import javax.swing.table.TableColumn;
- import javax.swing.table.TableColumnModel;
-
- public class BasicTableUI extends TableUI {
- protected JTable table;
- protected CellRendererPane rendererPane;
- protected KeyListener keyListener;
- protected FocusListener focusListener;
- protected MouseInputListener mouseInputListener;
-
- protected KeyListener createKeyListener() {
- return null;
- }
-
- protected FocusListener createFocusListener() {
- return new FocusHandler(this);
- }
-
- protected MouseInputListener createMouseInputListener() {
- return new MouseInputHandler(this);
- }
-
- public static ComponentUI createUI(JComponent var0) {
- return new BasicTableUI();
- }
-
- public void installUI(JComponent var1) {
- this.table = (JTable)var1;
- this.rendererPane = new CellRendererPane();
- this.table.add(this.rendererPane);
- this.installDefaults();
- this.installListeners();
- this.installKeyboardActions();
- }
-
- protected void installDefaults() {
- LookAndFeel.installColorsAndFont(this.table, "Table.background", "Table.foreground", "Table.font");
- Color var1 = this.table.getSelectionBackground();
- if (var1 == null || var1 instanceof UIResource) {
- this.table.setSelectionBackground(UIManager.getColor("Table.selectionBackground"));
- }
-
- Color var2 = this.table.getSelectionForeground();
- if (var2 == null || var2 instanceof UIResource) {
- this.table.setSelectionForeground(UIManager.getColor("Table.selectionForeground"));
- }
-
- Color var3 = this.table.getGridColor();
- if (var3 == null || var3 instanceof UIResource) {
- this.table.setGridColor(UIManager.getColor("Table.gridColor"));
- }
-
- Container var4 = this.table.getParent();
- if (var4 != null) {
- var4 = ((Component)var4).getParent();
- if (var4 != null && var4 instanceof JScrollPane) {
- LookAndFeel.installBorder((JScrollPane)var4, "Table.scrollPaneBorder");
- }
- }
-
- }
-
- protected void installListeners() {
- this.focusListener = this.createFocusListener();
- this.keyListener = this.createKeyListener();
- this.mouseInputListener = this.createMouseInputListener();
- this.table.addFocusListener(this.focusListener);
- this.table.addKeyListener(this.keyListener);
- this.table.addMouseListener(this.mouseInputListener);
- this.table.addMouseMotionListener(this.mouseInputListener);
- }
-
- protected void installKeyboardActions() {
- ActionMap var1 = this.getActionMap();
- SwingUtilities.replaceUIActionMap(this.table, var1);
- InputMap var2 = this.getInputMap(1);
- SwingUtilities.replaceUIInputMap(this.table, 1, var2);
- }
-
- InputMap getInputMap(int var1) {
- return var1 == 1 ? (InputMap)UIManager.get("Table.ancestorInputMap") : null;
- }
-
- ActionMap getActionMap() {
- ActionMap var1 = (ActionMap)UIManager.get("Table.actionMap");
- if (var1 == null) {
- var1 = this.createActionMap();
- if (var1 != null) {
- UIManager.put("Table.actionMap", var1);
- }
- }
-
- return var1;
- }
-
- ActionMap createActionMap() {
- ActionMapUIResource var1 = new ActionMapUIResource();
- ((ActionMap)var1).put("selectNextColumn", new NavigationalAction(1, 0, false, false, false));
- ((ActionMap)var1).put("selectPreviousColumn", new NavigationalAction(-1, 0, false, false, false));
- ((ActionMap)var1).put("selectNextRow", new NavigationalAction(0, 1, false, false, false));
- ((ActionMap)var1).put("selectPreviousRow", new NavigationalAction(0, -1, false, false, false));
- ((ActionMap)var1).put("selectNextColumnExtendSelection", new NavigationalAction(1, 0, false, true, false));
- ((ActionMap)var1).put("selectPreviousColumnExtendSelection", new NavigationalAction(-1, 0, false, true, false));
- ((ActionMap)var1).put("selectNextRowExtendSelection", new NavigationalAction(0, 1, false, true, false));
- ((ActionMap)var1).put("selectPreviousRowExtendSelection", new NavigationalAction(0, -1, false, true, false));
- ((ActionMap)var1).put("scrollUpChangeSelection", new PagingAction(false, false, true, false, (1)null));
- ((ActionMap)var1).put("scrollDownChangeSelection", new PagingAction(false, true, true, false, (1)null));
- ((ActionMap)var1).put("selectFirstColumn", new PagingAction(false, false, false, true, (1)null));
- ((ActionMap)var1).put("selectLastColumn", new PagingAction(false, true, false, false, (1)null));
- ((ActionMap)var1).put("scrollUpExtendSelection", new PagingAction(true, false, true, false, (1)null));
- ((ActionMap)var1).put("scrollDownExtendSelection", new PagingAction(true, true, true, false, (1)null));
- ((ActionMap)var1).put("selectFirstColumnExtendSelection", new PagingAction(true, false, false, true, (1)null));
- ((ActionMap)var1).put("selectLastColumnExtendSelection", new PagingAction(true, true, false, false, (1)null));
- ((ActionMap)var1).put("scrollLeftChangeSelection", new PagingAction(false, false, false, false, (1)null));
- ((ActionMap)var1).put("scrollRightChangeSelection", new PagingAction(false, true, false, false, (1)null));
- ((ActionMap)var1).put("selectFirstRow", new PagingAction(false, false, true, true, (1)null));
- ((ActionMap)var1).put("selectLastRow", new PagingAction(false, true, true, true, (1)null));
- ((ActionMap)var1).put("scrollRightExtendSelection", new PagingAction(true, false, false, false, (1)null));
- ((ActionMap)var1).put("scrollLeftExtendSelection", new PagingAction(true, true, false, false, (1)null));
- ((ActionMap)var1).put("selectFirstRowExtendSelection", new PagingAction(true, false, true, true, (1)null));
- ((ActionMap)var1).put("selectLastRowExtendSelection", new PagingAction(true, true, true, true, (1)null));
- ((ActionMap)var1).put("selectNextColumnCell", new NavigationalAction(1, 0, true, false, true));
- ((ActionMap)var1).put("selectPreviousColumnCell", new NavigationalAction(-1, 0, true, false, true));
- ((ActionMap)var1).put("selectNextRowCell", new NavigationalAction(0, 1, true, false, true));
- ((ActionMap)var1).put("selectPreviousRowCell", new NavigationalAction(0, -1, true, false, true));
- ((ActionMap)var1).put("selectAll", new SelectAllAction((1)null));
- ((ActionMap)var1).put("cancel", new CancelEditingAction((1)null));
- ((ActionMap)var1).put("startEditing", new StartEditingAction((1)null));
- return var1;
- }
-
- public void uninstallUI(JComponent var1) {
- this.uninstallDefaults();
- this.uninstallListeners();
- this.uninstallKeyboardActions();
- this.table.remove(this.rendererPane);
- this.rendererPane = null;
- this.table = null;
- }
-
- protected void uninstallDefaults() {
- }
-
- protected void uninstallListeners() {
- this.table.removeFocusListener(this.focusListener);
- this.table.removeKeyListener(this.keyListener);
- this.table.removeMouseListener(this.mouseInputListener);
- this.table.removeMouseMotionListener(this.mouseInputListener);
- this.focusListener = null;
- this.keyListener = null;
- this.mouseInputListener = null;
- }
-
- protected void uninstallKeyboardActions() {
- SwingUtilities.replaceUIInputMap(this.table, 1, (InputMap)null);
- SwingUtilities.replaceUIActionMap(this.table, (ActionMap)null);
- }
-
- private Dimension createTableSize(long var1) {
- int var3 = 0;
- int var4 = this.table.getRowCount();
- if (var4 > 0 && this.table.getColumnCount() > 0) {
- Rectangle var5 = this.table.getCellRect(var4 - 1, 0, true);
- var3 = var5.y + var5.height;
- }
-
- long var7 = Math.abs(var1);
- if (var7 > 2147483647L) {
- var7 = 2147483647L;
- }
-
- return new Dimension((int)var7, var3);
- }
-
- public Dimension getMinimumSize(JComponent var1) {
- long var2 = 0L;
-
- TableColumn var5;
- for(Enumeration var4 = this.table.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getMinWidth()) {
- var5 = (TableColumn)var4.nextElement();
- }
-
- return this.createTableSize(var2);
- }
-
- public Dimension getPreferredSize(JComponent var1) {
- long var2 = 0L;
-
- TableColumn var5;
- for(Enumeration var4 = this.table.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getPreferredWidth()) {
- var5 = (TableColumn)var4.nextElement();
- }
-
- return this.createTableSize(var2);
- }
-
- public Dimension getMaximumSize(JComponent var1) {
- long var2 = 0L;
-
- TableColumn var5;
- for(Enumeration var4 = this.table.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getMaxWidth()) {
- var5 = (TableColumn)var4.nextElement();
- }
-
- return this.createTableSize(var2);
- }
-
- public void paint(Graphics var1, JComponent var2) {
- if (this.table.getRowCount() > 0 && this.table.getColumnCount() > 0) {
- Rectangle var3 = var1.getClipBounds();
- Point var4 = var3.getLocation();
- Point var5 = new Point(var3.x + var3.width - 1, var3.y + var3.height - 1);
- int var6 = this.table.rowAtPoint(var4);
- int var7 = this.table.rowAtPoint(var5);
- if (var6 == -1) {
- var6 = 0;
- }
-
- if (var7 == -1) {
- var7 = this.table.getRowCount() - 1;
- }
-
- int var8 = this.table.columnAtPoint(var4);
- int var9 = this.table.columnAtPoint(var5);
- if (var8 == -1) {
- var8 = 0;
- }
-
- if (var9 == -1) {
- var9 = this.table.getColumnCount() - 1;
- }
-
- this.paintGrid(var1, var6, var7, var8, var9);
- this.paintCells(var1, var6, var7, var8, var9);
- }
- }
-
- private void paintGrid(Graphics var1, int var2, int var3, int var4, int var5) {
- var1.setColor(this.table.getGridColor());
- Rectangle var6 = this.table.getCellRect(var2, var4, true);
- Rectangle var7 = this.table.getCellRect(var3, var5, true);
- if (this.table.getShowHorizontalLines()) {
- int var8 = var7.x + var7.width;
- int var9 = var6.y;
-
- for(int var10 = var2; var10 <= var3; ++var10) {
- var9 += this.table.getRowHeight(var10);
- var1.drawLine(0, var9 - 1, var8 - 1, var9 - 1);
- }
- }
-
- if (this.table.getShowVerticalLines()) {
- TableColumnModel var12 = this.table.getColumnModel();
- int var13 = var7.y + var7.height;
- int var14 = var6.x;
-
- for(int var11 = var4; var11 <= var5; ++var11) {
- var14 += var12.getColumn(var11).getWidth();
- var1.drawLine(var14 - 1, 0, var14 - 1, var13 - 1);
- }
- }
-
- }
-
- private int viewIndexForColumn(TableColumn var1) {
- TableColumnModel var2 = this.table.getColumnModel();
-
- for(int var3 = 0; var3 < var2.getColumnCount(); ++var3) {
- if (var2.getColumn(var3) == var1) {
- return var3;
- }
- }
-
- return -1;
- }
-
- private void paintCells(Graphics var1, int var2, int var3, int var4, int var5) {
- JTableHeader var6 = this.table.getTableHeader();
- TableColumn var7 = var6 == null ? null : var6.getDraggedColumn();
- TableColumnModel var8 = this.table.getColumnModel();
- int var9 = var8.getColumnMargin();
-
- for(int var10 = var2; var10 <= var3; ++var10) {
- Rectangle var11 = this.table.getCellRect(var10, var4, false);
-
- for(int var12 = var4; var12 <= var5; ++var12) {
- TableColumn var13 = var8.getColumn(var12);
- int var14 = var13.getWidth();
- var11.width = var14 - var9;
- if (var13 != var7) {
- this.paintCell(var1, var11, var10, var12);
- }
-
- var11.x += var14;
- }
- }
-
- if (var7 != null) {
- this.paintDraggedArea(var1, var2, var3, var7, var6.getDraggedDistance());
- }
-
- this.rendererPane.removeAll();
- }
-
- private void paintDraggedArea(Graphics var1, int var2, int var3, TableColumn var4, int var5) {
- int var6 = this.viewIndexForColumn(var4);
- Rectangle var7 = this.table.getCellRect(var2, var6, true);
- Rectangle var8 = this.table.getCellRect(var3, var6, true);
- Rectangle var9 = var7.union(var8);
- var1.setColor(this.table.getParent().getBackground());
- var1.fillRect(var9.x, var9.y, var9.width, var9.height);
- var9.x += var5;
- var1.setColor(this.table.getBackground());
- var1.fillRect(var9.x, var9.y, var9.width, var9.height);
- if (this.table.getShowVerticalLines()) {
- var1.setColor(this.table.getGridColor());
- int var10 = var9.x;
- int var11 = var9.y;
- int var12 = var10 + var9.width - 1;
- int var13 = var11 + var9.height - 1;
- var1.drawLine(var10 - 1, var11, var10 - 1, var13);
- var1.drawLine(var12, var11, var12, var13);
- }
-
- for(int var17 = var2; var17 <= var3; ++var17) {
- Rectangle var18 = this.table.getCellRect(var17, var6, false);
- var18.x += var5;
- this.paintCell(var1, var18, var17, var6);
- if (this.table.getShowHorizontalLines()) {
- var1.setColor(this.table.getGridColor());
- Rectangle var19 = this.table.getCellRect(var17, var6, true);
- var19.x += var5;
- int var20 = var19.x;
- int var14 = var19.y;
- int var15 = var20 + var19.width - 1;
- int var16 = var14 + var19.height - 1;
- var1.drawLine(var20, var16, var15, var16);
- }
- }
-
- }
-
- private void paintCell(Graphics var1, Rectangle var2, int var3, int var4) {
- if (this.table.isEditing() && this.table.getEditingRow() == var3 && this.table.getEditingColumn() == var4) {
- Component var7 = this.table.getEditorComponent();
- var7.setBounds(var2);
- var7.validate();
- } else {
- TableCellRenderer var5 = this.table.getCellRenderer(var3, var4);
- Component var6 = this.table.prepareRenderer(var5, var3, var4);
- this.rendererPane.paintComponent(var1, var6, this.table, var2.x, var2.y, var2.width, var2.height, true);
- }
-
- }
- }
-