]> git.uio.no Git - ifi-stolz-refaktor.git/blame - case-study/jdt-before/ui/org/eclipse/jdt/internal/ui/javadocexport/JavadocProjectContentProvider.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-before / ui / org / eclipse / jdt / internal / ui / javadocexport / JavadocProjectContentProvider.java
CommitLineData
1b2798f6
EK
1/*******************************************************************************
2 * Copyright (c) 2000, 2011 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11package org.eclipse.jdt.internal.ui.javadocexport;
12
13import java.util.ArrayList;
14
15import org.eclipse.core.resources.IWorkspaceRoot;
16import org.eclipse.core.resources.ResourcesPlugin;
17
18import org.eclipse.jface.viewers.ITreeContentProvider;
19import org.eclipse.jface.viewers.Viewer;
20
21import org.eclipse.jdt.core.IJavaElement;
22import org.eclipse.jdt.core.IJavaProject;
23import org.eclipse.jdt.core.IPackageFragment;
24import org.eclipse.jdt.core.IPackageFragmentRoot;
25import org.eclipse.jdt.core.JavaCore;
26import org.eclipse.jdt.core.JavaModelException;
27
28import org.eclipse.jdt.internal.ui.JavaPlugin;
29
30public class JavadocProjectContentProvider implements ITreeContentProvider {
31
32 /*
33 * @see ITreeContentProvider#getChildren(Object)
34 */
35 public Object[] getChildren(Object parentElement) {
36 try {
37 if (parentElement instanceof IJavaProject) {
38 IJavaProject project= (IJavaProject) parentElement;
39 return getPackageFragmentRoots(project);
40 } else if (parentElement instanceof IPackageFragmentRoot) {
41 return getPackageFragments((IPackageFragmentRoot) parentElement);
42 }
43 } catch (JavaModelException e) {
44 JavaPlugin.log(e);
45 }
46 return new Object[0];
47 }
48 /*
49 * @see IStructuredContentProvider#getElements(Object)
50 */
51 public Object[] getElements(Object inputElement) {
52 IWorkspaceRoot root= ResourcesPlugin.getWorkspace().getRoot();
53 try {
54 return JavaCore.create(root).getJavaProjects();
55 } catch (JavaModelException e) {
56 JavaPlugin.log(e);
57 }
58 return new Object[0];
59 }
60
61 /*
62 * @see ITreeContentProvider#getParent(Object)
63 */
64 public Object getParent(Object element) {
65
66 IJavaElement parent= ((IJavaElement)element).getParent();
67 if (parent instanceof IPackageFragmentRoot) {
68 IPackageFragmentRoot root= (IPackageFragmentRoot) parent;
69 if (root.getPath().equals(root.getJavaProject().getProject().getFullPath())) {
70 return root.getJavaProject();
71 }
72 }
73 return parent;
74 }
75
76 /*
77 * @see ITreeContentProvider#hasChildren(Object)
78 */
79 public boolean hasChildren(Object element) {
80 return (getChildren(element).length > 0);
81 }
82
83 /*
84 * @see IContentProvider#dispose()
85 */
86 public void dispose() {
87 }
88
89 /*
90 * @see IContentProvider#inputChanged(Viewer, Object, Object)
91 */
92 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
93 }
94
95 private Object[] getPackageFragmentRoots(IJavaProject project) throws JavaModelException {
96 ArrayList<Object> result= new ArrayList<Object>();
97
98 IPackageFragmentRoot[] roots= project.getPackageFragmentRoots();
99 for (int i= 0; i < roots.length; i++) {
100 IPackageFragmentRoot root= roots[i];
101 if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
102 if (root.getPath().equals(root.getJavaProject().getPath())) {
103 Object[] packageFragments= getPackageFragments(root);
104 for (int k= 0; k < packageFragments.length; k++) {
105 result.add(packageFragments[k]);
106 }
107 } else {
108 result.add(root);
109 }
110 }
111 }
112 return result.toArray();
113 }
114
115 private Object[] getPackageFragments(IPackageFragmentRoot root) throws JavaModelException {
116 ArrayList<IJavaElement> packageFragments= new ArrayList<IJavaElement>();
117
118 IJavaElement[] children= root.getChildren();
119 for (int i= 0; i < children.length; i++) {
120 if (((IPackageFragment) children[i]).containsJavaResources())
121 packageFragments.add(children[i]);
122 }
123 return packageFragments.toArray();
124 }
125}