1 /*
2 * Created on 22.04.2004
3 */
4 package org.xpcards.model;
5
6 import java.util.Enumeration;
7
8 import org.eclipse.jface.viewers.ITreeContentProvider;
9 import org.eclipse.jface.viewers.TreeViewer;
10 import org.eclipse.jface.viewers.Viewer;
11
12 /***
13 * Collection ITereeContentProvider
14 *
15 * @author Mikhail Galyutin
16 */
17 public class ModelContentProvider implements ITreeContentProvider, IModelElementListener {
18
19 private static final Object[] EMPTY_ARRAY = new Object[0];
20 private TreeViewer viewer = null;
21
22 public ModelContentProvider() {
23 }
24
25 /***
26 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
27 */
28 public Object[] getChildren(Object parentElement) {
29 Object[] children = null;
30 if (parentElement instanceof ModelElement) {
31 children = ((ModelElement) parentElement).getChildrenCollections();
32 } else if (parentElement instanceof ModelElementCollection) {
33 children = ((ModelElementCollection) parentElement).toArray();
34 }
35 // System.err.println("Parent is :" + parentElement );
36 // System.err.println("Children are :" + children );
37 if (children != null) {
38 return children;
39 } else {
40 return EMPTY_ARRAY;
41 }
42 }
43
44 /***
45 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
46 */
47 public Object getParent(Object element) {
48 Object parent = null;
49 if (element instanceof ModelElement) {
50 parent = ((ModelElement) element).getParent();
51 } else if (element instanceof ModelElementCollection) {
52 parent = ((ModelElementCollection) element).getParent();
53 }
54
55 return parent;
56 }
57
58 /***
59 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
60 */
61 public boolean hasChildren(Object parentElement) {
62 if (parentElement instanceof ModelElement) {
63 return ((ModelElement) parentElement).getChildrenCollections() != null;
64 } else if (parentElement instanceof ModelElementCollection) {
65 Enumeration e = ((ModelElementCollection) parentElement).elements();
66 return e != null && e.hasMoreElements();
67 }
68 return false;
69 }
70
71 /***
72 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
73 */
74 public Object[] getElements(Object inputElement) {
75 return getChildren(inputElement);
76 }
77
78 /***
79 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
80 */
81 public void dispose() {
82 // Nothing to dispose
83 }
84
85 /***
86 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
87 */
88 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
89 System.err.println("InputChanged:" + viewer + "," + oldInput + ", " + newInput);
90
91 this.viewer = (TreeViewer) viewer;
92 if (oldInput instanceof ModelElement) {
93 ((ModelElement) oldInput).removeModelElementListener(this);
94 }
95 if (newInput instanceof ModelElement) {
96 ((ModelElement) newInput).addModelElementListener(this);
97 }
98 }
99
100 /***
101 * @see org.xpcards.model.IModelElementListener#collectionElementAdded(org.xpcards.model.ModelElement, org.xpcards.model.ModelElement, java.lang.String, boolean)
102 */
103 public void collectionElementAdded(
104 ModelElement element,
105 ModelElement parent,
106 String collectionName,
107 boolean recursive) {
108 // System.err.println("collectionElementAdded:" + element + "," + parent + "," + collectionName + "," + recursive);
109 if (viewer != null) {
110 if ( parent != null ) {
111 viewer.refresh(parent);
112 } else {
113 viewer.refresh();
114 }
115 }
116 }
117
118 /***
119 * @see org.xpcards.model.IModelElementListener#collectionElementRemoved(org.xpcards.model.ModelElement, org.xpcards.model.ModelElement, java.lang.String)
120 */
121 public void collectionElementRemoved(ModelElement element, ModelElement parent, String collectionName) {
122 // System.err.println("collectionElementRemoved:" + element + "," + parent + "," + collectionName);
123 if (viewer != null) {
124 if ( parent != null ) {
125 viewer.refresh(parent);
126 } else {
127 viewer.refresh();
128 }
129 }
130 }
131
132 /***
133 * @see org.xpcards.model.IModelElementListener#propertyChanged(org.xpcards.model.ModelElement, java.lang.String, java.lang.Object, java.lang.Object)
134 */
135 public void propertyChanged(ModelElement source, String propertyName, Object oldValue, Object newValue) {
136 // System.err.println("propertyChanged:" + source + "," + propertyName + "," + oldValue+ "," + newValue);
137 if (viewer != null) {
138 viewer.refresh(source);
139 }
140 }
141
142 }
This page was automatically generated by Maven