[kaffe] CVS kaffe (robilad): resynced with gnu classpath: swing fixes
Kaffe CVS
cvs-commits at kaffe.org
Thu May 26 04:16:24 PDT 2005
PatchSet 6574
Date: 2005/05/26 11:10:36
Author: robilad
Branch: HEAD
Tag: (none)
Log:
resynced with gnu classpath: swing fixes
Members:
ChangeLog:1.4101->1.4102
libraries/javalib/javax/swing/AbstractButton.java:1.13->1.14
libraries/javalib/javax/swing/BoxLayout.java:1.6->1.7
libraries/javalib/javax/swing/DefaultListSelectionModel.java:1.6->1.7
libraries/javalib/javax/swing/JButton.java:1.3->1.4
libraries/javalib/javax/swing/JFileChooser.java:1.4->1.5
libraries/javalib/javax/swing/JInternalFrame.java:1.8->1.9
libraries/javalib/javax/swing/JLayeredPane.java:1.6->1.7
libraries/javalib/javax/swing/JMenuItem.java:1.8->1.9
libraries/javalib/javax/swing/JTextArea.java:1.9->1.10
libraries/javalib/javax/swing/JViewport.java:1.8->1.9
libraries/javalib/javax/swing/SwingUtilities.java:1.13->1.14
libraries/javalib/javax/swing/plaf/basic/BasicLookAndFeel.java:1.12->1.13
libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java:1.4->1.5
libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java:1.11->1.12
libraries/javalib/javax/swing/plaf/basic/BasicViewportUI.java:1.5->1.6
libraries/javalib/javax/swing/text/JTextComponent.java:1.17->1.18
libraries/javalib/javax/swing/tree/TreePath.java:1.1->1.2
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4101 kaffe/ChangeLog:1.4102
--- kaffe/ChangeLog:1.4101 Thu May 26 10:24:22 2005
+++ kaffe/ChangeLog Thu May 26 11:10:36 2005
@@ -2,6 +2,125 @@
Resynced with GNU Classpath.
+ 2005-05-25 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/AbstractButton.java:
+ (constructor): Removed model creation.
+ * javax/swing/JButton.java:
+ (constructor): Added model creation.
+ * javax/swing/JMenuItem.java:
+ (init): Added model creation.
+
+ 2005-05-25 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/JLayeredPane.java
+ (static getLayer): Add cast to force a call to the instance method
+ getLayer().
+ (getLayeredPaneAbove): Added and implemented method.
+ * javax/swing/JInternalFrame.java
+ (getLayer): Add cast to force a call to the instance method
+ getLayer() of JLayeredPane.
+
+ 2005-05-25 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/plaf/basic/BasicSplitPaneUI.java
+ (paint): Added check to make sure the split pane divider has
+ a valid location.
+
+ 2005-05-23 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/text/JTextComponent.java
+ (getPreferredScrollableViewportSize): Implemented this method.
+ (getScrollableUnitIncrement): Implemented this method.
+ (getScrollableBlockIncrement): Implemented this method.
+
+ 2005-05-23 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/JTextArea.java
+ (getPreferredScrollableViewportSize): Added and implemented
+ new method.
+ (getScrollableUnitIncrement): Added and implemented new
+ method.
+
+ 2005-05-23 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/JLayeredPane.java
+ (getLayer): Added and implemented new (static) method.
+
+ 2005-05-23 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/JFileChooser.java
+ (constructor(String, FileSystemView)): Added constructor.
+
+ 2005-05-23 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/JViewport.java
+ (createLayoutManager): Added and implemented new method.
+ (constructor): Set the LayoutManager that is created by
+ createLayoutManager().
+ * javax/swing/plaf/basic/BasicViewportUI.java
+ (installUI): Removed setLayout(..). This is moved into
+ the constructor of JViewport (as the API docs suggest).
+
+ 2005-05-23 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/JViewport.java:
+ (ViewListener): Added and implemented inner class.
+ (createViewListener): Added and implemented new method.
+ (setView): Add and remove ViewListener to/from the view component.
+
+ 2005-05-23 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/DefaultListSelectionModel.java
+ (fireValueChanged(boolean)): Added and implemented this method.
+
+ 2005-05-23 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/SwingUtilities.java:
+ (getWindowAncestor): Added and implemented this method.
+
+ 2005-05-23 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/JFileChooser.java:
+ Fixed the values of several public constant fields.
+
+ 2005-05-23 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/plaf/basic/BasicLookAndFeel.java
+ (initComponentDefaults): Uncommented code that has accidentally
+ been commented out.
+
+ 2005-05-22 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/BoxLayout.java
+ (maximumLayoutSize): Added checks for overflow. This is necessary
+ because some components have maximumSize of Integer.MAX_VALUE,
+ that would cause an overflow if summed up.
+
+ 2005-05-22 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/tree/TreePath.java
+ (getParentPath): Return null if this path only has no parent.
+
+ 2005-05-22 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/plaf/basic/BasicTextUI.java:
+ (getMaximumSize): Fixed comment.
+
+ 2005-05-22 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/tree/TreePath.java:
+ Reformatted this file in order to match our coding style.
+
+ 2005-05-22 Roman Kennke <roman at kennke.org>
+
+ * javax/swing/plaf/basic/BasicTextUI.java
+ (getMaximumSize): Implemented this method.
+
+2005-05-26 Dalibor Topic <robilad at kaffe.org>
+
+ Resynced with GNU Classpath.
+
2005-05-25 Audrius Meskauskas <AudriusA at Bioinformatics.org>
* org/omg/CORBA/TRANSIENT.java (serialVersionUID): Added 1.4 SVUID.
Index: kaffe/libraries/javalib/javax/swing/AbstractButton.java
diff -u kaffe/libraries/javalib/javax/swing/AbstractButton.java:1.13 kaffe/libraries/javalib/javax/swing/AbstractButton.java:1.14
--- kaffe/libraries/javalib/javax/swing/AbstractButton.java:1.13 Thu May 19 00:31:20 2005
+++ kaffe/libraries/javalib/javax/swing/AbstractButton.java Thu May 26 11:10:40 2005
@@ -523,14 +523,9 @@
{
this.text = text;
default_icon = icon;
- model = new DefaultButtonModel();
actionListener = createActionListener();
changeListener = createChangeListener();
itemListener = createItemListener();
-
- model.addActionListener(actionListener);
- model.addChangeListener(changeListener);
- model.addItemListener(itemListener);
horizontalAlignment = CENTER;
horizontalTextPosition = TRAILING;
Index: kaffe/libraries/javalib/javax/swing/BoxLayout.java
diff -u kaffe/libraries/javalib/javax/swing/BoxLayout.java:1.6 kaffe/libraries/javalib/javax/swing/BoxLayout.java:1.7
--- kaffe/libraries/javalib/javax/swing/BoxLayout.java:1.6 Sun May 15 10:13:28 2005
+++ kaffe/libraries/javalib/javax/swing/BoxLayout.java Thu May 26 11:10:40 2005
@@ -477,6 +477,9 @@
Component comp = children[index];
Dimension sz = comp.getMaximumSize();
x += sz.width;
+ // Check for overflow.
+ if (x < 0)
+ x = Integer.MAX_VALUE;
y = Math.max(y, sz.height);
}
}
@@ -489,6 +492,9 @@
Component comp = children[index];
Dimension sz = comp.getMaximumSize();
y += sz.height;
+ // Check for overflow
+ if (y < 0)
+ y = Integer.MAX_VALUE;
x = Math.max(x, sz.width);
}
}
Index: kaffe/libraries/javalib/javax/swing/DefaultListSelectionModel.java
diff -u kaffe/libraries/javalib/javax/swing/DefaultListSelectionModel.java:1.6 kaffe/libraries/javalib/javax/swing/DefaultListSelectionModel.java:1.7
--- kaffe/libraries/javalib/javax/swing/DefaultListSelectionModel.java:1.6 Sat Jan 22 18:29:05 2005
+++ kaffe/libraries/javalib/javax/swing/DefaultListSelectionModel.java Thu May 26 11:10:40 2005
@@ -516,6 +516,24 @@
/**
* Fires a {@link ListSelectionEvent} to all the listeners of type {@link
+ * ListSelectionListener} registered with this selection model to
+ * indicate that a series of adjustment has just ended.
+ *
+ * The values of {@link #getMinSelectionIndex} and
+ * {@link getMaxSelectionIndex} are used in the {@link ListSelectionEvent}
+ * that gets fired.
+ *
+ * @param isAdjusting <code>true</code> if this is the final change
+ * in a series of adjustments, <code>false/code> otherwise
+ */
+ protected void fireValueChanged(boolean isAdjusting)
+ {
+ fireValueChanged(getMinSelectionIndex(), getMaxSelectionIndex(),
+ isAdjusting);
+ }
+
+ /**
+ * Fires a {@link ListSelectionEvent} to all the listeners of type {@link
* ListSelectionListener} registered with this selection model.
*
* @param firstIndex The low index of the changed range
Index: kaffe/libraries/javalib/javax/swing/JButton.java
diff -u kaffe/libraries/javalib/javax/swing/JButton.java:1.3 kaffe/libraries/javalib/javax/swing/JButton.java:1.4
--- kaffe/libraries/javalib/javax/swing/JButton.java:1.3 Sun Aug 8 19:46:03 2004
+++ kaffe/libraries/javalib/javax/swing/JButton.java Thu May 26 11:10:40 2005
@@ -78,6 +78,7 @@
public JButton(String text, Icon icon)
{
super(text, icon);
+ setModel(new DefaultButtonModel());
}
public Object[] getSelectedObjects()
Index: kaffe/libraries/javalib/javax/swing/JFileChooser.java
diff -u kaffe/libraries/javalib/javax/swing/JFileChooser.java:1.4 kaffe/libraries/javalib/javax/swing/JFileChooser.java:1.5
--- kaffe/libraries/javalib/javax/swing/JFileChooser.java:1.4 Sat May 21 15:13:39 2005
+++ kaffe/libraries/javalib/javax/swing/JFileChooser.java Thu May 26 11:10:40 2005
@@ -92,58 +92,73 @@
public static final String APPROVE_SELECTION = "ApproveSelection";
/** DOCUMENT ME! */
- public static final String APPROVE_BUTTON_TEXT_CHANGED_PROPERTY = "approvebuttonText";
+ public static final String APPROVE_BUTTON_TEXT_CHANGED_PROPERTY =
+ "ApproveButtonTextChangedProperty";
/** DOCUMENT ME! */
- public static final String APPROVE_BUTTON_TOOL_TIP_TEXT_CHANGED_PROPERTY = "approveButtonToolTipText";
+ public static final String APPROVE_BUTTON_TOOL_TIP_TEXT_CHANGED_PROPERTY =
+ "ApproveButtonToolTipTextChangedProperty";
/** DOCUMENT ME! */
- public static final String APPROVE_BUTTON_MNEMONIC_CHANGED_PROPERTY = "approveButtonMnemonic";
+ public static final String APPROVE_BUTTON_MNEMONIC_CHANGED_PROPERTY =
+ "ApproveButtonMnemonicChangedProperty";
/** DOCUMENT ME! */
- public static final String CONTROL_BUTTONS_ARE_SHOWN_CHANGED_PROPERTY = "controlButtonsAreShown";
+ public static final String CONTROL_BUTTONS_ARE_SHOWN_CHANGED_PROPERTY =
+ "ControlButtonsAreShownChangedProperty";
/** DOCUMENT ME! */
- public static final String DIRECTORY_CHANGED_PROPERTY = "directory";
+ public static final String DIRECTORY_CHANGED_PROPERTY = "directoryChanged";
/** DOCUMENT ME! */
- public static final String SELECTED_FILE_CHANGED_PROPERTY = "SelectedFileChangedProperty";
+ public static final String SELECTED_FILE_CHANGED_PROPERTY =
+ "SelectedFilesChangedProperty";
/** DOCUMENT ME! */
public static final String SELECTED_FILES_CHANGED_PROPERTY = "selectedFiles";
/** DOCUMENT ME! */
- public static final String MULTI_SELECTION_ENABLED_CHANGED_PROPERTY = "multiSelectionEnabled";
+ public static final String MULTI_SELECTION_ENABLED_CHANGED_PROPERTY =
+ "MultiSelectionEnabledChangedProperty";
/** DOCUMENT ME! */
- public static final String FILE_SYSTEM_VIEW_CHANGED_PROPERTY = "fileSystemView";
+ public static final String FILE_SYSTEM_VIEW_CHANGED_PROPERTY =
+ "FileSystemViewChanged";
/** DOCUMENT ME! */
- public static final String FILE_VIEW_CHANGED_PROPERTY = "fileView";
+ public static final String FILE_VIEW_CHANGED_PROPERTY = "fileViewChanged";
/** DOCUMENT ME! */
- public static final String FILE_HIDING_CHANGED_PROPERTY = "fileHidingEnabled";
+ public static final String FILE_HIDING_CHANGED_PROPERTY =
+ "FileHidingChanged";
/** DOCUMENT ME! */
- public static final String FILE_FILTER_CHANGED_PROPERTY = "fileFilter";
+ public static final String FILE_FILTER_CHANGED_PROPERTY =
+ "fileFilterChanged";
/** DOCUMENT ME! */
- public static final String FILE_SELECTION_MODE_CHANGED_PROPERTY = "fileSelectionMode";
+ public static final String FILE_SELECTION_MODE_CHANGED_PROPERTY =
+ "fileSelectionChanged";
/** DOCUMENT ME! */
- public static final String ACCESSORY_CHANGED_PROPERTY = "accessory";
+ public static final String ACCESSORY_CHANGED_PROPERTY =
+ "AccessoryChangedProperty";
/** DOCUMENT ME! */
- public static final String ACCEPT_ALL_FILE_FILTER_USED_CHANGED_PROPERTY = "acceptAllFileFilter";
+ public static final String ACCEPT_ALL_FILE_FILTER_USED_CHANGED_PROPERTY =
+ "acceptAllFileFilterUsedChanged";
/** DOCUMENT ME! */
- public static final String DIALOG_TITLE_CHANGED_PROPERTY = "dialogTitle";
+ public static final String DIALOG_TITLE_CHANGED_PROPERTY =
+ "DialogTitleChangedProperty";
/** DOCUMENT ME! */
- public static final String DIALOG_TYPE_CHANGED_PROPERTY = "dialogType";
+ public static final String DIALOG_TYPE_CHANGED_PROPERTY =
+ "DialogTypeChangedProperty";
/** DOCUMENT ME! */
- public static final String CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY = "choosableFileFilter";
+ public static final String CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY =
+ "ChoosableFileFilterChangedProperty";
/** DOCUMENT ME! */
protected AccessibleContext accessibleContext;
@@ -222,6 +237,20 @@
public JFileChooser(String currentDirectoryPath)
{
setup(null);
+ setCurrentDirectory(fsv.createFileObject(currentDirectoryPath));
+ }
+
+ /**
+ * Creates a new JFileChooser object with the specified directory and
+ * FileSystemView.
+ *
+ * @param currentDirectoryPath the directory that should initially be
+ * shown the filechooser
+ * @param fsv the FileSystemView object to use
+ */
+ public JFileChooser(String currentDirectoryPath, FileSystemView fsv)
+ {
+ setup(fsv);
setCurrentDirectory(fsv.createFileObject(currentDirectoryPath));
}
Index: kaffe/libraries/javalib/javax/swing/JInternalFrame.java
diff -u kaffe/libraries/javalib/javax/swing/JInternalFrame.java:1.8 kaffe/libraries/javalib/javax/swing/JInternalFrame.java:1.9
--- kaffe/libraries/javalib/javax/swing/JInternalFrame.java:1.8 Wed Jan 26 13:40:05 2005
+++ kaffe/libraries/javalib/javax/swing/JInternalFrame.java Thu May 26 11:10:40 2005
@@ -862,7 +862,10 @@
{
JDesktopPane pane = getDesktopPane();
if (pane != null)
- return pane.getLayer(this);
+ // The cast here forces the call to the instance method getLayer()
+ // instead of the static method (this would lead to infinite
+ // recursion).
+ return pane.getLayer((Component) this);
return -1;
}
Index: kaffe/libraries/javalib/javax/swing/JLayeredPane.java
diff -u kaffe/libraries/javalib/javax/swing/JLayeredPane.java:1.6 kaffe/libraries/javalib/javax/swing/JLayeredPane.java:1.7
--- kaffe/libraries/javalib/javax/swing/JLayeredPane.java:1.6 Thu Jan 27 14:02:39 2005
+++ kaffe/libraries/javalib/javax/swing/JLayeredPane.java Thu May 26 11:10:40 2005
@@ -130,6 +130,48 @@
}
/**
+ * Looks up the layer of <code>comp</code> in the component's nearest
+ * JLayeredPane ancestor. If <code>comp</code> is not contained
+ * in a JLayeredPane, the value 0 (default layer) is returned.
+ *
+ * @param comp the component for which the layer is looked up
+ *
+ * @return the layer of <code>comp</code> in its nearest JLayeredPane
+ * ancestor
+ */
+ public static int getLayer(JComponent comp)
+ {
+ JLayeredPane lp = (JLayeredPane) SwingUtilities.getAncestorOfClass
+ (JLayeredPane.class, comp);
+ if (lp == null)
+ return 0;
+ else
+ // The cast here forces the call to the instance method getLayer()
+ // instead of the static method (this would lead to infinite
+ // recursion).
+ return lp.getLayer((Component) comp);
+ }
+
+ /**
+ * Returns the first JLayeredPane that contains the Component
+ * <code>comp</code> or <code>null</code> if <code>comp</code> is
+ * not contained in a JLayeredPane.
+ *
+ * @param comp the component for which we are searching the JLayeredPane
+ * ancestor
+ *
+ * @return the first JLayeredPane that contains the Component
+ * <code>comp</code> or <code>null</code> if <code>comp</code> is
+ * not contained in a JLayeredPane
+ */
+ public static JLayeredPane getLayeredPaneAbove(Component comp)
+ {
+ JLayeredPane lp = (JLayeredPane) SwingUtilities.getAncestorOfClass
+ (JLayeredPane.class, comp);
+ return lp;
+ }
+
+ /**
* <p>Returns a pair of ints representing a half-open interval
* <code>[top, bottom)</code>, which is the range of component indices
* the provided layer number corresponds to.</p>
Index: kaffe/libraries/javalib/javax/swing/JMenuItem.java
diff -u kaffe/libraries/javalib/javax/swing/JMenuItem.java:1.8 kaffe/libraries/javalib/javax/swing/JMenuItem.java:1.9
--- kaffe/libraries/javalib/javax/swing/JMenuItem.java:1.8 Sat Jan 29 15:39:57 2005
+++ kaffe/libraries/javalib/javax/swing/JMenuItem.java Thu May 26 11:10:40 2005
@@ -163,6 +163,7 @@
protected void init(String text, Icon icon)
{
super.init(text, icon);
+ setModel(new DefaultButtonModel());
// Initializes properties for this menu item, that are different
// from Abstract button properties.
Index: kaffe/libraries/javalib/javax/swing/JTextArea.java
diff -u kaffe/libraries/javalib/javax/swing/JTextArea.java:1.9 kaffe/libraries/javalib/javax/swing/JTextArea.java:1.10
--- kaffe/libraries/javalib/javax/swing/JTextArea.java:1.9 Sun May 15 12:06:48 2005
+++ kaffe/libraries/javalib/javax/swing/JTextArea.java Thu May 26 11:10:40 2005
@@ -38,7 +38,9 @@
package javax.swing;
+import java.awt.Dimension;
import java.awt.FontMetrics;
+import java.awt.Rectangle;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
@@ -227,6 +229,55 @@
public boolean getScrollableTracksViewportWidth()
{
return lineWrap ? true : super.getScrollableTracksViewportWidth();
+ }
+
+ /**
+ * Returns the increment that is needed to expose exactly one new line
+ * of text. This is implemented here to return the values of
+ * {@link #getRowHeight} and {@link getColumnWidth}, depending on
+ * the value of the argument <code>direction</code>.
+ *
+ * @param visibleRect the view area that is visible in the viewport
+ * @param orientation either {@link SwingConstants.VERTICAL} or
+ * {@link SwingConstants.HORIZONTAL}
+ * @param direction less than zero for up/left scrolling, greater
+ * than zero for down/right scrolling
+ *
+ * @return the increment that is needed to expose exactly one new row
+ * or column of text
+ *
+ * @throws IllegalArgumentException if <code>orientation</code> is invalid
+ */
+ public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation,
+ int direction)
+ {
+ if (orientation == SwingConstants.VERTICAL)
+ return getRowHeight();
+ else if (orientation == SwingConstants.HORIZONTAL)
+ return getColumnWidth();
+ else
+ throw new IllegalArgumentException("orientation must be either "
+ + "javax.swing.SwingConstants.VERTICAL "
+ + "or "
+ + "javax.swing.SwingConstants.HORIZONTAL"
+ );
+ }
+
+ /**
+ * Returns the preferred size of that text component in the case
+ * it is embedded within a JScrollPane. This uses the column and
+ * row settings if they are explicitly set, or fall back to
+ * the superclass's behaviour.
+ *
+ * @return the preferred size of that text component in the case
+ * it is embedded within a JScrollPane
+ */
+ public Dimension getPreferredScrollableViewportSize()
+ {
+ if ((rows > 0) && (columns > 0))
+ return new Dimension(columns * getColumnWidth(), rows * getRowHeight());
+ else
+ return super.getPreferredScrollableViewportSize();
}
/**
Index: kaffe/libraries/javalib/javax/swing/JViewport.java
diff -u kaffe/libraries/javalib/javax/swing/JViewport.java:1.8 kaffe/libraries/javalib/javax/swing/JViewport.java:1.9
--- kaffe/libraries/javalib/javax/swing/JViewport.java:1.8 Mon Feb 14 21:20:19 2005
+++ kaffe/libraries/javalib/javax/swing/JViewport.java Thu May 26 11:10:44 2005
@@ -42,8 +42,12 @@
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;
+import java.awt.LayoutManager;
import java.awt.Point;
import java.awt.Rectangle;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.io.Serializable;
import javax.swing.border.Border;
import javax.swing.event.ChangeEvent;
@@ -93,6 +97,59 @@
*/
public class JViewport extends JComponent
{
+
+ /**
+ * A {@link java.awt.event.ComponentListener} that listens for
+ * changes of the view's size. This class forbids changes of the view
+ * component's size that would exceed the viewport's size.
+ */
+ protected class ViewListener
+ extends ComponentAdapter
+ implements Serializable
+ {
+ /**
+ * Creates a new instance of ViewListener.
+ */
+ protected ViewListener()
+ {
+ }
+
+ /**
+ * Receives notification when a component (in this case: the view
+ * component) changes it's size.
+ *
+ * @param ev the ComponentEvent describing the change
+ */
+ public void componentResized(ComponentEvent ev)
+ {
+ // According to some tests that I did with Sun's implementation
+ // this class is supposed to make sure that the view component
+ // is not resized to a larger size than the viewport.
+ // This is not documented anywhere. What I did is: I subclassed JViewport
+ // and ViewListener and 'disabled' the componentResized method by
+ // overriding it and not calling super.componentResized().
+ // When this method is disabled I can set the size on the view component
+ // normally, when it is enabled, it gets immediatly resized back,
+ // after a resize attempt that would exceed the Viewport's size.
+ Component comp = ev.getComponent();
+ Dimension newSize = comp.getSize();
+ Dimension viewportSize = getSize();
+ boolean revert = false;
+ if (newSize.width > viewportSize.width)
+ {
+ newSize.width = viewportSize.width;
+ revert = true;
+ }
+ if (newSize.height > viewportSize.height)
+ {
+ newSize.height = viewportSize.height;
+ revert = true;
+ }
+ if (revert == true)
+ comp.setSize(newSize);
+ }
+ }
+
private static final long serialVersionUID = -6925142919680527970L;
public static final int SIMPLE_SCROLL_MODE = 0;
@@ -125,10 +182,16 @@
Point lastPaintPosition;
+ /**
+ * The ViewListener instance.
+ */
+ ViewListener viewListener;
+
public JViewport()
{
setOpaque(true);
setScrollMode(BLIT_SCROLL_MODE);
+ setLayout(createLayoutManager());
updateUI();
}
@@ -267,9 +330,17 @@
public void setView(Component v)
{
while (getComponentCount() > 0)
- remove(0);
+ {
+ if (viewListener != null)
+ getView().removeComponentListener(viewListener);
+ remove(0);
+ }
+
if (v != null)
{
+ if (viewListener == null)
+ viewListener = createViewListener();
+ v.addComponentListener(viewListener);
add(v);
fireStateChanged();
}
@@ -391,5 +462,27 @@
{
if (border != null)
throw new IllegalArgumentException();
+ }
+
+ /**
+ * Creates a {@link ViewListener} that is supposed to listen for
+ * size changes on the view component.
+ *
+ * @return a ViewListener instance
+ */
+ protected ViewListener createViewListener()
+ {
+ return new ViewListener();
+ }
+
+ /**
+ * Creates the LayoutManager that is used for this viewport. Override
+ * this method if you want to use a custom LayoutManager.
+ *
+ * @return a LayoutManager to use for this viewport
+ */
+ protected LayoutManager createLayoutManager()
+ {
+ return new ViewportLayout();
}
}
Index: kaffe/libraries/javalib/javax/swing/SwingUtilities.java
diff -u kaffe/libraries/javalib/javax/swing/SwingUtilities.java:1.13 kaffe/libraries/javalib/javax/swing/SwingUtilities.java:1.14
--- kaffe/libraries/javalib/javax/swing/SwingUtilities.java:1.13 Sat May 21 15:13:39 2005
+++ kaffe/libraries/javalib/javax/swing/SwingUtilities.java Thu May 26 11:10:44 2005
@@ -352,6 +352,25 @@
}
/**
+ * Returns the first ancestor of <code>comp</code> that is a {@link Window}
+ * or <code>null</code> if <code>comp</code> is not contained in a
+ * {@link Window}.
+ *
+ * This is equivalent to calling
+ * <code>getAncestorOfClass(Window, comp)</code> or
+ * <code>windowForComponent(comp)</code>.
+ *
+ * @param comp the component for which we are searching the ancestor Window
+ *
+ * @return the first ancestor Window of <code>comp</code> or
+ * <code>null</code> if <code>comp</code> is not contained in a Window
+ */
+ public Window getWindowAncestor(Component comp)
+ {
+ return (Window) getAncestorOfClass(Window.class, comp);
+ }
+
+ /**
* Equivalent to calling <code>getAncestorOfClass(Window, comp)</code>.
*
* @param comp The component to search for an ancestor window
Index: kaffe/libraries/javalib/javax/swing/plaf/basic/BasicLookAndFeel.java
diff -u kaffe/libraries/javalib/javax/swing/plaf/basic/BasicLookAndFeel.java:1.12 kaffe/libraries/javalib/javax/swing/plaf/basic/BasicLookAndFeel.java:1.13
--- kaffe/libraries/javalib/javax/swing/plaf/basic/BasicLookAndFeel.java:1.12 Sat May 21 15:13:43 2005
+++ kaffe/libraries/javalib/javax/swing/plaf/basic/BasicLookAndFeel.java Thu May 26 11:10:44 2005
@@ -911,7 +911,7 @@
},
"TextPane.margin", new InsetsUIResource(3, 3, 3, 3),
"TextPane.selectionBackground", new ColorUIResource(Color.black),
- "TextPane.selectionForeground", new ColorUIResource(Color.white)/*,
+ "TextPane.selectionForeground", new ColorUIResource(Color.white),
"TitledBorder.border", new BorderUIResource.EtchedBorderUIResource(),
"TitledBorder.font", new FontUIResource("Dialog", Font.PLAIN, 12),
"TitledBorder.titleColor", new ColorUIResource(darkShadow),
@@ -1028,7 +1028,7 @@
"Tree.textForeground", new ColorUIResource(Color.black),
"Viewport.background", new ColorUIResource(light),
"Viewport.foreground", new ColorUIResource(Color.black),
- "Viewport.font", new FontUIResource("Dialog", Font.PLAIN, 12)*/
+ "Viewport.font", new FontUIResource("Dialog", Font.PLAIN, 12)
};
defaults.putDefaults(uiDefaults);
}
Index: kaffe/libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java
diff -u kaffe/libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java:1.4 kaffe/libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java:1.5
--- kaffe/libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java:1.4 Sun Oct 24 10:44:37 2004
+++ kaffe/libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java Thu May 26 11:10:44 2005
@@ -1348,7 +1348,11 @@
*/
public void paint(Graphics g, JComponent jc)
{
- // Do nothing. All the painting is handled by children.
+ // Make sure that the location is valid
+ int divLoc = splitPane.getDividerLocation();
+ int valLoc = validLocation(divLoc);
+ if (divLoc != valLoc)
+ splitPane.setDividerLocation(valLoc);
}
/**
Index: kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java
diff -u kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java:1.11 kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java:1.12
--- kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java:1.11 Sun May 15 18:03:46 2005
+++ kaffe/libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java Thu May 26 11:10:44 2005
@@ -466,7 +466,20 @@
return new Dimension((int) w, (int) h);
}
-
+
+ /**
+ * Returns the maximum size for text components that use this UI.
+ *
+ * This returns (Integer.MAX_VALUE, Integer.MAX_VALUE).
+ *
+ * @return the maximum size for text components that use this UI
+ */
+ public Dimension getMaximumSize(JComponent c)
+ {
+ // Sun's implementation returns Integer.MAX_VALUE here, so do we.
+ return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
+ }
+
public final void paint(Graphics g, JComponent c)
{
paintSafely(g);
Index: kaffe/libraries/javalib/javax/swing/plaf/basic/BasicViewportUI.java
diff -u kaffe/libraries/javalib/javax/swing/plaf/basic/BasicViewportUI.java:1.5 kaffe/libraries/javalib/javax/swing/plaf/basic/BasicViewportUI.java:1.6
--- kaffe/libraries/javalib/javax/swing/plaf/basic/BasicViewportUI.java:1.5 Sun Nov 14 20:03:26 2004
+++ kaffe/libraries/javalib/javax/swing/plaf/basic/BasicViewportUI.java Thu May 26 11:10:44 2005
@@ -103,7 +103,6 @@
public void installUI(JComponent c)
{
super.installUI(c);
- c.setLayout(new ViewportLayout());
installListeners(c);
}
Index: kaffe/libraries/javalib/javax/swing/text/JTextComponent.java
diff -u kaffe/libraries/javalib/javax/swing/text/JTextComponent.java:1.17 kaffe/libraries/javalib/javax/swing/text/JTextComponent.java:1.18
--- kaffe/libraries/javalib/javax/swing/text/JTextComponent.java:1.17 Sat May 21 15:13:45 2005
+++ kaffe/libraries/javalib/javax/swing/text/JTextComponent.java Thu May 26 11:10:45 2005
@@ -69,6 +69,7 @@
import javax.swing.JViewport;
import javax.swing.KeyStroke;
import javax.swing.Scrollable;
+import javax.swing.SwingConstants;
import javax.swing.Timer;
import javax.swing.TransferHandler;
import javax.swing.UIManager;
@@ -1130,19 +1131,39 @@
public Dimension getPreferredScrollableViewportSize()
{
- return null;
+ return getPreferredSize();
}
public int getScrollableUnitIncrement(Rectangle visible, int orientation,
int direction)
{
- return 0;
+ // We return 1/10 of the visible area as documented in Sun's API docs.
+ if (orientation == SwingConstants.HORIZONTAL)
+ return visible.width / 10;
+ else if (orientation == SwingConstants.VERTICAL)
+ return visible.height / 10;
+ else
+ throw new IllegalArgumentException("orientation must be either "
+ + "javax.swing.SwingConstants.VERTICAL "
+ + "or "
+ + "javax.swing.SwingConstants.HORIZONTAL"
+ );
}
public int getScrollableBlockIncrement(Rectangle visible, int orientation,
int direction)
{
- return 0;
+ // We return the whole visible area as documented in Sun's API docs.
+ if (orientation == SwingConstants.HORIZONTAL)
+ return visible.width;
+ else if (orientation == SwingConstants.VERTICAL)
+ return visible.height;
+ else
+ throw new IllegalArgumentException("orientation must be either "
+ + "javax.swing.SwingConstants.VERTICAL "
+ + "or "
+ + "javax.swing.SwingConstants.HORIZONTAL"
+ );
}
/**
Index: kaffe/libraries/javalib/javax/swing/tree/TreePath.java
diff -u kaffe/libraries/javalib/javax/swing/tree/TreePath.java:1.1 kaffe/libraries/javalib/javax/swing/tree/TreePath.java:1.2
--- kaffe/libraries/javalib/javax/swing/tree/TreePath.java:1.1 Thu Jul 22 19:37:43 2004
+++ kaffe/libraries/javalib/javax/swing/tree/TreePath.java Thu May 26 11:10:45 2005
@@ -51,250 +51,247 @@
{
static final long serialVersionUID = 4380036194768077479L;
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * path
- */
- private Object[] path = null;
-
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * Constructor TreePath
- * @param path TODO
- */
- public TreePath(Object[] path) {
-
- // Create Path
- this.path = new Object[path.length];
- System.arraycopy(path, 0, this.path, 0, path.length);
-
- } // TreePath()
-
- /**
- * Constructor TreePath
- * @param element TODO
- */
- public TreePath(Object element) {
-
- // Create Path
- path = new Object[1];
- path[0] = element;
-
- } // TreePath()
-
- /**
- * Constructor TreePath
- * @param path TODO
- * @param element TODO
- */
- protected TreePath(TreePath path, Object element) {
-
- // Variables
- Object[] treepath;
-
- // Get Tree Path
- treepath = path.getPath();
-
- // Create Tree Path
- this.path = new Object[treepath.length + 1];
- System.arraycopy(treepath, 0, this.path, 0, treepath.length);
- this.path[treepath.length] = element;
-
- } // TreePath()
-
- /**
- * Constructor TreePath
- * @param path TODO
- * @param length TODO
- */
- protected TreePath(Object[] path, int length) {
-
- // Create Path
- this.path = new Object[length];
- System.arraycopy(path, 0, this.path, 0, length);
-
- } // TreePath()
-
- /**
- * Constructor TreePath
- */
- protected TreePath() {
- path = new Object[0];
- } // TreePath()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * hashCode
- * @returns int
- */
- public int hashCode() {
- return getLastPathComponent().hashCode();
- } // hashCode()
-
- /**
- * equals
- * @param object TODO
- * @returns boolean
- */
- public boolean equals(Object object) {
-
- // Variables
- Object[] treepath;
- int index;
-
- // Check for TreePath
- if (object instanceof TreePath) {
-
- // Get Path Elements
- treepath = ((TreePath) object).getPath();
-
- // Check length
- if (treepath.length != path.length) {
- return false;
- } // if
-
- // Check Elements
- for (index = 0; index < path.length; index++) {
- if (treepath[index] != path[index]) {
- return false;
- } // if
- } // for
-
- // Tree Path's are equals
- return true;
-
- } // if
-
- // Unequal
- return false;
-
- } // equals()
-
- /**
- * toString
- * @returns String
- */
- public String toString() {
- return null; // TODO
- } // toString()
-
- /**
- * writeObject
- * @param value0 TODO
- * @exception IOException TODO
- */
- private void writeObject(ObjectOutputStream value0) throws IOException {
- // TODO
- } // writeObject()
-
- /**
- * readObject
- * @param value0 TODO
- * @exception IOException TODO
- * @exception ClassNotFoundException TODO
- */
- private void readObject(ObjectInputStream value0) throws IOException, ClassNotFoundException {
- // TODO
- } // readObject()
-
- /**
- * getPath
- * @returns Object[]
- */
- public Object[] getPath() {
- return path;
- } // getPath()
-
- /**
- * getLastPathComponent
- * @returns Object
- */
- public Object getLastPathComponent() {
- return path[path.length - 1];
- } // getLastPathComponent()
-
- /**
- * getPathCount
- * @returns int
- */
- public int getPathCount() {
- return path.length;
- } // getPathCount()
*** Patch too long, truncated ***
More information about the kaffe
mailing list