protected void initialize(Class type,
Object oldInstance,
Object newInstance,
Encoder out) {
super.initialize(type, oldInstance, newInstance, out);
// Ignore the children of a JScrollPane.
// Pending(milne) find a better way to do this.
if (oldInstance instanceof javax.swing.JScrollPane) {
return;
}
java.awt.Container oldC = (java.awt.Container)oldInstance;
java.awt.Component[] oldChildren = oldC.getComponents();
java.awt.Container newC = (java.awt.Container)newInstance;
java.awt.Component[] newChildren = (newC == null) ? new java.awt.Component[0] : newC.getComponents();
BorderLayout layout = ( oldC.getLayout() instanceof BorderLayout )
? ( BorderLayout )oldC.getLayout()
: null;
JLayeredPane oldLayeredPane = (oldInstance instanceof JLayeredPane)
? (JLayeredPane) oldInstance
: null;
// Pending. Assume all the new children are unaltered.
for(int i = newChildren.length; i < oldChildren.length; i++) {
Object[] args = ( layout != null )
? new Object[] {oldChildren[i], layout.getConstraints( oldChildren[i] )}
: (oldLayeredPane != null)
? new Object[] {oldChildren[i], oldLayeredPane.getLayer(oldChildren[i]), Integer.valueOf(-1)}
: new Object[] {oldChildren[i]};
invokeStatement(oldInstance, "add", args, out);
}
}
|