7117008: Warnings cleanup day: reduce number of javac warnings in the sun.awt package

Reviewed-by: anthony, denis, bagiras
This commit is contained in:
Artem Ananiev 2011-12-07 17:45:22 +04:00
parent 34876429cb
commit 277bb6b756
20 changed files with 144 additions and 1094 deletions

View File

@ -26,10 +26,13 @@
package sun.awt;
import java.awt.AWTEvent;
import java.util.Collections;
import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.Set;
import sun.util.logging.PlatformLogger;
/**
@ -81,7 +84,7 @@ public final class AWTAutoShutdown implements Runnable {
* new event to appear in their event queue.
* Access is synchronized on the main lock object.
*/
private final HashSet busyThreadSet = new HashSet(7);
private final Set<Thread> busyThreadSet = new HashSet<>(7);
/**
* Indicates whether the toolkit thread is waiting for a new native
@ -93,7 +96,7 @@ public final class AWTAutoShutdown implements Runnable {
* This is a map between components and their peers.
* we should work with in under activationLock&mainLock lock.
*/
private final Map peerMap = new IdentityHashMap();
private final Map<Object, Object> peerMap = new IdentityHashMap<>();
/**
* References the alive non-daemon thread that is currently used
@ -319,8 +322,10 @@ public final class AWTAutoShutdown implements Runnable {
}
}
@SuppressWarnings("serial")
static AWTEvent getShutdownEvent() {
return new AWTEvent(getInstance(), 0) {};
return new AWTEvent(getInstance(), 0) {
};
}
/**

View File

@ -171,7 +171,7 @@ public final class AppContext {
* HashMap's potentially risky methods, such as clear(), elements(),
* putAll(), etc.
*/
private final HashMap table = new HashMap();
private final Map<Object, Object> table = new HashMap<>();
private final ThreadGroup threadGroup;
@ -198,8 +198,8 @@ public final class AppContext {
// On the main Thread, we get the ThreadGroup, make a corresponding
// AppContext, and instantiate the Java EventQueue. This way, legacy
// code is unaffected by the move to multiple AppContext ability.
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
AccessController.doPrivileged(new PrivilegedAction<Void>() {
public Void run() {
ThreadGroup currentThreadGroup =
Thread.currentThread().getThreadGroup();
ThreadGroup parentThreadGroup = currentThreadGroup.getParent();
@ -210,7 +210,7 @@ public final class AppContext {
}
mainAppContext = new AppContext(currentThreadGroup);
numAppContexts = 1;
return mainAppContext;
return null;
}
});
}
@ -399,8 +399,8 @@ public final class AppContext {
log.finer("exception occured while disposing app context", t);
}
}
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
AccessController.doPrivileged(new PrivilegedAction<Void>() {
public Void run() {
if (!GraphicsEnvironment.isHeadless() && SystemTray.isSupported())
{
SystemTray systemTray = SystemTray.getSystemTray();
@ -523,7 +523,7 @@ public final class AppContext {
}
}
static final class CreateThreadAction implements PrivilegedAction {
static final class CreateThreadAction implements PrivilegedAction<Thread> {
private final AppContext appContext;
private final Runnable runnable;
@ -532,7 +532,7 @@ public final class AppContext {
runnable = r;
}
public Object run() {
public Thread run() {
Thread t = new Thread(appContext.getThreadGroup(), runnable);
t.setContextClassLoader(appContext.getContextClassLoader());
t.setPriority(Thread.NORM_PRIORITY + 1);
@ -552,8 +552,8 @@ public final class AppContext {
if (appContext != AppContext.getAppContext()) {
// Create a thread that belongs to the thread group associated
// with the AppContext and invokes EventQueue.postEvent.
PrivilegedAction action = new CreateThreadAction(appContext, r);
Thread thread = (Thread)AccessController.doPrivileged(action);
PrivilegedAction<Thread> action = new CreateThreadAction(appContext, r);
Thread thread = AccessController.doPrivileged(action);
thread.start();
} else {
r.run();

View File

@ -35,6 +35,7 @@ import java.awt.Component;
* CausedFocusEvent class or implicitly, by calling appropriate requestFocusXXX method with "cause"
* parameter. The default cause is UNKNOWN.
*/
@SuppressWarnings("serial")
public class CausedFocusEvent extends FocusEvent {
public enum Cause {
UNKNOWN,

View File

@ -87,9 +87,9 @@ final class DebugSettings {
};
/* global instance of the settings object */
private static DebugSettings instance = null;
private static DebugSettings instance = null;
private Properties props = new Properties();
private Properties props = new Properties();
static void init() {
if (instance != null) {
@ -102,12 +102,13 @@ final class DebugSettings {
}
private DebugSettings() {
new java.security.PrivilegedAction() {
public Object run() {
loadProperties();
return null;
}
}.run();
java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<Void>() {
public Void run() {
loadProperties();
return null;
}
});
}
/*
@ -117,15 +118,14 @@ final class DebugSettings {
private synchronized void loadProperties() {
// setup initial properties
java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction()
{
public Object run() {
loadDefaultProperties();
loadFileProperties();
loadSystemProperties();
return null;
}
});
new java.security.PrivilegedAction<Void>() {
public Void run() {
loadDefaultProperties();
loadFileProperties();
loadSystemProperties();
return null;
}
});
// echo the initial property settings to stdout
if (log.isLoggable(PlatformLogger.FINE)) {
@ -134,12 +134,9 @@ final class DebugSettings {
}
public String toString() {
Enumeration enum_ = props.propertyNames();
ByteArrayOutputStream bout = new ByteArrayOutputStream();
PrintStream pout = new PrintStream(bout);
while (enum_.hasMoreElements()) {
String key = (String)enum_.nextElement();
for (String key : props.stringPropertyNames()) {
String value = props.getProperty(key, "");
pout.println(key + " = " + value);
}
@ -198,9 +195,7 @@ final class DebugSettings {
private void loadSystemProperties() {
// override file properties with system properties
Properties sysProps = System.getProperties();
Enumeration enum_ = sysProps.propertyNames();
while ( enum_.hasMoreElements() ) {
String key = (String)enum_.nextElement();
for (String key : sysProps.stringPropertyNames()) {
String value = sysProps.getProperty(key,"");
// copy any "awtdebug" properties over
if ( key.startsWith(PREFIX) ) {
@ -244,17 +239,14 @@ final class DebugSettings {
return value;
}
public synchronized Enumeration getPropertyNames() {
Vector propNames = new Vector();
Enumeration enum_ = props.propertyNames();
private synchronized List<String> getPropertyNames() {
List<String> propNames = new LinkedList<>();
// remove global prefix from property names
while ( enum_.hasMoreElements() ) {
String propName = (String)enum_.nextElement();
for (String propName : props.stringPropertyNames()) {
propName = propName.substring(PREFIX.length()+1);
propNames.addElement(propName);
propNames.add(propName);
}
return propNames.elements();
return propNames;
}
private void println(Object object) {
@ -279,13 +271,11 @@ final class DebugSettings {
//
// Filter out file/line ctrace properties from debug settings
//
Vector traces = new Vector();
Enumeration enum_ = getPropertyNames();
List<String> traces = new LinkedList<>();
while ( enum_.hasMoreElements() ) {
String key = (String)enum_.nextElement();
if ( key.startsWith(PROP_CTRACE) && key.length() > PROP_CTRACE_LEN ) {
traces.addElement(key);
for (String key : getPropertyNames()) {
if (key.startsWith(PROP_CTRACE) && key.length() > PROP_CTRACE_LEN) {
traces.add(key);
}
}
@ -295,15 +285,12 @@ final class DebugSettings {
//
// Setup the trace points
//
Enumeration enumTraces = traces.elements();
while ( enumTraces.hasMoreElements() ) {
String key = (String)enumTraces.nextElement();
String trace = key.substring(PROP_CTRACE_LEN+1);
for (String key : traces) {
String trace = key.substring(PROP_CTRACE_LEN+1);
String filespec;
String linespec;
int delim= trace.indexOf('@');
boolean enabled;
int delim= trace.indexOf('@');
boolean enabled;
// parse out the filename and linenumber from the property name
filespec = delim != -1 ? trace.substring(0, delim) : trace;

View File

@ -180,6 +180,7 @@ public abstract class EmbeddedFrame extends Frame
* reference to our EmbeddedFrame forever if the Frame is no longer in use, so we
* add listeners in show() and remove them in hide().
*/
@SuppressWarnings("deprecation")
public void show() {
if (appletKFM != null) {
addTraversingOutListeners(appletKFM);
@ -193,6 +194,7 @@ public abstract class EmbeddedFrame extends Frame
* reference to our EmbeddedFrame forever if the Frame is no longer in use, so we
* add listeners in show() and remove them in hide().
*/
@SuppressWarnings("deprecation")
public void hide() {
if (appletKFM != null) {
removeTraversingOutListeners(appletKFM);
@ -212,8 +214,8 @@ public abstract class EmbeddedFrame extends Frame
// belongs to. That's why we can't use public methods to find current focus cycle
// root. Instead, we access KFM's private field directly.
if (currentCycleRoot == null) {
currentCycleRoot = (Field)AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
currentCycleRoot = AccessController.doPrivileged(new PrivilegedAction<Field>() {
public Field run() {
try {
Field unaccessibleRoot = KeyboardFocusManager.class.
getDeclaredField("currentFocusCycleRoot");
@ -257,7 +259,7 @@ public abstract class EmbeddedFrame extends Frame
}
AWTKeyStroke stroke = AWTKeyStroke.getAWTKeyStrokeForEvent(e);
Set toTest;
Set<AWTKeyStroke> toTest;
Component currentFocused = e.getComponent();
toTest = getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
@ -357,6 +359,7 @@ public abstract class EmbeddedFrame extends Frame
return true;
}
@SuppressWarnings("deprecation")
public void addNotify() {
synchronized (getTreeLock()) {
if (getPeer() == null) {
@ -367,6 +370,7 @@ public abstract class EmbeddedFrame extends Frame
}
// These three functions consitute RFE 4100710. Do not remove.
@SuppressWarnings("deprecation")
public void setCursorAllowed(boolean isCursorAllowed) {
this.isCursorAllowed = isCursorAllowed;
getPeer().updateCursorImmediately();
@ -380,27 +384,28 @@ public abstract class EmbeddedFrame extends Frame
: Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);
}
protected void setPeer(final ComponentPeer p){
@SuppressWarnings("deprecation")
protected void setPeer(final ComponentPeer p){
if (fieldPeer == null) {
fieldPeer = (Field)AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
try {
Field lnkPeer = Component.class.getDeclaredField("peer");
if (lnkPeer != null) {
lnkPeer.setAccessible(true);
}
return lnkPeer;
} catch (NoSuchFieldException e) {
assert false;
} catch (SecurityException e) {
assert false;
fieldPeer = AccessController.doPrivileged(new PrivilegedAction<Field>() {
public Field run() {
try {
Field lnkPeer = Component.class.getDeclaredField("peer");
if (lnkPeer != null) {
lnkPeer.setAccessible(true);
}
return null;
}//run
});
return lnkPeer;
} catch (NoSuchFieldException e) {
assert false;
} catch (SecurityException e) {
assert false;
}
return null;
}//run
});
}
try{
if (fieldPeer !=null){
if (fieldPeer != null){
fieldPeer.set(EmbeddedFrame.this, p);
}
} catch (IllegalAccessException e) {
@ -507,6 +512,7 @@ public abstract class EmbeddedFrame extends Frame
* @see #getBoundsPrivate
* @since 1.5
*/
@SuppressWarnings("deprecation")
protected void setBoundsPrivate(int x, int y, int width, int height) {
final FramePeer peer = (FramePeer)getPeer();
if (peer != null) {
@ -538,6 +544,7 @@ public abstract class EmbeddedFrame extends Frame
* @see #setBoundsPrivate
* @since 1.6
*/
@SuppressWarnings("deprecation")
protected Rectangle getBoundsPrivate() {
final FramePeer peer = (FramePeer)getPeer();
if (peer != null) {

View File

@ -53,20 +53,15 @@ public class EventListenerAggregate {
* @throws ClassCastException if <code>listenerClass</code> is not
* assignable to <code>java.util.EventListener</code>
*/
public EventListenerAggregate(Class listenerClass) {
public EventListenerAggregate(Class<? extends EventListener> listenerClass) {
if (listenerClass == null) {
throw new NullPointerException("listener class is null");
}
if (!EventListener.class.isAssignableFrom(listenerClass)) {
throw new ClassCastException("listener class " + listenerClass +
" is not assignable to EventListener");
}
listenerList = (EventListener[])Array.newInstance(listenerClass, 0);
}
private Class getListenerClass() {
private Class<?> getListenerClass() {
return listenerList.getClass().getComponentType();
}
@ -80,7 +75,7 @@ public class EventListenerAggregate {
* in the constructor
*/
public synchronized void add(EventListener listener) {
Class listenerClass = getListenerClass();
Class<?> listenerClass = getListenerClass();
if (!listenerClass.isInstance(listener)) { // null is not an instance of any class
throw new ClassCastException("listener " + listener + " is not " +
@ -107,7 +102,7 @@ public class EventListenerAggregate {
* in the constructor
*/
public synchronized boolean remove(EventListener listener) {
Class listenerClass = getListenerClass();
Class<?> listenerClass = getListenerClass();
if (!listenerClass.isInstance(listener)) { // null is not an instance of any class
throw new ClassCastException("listener " + listener + " is not " +
@ -155,7 +150,7 @@ public class EventListenerAggregate {
* array if there are no listeners)
*/
public synchronized EventListener[] getListenersCopy() {
return (listenerList.length == 0) ? listenerList : (EventListener[])listenerList.clone();
return (listenerList.length == 0) ? listenerList : listenerList.clone();
}
/**

View File

@ -1,109 +0,0 @@
/*
* Copyright (c) 1995, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.awt;
import java.awt.*;
/**
* FocusingTextField: a subclass of java.awt.TextField that handles moving the
* input focus from field to field, as when the user hits 'return.'
*
* @author Herb Jellinek
*/
public class FocusingTextField extends TextField {
/** The field to move to on 'return' - can be null. */
TextField next;
/** If true, select the contents of the field when it gets the focus. */
boolean willSelect;
/**
* Create a FocusingTextField.
* @param cols number of columns of text.
*/
public FocusingTextField(int cols) {
super("", cols);
}
/**
* Create a FocusingTextField.
* @param cols number of columns of text.
* @param willSelect if true, will select all contents of field when
* focus is gained.
*/
public FocusingTextField(int cols, boolean willSelect) {
this(cols);
this.willSelect = willSelect;
}
public void setWillSelect(boolean will) {
willSelect = will;
}
public boolean getWillSelect() {
return willSelect;
}
/**
* Call this to set the next field to receive the input focus.
* @param next the next TextField in order - can be null.
*/
public void setNextField(TextField next) {
this.next = next;
}
/**
* We got the focus. If willSelect is true, select everything.
*/
public boolean gotFocus(Event e, Object arg) {
if (willSelect) {
select(0, getText().length());
}
return true;
}
/**
* We lost the focus. If willSelect is true, deselect everything.
*/
public boolean lostFocus(Event e, Object arg) {
if (willSelect) {
select(0, 0);
}
return true;
}
/**
* Pass the focus to the next guy, if any.
*/
public void nextFocus() {
if (next != null) {
next.requestFocus();
}
super.nextFocus();
}
}

View File

@ -396,6 +396,7 @@ public class HeadlessToolkit extends Toolkit
/*
* Fonts
*/
@SuppressWarnings("deprecation")
public FontPeer getFontPeer(String name, int style) {
if (componentFactory != null) {
return componentFactory.getFontPeer(name, style);
@ -403,10 +404,12 @@ public class HeadlessToolkit extends Toolkit
return null;
}
@SuppressWarnings("deprecation")
public FontMetrics getFontMetrics(Font font) {
return tk.getFontMetrics(font);
}
@SuppressWarnings("deprecation")
public String[] getFontList() {
return tk.getFontList();
}

View File

@ -1,154 +0,0 @@
/*
* Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.awt;
import java.awt.*;
/**
* A horizontal 'bag' of Components. Allocates space for each Component
* from left to right.
*
* @author Herb Jellinek
*/
public class HorizBagLayout implements LayoutManager {
int hgap;
/**
* Constructs a new HorizBagLayout.
*/
public HorizBagLayout() {
this(0);
}
/**
* Constructs a HorizBagLayout with the specified gaps.
* @param hgap the horizontal gap
*/
public HorizBagLayout(int hgap) {
this.hgap = hgap;
}
/**
* Adds the specified named component to the layout.
* @param name the String name
* @param comp the component to be added
*/
public void addLayoutComponent(String name, Component comp) {
}
/**
* Removes the specified component from the layout.
* @param comp the component to be removed
*/
public void removeLayoutComponent(Component comp) {
}
/**
* Returns the minimum dimensions needed to lay out the components
* contained in the specified target container.
* @param target the Container on which to do the layout
* @see Container
* @see #preferredLayoutSize
*/
public Dimension minimumLayoutSize(Container target) {
Dimension dim = new Dimension();
for (int i = 0; i < target.countComponents(); i++) {
Component comp = target.getComponent(i);
if (comp.isVisible()) {
Dimension d = comp.minimumSize();
dim.width += d.width + hgap;
dim.height = Math.max(d.height, dim.height);
}
}
Insets insets = target.insets();
dim.width += insets.left + insets.right;
dim.height += insets.top + insets.bottom;
return dim;
}
/**
* Returns the preferred dimensions for this layout given the components
* in the specified target container.
* @param target the component which needs to be laid out
* @see Container
* @see #minimumLayoutSize
*/
public Dimension preferredLayoutSize(Container target) {
Dimension dim = new Dimension();
for (int i = 0; i < target.countComponents(); i++) {
Component comp = target.getComponent(i);
if (comp.isVisible()) {
Dimension d = comp.preferredSize();
dim.width += d.width + hgap;
dim.height = Math.max(dim.height, d.height);
}
}
Insets insets = target.insets();
dim.width += insets.left + insets.right;
dim.height += insets.top + insets.bottom;
return dim;
}
/**
* Lays out the specified container. This method will actually reshape the
* components in the specified target container in order to satisfy the
* constraints of the HorizBagLayout object.
* @param target the component being laid out
* @see Container
*/
public void layoutContainer(Container target) {
Insets insets = target.insets();
int top = insets.top;
int bottom = target.size().height - insets.bottom;
int left = insets.left;
int right = target.size().width - insets.right;
for (int i = 0; i < target.countComponents(); i++) {
Component comp = target.getComponent(i);
if (comp.isVisible()) {
int compWidth = comp.size().width;
comp.resize(compWidth, bottom - top);
Dimension d = comp.preferredSize();
comp.reshape(left, top, d.width, bottom - top);
left += d.width + hgap;
}
}
}
/**
* Returns the String representation of this HorizBagLayout's values.
*/
public String toString() {
return getClass().getName() + "[hgap=" + hgap + "]";
}
}

View File

@ -80,6 +80,7 @@ public abstract class KeyboardFocusManagerPeerImpl implements KeyboardFocusManag
* 1) accepts focus on click (in general)
* 2) may be a focus owner (in particular)
*/
@SuppressWarnings("deprecation")
public static boolean shouldFocusOnClick(Component component) {
boolean acceptFocusOnClick = false;
@ -110,6 +111,7 @@ public abstract class KeyboardFocusManagerPeerImpl implements KeyboardFocusManag
/*
* Posts proper lost/gain focus events to the event queue.
*/
@SuppressWarnings("deprecation")
public static boolean deliverFocus(Component lightweightChild,
Component target,
boolean temporary,
@ -119,7 +121,7 @@ public abstract class KeyboardFocusManagerPeerImpl implements KeyboardFocusManag
Component currentFocusOwner) // provided by the descendant peers
{
if (lightweightChild == null) {
lightweightChild = (Component)target;
lightweightChild = target;
}
Component currentOwner = currentFocusOwner;

View File

@ -30,6 +30,7 @@ import java.awt.*;
/**
* Event object describing changes in AWT modality
*/
@SuppressWarnings("serial")
public class ModalityEvent extends AWTEvent implements ActiveEvent {
public static final int MODALITY_PUSHED = 1300;

View File

@ -1,310 +0,0 @@
/*
* Copyright (c) 1996, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.awt;
import java.awt.*;
/**
* Extends the FlowLayout class to support both vertical and horizontal
* layout of components. Orientation can be changed dynamically after
* creation by calling either of the methods @method orientHorizontally or
* @method orientVertically. Separate values for alignment, vertical gap,
* and horizontal gap can be specified for horizontal and vertical
* orientation.
*
* @author Terry Cline
*/
public class OrientableFlowLayout extends FlowLayout {
/**
* The horizontal orientation constant.
*/
public static final int HORIZONTAL = 0;
/**
* The vertical orientation constant.
*/
public static final int VERTICAL = 1;
/**
* The top vertical alignment constant.
*/
public static final int TOP = 0;
/**
* The bottom vertical alignment constant.
*/
public static final int BOTTOM = 2; // CENTER == 1
int orientation;
int vAlign;
int vHGap;
int vVGap;
/**
* Constructs a new flow layout with a horizontal orientation and
* centered alignment.
*/
public OrientableFlowLayout() {
this(HORIZONTAL, CENTER, CENTER, 5, 5, 5, 5);
}
/**
* Constructs a new flow layout with the specified orientation and
* a centered alignment.
*
* @param orientation the orientation, one of HORIZONTAL or VERTICAL.
*/
public OrientableFlowLayout(int orientation) {
this(orientation, CENTER, CENTER, 5, 5, 5, 5);
}
/**
* Constructs a new flow layout with the specified orientation and
* alignment.
*
* @param orientation the orientation, one of HORIZONTAL or VERTICAL.
* @param hAlign the horizontal alignment, one of LEFT, CENTER, or RIGHT.
* @param vAlign the vertical alignment, one of TOP, CENTER, or BOTTOM.
*/
public OrientableFlowLayout(int orientation, int hAlign, int vAlign) {
this(orientation, hAlign, vAlign, 5, 5, 5, 5);
}
/**
* Constructs a new flow layout with the specified orientation,
* alignment, and gap values.
*
* @param orientation the orientation, one of HORIZONTAL or VERTICAL.
* @param hAlign the horizontal alignment, one of LEFT, CENTER, or RIGHT.
* @param vAlign the vertical alignment, one of TOP, CENTER, or BOTTOM.
* @param hHGap the horizontal gap between components in HORIZONTAL.
* @param hVGap the vertical gap between components in HORIZONTAL.
* @param vHGap the horizontal gap between components in VERTICAL.
* @param vVGap the vertical gap between components in VERTICAL.
*/
public OrientableFlowLayout(int orientation, int hAlign, int vAlign, int hHGap, int hVGap, int vHGap, int vVGap) {
super(hAlign, hHGap, hVGap);
this.orientation = orientation;
this.vAlign = vAlign;
this.vHGap = vHGap;
this.vVGap = vVGap;
}
/**
* Set the layout's current orientation to horizontal.
*/
public synchronized void orientHorizontally() {
orientation = HORIZONTAL;
}
/**
* Set the layout's current orientation to vertical.
*/
public synchronized void orientVertically() {
orientation = VERTICAL;
}
/**
* Returns the preferred dimensions for this layout given the
* components in the specified target container.
*
* @param target the component which needs to be laid out.
* @see Container
* @see FlowLayout
* @see #minimumLayoutSize
*/
public Dimension preferredLayoutSize(Container target) {
if (orientation == HORIZONTAL) {
return super.preferredLayoutSize(target);
}
else {
Dimension dim = new Dimension(0, 0);
int n = target.countComponents();
for (int i = 0; i < n; i++) {
Component c = target.getComponent(i);
if (c.isVisible()) {
Dimension cDim = c.preferredSize();
dim.width = Math.max(dim.width, cDim.width);
if (i > 0) {
dim.height += vVGap;
}
dim.height += cDim.height;
}
}
Insets insets = target.insets();;
dim.width += insets.left + insets.right + vHGap*2;
dim.height += insets.top + insets.bottom + vVGap*2;
return dim;
}
}
/**
* Returns the minimum dimensions needed to layout the components
* contained in the specified target container.
*
* @param target the component which needs to be laid out.
* @see #preferredLayoutSize.
*/
public Dimension minimumLayoutSize(Container target) {
if (orientation == HORIZONTAL) {
return super.minimumLayoutSize(target);
}
else {
Dimension dim = new Dimension(0, 0);
int n = target.countComponents();
for (int i = 0; i < n; i++) {
Component c = target.getComponent(i);
if (c.isVisible()) {
Dimension cDim = c.minimumSize();
dim.width = Math.max(dim.width, cDim.width);
if (i > 0) {
dim.height += vVGap;
}
dim.height += cDim.height;
}
}
Insets insets = target.insets();
dim.width += insets.left + insets.right + vHGap*2;
dim.height += insets.top + insets.bottom + vVGap*2;
return dim;
}
}
/**
* Lays out the container. This method will reshape the
* components in the target to satisfy the constraints of the
* layout.
*
* @param target the specified component being laid out.
* @see Container.
*/
public void layoutContainer(Container target) {
if (orientation == HORIZONTAL) {
super.layoutContainer(target);
}
else {
Insets insets = target.insets();
Dimension targetDim = target.size();
int maxHeight = targetDim.height - (insets.top + insets.bottom + vVGap*2);
int x = insets.left + vHGap;
int y = 0;
int colWidth = 0;
int start = 0;
int n = target.countComponents();
for (int i = 0; i < n; i++) {
Component c = target.getComponent(i);
if (c.isVisible()) {
Dimension cDim = c.preferredSize();
c.resize(cDim.width, cDim.height);
if ((y == 0) || ((y + cDim.height) <= maxHeight)) {
if (y > 0) {
y += vVGap;
}
y += cDim.height;
colWidth = Math.max(colWidth, cDim.width);
}
else {
moveComponents(target,
x,
insets.top + vVGap,
colWidth,
maxHeight - y,
start,
i);
x += vHGap + colWidth;
y = cDim.width;
colWidth = cDim.width;
start = i;
}
}
}
moveComponents(target,
x,
insets.top + vVGap,
colWidth,
maxHeight - y,
start,
n);
}
}
/**
* Aligns the components vertically if there is any slack.
*
* @param target the container whose components need to be moved.
* @param x the x coordinate.
* @param y the y coordinate.
* @param width the width available.
* @param height the height available.
* @param colStart the beginning of the column.
* @param colEnd the end of the column.
*/
private void moveComponents(Container target, int x, int y, int width, int height, int colStart, int colEnd) {
switch (vAlign) {
case TOP:
break;
case CENTER:
y += height/2;
break;
case BOTTOM:
y += height;
}
for (int i = colStart; i < colEnd; i++) {
Component c = target.getComponent(i);
Dimension cDim = c.size();
if (c.isVisible()) {
c.move(x + (width - cDim.width)/2, y);
y += vVGap + cDim.height;
}
}
}
/**
* Returns the String representation of this layout's values.
*/
public String toString() {
String str = "";
switch (orientation) {
case HORIZONTAL:
str = "orientation=horizontal, ";
break;
case VERTICAL:
str = "orientation=vertical, ";
break;
}
return getClass().getName() + "[" + str + super.toString() + "]";
}
}

View File

@ -77,7 +77,7 @@ public class PaintEventDispatcher {
public PaintEvent createPaintEvent(Component target, int x, int y, int w,
int h) {
return new PaintEvent((Component)target, PaintEvent.PAINT,
return new PaintEvent(target, PaintEvent.PAINT,
new Rectangle(x, y, w, h));
}

View File

@ -27,7 +27,9 @@ package sun.awt;
import java.awt.event.InvocationEvent;
@SuppressWarnings("serial")
public class PeerEvent extends InvocationEvent {
public static final long PRIORITY_EVENT = 0x01;
public static final long ULTIMATE_PRIORITY_EVENT = 0x02;
public static final long LOW_PRIORITY_EVENT = 0x04;

View File

@ -28,9 +28,10 @@ package sun.awt;
import java.awt.IllegalComponentStateException;
import java.util.Collections;
import java.util.Iterator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.HashMap;
import java.util.WeakHashMap;
import sun.util.logging.PlatformLogger;
@ -54,12 +55,14 @@ import sun.util.logging.PlatformLogger;
* screen to another on a system equipped with multiple displays.
*/
public class SunDisplayChanger {
private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.multiscreen.SunDisplayChanger");
// Create a new synchronizedMap with initial capacity of one listener.
// Create a new synchronized map with initial capacity of one listener.
// It is asserted that the most common case is to have one GraphicsDevice
// and one top-level Window.
private Map listeners = Collections.synchronizedMap(new WeakHashMap(1));
private Map<DisplayChangedListener, Void> listeners =
Collections.synchronizedMap(new WeakHashMap<DisplayChangedListener, Void>(1));
public SunDisplayChanger() {}
@ -113,18 +116,15 @@ public class SunDisplayChanger {
// synchronization provides no protection against modifying the listener
// list while in the middle of iterating over it. -bchristi 7/10/2001
HashMap listClone;
Set cloneSet;
Set<DisplayChangedListener> cloneSet;
synchronized(listeners) {
listClone = new HashMap(listeners);
cloneSet = new HashSet<DisplayChangedListener>(listeners.keySet());
}
cloneSet = listClone.keySet();
Iterator itr = cloneSet.iterator();
Iterator<DisplayChangedListener> itr = cloneSet.iterator();
while (itr.hasNext()) {
DisplayChangedListener current =
(DisplayChangedListener) itr.next();
DisplayChangedListener current = itr.next();
try {
if (log.isLoggable(PlatformLogger.FINEST)) {
log.finest("displayChanged for listener: " + current);
@ -160,17 +160,14 @@ public class SunDisplayChanger {
// synchronization provides no protection against modifying the listener
// list while in the middle of iterating over it. -bchristi 7/10/2001
HashMap listClone;
Set cloneSet;
Set<DisplayChangedListener> cloneSet;
synchronized (listeners) {
listClone = new HashMap(listeners);
cloneSet = new HashSet<DisplayChangedListener>(listeners.keySet());
}
cloneSet = listClone.keySet();
Iterator itr = cloneSet.iterator();
Iterator<DisplayChangedListener> itr = cloneSet.iterator();
while (itr.hasNext()) {
DisplayChangedListener current =
(DisplayChangedListener) itr.next();
DisplayChangedListener current = itr.next();
try {
if (log.isLoggable(PlatformLogger.FINEST)) {
log.finest("paletteChanged for listener: " + current);

View File

@ -47,6 +47,7 @@ public abstract class SunGraphicsCallback {
g.clipRect(0, 0, bounds.width, bounds.height);
}
@SuppressWarnings("deprecation")
public final void runOneComponent(Component comp, Rectangle bounds,
Graphics g, Shape clip,
int weightFlags) {

View File

@ -197,6 +197,7 @@ public abstract class SunToolkit extends Toolkit
public abstract boolean isTraySupported();
@SuppressWarnings("deprecation")
public abstract FontPeer getFontPeer(String name, int style);
public abstract RobotPeer createRobot(Robot target, GraphicsDevice screen)
@ -305,7 +306,7 @@ public abstract class SunToolkit extends Toolkit
return appContext;
}
public static Field getField(final Class klass, final String fieldName) {
public static Field getField(final Class<?> klass, final String fieldName) {
return AccessController.doPrivileged(new PrivilegedAction<Field>() {
public Field run() {
try {
@ -325,8 +326,8 @@ public abstract class SunToolkit extends Toolkit
static void wakeupEventQueue(EventQueue q, boolean isShutdown){
if (wakeupMethod == null){
wakeupMethod = (Method)AccessController.doPrivileged(new PrivilegedAction(){
public Object run(){
wakeupMethod = AccessController.doPrivileged(new PrivilegedAction<Method>() {
public Method run() {
try {
Method method = EventQueue.class.getDeclaredMethod("wakeup",new Class [] {Boolean.TYPE} );
if (method != null) {
@ -386,8 +387,8 @@ public abstract class SunToolkit extends Toolkit
// Maps from non-Component/MenuComponent to AppContext.
// WeakHashMap<Component,AppContext>
private static final Map appContextMap =
Collections.synchronizedMap(new WeakHashMap());
private static final Map<Object, AppContext> appContextMap =
Collections.synchronizedMap(new WeakHashMap<Object, AppContext>());
/**
* Sets the appContext field of target. If target is not a Component or
@ -437,7 +438,7 @@ public abstract class SunToolkit extends Toolkit
if (context == null) {
// target is not a Component/MenuComponent, try the
// appContextMap.
context = (AppContext)appContextMap.get(target);
context = appContextMap.get(target);
}
return context;
}
@ -519,9 +520,9 @@ public abstract class SunToolkit extends Toolkit
private static FocusTraversalPolicy createLayoutPolicy() {
FocusTraversalPolicy policy = null;
try {
Class layoutPolicyClass =
Class<?> layoutPolicyClass =
Class.forName("javax.swing.LayoutFocusTraversalPolicy");
policy = (FocusTraversalPolicy) layoutPolicyClass.newInstance();
policy = (FocusTraversalPolicy)layoutPolicyClass.newInstance();
}
catch (ClassNotFoundException e) {
assert false;
@ -642,11 +643,13 @@ public abstract class SunToolkit extends Toolkit
* Fixed 5064013: the InvocationEvent time should be equals
* the time of the ActionEvent
*/
@SuppressWarnings("serial")
public static void executeOnEventHandlerThread(Object target,
Runnable runnable,
final long when) {
executeOnEventHandlerThread(new PeerEvent(target, runnable, PeerEvent.PRIORITY_EVENT){
public long getWhen(){
executeOnEventHandlerThread(
new PeerEvent(target, runnable, PeerEvent.PRIORITY_EVENT) {
public long getWhen() {
return when;
}
});
@ -727,10 +730,12 @@ public abstract class SunToolkit extends Toolkit
protected abstract int getScreenWidth();
protected abstract int getScreenHeight();
@SuppressWarnings("deprecation")
public FontMetrics getFontMetrics(Font font) {
return FontDesignMetrics.getMetrics(font);
}
@SuppressWarnings("deprecation")
public String[] getFontList() {
String[] hardwiredFontList = {
Font.DIALOG, Font.SANS_SERIF, Font.SERIF, Font.MONOSPACED,
@ -1156,10 +1161,10 @@ public abstract class SunToolkit extends Toolkit
public static Locale getStartupLocale() {
if (startupLocale == null) {
String language, region, country, variant;
language = (String) AccessController.doPrivileged(
language = AccessController.doPrivileged(
new GetPropertyAction("user.language", "en"));
// for compatibility, check for old user.region property
region = (String) AccessController.doPrivileged(
region = AccessController.doPrivileged(
new GetPropertyAction("user.region"));
if (region != null) {
// region can be of form country, country_variant, or _variant
@ -1172,9 +1177,9 @@ public abstract class SunToolkit extends Toolkit
variant = "";
}
} else {
country = (String) AccessController.doPrivileged(
country = AccessController.doPrivileged(
new GetPropertyAction("user.country", ""));
variant = (String) AccessController.doPrivileged(
variant = AccessController.doPrivileged(
new GetPropertyAction("user.variant", ""));
}
startupLocale = new Locale(language, country, variant);
@ -1254,7 +1259,7 @@ public abstract class SunToolkit extends Toolkit
* @return <code>true</code>, if XEmbed is needed, <code>false</code> otherwise
*/
public static boolean needsXEmbed() {
String noxembed = (String) AccessController.
String noxembed = AccessController.
doPrivileged(new GetPropertyAction("sun.awt.noxembed", "false"));
if ("true".equals(noxembed)) {
return false;
@ -1466,7 +1471,7 @@ public abstract class SunToolkit extends Toolkit
|| comp instanceof Window);
}
public static Method getMethod(final Class clz, final String methodName, final Class[] params) {
public static Method getMethod(final Class<?> clz, final String methodName, final Class[] params) {
Method res = null;
try {
res = AccessController.doPrivileged(new PrivilegedExceptionAction<Method>() {
@ -1482,6 +1487,7 @@ public abstract class SunToolkit extends Toolkit
return res;
}
@SuppressWarnings("serial")
public static class OperationTimedOut extends RuntimeException {
public OperationTimedOut(String msg) {
super(msg);
@ -1489,9 +1495,12 @@ public abstract class SunToolkit extends Toolkit
public OperationTimedOut() {
}
}
@SuppressWarnings("serial")
public static class InfiniteLoop extends RuntimeException {
}
@SuppressWarnings("serial")
public static class IllegalThreadException extends RuntimeException {
public IllegalThreadException(String msg) {
super(msg);
@ -1648,6 +1657,7 @@ public abstract class SunToolkit extends Toolkit
* Should return <code>true</code> if more processing is
* necessary, <code>false</code> otherwise.
*/
@SuppressWarnings("serial")
protected final boolean waitForIdle(final long timeout) {
flushPendingEvents();
boolean queueWasEmpty = isEQEmpty();
@ -1831,7 +1841,7 @@ public abstract class SunToolkit extends Toolkit
Toolkit tk = Toolkit.getDefaultToolkit();
if (tk instanceof SunToolkit) {
systemAAFonts =
(String)AccessController.doPrivileged(
AccessController.doPrivileged(
new GetPropertyAction("awt.useSystemAAFontSettings"));
}
if (systemAAFonts != null) {
@ -1898,7 +1908,7 @@ public abstract class SunToolkit extends Toolkit
if (consumeNextKeyTypedMethod == null) {
consumeNextKeyTypedMethod = getMethod(DefaultKeyboardFocusManager.class,
"consumeNextKeyTyped",
new Class[] {KeyEvent.class});
new Class<?>[] {KeyEvent.class});
}
try {
consumeNextKeyTypedMethod.invoke(KeyboardFocusManager.getCurrentKeyboardFocusManager(),
@ -1930,8 +1940,8 @@ public abstract class SunToolkit extends Toolkit
* Returns the value of the system property indicated by the specified key.
*/
public static String getSystemProperty(final String key) {
return (String)AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return AccessController.doPrivileged(new PrivilegedAction<String>() {
public String run() {
return System.getProperty(key);
}
});
@ -1941,8 +1951,7 @@ public abstract class SunToolkit extends Toolkit
* Returns the boolean value of the system property indicated by the specified key.
*/
protected static Boolean getBooleanSystemProperty(String key) {
return Boolean.valueOf(AccessController.
doPrivileged(new GetBooleanAction(key)));
return AccessController.doPrivileged(new GetBooleanAction(key));
}
private static Boolean sunAwtDisableMixing = null;
@ -2015,7 +2024,7 @@ public abstract class SunToolkit extends Toolkit
*/
public static boolean isContainingTopLevelTranslucent(Component c) {
Window w = getContainingWindow(c);
return w != null && ((Window)w).getOpacity() < 1.0f;
return w != null && w.getOpacity() < 1.0f;
}
/**
@ -2057,14 +2066,14 @@ public abstract class SunToolkit extends Toolkit
return isInstanceOf(obj.getClass(), type);
}
private static boolean isInstanceOf(Class cls, String type) {
private static boolean isInstanceOf(Class<?> cls, String type) {
if (cls == null) return false;
if (cls.getName().equals(type)) {
return true;
}
for (Class c : cls.getInterfaces()) {
for (Class<?> c : cls.getInterfaces()) {
if (c.getName().equals(type)) {
return true;
}

View File

@ -39,7 +39,9 @@ import java.awt.Component;
* <p>Notice that this event is not generated on mouse click inside of the window area.
* <p>To listen for this event, install AWTEventListener with {@value sun.awt.SunToolkit#GRAB_EVENT_MASK}
*/
@SuppressWarnings("serial")
public class UngrabEvent extends AWTEvent {
private final static int UNGRAB_EVENT_ID = 1998;
public UngrabEvent(Component source) {

View File

@ -1,231 +0,0 @@
/*
* Copyright (c) 1995, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.awt;
import java.awt.*;
import java.util.BitSet;
/**
* A layout manager for a container that lays out grids. Allows setting
* the relative sizes of rows and columns.
*
* @author Herb Jellinek
*/
public class VariableGridLayout extends GridLayout {
BitSet rowsSet = new BitSet();
double rowFractions[] = null;
BitSet colsSet = new BitSet();
double colFractions[] = null;
int rows;
int cols;
int hgap;
int vgap;
/**
* Creates a grid layout with the specified rows and specified columns.
* @param rows the rows
* @param cols the columns
*/
public VariableGridLayout(int rows, int cols) {
this(rows, cols, 0, 0);
if (rows != 0) {
rowsSet = new BitSet(rows);
stdRowFractions(rows);
}
if (cols != 0) {
colsSet = new BitSet(cols);
stdColFractions(cols);
}
}
/**
* Creates a grid layout with the specified rows, columns,
* horizontal gap, and vertical gap.
* @param rows the rows
* @param cols the columns
* @param hgap the horizontal gap variable
* @param vgap the vertical gap variable
* @exception IllegalArgumentException If the rows and columns are invalid.
*/
public VariableGridLayout(int rows, int cols, int hgap, int vgap) {
super(rows, cols, hgap, vgap);
this.rows = rows;
this.cols = cols;
this.hgap = hgap;
this.vgap = vgap;
if (rows != 0) {
rowsSet = new BitSet(rows);
stdRowFractions(rows);
}
if (cols != 0) {
colsSet = new BitSet(cols);
stdColFractions(cols);
}
}
void stdRowFractions(int nrows) {
rowFractions = new double[nrows];
for (int i = 0; i < nrows; i++) {
rowFractions[i] = 1.0 / nrows;
}
}
void stdColFractions(int ncols) {
colFractions = new double[ncols];
for (int i = 0; i < ncols; i++) {
colFractions[i] = 1.0 / ncols;
}
}
public void setRowFraction(int rowNum, double fraction) {
rowsSet.set(rowNum);
rowFractions[rowNum] = fraction;
}
public void setColFraction(int colNum, double fraction) {
colsSet.set(colNum);
colFractions[colNum] = fraction;
}
public double getRowFraction(int rowNum) {
return rowFractions[rowNum];
}
public double getColFraction(int colNum) {
return colFractions[colNum];
}
void allocateExtraSpace(double vec[], BitSet userSet) {
// collect the space that's been explicitly allocated...
double total = 0.0;
int unallocated = 0;
int i;
for (i = 0; i < vec.length; i++) {
if (userSet.get(i)) {
total += vec[i];
} else {
unallocated++;
}
}
// ... then spread the extra space
if (unallocated != 0) {
double space = (1.0 - total) / unallocated;
for (i = 0; i < vec.length; i++) {
if (!userSet.get(i)) {
vec[i] = space;
userSet.set(i);
}
}
}
}
void allocateExtraSpace() {
allocateExtraSpace(rowFractions, rowsSet);
allocateExtraSpace(colFractions, colsSet);
}
/**
* Lays out the container in the specified panel.
* @param parent the specified component being laid out
* @see Container
*/
public void layoutContainer(Container parent) {
Insets insets = parent.insets();
int ncomponents = parent.countComponents();
int nrows = rows;
int ncols = cols;
if (nrows > 0) {
ncols = (ncomponents + nrows - 1) / nrows;
} else {
nrows = (ncomponents + ncols - 1) / ncols;
}
if (rows == 0) {
stdRowFractions(nrows);
}
if (cols == 0) {
stdColFractions(ncols);
}
Dimension size = parent.size();
int w = size.width - (insets.left + insets.right);
int h = size.height - (insets.top + insets.bottom);
w = (w - (ncols - 1) * hgap);
h = (h - (nrows - 1) * vgap);
allocateExtraSpace();
for (int c = 0, x = insets.left ; c < ncols ; c++) {
int colWidth = (int)(getColFraction(c) * w);
for (int r = 0, y = insets.top ; r < nrows ; r++) {
int i = r * ncols + c;
int rowHeight = (int)(getRowFraction(r) * h);
if (i < ncomponents) {
parent.getComponent(i).reshape(x, y, colWidth, rowHeight);
}
y += rowHeight + vgap;
}
x += colWidth + hgap;
}
}
static String fracsToString(double array[]) {
String result = "["+array.length+"]";
for (int i = 0; i < array.length; i++) {
result += "<"+array[i]+">";
}
return result;
}
/**
* Returns the String representation of this VariableGridLayout's values.
*/
public String toString() {
return getClass().getName() + "[hgap=" + hgap + ",vgap=" + vgap +
",rows=" + rows + ",cols=" + cols +
",rowFracs=" +
fracsToString(rowFractions) +
",colFracs=" +
fracsToString(colFractions) + "]";
}
}

View File

@ -1,158 +0,0 @@
/*
* Copyright (c) 1995, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.awt;
import java.awt.*;
/**
* A vertical 'bag' of Components. Allocates space for each Component from
* top to bottom.
*
* @author Herb Jellinek
*/
public class VerticalBagLayout implements LayoutManager {
int vgap;
/**
* Constructs a new VerticalBagLayout.
*/
public VerticalBagLayout() {
this(0);
}
/**
* Constructs a VerticalBagLayout with the specified gaps.
* @param vgap the vertical gap
*/
public VerticalBagLayout(int vgap) {
this.vgap = vgap;
}
/**
* Adds the specified named component to the layout.
* @param name the String name
* @param comp the component to be added
*/
public void addLayoutComponent(String name, Component comp) {
}
/**
* Removes the specified component from the layout.
* @param comp the component to be removed
*/
public void removeLayoutComponent(Component comp) {
}
/**
* Returns the minimum dimensions needed to lay out the components
* contained in the specified target container.
* @param target the Container on which to do the layout
* @see Container
* @see #preferredLayoutSize
*/
public Dimension minimumLayoutSize(Container target) {
Dimension dim = new Dimension();
int nmembers = target.countComponents();
for (int i = 0; i < nmembers; i++) {
Component comp = target.getComponent(i);
if (comp.isVisible()) {
Dimension d = comp.minimumSize();
dim.width = Math.max(d.width, dim.width);
dim.height += d.height + vgap;
}
}
Insets insets = target.insets();
dim.width += insets.left + insets.right;
dim.height += insets.top + insets.bottom;
return dim;
}
/**
* Returns the preferred dimensions for this layout given the components
* in the specified target container.
* @param target the component which needs to be laid out
* @see Container
* @see #minimumLayoutSize
*/
public Dimension preferredLayoutSize(Container target) {
Dimension dim = new Dimension();
int nmembers = target.countComponents();
for (int i = 0; i < nmembers; i++) {
Component comp = target.getComponent(i);
if (true || comp.isVisible()) {
Dimension d = comp.preferredSize();
dim.width = Math.max(d.width, dim.width);
dim.height += d.height + vgap;
}
}
Insets insets = target.insets();
dim.width += insets.left + insets.right;
dim.height += insets.top + insets.bottom;
return dim;
}
/**
* Lays out the specified container. This method will actually reshape the
* components in the specified target container in order to satisfy the
* constraints of the VerticalBagLayout object.
* @param target the component being laid out
* @see Container
*/
public void layoutContainer(Container target) {
Insets insets = target.insets();
int top = insets.top;
int bottom = target.size().height - insets.bottom;
int left = insets.left;
int right = target.size().width - insets.right;
int nmembers = target.countComponents();
for (int i = 0; i < nmembers; i++) {
Component comp = target.getComponent(i);
if (comp.isVisible()) {
int compHeight = comp.size().height;
comp.resize(right - left, compHeight);
Dimension d = comp.preferredSize();
comp.reshape(left, top, right - left, d.height);
top += d.height + vgap;
}
}
}
/**
* Returns the String representation of this VerticalBagLayout's values.
*/
public String toString() {
return getClass().getName() + "[vgap=" + vgap + "]";
}
}