diff --git a/java/java-psi-impl/src/com/intellij/core/JavaCoreApplicationEnvironment.java b/java/java-psi-impl/src/com/intellij/core/JavaCoreApplicationEnvironment.java
index 51ae457b4fc0..229872918fdb 100644
--- a/java/java-psi-impl/src/com/intellij/core/JavaCoreApplicationEnvironment.java
+++ b/java/java-psi-impl/src/com/intellij/core/JavaCoreApplicationEnvironment.java
@@ -26,6 +26,10 @@ import com.intellij.lang.java.JavaParserDefinition;
import com.intellij.navigation.ItemPresentationProviders;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.extensions.Extensions;
+import com.intellij.openapi.fileTypes.FileTypeFactory;
+import com.intellij.openapi.fileTypes.PlainTextFileType;
+import com.intellij.openapi.fileTypes.impl.CoreFileTypeFactory;
+import com.intellij.openapi.fileTypes.impl.JavaFileTypeFactory;
import com.intellij.openapi.projectRoots.JavaVersionService;
import com.intellij.openapi.util.ClassExtension;
import com.intellij.openapi.util.Disposer;
@@ -49,9 +53,10 @@ public class JavaCoreApplicationEnvironment extends CoreApplicationEnvironment {
public JavaCoreApplicationEnvironment(Disposable parentDisposable) {
super(parentDisposable);
+ addExtension(FileTypeFactory.FILE_TYPE_FACTORY_EP, new JavaFileTypeFactory());
+
registerFileType(JavaClassFileType.INSTANCE, "class");
registerFileType(JavaFileType.INSTANCE, "java");
- registerFileType(ArchiveFileType.INSTANCE, "jar;zip");
addExplicitExtension(FileTypeFileViewProviders.INSTANCE, JavaClassFileType.INSTANCE, new ClassFileViewProviderFactory());
addExplicitExtension(BinaryFileStubBuilders.INSTANCE, JavaClassFileType.INSTANCE, new ClassFileStubBuilder());
diff --git a/java/java-impl/src/com/intellij/openapi/fileTypes/impl/JavaFileTypeFactory.java b/java/java-psi-impl/src/com/intellij/openapi/fileTypes/impl/JavaFileTypeFactory.java
similarity index 100%
rename from java/java-impl/src/com/intellij/openapi/fileTypes/impl/JavaFileTypeFactory.java
rename to java/java-psi-impl/src/com/intellij/openapi/fileTypes/impl/JavaFileTypeFactory.java
diff --git a/jps/model-api/jps-model-api.iml b/jps/model-api/jps-model-api.iml
index 7e88b0067116..16a8d53b7c5c 100644
--- a/jps/model-api/jps-model-api.iml
+++ b/jps/model-api/jps-model-api.iml
@@ -9,6 +9,7 @@
+
diff --git a/jps/model-impl/jps-model-impl.iml b/jps/model-impl/jps-model-impl.iml
index 4a17b3a41db1..906f29f997f1 100644
--- a/jps/model-impl/jps-model-impl.iml
+++ b/jps/model-impl/jps-model-impl.iml
@@ -11,6 +11,7 @@
+
diff --git a/jps/model-api/src/com/intellij/openapi/fileTypes/FileNameMatcher.java b/platform/core-api/src/com/intellij/openapi/fileTypes/FileNameMatcher.java
similarity index 100%
rename from jps/model-api/src/com/intellij/openapi/fileTypes/FileNameMatcher.java
rename to platform/core-api/src/com/intellij/openapi/fileTypes/FileNameMatcher.java
diff --git a/platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeConsumer.java b/platform/core-api/src/com/intellij/openapi/fileTypes/FileTypeConsumer.java
similarity index 100%
rename from platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeConsumer.java
rename to platform/core-api/src/com/intellij/openapi/fileTypes/FileTypeConsumer.java
diff --git a/platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeFactory.java b/platform/core-api/src/com/intellij/openapi/fileTypes/FileTypeFactory.java
similarity index 100%
rename from platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeFactory.java
rename to platform/core-api/src/com/intellij/openapi/fileTypes/FileTypeFactory.java
diff --git a/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java b/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java
index 60560a349f95..8e9b8129dbfa 100644
--- a/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java
+++ b/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java
@@ -16,6 +16,7 @@
package com.intellij.core;
import com.intellij.concurrency.*;
+import com.intellij.ide.highlighter.ArchiveFileType;
import com.intellij.lang.*;
import com.intellij.lang.impl.PsiBuilderFactoryImpl;
import com.intellij.mock.MockApplication;
@@ -33,6 +34,7 @@ import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.extensions.ExtensionsArea;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileTypes.*;
+import com.intellij.openapi.fileTypes.impl.CoreFileTypeFactory;
import com.intellij.openapi.progress.*;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.StaticGetter;
@@ -120,6 +122,9 @@ public class CoreApplicationEnvironment {
registerExtensionPoint(Extensions.getRootArea(), BinaryFileStubBuilders.EP_NAME, FileTypeExtensionPoint.class);
registerExtensionPoint(Extensions.getRootArea(), FileContextProvider.EP_NAME, FileContextProvider.class);
+ registerExtensionPoint(Extensions.getRootArea(), FileTypeFactory.FILE_TYPE_FACTORY_EP, FileTypeFactory.class);
+ addExtension(FileTypeFactory.FILE_TYPE_FACTORY_EP, new CoreFileTypeFactory());
+
registerApplicationExtensionPoint(MetaDataContributor.EP_NAME, MetaDataContributor.class);
ProgressIndicatorProvider.ourInstance = createProgressIndicatorProvider();
diff --git a/platform/core-impl/src/com/intellij/openapi/fileTypes/impl/CoreFileTypeFactory.java b/platform/core-impl/src/com/intellij/openapi/fileTypes/impl/CoreFileTypeFactory.java
new file mode 100644
index 000000000000..5ef79ad9f385
--- /dev/null
+++ b/platform/core-impl/src/com/intellij/openapi/fileTypes/impl/CoreFileTypeFactory.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.intellij.openapi.fileTypes.impl;
+
+import com.intellij.ide.highlighter.ArchiveFileType;
+import com.intellij.openapi.fileTypes.FileTypeConsumer;
+import com.intellij.openapi.fileTypes.FileTypeFactory;
+import com.intellij.openapi.fileTypes.PlainTextFileType;
+import com.intellij.openapi.fileTypes.UnknownFileType;
+import org.jetbrains.annotations.NotNull;
+
+public class CoreFileTypeFactory extends FileTypeFactory {
+ public void createFileTypes(@NotNull final FileTypeConsumer consumer) {
+ consumer.consume(ArchiveFileType.INSTANCE, "zip;jar;war;ear;swc;ane;egg;apk");
+ consumer.consume(PlainTextFileType.INSTANCE, "txt;sh;bat;cmd;policy;log;cgi;MF;jad;jam;htaccess;rb");
+ consumer.consume(UnknownFileType.INSTANCE);
+ }
+}
diff --git a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/PlatformFileTypeFactory.java b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/PlatformFileTypeFactory.java
index 7f550f989e07..ab7bc54b0979 100644
--- a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/PlatformFileTypeFactory.java
+++ b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/PlatformFileTypeFactory.java
@@ -24,9 +24,6 @@ import org.jetbrains.annotations.NotNull;
*/
public class PlatformFileTypeFactory extends FileTypeFactory {
public void createFileTypes(@NotNull final FileTypeConsumer consumer) {
- consumer.consume(ArchiveFileType.INSTANCE, "zip;jar;war;ear;swc;ane;egg;apk");
- consumer.consume(PlainTextFileType.INSTANCE, "txt;sh;bat;cmd;policy;log;cgi;MF;jad;jam;htaccess;rb");
consumer.consume(NativeFileType.INSTANCE, "doc;docx;xls;xlsx;ppt;pptx;mdb;vsd;pdf;hlp;chm;odt");
- consumer.consume(UnknownFileType.INSTANCE);
}
}
diff --git a/resources/src/META-INF/IdeaPlugin.xml b/resources/src/META-INF/IdeaPlugin.xml
index 5649dc0639ea..de18ee7d7a2e 100644
--- a/resources/src/META-INF/IdeaPlugin.xml
+++ b/resources/src/META-INF/IdeaPlugin.xml
@@ -294,6 +294,7 @@
+