提交 961b7f16 编写于 作者: M malenkov

4916852: RFE: LTP: BorderLayout Persistence Delegate should use 1.5 API

Reviewed-by: peterz, loneid
上级 c684d359
......@@ -986,14 +986,20 @@ class java_awt_Component_PersistenceDelegate extends DefaultPersistenceDelegate
// null to defined values after the Windows are made visible -
// special case them for now.
if (!(oldInstance instanceof java.awt.Window)) {
String[] fieldNames = new String[]{"background", "foreground", "font"};
for(int i = 0; i < fieldNames.length; i++) {
String name = fieldNames[i];
Object oldValue = ReflectionUtils.getPrivateField(oldInstance, java.awt.Component.class, name, out.getExceptionListener());
Object newValue = (newInstance == null) ? null : ReflectionUtils.getPrivateField(newInstance, java.awt.Component.class, name, out.getExceptionListener());
if (oldValue != null && !oldValue.equals(newValue)) {
invokeStatement(oldInstance, "set" + NameGenerator.capitalize(name), new Object[]{oldValue}, out);
}
Object oldBackground = c.isBackgroundSet() ? c.getBackground() : null;
Object newBackground = c2.isBackgroundSet() ? c2.getBackground() : null;
if (!MetaData.equals(oldBackground, newBackground)) {
invokeStatement(oldInstance, "setBackground", new Object[] { oldBackground }, out);
}
Object oldForeground = c.isForegroundSet() ? c.getForeground() : null;
Object newForeground = c2.isForegroundSet() ? c2.getForeground() : null;
if (!MetaData.equals(oldForeground, newForeground)) {
invokeStatement(oldInstance, "setForeground", new Object[] { oldForeground }, out);
}
Object oldFont = c.isFontSet() ? c.getFont() : null;
Object newFont = c2.isFontSet() ? c2.getFont() : null;
if (!MetaData.equals(oldFont, newFont)) {
invokeStatement(oldInstance, "setFont", new Object[] { oldFont }, out);
}
}
......@@ -1104,26 +1110,30 @@ class java_awt_List_PersistenceDelegate extends DefaultPersistenceDelegate {
// BorderLayout
class java_awt_BorderLayout_PersistenceDelegate extends DefaultPersistenceDelegate {
private static final String[] CONSTRAINTS = {
BorderLayout.NORTH,
BorderLayout.SOUTH,
BorderLayout.EAST,
BorderLayout.WEST,
BorderLayout.CENTER,
BorderLayout.PAGE_START,
BorderLayout.PAGE_END,
BorderLayout.LINE_START,
BorderLayout.LINE_END,
};
@Override
protected void initialize(Class<?> type, Object oldInstance,
Object newInstance, Encoder out) {
super.initialize(type, oldInstance, newInstance, out);
String[] locations = {"north", "south", "east", "west", "center"};
String[] names = {java.awt.BorderLayout.NORTH, java.awt.BorderLayout.SOUTH,
java.awt.BorderLayout.EAST, java.awt.BorderLayout.WEST,
java.awt.BorderLayout.CENTER};
for(int i = 0; i < locations.length; i++) {
Object oldC = ReflectionUtils.getPrivateField(oldInstance,
java.awt.BorderLayout.class,
locations[i],
out.getExceptionListener());
Object newC = ReflectionUtils.getPrivateField(newInstance,
java.awt.BorderLayout.class,
locations[i],
out.getExceptionListener());
BorderLayout oldLayout = (BorderLayout) oldInstance;
BorderLayout newLayout = (BorderLayout) newInstance;
for (String constraints : CONSTRAINTS) {
Object oldC = oldLayout.getLayoutComponent(constraints);
Object newC = newLayout.getLayoutComponent(constraints);
// Pending, assume any existing elements are OK.
if (oldC != null && newC == null) {
invokeStatement(oldInstance, "addLayoutComponent",
new Object[]{oldC, names[i]}, out);
new Object[] { oldC, constraints }, out);
}
}
}
......
/*
* Copyright 2008 Sun Microsystems, Inc. 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.
*
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
/*
* @test
* @bug 4916852
* @summary Tests BorderLayout encoding
* @author Sergey Malenkov
*/
import java.awt.BorderLayout;
import javax.swing.JLabel;
public final class java_awt_BorderLayout extends AbstractTest<BorderLayout> {
private static final String[] CONSTRAINTS = {
BorderLayout.NORTH,
BorderLayout.SOUTH,
BorderLayout.EAST,
BorderLayout.WEST,
BorderLayout.CENTER,
BorderLayout.PAGE_START,
BorderLayout.PAGE_END,
BorderLayout.LINE_START,
BorderLayout.LINE_END,
};
public static void main(String[] args) {
new java_awt_BorderLayout().test(true);
}
@Override
protected BorderLayout getObject() {
BorderLayout layout = new BorderLayout();
update(layout, BorderLayout.EAST);
update(layout, BorderLayout.WEST);
update(layout, BorderLayout.NORTH);
update(layout, BorderLayout.SOUTH);
return layout;
}
@Override
protected BorderLayout getAnotherObject() {
BorderLayout layout = getObject();
update(layout, BorderLayout.CENTER);
return layout;
}
@Override
protected void validate(BorderLayout before, BorderLayout after) {
super.validate(before, after);
BeanValidator validator = new BeanValidator();
for (String constraint : CONSTRAINTS) {
validator.validate(before.getLayoutComponent(constraint),
after.getLayoutComponent(constraint));
}
}
private static void update(BorderLayout layout, String constraints) {
layout.addLayoutComponent(new JLabel(constraints), constraints);
}
}
/*
* Copyright 2008 Sun Microsystems, Inc. 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.
*
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
/*
* @test
* @bug 4916852
* @summary Tests Component encoding (background, foreground and font)
* @author Sergey Malenkov
*/
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
public final class java_awt_Component extends AbstractTest<Component> {
public static void main(String[] args) {
new java_awt_Component().test(true);
}
@Override
protected Component getObject() {
Component component = new MyComponent();
component.setBackground(Color.WHITE);
component.setFont(new Font(null, Font.BOLD, 5));
return component;
}
@Override
protected Component getAnotherObject() {
Component component = new MyComponent();
component.setForeground(Color.BLACK);
component.setFont(new Font(null, Font.ITALIC, 6));
return component;
}
public static final class MyComponent extends Component {
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册