1 5 package org.terracotta.dso.views; 6 7 import org.eclipse.jface.viewers.ITreeContentProvider; 8 import org.eclipse.jface.viewers.Viewer; 9 10 import com.terracottatech.config.Application; 11 import com.terracottatech.config.DsoApplication; 12 import com.terracottatech.config.TcConfigDocument.TcConfig; 13 14 public class ConfigContentProvider implements ITreeContentProvider { 15 ConfigViewPart fPart; 16 17 ConfigContentProvider(ConfigViewPart fPart) { 18 this.fPart = fPart; 19 } 20 21 public Object [] getChildren(Object parentElement) { 22 if(parentElement instanceof RootsWrapper) { 23 return createRootWrappers((RootsWrapper)parentElement); 24 } else if(parentElement instanceof TransientFieldsWrapper) { 25 return createTransientFieldWrappers((TransientFieldsWrapper)parentElement); 26 } else if(parentElement instanceof AdditionalBootJarClassesWrapper) { 27 return createBootClassWrappers((AdditionalBootJarClassesWrapper)parentElement); 28 } else if(parentElement instanceof DistributedMethodsWrapper) { 29 return createDistributedMethodWrappers((DistributedMethodsWrapper)parentElement); 30 } else if(parentElement instanceof LocksWrapper) { 31 LocksWrapper locks = (LocksWrapper)parentElement; 32 return new Object [] {new AutolocksWrapper(locks), new NamedLocksWrapper(locks)}; 33 } else if(parentElement instanceof InstrumentedClassesWrapper) { 34 InstrumentedClassesWrapper ic = ((InstrumentedClassesWrapper)parentElement); 35 return new Object [] {new IncludesWrapper(ic), new ExcludesWrapper(ic)}; 36 } else if(parentElement instanceof AutolocksWrapper) { 37 return ((AutolocksWrapper)parentElement).createAutolockWrappers(); 38 } else if(parentElement instanceof NamedLocksWrapper) { 39 return ((NamedLocksWrapper)parentElement).createNamedLockWrappers(); 40 } else if(parentElement instanceof IncludesWrapper) { 41 return ((IncludesWrapper)parentElement).createIncludeWrappers(); 42 } else if(parentElement instanceof ExcludesWrapper) { 43 return ((ExcludesWrapper)parentElement).createExcludeWrappers(); 44 } 45 46 return null; 47 } 48 49 static DistributedMethodWrapper[] createDistributedMethodWrappers(DistributedMethodsWrapper distributedMethods) { 50 int count = distributedMethods.sizeOfMethodExpressionArray(); 51 DistributedMethodWrapper[] result = new DistributedMethodWrapper[count]; 52 53 for(int i = 0; i < count; i++) { 54 result[i] = new DistributedMethodWrapper(distributedMethods, i); 55 } 56 57 return result; 58 } 59 60 static RootWrapper[] createRootWrappers(RootsWrapper rootsWrapper) { 61 int count = rootsWrapper.sizeOfRootArray(); 62 RootWrapper[] result = new RootWrapper[count]; 63 64 for(int i = 0; i < count; i++) { 65 result[i] = new RootWrapper(rootsWrapper, i); 66 } 67 68 return result; 69 } 70 71 static TransientFieldWrapper[] createTransientFieldWrappers(TransientFieldsWrapper transientFields) { 72 int count = transientFields.sizeOfFieldNameArray(); 73 TransientFieldWrapper[] result = new TransientFieldWrapper[count]; 74 75 for(int i = 0; i < count; i++) { 76 result[i] = new TransientFieldWrapper(transientFields, i); 77 } 78 79 return result; 80 } 81 82 static BootClassWrapper[] createBootClassWrappers(AdditionalBootJarClassesWrapper abjc) { 83 int count = abjc.sizeOfIncludeArray(); 84 BootClassWrapper[] result = new BootClassWrapper[count]; 85 86 for(int i = 0; i < count; i++) { 87 result[i] = new BootClassWrapper(abjc, i); 88 } 89 90 return result; 91 } 92 93 public Object getParent(Object element) { 94 return null; 95 } 96 97 public boolean hasChildren(Object element) { 98 return element instanceof TreeRoot || 99 element instanceof RootsWrapper && ((RootsWrapper)element).sizeOfRootArray() > 0 || 100 element instanceof LocksWrapper || 101 element instanceof AutolocksWrapper && ((AutolocksWrapper)element).sizeOfAutolockArray() > 0 || 102 element instanceof NamedLocksWrapper && ((NamedLocksWrapper)element).sizeOfNamedLockArray() > 0 || 103 element instanceof InstrumentedClassesWrapper || 104 element instanceof IncludesWrapper && ((IncludesWrapper)element).sizeOfIncludeArray() > 0 || 105 element instanceof ExcludesWrapper && ((ExcludesWrapper)element).sizeOfExcludeArray() > 0 || 106 element instanceof TransientFieldsWrapper && ((TransientFieldsWrapper)element).sizeOfFieldNameArray() > 0 || 107 element instanceof AdditionalBootJarClassesWrapper && ((AdditionalBootJarClassesWrapper)element).sizeOfIncludeArray() > 0 || 108 element instanceof DistributedMethodsWrapper && ((DistributedMethodsWrapper)element).sizeOfMethodExpressionArray() > 0; 109 } 110 111 public Object [] getElements(Object inputElement) { 112 if(inputElement == TreeRoot.EMPTY_ROOT) { 113 return new Object [0]; 114 } else if(inputElement instanceof TreeRoot) { 115 TcConfig config = ((TreeRoot)inputElement).getRoot(); 116 if(config == null) { 117 return new Object [0]; 118 } else { 119 Application app = config.getApplication(); 120 if(app == null) app = config.addNewApplication(); 121 DsoApplication dsoApp = app.getDso(); 122 if(dsoApp == null) dsoApp = app.addNewDso(); 123 124 return new Object [] { 125 new RootsWrapper(dsoApp), 126 new LocksWrapper(dsoApp), 127 new TransientFieldsWrapper(dsoApp), 128 new InstrumentedClassesWrapper(dsoApp), 129 new DistributedMethodsWrapper(dsoApp), 130 new AdditionalBootJarClassesWrapper(dsoApp) 131 }; 132 } 133 } 134 return null; 135 } 136 137 public void dispose() { 138 139 } 140 141 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { 142 143 } 144 } 145 | Popular Tags |