KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > ipanema > person > preferences > BlockOrderListContentProvider


1 /*
2  * Created on Dec 10, 2004
3  * by alex
4  *
5  */

6 package com.nightlabs.ipanema.person.preferences;
7
8 import java.util.Collections JavaDoc;
9 import java.util.Comparator JavaDoc;
10 import java.util.HashMap JavaDoc;
11 import java.util.Iterator JavaDoc;
12 import java.util.LinkedList JavaDoc;
13 import java.util.List JavaDoc;
14 import java.util.Map JavaDoc;
15 import java.util.Set JavaDoc;
16
17 import org.eclipse.jface.viewers.IStructuredContentProvider;
18 import org.eclipse.jface.viewers.Viewer;
19
20 /**
21  * @author Alexander Bieber <alex[AT]nightlabs[DOT]de>
22  */

23 public class BlockOrderListContentProvider implements IStructuredContentProvider
24 {
25     public BlockOrderListContentProvider() {
26     }
27     
28     public Map JavaDoc structBlockDisplayOrder;
29     private List JavaDoc structBlockDisplayOrderEntryList;
30     
31     public class Entry implements Map.Entry JavaDoc {
32         
33         private Map.Entry JavaDoc entry;
34         public Entry(Map.Entry JavaDoc entry) {
35             this.entry = entry;
36         }
37         /**
38          * @see java.util.Map.Entry#getKey()
39          */

40         public Object JavaDoc getKey() {
41             return entry.getKey();
42         }
43
44         /**
45          * @see java.util.Map.Entry#getValue()
46          */

47         public Object JavaDoc getValue() {
48             if (internalValue == null)
49                 return entry.getValue();
50             else
51                 return internalValue;
52         }
53
54         
55         private Object JavaDoc internalValue;
56         /**
57          * @see java.util.Map.Entry#setValue(java.lang.Object)
58          */

59         public Object JavaDoc setValue(Object JavaDoc value) {
60             return internalValue = value;
61         }
62         
63     }
64     
65     protected void refreshOrder() {
66         Set JavaDoc entrySet = structBlockDisplayOrder.entrySet();
67         structBlockDisplayOrderEntryList = new LinkedList JavaDoc();
68         // get the list
69
for (Iterator JavaDoc iter = entrySet.iterator(); iter.hasNext();) {
70             Map.Entry JavaDoc entry = (Map.Entry JavaDoc) iter.next();
71             structBlockDisplayOrderEntryList.add(new Entry(entry));
72         }
73         sortList();
74     }
75     
76     protected void sortList() {
77         // sort it
78
Collections.sort(structBlockDisplayOrderEntryList,new Comparator JavaDoc() {
79             public int compare(Object JavaDoc o1, Object JavaDoc o2) {
80                 if ((o1 instanceof Map.Entry JavaDoc) && (o2 instanceof Map.Entry JavaDoc)) {
81                     int p1, p2;
82                     p1 = ((Integer JavaDoc) ((Map.Entry JavaDoc)o1).getValue() ).intValue();
83                     p2 = ((Integer JavaDoc) ((Map.Entry JavaDoc)o2).getValue() ).intValue();
84                     if (p1 < p2)
85                         return -1;
86                     else if (p1 > p2)
87                         return 1;
88                     else
89                         return 0;
90                 }
91                 return 0;
92             }
93         });
94         
95     }
96     /**
97      * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
98      */

99     public Object JavaDoc[] getElements(Object JavaDoc inputElement) {
100         if (inputElement != structBlockDisplayOrder) {
101             this.structBlockDisplayOrder = (Map JavaDoc)inputElement;
102             // get the list
103
refreshOrder();
104         }
105         // return the array
106
return structBlockDisplayOrderEntryList.toArray();
107 // return PersonStructOrderConfigModule.getSharedInstance().structBlockDisplayOrder().entrySet().toArray();
108
}
109
110     /**
111      * @see org.eclipse.jface.viewers.IContentProvider#dispose()
112      */

113     public void dispose() {
114     }
115
116     /**
117      * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
118      */

119     public void inputChanged(Viewer viewer, Object JavaDoc oldInput, Object JavaDoc newInput) {
120         if (structBlockDisplayOrderEntryList != null)
121             sortList();
122 // sortList();
123
}
124     
125     
126     public void moveUp(int priority) {
127         structBlockDisplayOrderEntryList.hashCode();
128         for (Iterator JavaDoc iter = structBlockDisplayOrderEntryList.iterator(); iter.hasNext();) {
129             Map.Entry JavaDoc entry = (Map.Entry JavaDoc) iter.next();
130             int swapPriority = ((Integer JavaDoc)entry.getValue()).intValue();
131             if (swapPriority == priority)
132                 entry.setValue(new Integer JavaDoc(priority-1));
133             else if (swapPriority == (priority-1))
134                 entry.setValue(new Integer JavaDoc(priority));
135         }
136         sortList();
137     }
138
139     public void moveDown(int priority) {
140         structBlockDisplayOrderEntryList.hashCode();
141         for (Iterator JavaDoc iter = structBlockDisplayOrderEntryList.iterator(); iter.hasNext();) {
142             Map.Entry JavaDoc entry = (Map.Entry JavaDoc) iter.next();
143             int swapPriority = ((Integer JavaDoc)entry.getValue()).intValue();
144             if (swapPriority == priority)
145                 entry.setValue(new Integer JavaDoc(priority+1));
146             else if (swapPriority == (priority+1))
147                 entry.setValue(new Integer JavaDoc(priority));
148         }
149         sortList();
150     }
151     
152     public Map JavaDoc getStructBlockOrder() {
153         Map JavaDoc result = new HashMap JavaDoc();
154         for (Iterator JavaDoc iter = structBlockDisplayOrderEntryList.iterator(); iter.hasNext();) {
155             Map.Entry JavaDoc entry = (Map.Entry JavaDoc) iter.next();
156             result.put(entry.getKey(),entry.getValue());
157         }
158         return result;
159     }
160     
161 }
162
Popular Tags