1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
  class ViewContentProvider implements ITreeContentProvider {
    IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();

    public Object[] getChildren(Object parentElement) {
      System.out.println("getChildren");
      if (parentElement instanceof IProject) {
        IProject project = (IProject) parentElement;
        IFolder folder = project.getFolder("src");
        if (folder != null) {;
          return folder; // Trying to return a child
        }
      }
      return null;
    }

    public Object getParent(Object element) {
      System.out.println("Get parent");
      return ((IResource) element).getParent();
    }

    public boolean hasChildren(Object element) {
      System.out.println("hasChildren");

      if (element instanceof IProject) {
        IProject project = (IProject) element;
        IFolder folder = project.getFolder("src");
        if (folder != null) {
          return true;
        }
      }

      return false;
    }

    public Object[] getElements(Object inputElement) {
      System.out.println("getElements");
      Vector<IProject> projects = new Vector<IProject>();

      // Remove closed projects from the array
      for (IProject project : workspaceRoot.getProjects()) {
        if (project.isOpen()) {
          projects.add(project);
        }
      }

      return projects.toArray();
    }

    public void dispose() {
      System.out.println("dispose");

    }

    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
      // TODO Auto-generated method stub

    }
  }

  class ViewLabelProvider extends LabelProvider {
    @Override
    public Image getImage(Object element) {
      return super.getImage(element);
    }
    @Override
    public String getText(Object element) {
      IProjectDescription projectDescription;
      try {
        projectDescription = ((IProject) element).getDescription();
      } catch (CoreException e) {
        projectDescription = new ProjectDescription();
        e.printStackTrace();
      }
      return projectDescription.getName();
    }
  }