diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/share/classes/java/awt/font/NumericShaper.java | 8 | ||||
-rw-r--r-- | src/share/classes/javax/swing/JEditorPane.java | 15 | ||||
-rw-r--r-- | src/share/classes/javax/swing/JLayer.java | 60 | ||||
-rw-r--r-- | src/share/classes/javax/swing/JList.java | 24 | ||||
-rw-r--r-- | src/share/classes/javax/swing/JTable.java | 21 | ||||
-rw-r--r-- | src/share/classes/javax/swing/JTextField.java | 2 | ||||
-rw-r--r-- | src/share/classes/javax/swing/JTree.java | 12 | ||||
-rw-r--r-- | src/share/classes/javax/swing/SwingUtilities.java | 63 | ||||
-rw-r--r-- | src/share/classes/javax/swing/plaf/LayerUI.java | 71 | ||||
-rw-r--r-- | src/share/classes/javax/swing/text/JTextComponent.java | 12 | ||||
-rw-r--r-- | src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java | 11 |
11 files changed, 118 insertions, 181 deletions
diff --git a/src/share/classes/java/awt/font/NumericShaper.java b/src/share/classes/java/awt/font/NumericShaper.java index 75f4dbad7..6aff9cba9 100644 --- a/src/share/classes/java/awt/font/NumericShaper.java +++ b/src/share/classes/java/awt/font/NumericShaper.java @@ -1163,8 +1163,14 @@ public final class NumericShaper implements java.io.Serializable { lastkey = newkey; ctxKey = newkey; - if (((mask & EASTERN_ARABIC) != 0) && (ctxKey == ARABIC_KEY || ctxKey == EASTERN_ARABIC_KEY)) { + if (((mask & EASTERN_ARABIC) != 0) && + (ctxKey == ARABIC_KEY || + ctxKey == EASTERN_ARABIC_KEY)) { ctxKey = EASTERN_ARABIC_KEY; + } else if (((mask & ARABIC) != 0) && + (ctxKey == ARABIC_KEY || + ctxKey == EASTERN_ARABIC_KEY)) { + ctxKey = ARABIC_KEY; } else if ((mask & (1<<ctxKey)) == 0) { ctxKey = EUROPEAN_KEY; } diff --git a/src/share/classes/javax/swing/JEditorPane.java b/src/share/classes/javax/swing/JEditorPane.java index eaf61f1e6..acd825c1d 100644 --- a/src/share/classes/javax/swing/JEditorPane.java +++ b/src/share/classes/javax/swing/JEditorPane.java @@ -1330,8 +1330,9 @@ public class JEditorPane extends JTextComponent { */ public Dimension getPreferredSize() { Dimension d = super.getPreferredSize(); - JViewport port = SwingUtilities.getParentViewport(this); - if (port != null) { + Container parent = SwingUtilities.getUnwrappedParent(this); + if (parent instanceof JViewport) { + JViewport port = (JViewport) parent; TextUI ui = getUI(); int prefWidth = d.width; int prefHeight = d.height; @@ -1452,8 +1453,9 @@ public class JEditorPane extends JTextComponent { * match its own, false otherwise */ public boolean getScrollableTracksViewportWidth() { - JViewport port = SwingUtilities.getParentViewport(this); - if (port != null) { + Container parent = SwingUtilities.getUnwrappedParent(this); + if (parent instanceof JViewport) { + JViewport port = (JViewport) parent; TextUI ui = getUI(); int w = port.getWidth(); Dimension min = ui.getMinimumSize(this); @@ -1474,8 +1476,9 @@ public class JEditorPane extends JTextComponent { * false otherwise */ public boolean getScrollableTracksViewportHeight() { - JViewport port = SwingUtilities.getParentViewport(this); - if (port != null) { + Container parent = SwingUtilities.getUnwrappedParent(this); + if (parent instanceof JViewport) { + JViewport port = (JViewport) parent; TextUI ui = getUI(); int h = port.getHeight(); Dimension min = ui.getMinimumSize(this); diff --git a/src/share/classes/javax/swing/JLayer.java b/src/share/classes/javax/swing/JLayer.java index 93f4b7997..ab082cfc5 100644 --- a/src/share/classes/javax/swing/JLayer.java +++ b/src/share/classes/javax/swing/JLayer.java @@ -163,18 +163,6 @@ public final class JLayer<V extends Component> private static final LayerEventController eventController = new LayerEventController(); - private static final long ACCEPTED_EVENTS = - AWTEvent.COMPONENT_EVENT_MASK | - AWTEvent.CONTAINER_EVENT_MASK | - AWTEvent.FOCUS_EVENT_MASK | - AWTEvent.KEY_EVENT_MASK | - AWTEvent.MOUSE_WHEEL_EVENT_MASK | - AWTEvent.MOUSE_MOTION_EVENT_MASK | - AWTEvent.MOUSE_EVENT_MASK | - AWTEvent.INPUT_METHOD_EVENT_MASK | - AWTEvent.HIERARCHY_EVENT_MASK | - AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK; - /** * Creates a new {@code JLayer} object with a {@code null} view component * and {@code null} {@link javax.swing.plaf.LayerUI}. @@ -396,24 +384,14 @@ public final class JLayer<V extends Component> } /** - * Sets the bitmask of event types to receive by this {@code JLayer}. - * Here is the list of the supported event types: - * <ul> - * <li>AWTEvent.COMPONENT_EVENT_MASK</li> - * <li>AWTEvent.CONTAINER_EVENT_MASK</li> - * <li>AWTEvent.FOCUS_EVENT_MASK</li> - * <li>AWTEvent.KEY_EVENT_MASK</li> - * <li>AWTEvent.MOUSE_WHEEL_EVENT_MASK</li> - * <li>AWTEvent.MOUSE_MOTION_EVENT_MASK</li> - * <li>AWTEvent.MOUSE_EVENT_MASK</li> - * <li>AWTEvent.INPUT_METHOD_EVENT_MASK</li> - * <li>AWTEvent.HIERARCHY_EVENT_MASK</li> - * <li>AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK</li> - * </ul> + * Enables the events from JLayer and <b>all its descendants</b> + * defined by the specified event mask parameter + * to be delivered to the + * {@link LayerUI#eventDispatched(AWTEvent, JLayer)} method. * <p/> - * If {@code LayerUI} is installed, - * {@link javax.swing.plaf.LayerUI#eventDispatched(AWTEvent, JLayer)} method - * will only receive events that match the event mask. + * Events are delivered provided that {@code LayerUI} is set + * for this {@code JLayer} and the {@code JLayer} + * is displayable. * <p/> * The following example shows how to correclty use this method * in the {@code LayerUI} implementations: @@ -433,19 +411,15 @@ public final class JLayer<V extends Component> * } * </pre> * - * By default {@code JLayer} receives no events. + * By default {@code JLayer} receives no events and its event mask is {@code 0}. * * @param layerEventMask the bitmask of event types to receive * - * @throws IllegalArgumentException if the {@code layerEventMask} parameter - * contains unsupported event types * @see #getLayerEventMask() + * @see LayerUI#eventDispatched(AWTEvent, JLayer) + * @see Component#isDisplayable() */ public void setLayerEventMask(long layerEventMask) { - if (layerEventMask != (layerEventMask & ACCEPTED_EVENTS)) { - throw new IllegalArgumentException( - "The event bitmask contains unsupported event types"); - } long oldEventMask = getLayerEventMask(); this.eventMask = layerEventMask; firePropertyChange("layerEventMask", oldEventMask, layerEventMask); @@ -629,6 +603,18 @@ public final class JLayer<V extends Component> private long currentEventMask; + private static final long ACCEPTED_EVENTS = + AWTEvent.COMPONENT_EVENT_MASK | + AWTEvent.CONTAINER_EVENT_MASK | + AWTEvent.FOCUS_EVENT_MASK | + AWTEvent.KEY_EVENT_MASK | + AWTEvent.MOUSE_WHEEL_EVENT_MASK | + AWTEvent.MOUSE_MOTION_EVENT_MASK | + AWTEvent.MOUSE_EVENT_MASK | + AWTEvent.INPUT_METHOD_EVENT_MASK | + AWTEvent.HIERARCHY_EVENT_MASK | + AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK; + @SuppressWarnings("unchecked") public void eventDispatched(AWTEvent event) { Object source = event.getSource(); @@ -660,6 +646,8 @@ public final class JLayer<V extends Component> for (Long mask : layerMaskList) { combinedMask |= mask; } + // filter out all unaccepted events + combinedMask &= ACCEPTED_EVENTS; if (combinedMask == 0) { removeAWTEventListener(); } else if (getCurrentEventMask() != combinedMask) { diff --git a/src/share/classes/javax/swing/JList.java b/src/share/classes/javax/swing/JList.java index 8a86bda54..10aa3adf9 100644 --- a/src/share/classes/javax/swing/JList.java +++ b/src/share/classes/javax/swing/JList.java @@ -25,17 +25,7 @@ package javax.swing; -import java.awt.Color; -import java.awt.Component; -import java.awt.Cursor; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.FontMetrics; -import java.awt.GraphicsEnvironment; -import java.awt.HeadlessException; -import java.awt.Insets; -import java.awt.Point; -import java.awt.Rectangle; +import java.awt.*; import java.awt.event.*; import java.util.Vector; @@ -2779,9 +2769,9 @@ public class JList<E> extends JComponent implements Scrollable, Accessible getVisibleRowCount() <= 0) { return true; } - JViewport port = SwingUtilities.getParentViewport(this); - if (port != null) { - return port.getWidth() > getPreferredSize().width; + Container parent = SwingUtilities.getUnwrappedParent(this); + if (parent instanceof JViewport) { + return parent.getWidth() > getPreferredSize().width; } return false; } @@ -2805,9 +2795,9 @@ public class JList<E> extends JComponent implements Scrollable, Accessible getVisibleRowCount() <= 0) { return true; } - JViewport port = SwingUtilities.getParentViewport(this); - if (port != null) { - return port.getHeight() > getPreferredSize().height; + Container parent = SwingUtilities.getUnwrappedParent(this); + if (parent instanceof JViewport) { + return parent.getHeight() > getPreferredSize().height; } return false; } diff --git a/src/share/classes/javax/swing/JTable.java b/src/share/classes/javax/swing/JTable.java index 236e59102..09157ca93 100644 --- a/src/share/classes/javax/swing/JTable.java +++ b/src/share/classes/javax/swing/JTable.java @@ -719,8 +719,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @see #addNotify */ protected void configureEnclosingScrollPane() { - JViewport port = SwingUtilities.getParentViewport(this); - if (port != null) { + Container parent = SwingUtilities.getUnwrappedParent(this); + if (parent instanceof JViewport) { + JViewport port = (JViewport) parent; Container gp = port.getParent(); if (gp instanceof JScrollPane) { JScrollPane scrollPane = (JScrollPane)gp; @@ -752,8 +753,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * from configureEnclosingScrollPane() and updateUI() in a safe manor. */ private void configureEnclosingScrollPaneUI() { - JViewport port = SwingUtilities.getParentViewport(this); - if (port != null) { + Container parent = SwingUtilities.getUnwrappedParent(this); + if (parent instanceof JViewport) { + JViewport port = (JViewport) parent; Container gp = port.getParent(); if (gp instanceof JScrollPane) { JScrollPane scrollPane = (JScrollPane)gp; @@ -822,8 +824,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @since 1.3 */ protected void unconfigureEnclosingScrollPane() { - JViewport port = SwingUtilities.getParentViewport(this); - if (port != null) { + Container parent = SwingUtilities.getUnwrappedParent(this); + if (parent instanceof JViewport) { + JViewport port = (JViewport) parent; Container gp = port.getParent(); if (gp instanceof JScrollPane) { JScrollPane scrollPane = (JScrollPane)gp; @@ -5217,10 +5220,10 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @see #getFillsViewportHeight */ public boolean getScrollableTracksViewportHeight() { - JViewport port = SwingUtilities.getParentViewport(this); + Container parent = SwingUtilities.getUnwrappedParent(this); return getFillsViewportHeight() - && port != null - && port.getHeight() > getPreferredSize().height; + && parent instanceof JViewport + && parent.getHeight() > getPreferredSize().height; } /** diff --git a/src/share/classes/javax/swing/JTextField.java b/src/share/classes/javax/swing/JTextField.java index 24a3408d1..e1e6b640c 100644 --- a/src/share/classes/javax/swing/JTextField.java +++ b/src/share/classes/javax/swing/JTextField.java @@ -292,7 +292,7 @@ public class JTextField extends JTextComponent implements SwingConstants { */ @Override public boolean isValidateRoot() { - return SwingUtilities.getParentViewport(this) == null; + return !(SwingUtilities.getUnwrappedParent(this) instanceof JViewport); } diff --git a/src/share/classes/javax/swing/JTree.java b/src/share/classes/javax/swing/JTree.java index 55815b81d..788aeab1f 100644 --- a/src/share/classes/javax/swing/JTree.java +++ b/src/share/classes/javax/swing/JTree.java @@ -3498,9 +3498,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * @see Scrollable#getScrollableTracksViewportWidth */ public boolean getScrollableTracksViewportWidth() { - JViewport port = SwingUtilities.getParentViewport(this); - if (port != null) { - return port.getWidth() > getPreferredSize().width; + Container parent = SwingUtilities.getUnwrappedParent(this); + if (parent instanceof JViewport) { + return parent.getWidth() > getPreferredSize().width; } return false; } @@ -3515,9 +3515,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * @see Scrollable#getScrollableTracksViewportHeight */ public boolean getScrollableTracksViewportHeight() { - JViewport port = SwingUtilities.getParentViewport(this); - if (port != null) { - return port.getHeight() > getPreferredSize().height; + Container parent = SwingUtilities.getUnwrappedParent(this); + if (parent instanceof JViewport) { + return parent.getHeight() > getPreferredSize().height; } return false; } diff --git a/src/share/classes/javax/swing/SwingUtilities.java b/src/share/classes/javax/swing/SwingUtilities.java index 1221c4bce..65b267eb8 100644 --- a/src/share/classes/javax/swing/SwingUtilities.java +++ b/src/share/classes/javax/swing/SwingUtilities.java @@ -1969,58 +1969,53 @@ public class SwingUtilities implements SwingConstants } /** - * Looks for the first ancestor of the {@code component} + * Returns the first ancestor of the {@code component} * which is not an instance of {@link JLayer}. - * If this ancestor is an instance of {@code JViewport}, - * this {@code JViewport} is returned, otherwise returns {@code null}. - * The following way of obtaining the parent {@code JViewport} - * is not recommended any more: - * <pre> - * JViewport port = null; - * Container parent = component.getParent(); - * // not recommended any more - * if(parent instanceof JViewport) { - * port = (JViewport) parent; - * } - * </pre> - * Here is the way to go: - * <pre> - * // the correct way: - * JViewport port = SwingUtilities.getParentViewport(component); - * </pre> - * @param component {@code Component} to get the parent {@code JViewport} of. - * @return the {@code JViewport} instance for the {@code component} - * or {@code null} + * + * @param component {@code Component} to get + * the first ancestor of, which is not a {@link JLayer} instance. + * + * @return the first ancestor of the {@code component} + * which is not an instance of {@link JLayer}. + * If such an ancestor can not be found, {@code null} is returned. + * * @throws NullPointerException if {@code component} is {@code null} + * @see JLayer * * @since 1.7 */ - public static JViewport getParentViewport(Component component) { - do { - component = component.getParent(); - if (component instanceof JViewport) { - return (JViewport) component; - } - } while(component instanceof JLayer); - return null; + public static Container getUnwrappedParent(Component component) { + Container parent = component.getParent(); + while(parent instanceof JLayer) { + parent = parent.getParent(); + } + return parent; } /** * Returns the first {@code JViewport}'s descendant - * which is not an instance of {@code JLayer} or {@code null}. + * which is not an instance of {@code JLayer}. + * If such a descendant can not be found, {@code null} is returned. * * If the {@code viewport}'s view component is not a {@code JLayer}, - * this method is equal to {@link JViewport#getView()} - * otherwise {@link JLayer#getView()} will be recursively tested + * this method is equivalent to {@link JViewport#getView()} + * otherwise {@link JLayer#getView()} will be recursively + * called on all descending {@code JLayer}s. + * + * @param viewport {@code JViewport} to get the first descendant of, + * which in not a {@code JLayer} instance. * * @return the first {@code JViewport}'s descendant - * which is not an instance of {@code JLayer} or {@code null}. + * which is not an instance of {@code JLayer}. + * If such a descendant can not be found, {@code null} is returned. * * @throws NullPointerException if {@code viewport} is {@code null} * @see JViewport#getView() * @see JLayer + * + * @since 1.7 */ - static Component getUnwrappedView(JViewport viewport) { + public static Component getUnwrappedView(JViewport viewport) { Component view = viewport.getView(); while (view instanceof JLayer) { view = ((JLayer)view).getView(); diff --git a/src/share/classes/javax/swing/plaf/LayerUI.java b/src/share/classes/javax/swing/plaf/LayerUI.java index 7f2967bf4..07df96cd4 100644 --- a/src/share/classes/javax/swing/plaf/LayerUI.java +++ b/src/share/classes/javax/swing/plaf/LayerUI.java @@ -72,58 +72,18 @@ public class LayerUI<V extends Component> * the specified {@code Graphics} object to * render the content of the component. * <p/> - * If {@code g} is not an instance of {@code Graphics2D}, - * this method is no-op. + * The default implementation paints the passed component as is. * - * @param g the {@code Graphics} context in which to paint; - * @param c the component being painted; - * it can be safely cast to {@code JLayer<? extends V>} - * - * @see #configureGraphics(Graphics2D, JLayer) - * @see #paintLayer(Graphics2D, JLayer) + * @param g the {@code Graphics} context in which to paint + * @param c the component being painted */ public void paint(Graphics g, JComponent c) { - if (g instanceof Graphics2D) { - Graphics2D g2 = (Graphics2D) g.create(); - JLayer<? extends V> l = (JLayer<? extends V>) c; - configureGraphics(g2, l); - paintLayer(g2, l); - g2.dispose(); - } - } - - /** - * This method is called by the {@link #paint} method prior to - * {@link #paintLayer} to configure the {@code Graphics2D} object. - * The default implementation is empty. - * - * @param g2 the {@code Graphics2D} object to configure - * @param l the {@code JLayer} being painted - * - * @see #paintLayer(Graphics2D, JLayer) - */ - protected void configureGraphics(Graphics2D g2, JLayer<? extends V> l) { - } - - /** - * Called by the {@link #paint} method, - * subclasses should override this method - * to perform any custom painting operations. - * <p/> - * The default implementation paints the passed {@code JLayer} as is. - * - * @param g2 the {@code Graphics2D} context in which to paint - * @param l the {@code JLayer} being painted - * - * @see #configureGraphics(Graphics2D, JLayer) - */ - protected void paintLayer(Graphics2D g2, JLayer<? extends V> l) { - l.paint(g2); + c.paint(g); } /** - * Dispatches {@code AWTEvent}s for {@code JLayer} - * and <b>all its subcomponents</b> to this {@code LayerUI} instance. + * Processes {@code AWTEvent}s for {@code JLayer} + * and <b>all its descendants</b> to this {@code LayerUI} instance. * <p/> * To enable the {@code AWTEvent}s of a particular type, * you call {@link JLayer#setLayerEventMask} @@ -133,13 +93,14 @@ public class LayerUI<V extends Component> * By default this method calls the appropriate * {@code process<event type>Event} * method for the given class of event. + * <p/> + * <b>Note:</b> Events are processed only for displayable {@code JLayer}s. * * @param e the event to be dispatched * @param l the layer this LayerUI is set to * * @see JLayer#setLayerEventMask(long) - * @see #installUI(javax.swing.JComponent) - * @see #uninstallUI(javax.swing.JComponent) + * @see Component#isDisplayable() * @see #processComponentEvent * @see #processFocusEvent * @see #processKeyEvent @@ -628,17 +589,6 @@ public class LayerUI<V extends Component> } /** - * Repaints all {@code JLayer} instances this {@code LayerUI} is set to. - * Call this method when the state of this {@code LayerUI} is changed - * and the visual appearance of its {@code JLayer} objects needs to be updated. - * - * @see Component#repaint() - */ - protected void repaintLayer() { - firePropertyChange("dirty", null, null); - } - - /** * Notifies the {@code LayerUI} when any of its property are changed * and enables updating every {@code JLayer} * this {@code LayerUI} instance is set to. @@ -647,9 +597,6 @@ public class LayerUI<V extends Component> * @param l the {@code JLayer} this LayerUI is set to */ public void applyPropertyChange(PropertyChangeEvent evt, JLayer<? extends V> l) { - if ("dirty".equals(evt.getPropertyName())) { - l.repaint(); - } } /** diff --git a/src/share/classes/javax/swing/text/JTextComponent.java b/src/share/classes/javax/swing/text/JTextComponent.java index 25ddaf9e3..832c6095e 100644 --- a/src/share/classes/javax/swing/text/JTextComponent.java +++ b/src/share/classes/javax/swing/text/JTextComponent.java @@ -2069,9 +2069,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * width to match its own */ public boolean getScrollableTracksViewportWidth() { - JViewport port = SwingUtilities.getParentViewport(this); - if (port != null) { - return port.getWidth() > getPreferredSize().width; + Container parent = SwingUtilities.getUnwrappedParent(this); + if (parent instanceof JViewport) { + return parent.getWidth() > getPreferredSize().width; } return false; } @@ -2090,9 +2090,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * to match its own */ public boolean getScrollableTracksViewportHeight() { - JViewport port = SwingUtilities.getParentViewport(this); - if (port != null) { - return (port.getHeight() > getPreferredSize().height); + Container parent = SwingUtilities.getUnwrappedParent(this); + if (parent instanceof JViewport) { + return parent.getHeight() > getPreferredSize().height; } return false; } diff --git a/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java b/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java index b7639fa77..1a5319834 100644 --- a/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java +++ b/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java @@ -403,9 +403,14 @@ public class Win32ShellFolderManager2 extends ShellFolderManager { } } String path = dir.getPath(); - return (path.length() == 3 - && path.charAt(1) == ':' - && Arrays.asList(drives.listFiles()).contains(dir)); + + if (path.length() != 3 || path.charAt(1) != ':') { + return false; + } + + File[] files = drives.listFiles(); + + return files != null && Arrays.asList(files).contains(dir); } return false; } |