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.CellRendererPane;
- import javax.swing.JComponent;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.KeyStroke;
- import javax.swing.ListSelectionModel;
- import javax.swing.LookAndFeel;
- import javax.swing.UIManager;
- import javax.swing.event.MouseInputListener;
- 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;
-
- public class BasicTableUI extends TableUI {
- protected JTable table;
- protected CellRendererPane rendererPane;
- protected KeyListener keyListener;
- protected FocusListener focusListener;
- protected MouseInputListener mouseInputListener;
-
- // $FF: synthetic method
- static void access$0(BasicTableUI var0, int var1, int var2, boolean var3, boolean var4) {
- var0.updateSelection(var1, var2, var3, var4);
- }
-
- protected FocusListener createFocusListener() {
- return new FocusHandler(this);
- }
-
- protected KeyListener createKeyListener() {
- return new KeyHandler(this);
- }
-
- protected MouseInputListener createMouseInputListener() {
- return new MouseInputHandler(this);
- }
-
- private Dimension createTableSize(long var1) {
- int var3 = this.table.getRowCount() * (this.table.getRowHeight() + this.table.getRowMargin());
- int var4 = this.table.getColumnModel().getColumnMargin() * this.table.getColumnCount();
- long var5 = Math.abs(var1) + (long)var4;
- if (var5 > 2147483647L) {
- var5 = 2147483647L;
- }
-
- return new Dimension((int)var5, var3);
- }
-
- public static ComponentUI createUI(JComponent var0) {
- return new BasicTableUI();
- }
-
- 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 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);
- }
-
- 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 installKeyboardActions() {
- byte var1 = 1;
- byte var2 = 2;
- this.registerKey(39, 0, 1, 0);
- this.registerKey(37, 0, -1, 0);
- this.registerKey(40, 0, 0, 1);
- this.registerKey(38, 0, 0, -1);
- this.registerKey(39, var1, 1, 0);
- this.registerKey(37, var1, -1, 0);
- this.registerKey(40, var1, 0, 1);
- this.registerKey(38, var1, 0, -1);
- this.registerKey(9, 0, 1, 0, true, false, true, true);
- this.registerKey(9, var1, -1, 0, true, false, true, true);
- this.registerKey(10, 0, 0, 1, true, false, true, true);
- this.registerKey(10, var1, 0, -1, true, false, true, true);
- this.table.registerKeyboardAction(new 1(this), KeyStroke.getKeyStroke(65, var2), 0);
- this.table.registerKeyboardAction(new 2(this), KeyStroke.getKeyStroke(27, 0), 0);
- }
-
- 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);
- }
-
- public void installUI(JComponent var1) {
- this.table = (JTable)var1;
- this.rendererPane = new CellRendererPane();
- this.table.add(this.rendererPane);
- this.installDefaults();
- this.installListeners();
- this.installKeyboardActions();
- }
-
- private int lastVisibleRow(Rectangle var1) {
- int var2 = this.table.rowAtPoint(new Point(0, var1.y + var1.height - 1));
- if (var2 == -1) {
- var2 = this.table.getRowCount() - 1;
- }
-
- return var2;
- }
-
- public void paint(Graphics var1, JComponent var2) {
- Rectangle var3 = var1.getClipBounds();
- Rectangle var4 = new Rectangle(var3);
- int var5 = this.table.getColumnModel().getTotalColumnWidth();
- var4.width = Math.min(var4.width, var5);
- var1.setClip(var4);
- this.paintGrid(var1);
- int var6 = this.table.rowAtPoint(new Point(0, var4.y));
- int var7 = this.lastVisibleRow(var4);
- Rectangle var8 = new Rectangle(0, 0, var5, this.table.getRowHeight() + this.table.getRowMargin());
- var8.y = var6 * var8.height;
-
- for(int var9 = var6; var9 <= var7; ++var9) {
- if (var8.intersects(var4)) {
- this.paintRow(var1, var9);
- }
-
- var8.y += var8.height;
- }
-
- var1.setClip(var3);
- }
-
- private void paintCell(Graphics var1, Rectangle var2, int var3, int var4) {
- int var5 = this.table.getRowMargin();
- int var6 = this.table.getColumnModel().getColumnMargin();
- var2.setBounds(var2.x + var6 / 2, var2.y + var5 / 2, var2.width - var6, var2.height - var5);
- if (this.table.isEditing() && this.table.getEditingRow() == var3 && this.table.getEditingColumn() == var4) {
- Component var9 = this.table.getEditorComponent();
- var9.setBounds(var2);
- var9.validate();
- } else {
- TableCellRenderer var7 = this.table.getCellRenderer(var3, var4);
- Component var8 = this.table.prepareRenderer(var7, var3, var4);
- if (var8.getParent() == null) {
- this.rendererPane.add(var8);
- }
-
- this.rendererPane.paintComponent(var1, var8, this.table, var2.x, var2.y, var2.width, var2.height, true);
- }
-
- var2.setBounds(var2.x - var6 / 2, var2.y - var5 / 2, var2.width + var6, var2.height + var5);
- }
-
- private void paintGrid(Graphics var1) {
- var1.setColor(this.table.getGridColor());
- if (this.table.getShowHorizontalLines()) {
- this.paintHorizontalLines(var1);
- }
-
- if (this.table.getShowVerticalLines()) {
- this.paintVerticalLines(var1);
- }
-
- }
-
- private void paintHorizontalLines(Graphics var1) {
- Rectangle var2 = var1.getClipBounds();
- Rectangle var3 = var2;
- int var4 = this.table.getRowHeight() + this.table.getRowMargin();
- int var5 = this.table.rowAtPoint(new Point(0, var2.y));
- int var6 = this.lastVisibleRow(var2);
- int var7 = var4 * var5 + (var4 - 1);
-
- for(int var8 = var5; var8 <= var6; ++var8) {
- if (var7 >= var3.y && var7 <= var3.y + var3.height) {
- var1.drawLine(var3.x, var7, var3.x + var3.width - 1, var7);
- }
-
- var7 += var4;
- }
-
- }
-
- private void paintRow(Graphics var1, int var2) {
- Rectangle var3 = var1.getClipBounds();
- int var4 = 0;
- boolean var5 = false;
- int var6 = -1;
- Rectangle var7 = null;
- Dimension var8 = this.table.getIntercellSpacing();
- JTableHeader var9 = this.table.getTableHeader();
- Rectangle var10 = new Rectangle();
- var10.height = this.table.getRowHeight() + var8.height;
- var10.y = var2 * var10.height;
-
- for(Enumeration var11 = this.table.getColumnModel().getColumns(); var11.hasMoreElements(); ++var4) {
- TableColumn var12 = (TableColumn)var11.nextElement();
- var10.width = var12.getWidth() + var8.width;
- if (var10.intersects(var3)) {
- var5 = true;
- if (var9 != null && var12 == var9.getDraggedColumn()) {
- var1.setColor(this.table.getParent().getBackground());
- var1.fillRect(var10.x, var10.y, var10.width, var10.height);
- var7 = new Rectangle(var10);
- var6 = var4;
- } else {
- this.paintCell(var1, var10, var2, var4);
- }
- } else if (var5) {
- break;
- }
-
- var10.x += var10.width;
- }
-
- if (var6 != -1 && var7 != null) {
- var7.x += var9.getDraggedDistance();
- var1.setColor(this.table.getBackground());
- var1.fillRect(var7.x, var7.y, var7.width, var7.height);
- var1.setColor(this.table.getGridColor());
- int var16 = var7.x;
- int var13 = var7.y;
- int var14 = var16 + var7.width - 1;
- int var15 = var13 + var7.height - 1;
- if (this.table.getShowVerticalLines()) {
- var1.drawLine(var14, var13, var14, var15);
- }
-
- if (this.table.getShowHorizontalLines()) {
- var1.drawLine(var16, var15, var14, var15);
- }
-
- this.paintCell(var1, var7, var2, var6);
- }
-
- }
-
- private void paintVerticalLines(Graphics var1) {
- Rectangle var2 = var1.getClipBounds();
- int var3 = 0;
- int var4 = this.table.getColumnCount();
- int var5 = this.table.getIntercellSpacing().width;
-
- for(int var6 = 0; var6 <= var4; ++var6) {
- if (var3 > 0 && var3 - 1 >= var2.x && var3 - 1 <= var2.x + var2.width) {
- var1.drawLine(var3 - 1, var2.y, var3 - 1, var2.y + var2.height - 1);
- }
-
- if (var6 < var4) {
- var3 += this.table.getColumnModel().getColumn(var6).getWidth() + var5;
- }
- }
-
- }
-
- private void registerKey(int var1, int var2, int var3, int var4) {
- boolean var5 = (var2 & 2) != 0;
- boolean var6 = (var2 & 1) != 0;
- boolean var7 = var6 ^ true;
- this.registerKey(var1, var2, var3, var4, var5, var6, var7, false);
- }
-
- private void registerKey(int var1, int var2, int var3, int var4, boolean var5, boolean var6, boolean var7, boolean var8) {
- this.table.registerKeyboardAction(new NavigationalAction(this, (3)null, var3, var4, var5, var6, var7, var8), KeyStroke.getKeyStroke(var1, var2), 0);
- }
-
- protected void uninstallDefaults() {
- }
-
- protected void uninstallKeyboardActions() {
- byte var1 = 1;
- byte var2 = 2;
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(38, 0));
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(40, 0));
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(39, 0));
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(37, 0));
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(38, var1));
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(40, var1));
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(39, var1));
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(37, var1));
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(9, 0));
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(9, var1));
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(10, 0));
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(10, var1));
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(65, var2));
- this.table.unregisterKeyboardAction(KeyStroke.getKeyStroke(27, 0));
- }
-
- 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;
- }
-
- public void uninstallUI(JComponent var1) {
- this.uninstallDefaults();
- this.uninstallListeners();
- this.uninstallKeyboardActions();
- this.table.remove(this.rendererPane);
- this.rendererPane = null;
- this.table = null;
- }
-
- private void updateSelection(int var1, int var2, boolean var3, boolean var4) {
- Rectangle var5 = this.table.getCellRect(var1, var2, false);
- if (var5 != null) {
- this.table.scrollRectToVisible(var5);
- }
-
- ListSelectionModel var6 = this.table.getSelectionModel();
- ListSelectionModel var7 = this.table.getColumnModel().getSelectionModel();
- this.updateSelectionModel(var7, var2, var3, var4);
- this.updateSelectionModel(var6, var1, var3, var4);
- }
-
- private void updateSelectionModel(ListSelectionModel var1, int var2, boolean var3, boolean var4) {
- if (!var4) {
- if (!var3) {
- var1.setSelectionInterval(var2, var2);
- } else if (var1.isSelectedIndex(var2)) {
- var1.removeSelectionInterval(var2, var2);
- } else {
- var1.addSelectionInterval(var2, var2);
- }
- } else {
- var1.setLeadSelectionIndex(var2);
- }
-
- }
- }
-