package javaforce.webui; /** Base class for components that can "contain" other components. * * @author pquiring */ import java.util.*; public abstract class Container extends Component { public void setClient(WebUIClient client) { super.setClient(client); int cnt = count(); for(int a=0;a<cnt;a++) { get(a).setClient(client); } } public void init() { super.init(); int cnt = count(); for(int a=0;a<cnt;a++) { get(a).init(); } } public Component getComponent(String name) { int cnt = count(); if (this.name != null && this.name.equals(name)) { return this; } for(int a=0;a<cnt;a++) { Component child = get(a); if (child instanceof Container) { Container container = (Container)child; child = container.getComponent(name); if (child != null) return child; } else { if (child.name != null && child.name.equals(name)) { return child; } } } return null; } private ArrayList<Component> components = new ArrayList<Component>(); public Component get(int idx) { return components.get(idx); } public Component get(String name) { int cnt = count(); for(int a=0;a<cnt;a++) { Component comp = get(a); if (comp.id.equals(name)) return comp; if (comp instanceof Container) { Container container = (Container)comp; comp = container.get(name); if (comp != null) return comp; } } return null; } public void set(int idx, Component c) { components.set(idx, c); } public void add(Component comp) { comp.parent = this; components.add(comp); if (client != null) { comp.setClient(client); comp.init(); } } public void remove(Component comp) { components.remove(comp); } public void remove(int idx) { components.remove(idx); } public void removeAll() { components.clear(); } public int count() { return components.size(); } }