View Javadoc
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