Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/port80/eclipse/xml/editors/XMLOutlineContentProvider.java


1   package com.port80.eclipse.xml.editors;
2   
3   import org.eclipse.core.resources.ResourcesPlugin;
4   import org.eclipse.jface.viewers.ITreeContentProvider;
5   import org.eclipse.jface.viewers.LabelProvider;
6   import org.eclipse.jface.viewers.TreeViewer;
7   import org.eclipse.jface.viewers.Viewer;
8   import org.eclipse.swt.graphics.Image;
9   
10  /**
11   * Data model for JavaccOutlinePage.
12   * 
13   * @author chrisl
14   */
15  public class XMLOutlineContentProvider extends LabelProvider implements ITreeContentProvider {
16  
17    ////////////////////////////////////////////////////////////////////////                                
18  
19    private static final String NAME = "XMLOutlineContentProvider";
20    private static final boolean DEBUG = true;
21  
22    ////////////////////////////////////////////////////////////////////////                                
23  
24    private TreeFolder fInvisibleRoot;
25    private TreeObject fTop;
26  
27    ////////////////////////////////////////////////////////////////////////                                
28  
29    /**
30     * Constructor for MethodViewContentProvider.
31     */
32    public XMLOutlineContentProvider() {
33      super();
34      fInvisibleRoot = new TreeFolder("");
35    }
36  
37    ////////////////////////////////////////////////////////////////////////                                
38  
39    public void setInput(TreeObject top) {
40      fInvisibleRoot=new TreeFolder("");
41      if (top != null)
42        fInvisibleRoot.addChild(top);
43      fTop = top;
44    }
45  
46    // ITreeContentProvider /////////////////////////////////////////////
47  
48    public Object getParent(Object child) {
49      if (child instanceof TreeObject) {
50        return ((TreeObject) child).getParent();
51      }
52      return null;
53    }
54  
55    public Object[] getChildren(Object parent) {
56      if (parent instanceof TreeFolder) {
57        return ((TreeFolder) parent).getChildren();
58      }
59      return new Object[0];
60    }
61  
62    public boolean hasChildren(Object parent) {
63      if (parent instanceof TreeFolder)
64        return ((TreeFolder) parent).hasChildren();
65      return false;
66    }
67  
68    // IStructuredContentProvider interface ///////////////////////////
69  
70    public Object[] getElements(Object parent) {
71      if (parent == null || parent == ResourcesPlugin.getWorkspace()) {
72        return getChildren(fInvisibleRoot);
73      }
74      return getChildren(parent);
75    }
76  
77    // IContentProvider interface /////////////////////////////////
78  
79    public void inputChanged(Viewer v, Object oldInput, Object newInput) {
80    }
81  
82    public void dispose() {
83    }
84  
85    // LabelProvider interface /////////////////////////////////////
86  
87    public String getText(Object a) {
88      return a.toString();
89    }
90  
91    public Image getImage(Object a) {
92      return ((TreeObject) a).getImage();
93    }
94  
95    ////////////////////////////////////////////////////////////////////////                                
96  
97    public TreeFolder getRoot() {
98      return fInvisibleRoot;
99    }
100 
101   public TreeObject getTop() {
102     return fTop;
103   }
104 
105   public void expandTree(TreeViewer viewer) {
106     viewer.expandToLevel(3);
107   }
108 
109   public TreeObject findElement(Object a) {
110     return findElement(a, fTop);
111   }
112 
113   /** 
114    * Find object 'a' in the given 'subtree' base on comparison of its encasuplated element.
115    */
116   private TreeObject findElement(Object a, TreeObject subtree) {
117     if (a == null)
118       return null;
119     if (a.equals(subtree.getElement()))
120       return subtree;
121     if (subtree instanceof TreeFolder) {
122       TreeFolder folder = (TreeFolder) subtree;
123       TreeObject item;
124       for (int i = 0; i < folder.getNumChildren(); ++i) {
125         item = findElement(a, folder.getChild(i));
126         if (item != null)
127           return item;
128       }
129     }
130     return null;
131   }
132 
133   ////////////////////////////////////////////////////////////////////////
134 
135 }