update copyright
[fedora-idea.git] / java / java-impl / src / com / intellij / ide / projectView / impl / JavaProjectViewDirectoryHelper.java
blob3fac40f43c55b7dc6fb2539283f18a54ccfa52c0
1 /*
2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 * User: anna
19 * Date: 23-Jan-2008
21 package com.intellij.ide.projectView.impl;
23 import com.intellij.ide.projectView.ViewSettings;
24 import com.intellij.ide.projectView.impl.nodes.PackageElement;
25 import com.intellij.ide.projectView.impl.nodes.PackageUtil;
26 import com.intellij.ide.projectView.impl.nodes.ProjectViewDirectoryHelper;
27 import com.intellij.ide.util.treeView.TreeViewUtil;
28 import com.intellij.openapi.project.Project;
29 import com.intellij.openapi.roots.FileIndexUtil;
30 import com.intellij.openapi.roots.impl.DirectoryIndex;
31 import com.intellij.openapi.vfs.VirtualFile;
32 import com.intellij.psi.JavaDirectoryService;
33 import com.intellij.psi.PsiDirectory;
34 import com.intellij.psi.PsiPackage;
35 import org.jetbrains.annotations.NotNull;
36 import org.jetbrains.annotations.Nullable;
38 import java.util.Arrays;
40 public class JavaProjectViewDirectoryHelper extends ProjectViewDirectoryHelper {
41 public JavaProjectViewDirectoryHelper(Project project, DirectoryIndex index) {
42 super(project, index);
45 @Override
46 public String getLocationString(@NotNull final PsiDirectory directory) {
47 PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(directory);
48 if (ProjectRootsUtil.isSourceRoot(directory) && aPackage != null) { //package prefix
49 return aPackage.getQualifiedName();
51 return super.getLocationString(directory);
54 @Override
55 public boolean isShowFQName(final ViewSettings settings, final Object parentValue, final PsiDirectory value) {
56 PsiPackage aPackage;
57 return value != null
58 && !(parentValue instanceof Project)
59 && settings.isFlattenPackages()
60 && (aPackage = JavaDirectoryService.getInstance().getPackage(value)) != null
61 && aPackage.getQualifiedName().length() > 0;
65 @Nullable
66 @Override
67 public String getNodeName(final ViewSettings settings, final Object parentValue, final PsiDirectory directory) {
68 PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(directory);
70 PsiPackage parentPackage;
71 if (!ProjectRootsUtil.isSourceRoot(directory) && aPackage != null && aPackage.getQualifiedName().length() > 0 &&
72 parentValue instanceof PsiDirectory) {
74 parentPackage = JavaDirectoryService.getInstance().getPackage(((PsiDirectory)parentValue));
76 else {
77 parentPackage = null;
80 return PackageUtil.getNodeName(settings, aPackage, parentPackage, directory.getName(), isShowFQName(settings, parentValue, directory));
84 @Override
85 public boolean skipDirectory(final PsiDirectory directory) {
86 return JavaDirectoryService.getInstance().getPackage(directory) == null;
89 @Override
90 public boolean showFileInLibClasses(final VirtualFile vFile) {
91 return !FileIndexUtil.isJavaSourceFile(getProject(), vFile);
94 @Override
95 public boolean isEmptyMiddleDirectory(final PsiDirectory directory, final boolean strictlyEmpty) {
96 return JavaDirectoryService.getInstance().getPackage(directory) != null && TreeViewUtil.isEmptyMiddlePackage(directory, strictlyEmpty);
99 @Override
100 public boolean supportsFlattenPackages() {
101 return true;
104 @Override
105 public boolean supportsHideEmptyMiddlePackages() {
106 return true;
109 @Override
110 public boolean canRepresent(final Object element, final PsiDirectory directory) {
111 if (super.canRepresent(element, directory)) return true;
112 if (element instanceof PackageElement) {
113 final PackageElement packageElement = (PackageElement)element;
114 return Arrays.asList(packageElement.getPackage().getDirectories()).contains(directory);
116 return false;