home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.beans.PropertyChangeEvent;
- import java.beans.PropertyChangeListener;
- import javax.swing.ActionMap;
- import javax.swing.InputMap;
- import javax.swing.JComponent;
- import javax.swing.JScrollBar;
- import javax.swing.JScrollPane;
- import javax.swing.JViewport;
- import javax.swing.LookAndFeel;
- import javax.swing.ScrollPaneConstants;
- import javax.swing.SwingUtilities;
- import javax.swing.UIManager;
- import javax.swing.border.Border;
- import javax.swing.event.ChangeListener;
- import javax.swing.plaf.ActionMapUIResource;
- import javax.swing.plaf.ComponentUI;
- import javax.swing.plaf.ScrollPaneUI;
- import javax.swing.plaf.UIResource;
-
- public class BasicScrollPaneUI extends ScrollPaneUI implements ScrollPaneConstants {
- protected JScrollPane scrollpane;
- protected ChangeListener vsbChangeListener;
- protected ChangeListener hsbChangeListener;
- protected ChangeListener viewportChangeListener;
- protected PropertyChangeListener spPropertyChangeListener;
-
- public static ComponentUI createUI(JComponent var0) {
- return new BasicScrollPaneUI();
- }
-
- public void paint(Graphics var1, JComponent var2) {
- Border var3 = this.scrollpane.getViewportBorder();
- if (var3 != null) {
- Rectangle var4 = this.scrollpane.getViewportBorderBounds();
- var3.paintBorder(this.scrollpane, var1, var4.x, var4.y, var4.width, var4.height);
- }
-
- }
-
- public Dimension getPreferredSize(JComponent var1) {
- return null;
- }
-
- public Dimension getMinimumSize(JComponent var1) {
- return this.getPreferredSize(var1);
- }
-
- public Dimension getMaximumSize(JComponent var1) {
- return new Dimension(32767, 32767);
- }
-
- protected void installDefaults(JScrollPane var1) {
- LookAndFeel.installBorder(var1, "ScrollPane.border");
- LookAndFeel.installColorsAndFont(var1, "ScrollPane.background", "ScrollPane.foreground", "ScrollPane.font");
- Border var2 = var1.getViewportBorder();
- if (var2 == null || var2 instanceof UIResource) {
- var2 = UIManager.getBorder("ScrollPane.viewportBorder");
- var1.setViewportBorder(var2);
- }
-
- }
-
- protected void installListeners(JScrollPane var1) {
- this.vsbChangeListener = this.createVSBChangeListener();
- this.hsbChangeListener = this.createHSBChangeListener();
- this.viewportChangeListener = this.createViewportChangeListener();
- this.spPropertyChangeListener = this.createPropertyChangeListener();
- JViewport var2 = this.scrollpane.getViewport();
- JScrollBar var3 = this.scrollpane.getVerticalScrollBar();
- JScrollBar var4 = this.scrollpane.getHorizontalScrollBar();
- if (var2 != null) {
- var2.addChangeListener(this.viewportChangeListener);
- }
-
- if (var3 != null) {
- var3.getModel().addChangeListener(this.vsbChangeListener);
- }
-
- if (var4 != null) {
- var4.getModel().addChangeListener(this.hsbChangeListener);
- }
-
- this.scrollpane.addPropertyChangeListener(this.spPropertyChangeListener);
- }
-
- protected void installKeyboardActions(JScrollPane var1) {
- InputMap var2 = this.getInputMap(1);
- SwingUtilities.replaceUIInputMap(var1, 1, var2);
- ActionMap var3 = this.getActionMap();
- SwingUtilities.replaceUIActionMap(var1, var3);
- }
-
- InputMap getInputMap(int var1) {
- return var1 == 1 ? (InputMap)UIManager.get("ScrollPane.ancestorInputMap") : null;
- }
-
- ActionMap getActionMap() {
- ActionMap var1 = (ActionMap)UIManager.get("ScrollPane.actionMap");
- if (var1 == null) {
- var1 = this.createActionMap();
- if (var1 != null) {
- UIManager.put("ScrollPane.actionMap", var1);
- }
- }
-
- return var1;
- }
-
- ActionMap createActionMap() {
- ActionMapUIResource var1 = new ActionMapUIResource();
- ((ActionMap)var1).put("scrollUp", new ScrollAction("scrollUp", 1, -1, true));
- ((ActionMap)var1).put("scrollDown", new ScrollAction("scrollDown", 1, 1, true));
- ((ActionMap)var1).put("scrollLeft", new ScrollAction("scrollLeft", 0, -1, true));
- ((ActionMap)var1).put("scrollRight", new ScrollAction("ScrollRight", 0, 1, true));
- ((ActionMap)var1).put("scrollHome", new ScrollHomeAction("ScrollHome"));
- ((ActionMap)var1).put("scrollEnd", new ScrollEndAction("ScrollEnd"));
- ((ActionMap)var1).put("unitScrollRight", new ScrollAction("UnitScrollRight", 0, 1, false));
- ((ActionMap)var1).put("unitScrollLeft", new ScrollAction("UnitScrollLeft", 0, -1, false));
- ((ActionMap)var1).put("unitScrollUp", new ScrollAction("UnitScrollUp", 1, -1, false));
- ((ActionMap)var1).put("unitScrollDown", new ScrollAction("UnitScrollDown", 1, 1, false));
- return var1;
- }
-
- public void installUI(JComponent var1) {
- this.scrollpane = (JScrollPane)var1;
- this.installDefaults(this.scrollpane);
- this.installListeners(this.scrollpane);
- this.installKeyboardActions(this.scrollpane);
- }
-
- protected void uninstallDefaults(JScrollPane var1) {
- LookAndFeel.uninstallBorder(this.scrollpane);
- if (this.scrollpane.getViewportBorder() instanceof UIResource) {
- this.scrollpane.setViewportBorder((Border)null);
- }
-
- }
-
- protected void uninstallListeners(JComponent var1) {
- JViewport var2 = this.scrollpane.getViewport();
- JScrollBar var3 = this.scrollpane.getVerticalScrollBar();
- JScrollBar var4 = this.scrollpane.getHorizontalScrollBar();
- if (var2 != null) {
- var2.removeChangeListener(this.viewportChangeListener);
- }
-
- if (var3 != null) {
- var3.getModel().removeChangeListener(this.vsbChangeListener);
- }
-
- if (var4 != null) {
- var4.getModel().removeChangeListener(this.hsbChangeListener);
- }
-
- this.scrollpane.removePropertyChangeListener(this.spPropertyChangeListener);
- this.vsbChangeListener = null;
- this.hsbChangeListener = null;
- this.viewportChangeListener = null;
- this.spPropertyChangeListener = null;
- }
-
- protected void uninstallKeyboardActions(JScrollPane var1) {
- SwingUtilities.replaceUIActionMap(var1, (ActionMap)null);
- SwingUtilities.replaceUIInputMap(var1, 1, (InputMap)null);
- }
-
- public void uninstallUI(JComponent var1) {
- this.uninstallDefaults(this.scrollpane);
- this.uninstallListeners(this.scrollpane);
- this.uninstallKeyboardActions(this.scrollpane);
- this.scrollpane = null;
- }
-
- protected void syncScrollPaneWithViewport() {
- JViewport var1 = this.scrollpane.getViewport();
- JScrollBar var2 = this.scrollpane.getVerticalScrollBar();
- JScrollBar var3 = this.scrollpane.getHorizontalScrollBar();
- JViewport var4 = this.scrollpane.getRowHeader();
- JViewport var5 = this.scrollpane.getColumnHeader();
- if (var1 != null) {
- Dimension var6 = var1.getExtentSize();
- Dimension var7 = var1.getViewSize();
- Point var8 = var1.getViewPosition();
- if (var2 != null) {
- int var9 = var6.height;
- int var10 = var7.height;
- int var11 = Math.max(0, Math.min(var8.y, var10 - var9));
- var2.setValues(var11, var9, 0, var10);
- }
-
- if (var3 != null) {
- int var12 = var6.width;
- int var15 = var7.width;
- int var16 = Math.max(0, Math.min(var8.x, var15 - var12));
- var3.setValues(var16, var12, 0, var15);
- }
-
- if (var4 != null) {
- Point var13 = var4.getViewPosition();
- var13.y = var1.getViewPosition().y;
- var4.setViewPosition(var13);
- }
-
- if (var5 != null) {
- Point var14 = var5.getViewPosition();
- var14.x = var1.getViewPosition().x;
- var5.setViewPosition(var14);
- }
- }
-
- }
-
- protected ChangeListener createViewportChangeListener() {
- return new ViewportChangeHandler(this);
- }
-
- protected ChangeListener createHSBChangeListener() {
- return new HSBChangeListener(this);
- }
-
- protected ChangeListener createVSBChangeListener() {
- return new VSBChangeListener(this);
- }
-
- protected void updateScrollBarDisplayPolicy(PropertyChangeEvent var1) {
- this.scrollpane.revalidate();
- this.scrollpane.repaint();
- }
-
- protected void updateViewport(PropertyChangeEvent var1) {
- JViewport var2 = (JViewport)var1.getOldValue();
- JViewport var3 = (JViewport)var1.getNewValue();
- if (var2 != null) {
- var2.removeChangeListener(this.viewportChangeListener);
- }
-
- if (var3 != null) {
- Point var4 = var3.getViewPosition();
- var4.x = Math.max(var4.x, 0);
- var4.y = Math.max(var4.y, 0);
- var3.setViewPosition(var4);
- var3.addChangeListener(this.viewportChangeListener);
- }
-
- }
-
- protected void updateRowHeader(PropertyChangeEvent var1) {
- JViewport var2 = (JViewport)var1.getNewValue();
- if (var2 != null) {
- JViewport var3 = this.scrollpane.getViewport();
- Point var4 = var2.getViewPosition();
- var4.y = var3 != null ? var3.getViewPosition().y : 0;
- var2.setViewPosition(var4);
- }
-
- }
-
- protected void updateColumnHeader(PropertyChangeEvent var1) {
- JViewport var2 = (JViewport)var1.getNewValue();
- if (var2 != null) {
- JViewport var3 = this.scrollpane.getViewport();
- Point var4 = var2.getViewPosition();
- var4.x = var3 != null ? var3.getViewPosition().x : 0;
- var2.setViewPosition(var4);
- this.scrollpane.add(var2, "COLUMN_HEADER");
- }
-
- }
-
- private void updateHorizontalScrollBar(PropertyChangeEvent var1) {
- this.updateScrollBar(var1, this.hsbChangeListener);
- }
-
- private void updateVerticalScrollBar(PropertyChangeEvent var1) {
- this.updateScrollBar(var1, this.vsbChangeListener);
- }
-
- private void updateScrollBar(PropertyChangeEvent var1, ChangeListener var2) {
- if (var2 != null) {
- JScrollBar var3 = (JScrollBar)var1.getOldValue();
- if (var3 != null) {
- var3.getModel().removeChangeListener(var2);
- }
-
- var3 = (JScrollBar)var1.getNewValue();
- if (var3 != null) {
- var3.getModel().addChangeListener(var2);
- }
- }
-
- }
-
- protected PropertyChangeListener createPropertyChangeListener() {
- return new PropertyChangeHandler(this);
- }
-
- // $FF: synthetic method
- static void access$000(BasicScrollPaneUI var0, PropertyChangeEvent var1) {
- var0.updateVerticalScrollBar(var1);
- }
-
- // $FF: synthetic method
- static void access$100(BasicScrollPaneUI var0, PropertyChangeEvent var1) {
- var0.updateHorizontalScrollBar(var1);
- }
- }
-