Index: topia/src/java/org/codelutin/topia/ui/swing/TopiaPanel.java diff -u topia/src/java/org/codelutin/topia/ui/swing/TopiaPanel.java:1.1 topia/src/java/org/codelutin/topia/ui/swing/TopiaPanel.java:1.2 --- topia/src/java/org/codelutin/topia/ui/swing/TopiaPanel.java:1.1 Wed Aug 11 07:10:38 2004 +++ topia/src/java/org/codelutin/topia/ui/swing/TopiaPanel.java Thu Sep 16 15:28:22 2004 @@ -23,14 +23,16 @@ * * @author Benjamin Poussin * Copyright Code Lutin - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ * - * Mise a jour: $Date: 2004/08/11 07:10:38 $ - * par : $Author: mazelier $ + * Mise a jour: $Date: 2004/09/16 15:28:22 $ + * par : $Author: bpoussin $ */ package org.codelutin.topia.ui.swing; +import java.beans.DefaultPersistenceDelegate; +import java.beans.Encoder; import javax.swing.JPanel; /** @@ -41,6 +43,33 @@ public TopiaPanel(){ super(); + } + + /** + * Classe interne PersistenceDelegate pour les panels generes par Topia + * ainsi l'ensemble des enfants des panels seront visibles + */ + public static class TopiaPanel_PersistenceDelegate extends DefaultPersistenceDelegate { + 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(); + + System.out.println("********** old.size: "+ oldC.getComponents().length); + System.out.println("********** new.size: "+ newC.getComponents().length); + + for(int i = 0; i < oldChildren.length; i++) { + out.writeStatement(new Statement(oldInstance, "add", + new Object[]{oldChildren[i]})); + } + } } } // TopiaPanel