fix userdata calculation
[fedora-idea.git] / platform / lang-impl / src / com / intellij / openapi / roots / impl / FilePropertyPusher.java
blob0645c1029d5f1822289b70ab1ec173315ef00038
1 package com.intellij.openapi.roots.impl;
3 import com.intellij.openapi.extensions.ExtensionPointName;
4 import com.intellij.openapi.module.Module;
5 import com.intellij.openapi.project.Project;
6 import com.intellij.openapi.util.Key;
7 import com.intellij.openapi.vfs.VirtualFile;
8 import com.intellij.util.messages.MessageBus;
9 import org.jetbrains.annotations.NotNull;
10 import org.jetbrains.annotations.Nullable;
12 import java.io.IOException;
14 /**
15 * @author Gregory.Shrago
17 public interface FilePropertyPusher<T> {
18 ExtensionPointName<FilePropertyPusher> EP_NAME = ExtensionPointName.create("com.intellij.filePropertyPusher");
20 void initExtra(Project project, MessageBus bus, Engine languageLevelUpdater);
21 @NotNull
22 Key<T> getFileDataKey();
23 boolean pushDirectoriesOnly();
25 T getDefaultValue();
27 @Nullable
28 T getImmediateValue(Project project, VirtualFile file);
30 @Nullable
31 T getImmediateValue(Module module);
33 boolean acceptsFile(VirtualFile file);
35 void persistAttribute(VirtualFile fileOrDir, T value) throws IOException;
37 public interface Engine {
38 void pushAll();
39 void pushRecursively(final VirtualFile vile, final Project project);