JAL-1807 update
[jalviewjs.git] / src / javajs / awt / Container.java
1 package javajs.awt;
2
3 import javajs.util.Lst;
4   
5 abstract public class Container extends Component {
6   
7   protected Lst<Component> list;
8   
9   private Component[] cList;
10
11   protected Container(String type) {
12     super(type);
13   }
14   
15   public Component getComponent(int i) {
16     return list.get(i);
17   }
18   
19   public int getComponentCount() {
20     return (list == null ? 0 : list.size());
21   }
22
23   public Component[] getComponents() {
24     if (cList == null) {
25       if (list == null)
26         return new Component[0];
27       cList = (Component[]) list.toArray();
28     }
29     return cList;
30   }
31
32   public Component add(Component component) {
33     return addComponent(component);
34   }
35
36   protected Component addComponent(Component component) {
37     if (list == null)
38       list = new Lst<Component>();
39     list.addLast(component);
40     cList = null;
41     component.parent = this;
42     return component;
43   }
44
45   protected Component insertComponent(Component component, int index) {
46     if (list == null)
47       return addComponent(component);
48     list.add(index, component);
49     cList = null;
50     component.parent = this;
51     return component;
52   }
53
54   public void remove(int i) {
55     Component c = list.remove(i);
56     c.parent = null;
57     cList = null;
58   }
59   
60   public void removeAll() {
61     if (list != null) {
62       for (int i = list.size(); --i >= 0;)
63         list.get(i).parent = null;
64       list.clear();
65     }
66     cList = null;
67   }
68
69   @Override
70   public int getSubcomponentWidth() {
71     return (list != null && list.size() == 1 ? list.get(0).getSubcomponentWidth() : 0);
72   }
73   
74   @Override
75   public int getSubcomponentHeight() {
76     return (list != null && list.size() == 1 ? list.get(0).getSubcomponentHeight() : 0);
77   }
78
79 }