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.
16 package org
.jetbrains
.idea
.svn
.ignore
;
18 import com
.intellij
.openapi
.vfs
.VirtualFile
;
20 import java
.util
.HashMap
;
21 import java
.util
.HashSet
;
25 public class FileGroupInfo
implements FileIterationListener
, IgnoreInfoGetter
{
26 private String commonExtension
;
27 private final Map
<VirtualFile
, Set
<String
>> folders
;
29 private int fileCount
;
30 private boolean sameExtensionCase
;
32 public FileGroupInfo() {
34 sameExtensionCase
= true;
35 folders
= new HashMap
<VirtualFile
, Set
<String
>>();
38 public void onFileEnabled(final VirtualFile file
) {
41 if (sameExtensionCase
) {
42 final String extension
= file
.getExtension();
43 if (extension
== null) {
44 sameExtensionCase
= false;
45 } else if (commonExtension
== null) {
46 commonExtension
= extension
;
48 sameExtensionCase
&= commonExtension
.equals(extension
);
52 final VirtualFile parentVirtualFile
= file
.getParent();
54 if (parentVirtualFile
!= null) {
55 Set
<String
> namesList
= folders
.get(parentVirtualFile
);
56 if (namesList
== null) {
57 namesList
= new HashSet
<String
>();
58 folders
.put(parentVirtualFile
, namesList
);
60 namesList
.add(file
.getName());
64 public boolean oneFileSelected() {
65 return fileCount
== 1;
68 public boolean sameExtension() {
69 return sameExtensionCase
;
72 public String
getExtensionMask() {
73 return "*." + commonExtension
;
76 public Map
<VirtualFile
, Set
<String
>> getInfo(final boolean useCommonExtension
) {
77 if (! useCommonExtension
) {
80 final Map
<VirtualFile
, Set
<String
>> result
= new HashMap
<VirtualFile
, Set
<String
>>(folders
.size(), 1);
81 for (final Map
.Entry
<VirtualFile
, Set
<String
>> entry
: folders
.entrySet()) {
82 final Set
<String
> set
= new HashSet
<String
>();
83 set
.add(getExtensionMask());
84 result
.put(entry
.getKey(), set
);
89 public String
getFileName() {
90 return folders
.values().iterator().next().iterator().next();