package com.servoy.j2db.persistence;
import java.awt.Point;
import java.util.List;
import com.servoy.j2db.persistence.StaticContentSpecLoader.TypedProperty;
import com.servoy.j2db.util.PersistHelper;
public class FlattenedLayoutContainer extends LayoutContainer implements IFlattenedPersistWrapper<LayoutContainer>
{
private static final long serialVersionUID = 1L;
private final LayoutContainer layoutContainer;
public FlattenedLayoutContainer(LayoutContainer layoutContainer)
{
super(layoutContainer.getParent(), layoutContainer.getID(), layoutContainer.getUUID());
this.layoutContainer = layoutContainer;
fill();
}
@Override
public LayoutContainer getWrappedPersist()
{
return layoutContainer;
}
private void fill()
{
internalClearAllObjects();
List<IPersist> children = PersistHelper.getHierarchyChildren(layoutContainer);
for (IPersist child : children)
{
if (child instanceof LayoutContainer && ((LayoutContainer)child).getExtendsID() > 0)
{
internalAddChild(new FlattenedLayoutContainer((LayoutContainer)child));
}
else
{
internalAddChild(child);
}
}
}
@Override
protected void internalRemoveChild(IPersist obj)
{
layoutContainer.internalRemoveChild(obj);
fill();
}
@Override
public void addChild(IPersist obj)
{
layoutContainer.addChild(obj);
fill();
}
@Override
public Field createNewField(Point location) throws RepositoryException
{
return layoutContainer.createNewField(location);
}
@Override
public GraphicalComponent createNewGraphicalComponent(Point location) throws RepositoryException
{
return layoutContainer.createNewGraphicalComponent(location);
}
@Override
<T> T getTypedProperty(TypedProperty<T> property)
{
return layoutContainer.getTypedProperty(property);
}
@Override
<T> void setTypedProperty(TypedProperty<T> property, T value)
{
layoutContainer.setTypedProperty(property, value);
}
@Override
public int hashCode()
{
return layoutContainer.hashCode();
}
}