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