/eclipse-plugin/plugins/com.google.test.metric.eclipse.ui/src/main/java/com/google/test/metric/eclipse/ui/internal/JavaPackageElementContentProvider.java

http://testability-explorer.googlecode.com/ · Java · 94 lines · 60 code · 13 blank · 21 comment · 8 complexity · a29fb7a5838c99ecf6d0a7e514abe8dd MD5 · raw file

  1. /*
  2. * Copyright 2009 Google Inc.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package com.google.test.metric.eclipse.ui.internal;
  17. import com.google.test.metric.eclipse.internal.util.JavaProjectHelper;
  18. import com.google.test.metric.eclipse.internal.util.Logger;
  19. import org.eclipse.core.runtime.CoreException;
  20. import org.eclipse.jdt.core.IJavaElement;
  21. import org.eclipse.jdt.core.IJavaProject;
  22. import org.eclipse.jdt.core.IPackageFragment;
  23. import org.eclipse.jdt.core.IPackageFragmentRoot;
  24. import org.eclipse.jdt.core.IParent;
  25. import org.eclipse.jdt.core.JavaModelException;
  26. import org.eclipse.jface.viewers.ITreeContentProvider;
  27. import org.eclipse.jface.viewers.Viewer;
  28. import java.util.ArrayList;
  29. import java.util.List;
  30. /**
  31. * Provides the list of packages to be displayed in the whitelist selection dialog.
  32. *
  33. * @author shyamseshadri@google.com (Shyam Seshadri)
  34. */
  35. public class JavaPackageElementContentProvider implements ITreeContentProvider {
  36. private JavaProjectHelper javaProjectHelper;
  37. private final static Logger logger = new Logger();
  38. public JavaPackageElementContentProvider() {
  39. javaProjectHelper = new JavaProjectHelper();
  40. }
  41. public Object[] getChildren(Object element) {
  42. if (element instanceof IJavaProject) {
  43. try {
  44. return javaProjectHelper.getAllJavaPackageFragmentRoots((IJavaProject) element).toArray();
  45. } catch (JavaModelException e) {
  46. logger.logException(e);
  47. } catch (CoreException e) {
  48. logger.logException(e);
  49. }
  50. } else if (element instanceof IPackageFragmentRoot || element instanceof IPackageFragment) {
  51. try {
  52. List<IJavaElement> javaElements = new ArrayList<IJavaElement>();
  53. IJavaElement[] children = ((IParent) element).getChildren();
  54. for (IJavaElement javaElement : children) {
  55. if (javaElement instanceof IPackageFragment && !javaElement.getElementName().equals("")) {
  56. javaElements.add(javaElement);
  57. }
  58. }
  59. return javaElements.toArray();
  60. } catch (JavaModelException e) {
  61. logger.logException(e);
  62. }
  63. }
  64. return null;
  65. }
  66. public Object getParent(Object element) {
  67. if (element instanceof IJavaElement) {
  68. return ((IJavaElement) element).getParent();
  69. }
  70. return null;
  71. }
  72. public boolean hasChildren(Object element) {
  73. // TODO(shyamseshadri): Figure out a better, faster, more optimum way to do this.
  74. return getChildren(element).length > 0;
  75. }
  76. public Object[] getElements(Object inputElement) {
  77. return getChildren(inputElement);
  78. }
  79. public void dispose() {}
  80. public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
  81. }