1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.jetspeed.om.folder.impl;
18
19 import java.util.AbstractList;
20
21 /***
22 * FolderMenuDefinitionElementList
23 *
24 * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
25 * @version $Id$
26 */
27 class FolderMenuDefinitionElementList extends AbstractList
28 {
29 private FolderMenuDefinitionImpl menuDefinition;
30
31 FolderMenuDefinitionElementList(FolderMenuDefinitionImpl menuDefinition)
32 {
33 super();
34 this.menuDefinition = menuDefinition;
35 }
36
37 /***
38 * validateMenuElementForAdd
39 *
40 * Validates element to be added to this list.
41 *
42 * @param menuElement element to add
43 * @return list element to add
44 */
45 private FolderMenuDefinitionElement validateMenuElementForAdd(FolderMenuDefinitionElement menuElement)
46 {
47
48 if (menuElement == null)
49 {
50 throw new NullPointerException("Unable to add null to list.");
51 }
52 return menuElement;
53 }
54
55
56
57
58 public void add(int index, Object element)
59 {
60
61
62 if ((index < 0) || (index > menuDefinition.accessElements().size()))
63 {
64 throw new IndexOutOfBoundsException("Unable to add to list at index: " + index);
65 }
66
67 FolderMenuDefinitionElement menuElement = validateMenuElementForAdd((FolderMenuDefinitionElement)element);
68
69 menuDefinition.accessElements().add(index, menuElement);
70
71 if (index > 0)
72 {
73 menuElement.setElementOrder(((FolderMenuDefinitionElement)menuDefinition.accessElements().get(index-1)).getElementOrder() + 1);
74 }
75 else
76 {
77 menuElement.setElementOrder(0);
78 }
79
80 for (int i = index, limit = menuDefinition.accessElements().size() - 1; (i < limit); i++)
81 {
82 FolderMenuDefinitionElement nextMenuElement = (FolderMenuDefinitionElement)menuDefinition.accessElements().get(i + 1);
83 if (nextMenuElement.getElementOrder() <= menuElement.getElementOrder())
84 {
85
86 nextMenuElement.setElementOrder(menuElement.getElementOrder() + 1);
87 menuElement = nextMenuElement;
88 }
89 else
90 {
91
92 break;
93 }
94 }
95 }
96
97
98
99
100 public Object get(int index)
101 {
102
103 return menuDefinition.accessElements().get(index);
104 }
105
106
107
108
109 public Object remove(int index)
110 {
111
112 return menuDefinition.accessElements().remove(index);
113 }
114
115
116
117
118 public Object set(int index, Object element)
119 {
120
121
122 FolderMenuDefinitionElement newMenuElement = validateMenuElementForAdd((FolderMenuDefinitionElement)element);
123
124 FolderMenuDefinitionElement menuElement = (FolderMenuDefinitionElement)menuDefinition.accessElements().set(index, newMenuElement);
125
126 newMenuElement.setElementOrder(menuElement.getElementOrder());
127
128 return menuElement;
129 }
130
131
132
133
134 public int size()
135 {
136
137 return menuDefinition.accessElements().size();
138 }
139 }