mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
new framework detection: migrating facet detectors
This commit is contained in:
+2
-2
@@ -311,7 +311,7 @@ public class FacetAutodetectingManagerImpl extends FacetAutodetectingManager imp
|
||||
myType = type;
|
||||
}
|
||||
|
||||
public <U extends FacetConfiguration> void register(@NotNull final FileType fileType, @NotNull final FileContentPattern fileContentFilter,
|
||||
public <U extends FacetConfiguration> void register(@NotNull final FileType fileType, @NotNull final OldFileContentPattern fileContentFilter,
|
||||
@NotNull final FacetDetector<VirtualFile, C> facetDetector,
|
||||
final UnderlyingFacetSelector<VirtualFile, U> selector) {
|
||||
myHasDetectors = true;
|
||||
@@ -321,7 +321,7 @@ public class FacetAutodetectingManagerImpl extends FacetAutodetectingManager imp
|
||||
facetDetector, selector));
|
||||
}
|
||||
|
||||
public <U extends FacetConfiguration> void register(@NotNull final FileType fileType, @NotNull final FileContentPattern fileContentFilter,
|
||||
public <U extends FacetConfiguration> void register(@NotNull final FileType fileType, @NotNull final OldFileContentPattern fileContentFilter,
|
||||
@NotNull final Condition<PsiFile> psiFileFilter, @NotNull final FacetDetector<PsiFile, C> facetDetector,
|
||||
final UnderlyingFacetSelector<VirtualFile, U> selector) {
|
||||
myHasDetectors = true;
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ public class FacetByPsiFileDetectorWrapper<C extends FacetConfiguration, F exten
|
||||
private final Condition<PsiFile> myPsiFileFilter;
|
||||
|
||||
public FacetByPsiFileDetectorWrapper(ProjectFacetInfoSet projectFacetSet, FacetType<F, C> facetType,
|
||||
final AutodetectionFilter autodetectionFilter, final FileContentPattern fileContentPattern,
|
||||
final AutodetectionFilter autodetectionFilter, final OldFileContentPattern fileContentPattern,
|
||||
final FacetDetector<PsiFile, C> facetDetector,
|
||||
Condition<PsiFile> psiFileFilter, final UnderlyingFacetSelector<VirtualFile, U> selector) {
|
||||
super(projectFacetSet, facetType, autodetectionFilter, fileContentPattern, facetDetector, selector);
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
*/
|
||||
public class FacetByVirtualFileDetectorWrapper<C extends FacetConfiguration, F extends Facet<C>, U extends FacetConfiguration> extends FacetDetectorWrapper<VirtualFile, C, F, U> {
|
||||
public FacetByVirtualFileDetectorWrapper(ProjectFacetInfoSet projectFacetSet, FacetType<F, C> facetType,
|
||||
final AutodetectionFilter autodetectionFilter, final FileContentPattern fileContentPattern,
|
||||
final AutodetectionFilter autodetectionFilter, final OldFileContentPattern fileContentPattern,
|
||||
final FacetDetector<VirtualFile, C> facetDetector,
|
||||
final UnderlyingFacetSelector<VirtualFile, U> selector) {
|
||||
super(projectFacetSet, facetType, autodetectionFilter, fileContentPattern, facetDetector, selector);
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
* @author nik
|
||||
*/
|
||||
public interface FacetDetectorForWizardRegistry<C extends FacetConfiguration> {
|
||||
<U extends FacetConfiguration> void register(final FileType fileType, @NotNull final FileContentPattern fileContentPattern,
|
||||
<U extends FacetConfiguration> void register(final FileType fileType, @NotNull final OldFileContentPattern fileContentPattern,
|
||||
final FacetDetector<VirtualFile, C> facetDetector,
|
||||
final UnderlyingFacetSelector<VirtualFile, U> underlyingFacetSelector);
|
||||
}
|
||||
|
||||
@@ -52,26 +52,26 @@ public class FacetDetectorRegistryEx<C extends FacetConfiguration> implements Fa
|
||||
}
|
||||
|
||||
public void registerUniversalDetectorByRootTag(@NotNull final String rootTag, @NotNull final FacetDetector<VirtualFile, C> detector) {
|
||||
registerUniversalDetector(StdFileTypes.XML, FileContentPattern.fileContent().xmlWithRootTag(rootTag), detector, null);
|
||||
registerUniversalDetector(StdFileTypes.XML, OldFileContentPattern.fileContent().xmlWithRootTag(rootTag), detector, null);
|
||||
}
|
||||
|
||||
public <U extends FacetConfiguration> void registerUniversalDetectorByFileNameAndRootTag(@NotNull @NonNls String fileName,
|
||||
@NotNull @NonNls String rootTag,
|
||||
@NotNull final FacetDetector<VirtualFile, C> detector,
|
||||
@Nullable UnderlyingFacetSelector<VirtualFile, U> underlyingFacetSelector) {
|
||||
registerUniversalDetector(StdFileTypes.XML, FileContentPattern.fileContent().withName(fileName).xmlWithRootTag(rootTag), detector, underlyingFacetSelector);
|
||||
registerUniversalDetector(StdFileTypes.XML, OldFileContentPattern.fileContent().withName(fileName).xmlWithRootTag(rootTag), detector, underlyingFacetSelector);
|
||||
}
|
||||
|
||||
public void registerDetectorForWizard(@NotNull final FileType fileType, @NotNull final VirtualFileFilter virtualFileFilter, @NotNull final FacetDetector<VirtualFile, C> facetDetector) {
|
||||
if (myForWizardDelegate != null) {
|
||||
myForWizardDelegate.register(fileType, FileContentPattern.byFilter(virtualFileFilter), facetDetector, null);
|
||||
myForWizardDelegate.register(fileType, OldFileContentPattern.byFilter(virtualFileFilter), facetDetector, null);
|
||||
}
|
||||
}
|
||||
|
||||
public void registerDetectorForWizard(@NotNull final FileType fileType, @NotNull final VirtualFilePattern virtualFilePattern,
|
||||
@NotNull final FacetDetector<VirtualFile, C> facetDetector) {
|
||||
if (myForWizardDelegate != null) {
|
||||
myForWizardDelegate.register(fileType, FileContentPattern.byFilePattern(virtualFilePattern), facetDetector, null);
|
||||
myForWizardDelegate.register(fileType, OldFileContentPattern.byFilePattern(virtualFilePattern), facetDetector, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ public class FacetDetectorRegistryEx<C extends FacetConfiguration> implements Fa
|
||||
@NotNull final FacetDetector<VirtualFile, C> facetDetector,
|
||||
@NotNull final UnderlyingFacetSelector<VirtualFile, U> underlyingFacetSelector) {
|
||||
if (myForWizardDelegate != null) {
|
||||
myForWizardDelegate.register(fileType, FileContentPattern.byFilePattern(virtualFilePattern), facetDetector, underlyingFacetSelector);
|
||||
myForWizardDelegate.register(fileType, OldFileContentPattern.byFilePattern(virtualFilePattern), facetDetector, underlyingFacetSelector);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ public class FacetDetectorRegistryEx<C extends FacetConfiguration> implements Fa
|
||||
@NotNull final FacetDetector<PsiFile, C> facetDetector,
|
||||
@Nullable UnderlyingFacetSelector<VirtualFile, U> selector) {
|
||||
if (myOnTheFlyDelegate != null) {
|
||||
myOnTheFlyDelegate.register(fileType, FileContentPattern.byFilter(virtualFileFilter), psiFileFilter, facetDetector, selector);
|
||||
myOnTheFlyDelegate.register(fileType, OldFileContentPattern.byFilter(virtualFileFilter), psiFileFilter, facetDetector, selector);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,11 +125,11 @@ public class FacetDetectorRegistryEx<C extends FacetConfiguration> implements Fa
|
||||
}
|
||||
|
||||
public void registerUniversalDetector(@NotNull final FileType fileType, @NotNull final VirtualFileFilter virtualFileFilter, @NotNull final FacetDetector<VirtualFile, C> facetDetector) {
|
||||
registerUniversalDetector(fileType, FileContentPattern.byFilter(virtualFileFilter), facetDetector, null);
|
||||
registerUniversalDetector(fileType, OldFileContentPattern.byFilter(virtualFileFilter), facetDetector, null);
|
||||
}
|
||||
|
||||
public <U extends FacetConfiguration> void registerUniversalDetector(@NotNull final FileType fileType,
|
||||
@NotNull final FileContentPattern fileContentFilter,
|
||||
@NotNull final OldFileContentPattern fileContentFilter,
|
||||
@NotNull final FacetDetector<VirtualFile, C> facetDetector,
|
||||
final UnderlyingFacetSelector<VirtualFile, U> underlyingFacetSelector) {
|
||||
if (myForWizardDelegate != null) {
|
||||
@@ -143,7 +143,7 @@ public class FacetDetectorRegistryEx<C extends FacetConfiguration> implements Fa
|
||||
public <U extends FacetConfiguration> void registerUniversalSubFacetDetector(@NotNull final FileType fileType, @NotNull final VirtualFilePattern virtualFilePattern,
|
||||
@NotNull final FacetDetector<VirtualFile, C> facetDetector,
|
||||
final UnderlyingFacetSelector<VirtualFile, U> underlyingFacetSelector) {
|
||||
registerUniversalDetector(fileType, FileContentPattern.byFilePattern(virtualFilePattern), facetDetector, underlyingFacetSelector);
|
||||
registerUniversalDetector(fileType, OldFileContentPattern.byFilePattern(virtualFilePattern), facetDetector, underlyingFacetSelector);
|
||||
}
|
||||
|
||||
private static class MyPatternFilter implements VirtualFileFilter {
|
||||
|
||||
@@ -40,13 +40,13 @@ import java.util.Map;
|
||||
public abstract class FacetDetectorWrapper<S, C extends FacetConfiguration, F extends Facet<C>, U extends FacetConfiguration> {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.facet.impl.autodetecting.FacetDetectorWrapper");
|
||||
private final AutodetectionFilter myAutodetectionFilter;
|
||||
private final FileContentPattern myFileContentPattern;
|
||||
private final OldFileContentPattern myFileContentPattern;
|
||||
private final FacetDetector<S,C> myFacetDetector;
|
||||
private final UnderlyingFacetSelector<VirtualFile, U> myUnderlyingFacetSelector;
|
||||
private final ProjectFacetInfoSet myDetectedFacetSet;
|
||||
private final FacetType<F,C> myFacetType;
|
||||
|
||||
protected FacetDetectorWrapper(ProjectFacetInfoSet projectFacetSet, FacetType<F, C> facetType, final AutodetectionFilter autodetectionFilter, final FileContentPattern fileContentPattern,
|
||||
protected FacetDetectorWrapper(ProjectFacetInfoSet projectFacetSet, FacetType<F, C> facetType, final AutodetectionFilter autodetectionFilter, final OldFileContentPattern fileContentPattern,
|
||||
final FacetDetector<S, C> facetDetector,
|
||||
final UnderlyingFacetSelector<VirtualFile, U> selector) {
|
||||
myDetectedFacetSet = projectFacetSet;
|
||||
@@ -57,7 +57,7 @@ public abstract class FacetDetectorWrapper<S, C extends FacetConfiguration, F ex
|
||||
myUnderlyingFacetSelector = selector;
|
||||
}
|
||||
|
||||
public FileContentPattern getFileContentPattern() {
|
||||
public OldFileContentPattern getFileContentPattern() {
|
||||
return myFileContentPattern;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -30,11 +30,11 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public interface FacetOnTheFlyDetectorRegistry<C extends FacetConfiguration> {
|
||||
<U extends FacetConfiguration>
|
||||
void register(@NotNull FileType fileType, @NotNull FileContentPattern fileContentPattern,
|
||||
void register(@NotNull FileType fileType, @NotNull OldFileContentPattern fileContentPattern,
|
||||
@NotNull FacetDetector<VirtualFile, C> detector, UnderlyingFacetSelector<VirtualFile, U> selector);
|
||||
|
||||
<U extends FacetConfiguration>
|
||||
void register(@NotNull FileType fileType, @NotNull FileContentPattern fileContentPattern,
|
||||
void register(@NotNull FileType fileType, @NotNull OldFileContentPattern fileContentPattern,
|
||||
@NotNull Condition<PsiFile> psiFileFilter, @NotNull FacetDetector<PsiFile, C> detector,
|
||||
UnderlyingFacetSelector<VirtualFile, U> selector);
|
||||
}
|
||||
|
||||
+12
-12
@@ -30,16 +30,16 @@ import java.io.IOException;
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class FileContentPattern extends ObjectPattern<FileContent, FileContentPattern> {
|
||||
public FileContentPattern() {
|
||||
public class OldFileContentPattern extends ObjectPattern<FileContent, OldFileContentPattern> {
|
||||
public OldFileContentPattern() {
|
||||
super(FileContent.class);
|
||||
}
|
||||
|
||||
public static FileContentPattern fileContent() {
|
||||
return new FileContentPattern();
|
||||
public static OldFileContentPattern fileContent() {
|
||||
return new OldFileContentPattern();
|
||||
}
|
||||
|
||||
public FileContentPattern withName(@NotNull final String name) {
|
||||
public OldFileContentPattern withName(@NotNull final String name) {
|
||||
return with(new PatternCondition<FileContent>("withName") {
|
||||
@Override
|
||||
public boolean accepts(@NotNull FileContent fileContent, ProcessingContext context) {
|
||||
@@ -48,7 +48,7 @@ public class FileContentPattern extends ObjectPattern<FileContent, FileContentPa
|
||||
});
|
||||
}
|
||||
|
||||
public FileContentPattern withName(final StringPattern namePattern) {
|
||||
public OldFileContentPattern withName(final StringPattern namePattern) {
|
||||
return with(new PatternCondition<FileContent>("withName") {
|
||||
@Override
|
||||
public boolean accepts(@NotNull FileContent fileContent, ProcessingContext context) {
|
||||
@@ -57,7 +57,7 @@ public class FileContentPattern extends ObjectPattern<FileContent, FileContentPa
|
||||
});
|
||||
}
|
||||
|
||||
public FileContentPattern inDirectory(final @NotNull String name) {
|
||||
public OldFileContentPattern inDirectory(final @NotNull String name) {
|
||||
return with(new PatternCondition<FileContent>("inDirectory") {
|
||||
@Override
|
||||
public boolean accepts(@NotNull FileContent fileContent, ProcessingContext context) {
|
||||
@@ -66,7 +66,7 @@ public class FileContentPattern extends ObjectPattern<FileContent, FileContentPa
|
||||
});
|
||||
}
|
||||
|
||||
public FileContentPattern xmlWithRootTag(@NotNull final String rootTag) {
|
||||
public OldFileContentPattern xmlWithRootTag(@NotNull final String rootTag) {
|
||||
return with(new PatternCondition<FileContent>("withRootTag") {
|
||||
@Override
|
||||
public boolean accepts(@NotNull FileContent fileContent, ProcessingContext context) {
|
||||
@@ -80,11 +80,11 @@ public class FileContentPattern extends ObjectPattern<FileContent, FileContentPa
|
||||
});
|
||||
}
|
||||
|
||||
public FileContentPattern xmlWithRootTagNamespace(final String namespace) {
|
||||
public OldFileContentPattern xmlWithRootTagNamespace(final String namespace) {
|
||||
return xmlWithRootTagNamespace(StandardPatterns.string().equalTo(namespace));
|
||||
}
|
||||
|
||||
public FileContentPattern xmlWithRootTagNamespace(final ElementPattern<String> namespacePattern) {
|
||||
public OldFileContentPattern xmlWithRootTagNamespace(final ElementPattern<String> namespacePattern) {
|
||||
return with(new PatternCondition<FileContent>("xmlWithRootTagNamespace") {
|
||||
public boolean accepts(@NotNull final FileContent fileContent, final ProcessingContext context) {
|
||||
try {
|
||||
@@ -98,7 +98,7 @@ public class FileContentPattern extends ObjectPattern<FileContent, FileContentPa
|
||||
});
|
||||
}
|
||||
|
||||
public static FileContentPattern byFilter(@NotNull final VirtualFileFilter filter) {
|
||||
public static OldFileContentPattern byFilter(@NotNull final VirtualFileFilter filter) {
|
||||
return fileContent().with(new PatternCondition<FileContent>("withFileFilter") {
|
||||
@Override
|
||||
public boolean accepts(@NotNull FileContent fileContent, ProcessingContext context) {
|
||||
@@ -107,7 +107,7 @@ public class FileContentPattern extends ObjectPattern<FileContent, FileContentPa
|
||||
});
|
||||
}
|
||||
|
||||
public static FileContentPattern byFilePattern(@NotNull final VirtualFilePattern pattern) {
|
||||
public static OldFileContentPattern byFilePattern(@NotNull final VirtualFilePattern pattern) {
|
||||
return fileContent().with(new PatternCondition<FileContent>("withFilePattern") {
|
||||
@Override
|
||||
public boolean accepts(@NotNull FileContent fileContent, ProcessingContext context) {
|
||||
@@ -21,7 +21,7 @@ import com.intellij.facet.autodetecting.FacetDetector;
|
||||
import com.intellij.facet.autodetecting.UnderlyingFacetSelector;
|
||||
import com.intellij.facet.impl.autodetecting.FacetDetectorForWizardRegistry;
|
||||
import com.intellij.facet.impl.autodetecting.FacetDetectorRegistryEx;
|
||||
import com.intellij.facet.impl.autodetecting.FileContentPattern;
|
||||
import com.intellij.facet.impl.autodetecting.OldFileContentPattern;
|
||||
import com.intellij.ide.caches.FileContent;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
@@ -129,11 +129,11 @@ public class FacetDetectionProcessor {
|
||||
private class MyFacetDetectorWrapper<C extends FacetConfiguration, U extends FacetConfiguration> {
|
||||
private final FacetType<?, C> myFacetType;
|
||||
private final FileType myFileType;
|
||||
private final FileContentPattern myFileContentPattern;
|
||||
private final OldFileContentPattern myFileContentPattern;
|
||||
private final FacetDetector<VirtualFile, C> myDetector;
|
||||
private final UnderlyingFacetSelector<VirtualFile, U> myUnderlyingFacetSelector;
|
||||
|
||||
public MyFacetDetectorWrapper(final FacetType<?, C> facetType, final FileType fileType, final FileContentPattern fileContentFilter, final FacetDetector<VirtualFile, C> detector,
|
||||
public MyFacetDetectorWrapper(final FacetType<?, C> facetType, final FileType fileType, final OldFileContentPattern fileContentFilter, final FacetDetector<VirtualFile, C> detector,
|
||||
final UnderlyingFacetSelector<VirtualFile, U> underlyingFacetSelector) {
|
||||
myUnderlyingFacetSelector = underlyingFacetSelector;
|
||||
myFacetType = facetType;
|
||||
@@ -225,7 +225,7 @@ public class FacetDetectionProcessor {
|
||||
myLevel=level;
|
||||
}
|
||||
|
||||
public <U extends FacetConfiguration> void register(final FileType fileType, @NotNull final FileContentPattern fileContentPattern, final FacetDetector<VirtualFile, C> facetDetector,
|
||||
public <U extends FacetConfiguration> void register(final FileType fileType, @NotNull final OldFileContentPattern fileContentPattern, final FacetDetector<VirtualFile, C> facetDetector,
|
||||
final UnderlyingFacetSelector<VirtualFile, U> underlyingFacetSelector) {
|
||||
if (myFacetType.getUnderlyingFacetType() != null) {
|
||||
LOG.assertTrue(underlyingFacetSelector != null, "UnderlyingFacetSelector must be specified for " + myFacetType.getPresentableName() + " detector");
|
||||
|
||||
+23
-2
@@ -19,11 +19,15 @@ import com.intellij.facet.Facet;
|
||||
import com.intellij.facet.FacetConfiguration;
|
||||
import com.intellij.facet.FacetType;
|
||||
import com.intellij.framework.FrameworkType;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.StdFileTypes;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -38,8 +42,19 @@ public abstract class FacetBasedFrameworkDetector<F extends Facet, C extends Fac
|
||||
public abstract FacetType<F, C> getFacetType();
|
||||
|
||||
@NotNull
|
||||
public abstract List<Pair<C,Collection<VirtualFile>>> createConfigurations(@NotNull Collection<VirtualFile> files,
|
||||
@NotNull Collection<C> existentFacetConfigurations);
|
||||
public List<Pair<C,Collection<VirtualFile>>> createConfigurations(@NotNull Collection<VirtualFile> files,
|
||||
@NotNull Collection<C> existentFacetConfigurations) {
|
||||
final C configuration = createConfiguration(files);
|
||||
if (configuration != null) {
|
||||
return Collections.singletonList(Pair.create(configuration, files));
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected C createConfiguration(Collection<VirtualFile> files) {
|
||||
return getFacetType().createDefaultConfiguration();
|
||||
}
|
||||
|
||||
public void setupFacet(@NotNull F facet) {
|
||||
}
|
||||
@@ -58,4 +73,10 @@ public abstract class FacetBasedFrameworkDetector<F extends Facet, C extends Fac
|
||||
public boolean isSuitableUnderlyingFacetConfiguration(FacetConfiguration underlying, C configuration, Set<VirtualFile> files) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public FileType getFileType() {
|
||||
return StdFileTypes.XML;
|
||||
}
|
||||
}
|
||||
|
||||
+10
-11
@@ -28,17 +28,16 @@ import java.io.IOException;
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
//todo[nik] remove old FileContentPattern and rename this class
|
||||
public class NewFileContentPattern extends ObjectPattern<FileContent, NewFileContentPattern> {
|
||||
private NewFileContentPattern() {
|
||||
public class FileContentPattern extends ObjectPattern<FileContent, FileContentPattern> {
|
||||
private FileContentPattern() {
|
||||
super(FileContent.class);
|
||||
}
|
||||
|
||||
public static NewFileContentPattern fileContent() {
|
||||
return new NewFileContentPattern();
|
||||
public static FileContentPattern fileContent() {
|
||||
return new FileContentPattern();
|
||||
}
|
||||
|
||||
public NewFileContentPattern withName(@NotNull final String name) {
|
||||
public FileContentPattern withName(@NotNull final String name) {
|
||||
return with(new PatternCondition<FileContent>("withName") {
|
||||
@Override
|
||||
public boolean accepts(@NotNull FileContent fileContent, ProcessingContext context) {
|
||||
@@ -47,7 +46,7 @@ public class NewFileContentPattern extends ObjectPattern<FileContent, NewFileCon
|
||||
});
|
||||
}
|
||||
|
||||
public NewFileContentPattern withName(final StringPattern namePattern) {
|
||||
public FileContentPattern withName(final StringPattern namePattern) {
|
||||
return with(new PatternCondition<FileContent>("withName") {
|
||||
@Override
|
||||
public boolean accepts(@NotNull FileContent fileContent, ProcessingContext context) {
|
||||
@@ -56,7 +55,7 @@ public class NewFileContentPattern extends ObjectPattern<FileContent, NewFileCon
|
||||
});
|
||||
}
|
||||
|
||||
public NewFileContentPattern inDirectory(final @NotNull String name) {
|
||||
public FileContentPattern inDirectory(final @NotNull String name) {
|
||||
return with(new PatternCondition<FileContent>("inDirectory") {
|
||||
@Override
|
||||
public boolean accepts(@NotNull FileContent fileContent, ProcessingContext context) {
|
||||
@@ -65,7 +64,7 @@ public class NewFileContentPattern extends ObjectPattern<FileContent, NewFileCon
|
||||
});
|
||||
}
|
||||
|
||||
public NewFileContentPattern xmlWithRootTag(@NotNull final String rootTag) {
|
||||
public FileContentPattern xmlWithRootTag(@NotNull final String rootTag) {
|
||||
return with(new PatternCondition<FileContent>("withRootTag") {
|
||||
@Override
|
||||
public boolean accepts(@NotNull FileContent fileContent, ProcessingContext context) {
|
||||
@@ -79,11 +78,11 @@ public class NewFileContentPattern extends ObjectPattern<FileContent, NewFileCon
|
||||
});
|
||||
}
|
||||
|
||||
public NewFileContentPattern xmlWithRootTagNamespace(final String namespace) {
|
||||
public FileContentPattern xmlWithRootTagNamespace(final String namespace) {
|
||||
return xmlWithRootTagNamespace(StandardPatterns.string().equalTo(namespace));
|
||||
}
|
||||
|
||||
public NewFileContentPattern xmlWithRootTagNamespace(final ElementPattern<String> namespacePattern) {
|
||||
public FileContentPattern xmlWithRootTagNamespace(final ElementPattern<String> namespacePattern) {
|
||||
return with(new PatternCondition<FileContent>("xmlWithRootTagNamespace") {
|
||||
public boolean accepts(@NotNull final FileContent fileContent, final ProcessingContext context) {
|
||||
try {
|
||||
@@ -108,6 +108,7 @@
|
||||
<configurationType implementation="org.jetbrains.android.run.testing.AndroidTestRunConfigurationType"/>
|
||||
<programRunner implementation="org.jetbrains.android.run.AndroidDebugRunner"/>
|
||||
<facetType implementation="org.jetbrains.android.facet.AndroidFacetType"/>
|
||||
<framework.detector implementation="org.jetbrains.android.facet.AndroidFrameworkDetector"/>
|
||||
<fileTemplateGroup implementation="org.jetbrains.android.AndroidFileTemplateProvider"/>
|
||||
<moduleType id="ANDROID_MODULE" implementationClass="org.jetbrains.android.newProject.AndroidModuleType" classpathProvider="true"/>
|
||||
<moduleConfigurationEditorProvider implementation="org.jetbrains.android.newProject.AndroidModuleConfigurationEditorProvider"/>
|
||||
|
||||
@@ -15,30 +15,17 @@
|
||||
*/
|
||||
package org.jetbrains.android.facet;
|
||||
|
||||
import com.android.sdklib.SdkConstants;
|
||||
import com.intellij.facet.Facet;
|
||||
import com.intellij.facet.FacetType;
|
||||
import com.intellij.facet.autodetecting.FacetDetector;
|
||||
import com.intellij.facet.autodetecting.FacetDetectorRegistry;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.fileTypes.StdFileTypes;
|
||||
import com.intellij.openapi.module.JavaModuleType;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleType;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.startup.StartupManager;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileFilter;
|
||||
import org.jetbrains.android.dom.manifest.Manifest;
|
||||
import org.jetbrains.android.importDependencies.ImportDependenciesUtil;
|
||||
import org.jetbrains.android.newProject.AndroidModuleType;
|
||||
import org.jetbrains.android.sdk.AndroidSdkUtils;
|
||||
import org.jetbrains.android.util.AndroidUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
@@ -68,56 +55,6 @@ public class AndroidFacetType extends FacetType<AndroidFacet, AndroidFacetConfig
|
||||
return moduleType instanceof JavaModuleType || moduleType instanceof AndroidModuleType;
|
||||
}
|
||||
|
||||
public void registerDetectors(FacetDetectorRegistry<AndroidFacetConfiguration> detectorRegistry) {
|
||||
FacetDetector<VirtualFile, AndroidFacetConfiguration> detector = new FacetDetector<VirtualFile, AndroidFacetConfiguration>() {
|
||||
public AndroidFacetConfiguration detectFacet(VirtualFile source, Collection<AndroidFacetConfiguration> existentFacetConfigurations) {
|
||||
if (!existentFacetConfigurations.isEmpty()) {
|
||||
return existentFacetConfigurations.iterator().next();
|
||||
}
|
||||
return createDefaultConfiguration();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterFacetAdded(@NotNull final Facet facet) {
|
||||
if (facet instanceof AndroidFacet) {
|
||||
final Module module = facet.getModule();
|
||||
final Project project = module.getProject();
|
||||
|
||||
ImportDependenciesUtil.importDependencies(module, true);
|
||||
|
||||
StartupManager.getInstance(project).runWhenProjectIsInitialized(new Runnable() {
|
||||
public void run() {
|
||||
final Module module = facet.getModule();
|
||||
AndroidSdkUtils.setupAndroidPlatformInNeccessary(module);
|
||||
|
||||
final AndroidFacet androidFacet = (AndroidFacet)facet;
|
||||
|
||||
final String androidLibraryPropValue = AndroidUtils
|
||||
.getPropertyValue(module, SdkConstants.FN_DEFAULT_PROPERTIES, AndroidUtils.ANDROID_LIBRARY_PROPERTY);
|
||||
if (androidLibraryPropValue != null && androidLibraryPropValue.equals("true")) {
|
||||
androidFacet.getConfiguration().LIBRARY_PROJECT = true;
|
||||
}
|
||||
|
||||
Manifest manifest = androidFacet.getManifest();
|
||||
if (manifest != null) {
|
||||
if (AndroidUtils.getDefaultActivityName(manifest) != null) {
|
||||
AndroidUtils.addRunConfiguration(project, androidFacet, null, true);
|
||||
}
|
||||
}
|
||||
ApplicationManager.getApplication().saveAll();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
VirtualFileFilter androidManifestFilter = new VirtualFileFilter() {
|
||||
public boolean accept(VirtualFile file) {
|
||||
return file.getName().equals(SdkConstants.FN_ANDROID_MANIFEST_XML);
|
||||
}
|
||||
};
|
||||
detectorRegistry.registerUniversalDetector(StdFileTypes.XML, androidManifestFilter, detector);
|
||||
}
|
||||
|
||||
public Icon getIcon() {
|
||||
return AndroidUtils.ANDROID_ICON;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
* Copyright 2000-2011 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 org.jetbrains.android.facet;
|
||||
|
||||
import com.android.sdklib.SdkConstants;
|
||||
import com.intellij.facet.FacetType;
|
||||
import com.intellij.framework.detection.FacetBasedFrameworkDetector;
|
||||
import com.intellij.framework.detection.FileContentPattern;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.startup.StartupManager;
|
||||
import com.intellij.patterns.ElementPattern;
|
||||
import com.intellij.util.indexing.FileContent;
|
||||
import org.jetbrains.android.dom.manifest.Manifest;
|
||||
import org.jetbrains.android.importDependencies.ImportDependenciesUtil;
|
||||
import org.jetbrains.android.sdk.AndroidSdkUtils;
|
||||
import org.jetbrains.android.util.AndroidUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class AndroidFrameworkDetector extends FacetBasedFrameworkDetector<AndroidFacet, AndroidFacetConfiguration> {
|
||||
public AndroidFrameworkDetector() {
|
||||
super("android");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupFacet(@NotNull final AndroidFacet facet) {
|
||||
final Module module = facet.getModule();
|
||||
final Project project = module.getProject();
|
||||
|
||||
ImportDependenciesUtil.importDependencies(module, true);
|
||||
|
||||
StartupManager.getInstance(project).runWhenProjectIsInitialized(new Runnable() {
|
||||
public void run() {
|
||||
final Module module = facet.getModule();
|
||||
AndroidSdkUtils.setupAndroidPlatformInNeccessary(module);
|
||||
|
||||
final String androidLibraryPropValue = AndroidUtils
|
||||
.getPropertyValue(module, SdkConstants.FN_DEFAULT_PROPERTIES, AndroidUtils.ANDROID_LIBRARY_PROPERTY);
|
||||
if (androidLibraryPropValue != null && androidLibraryPropValue.equals("true")) {
|
||||
facet.getConfiguration().LIBRARY_PROJECT = true;
|
||||
}
|
||||
|
||||
Manifest manifest = facet.getManifest();
|
||||
if (manifest != null) {
|
||||
if (AndroidUtils.getDefaultActivityName(manifest) != null) {
|
||||
AndroidUtils.addRunConfiguration(project, facet, null, true);
|
||||
}
|
||||
}
|
||||
ApplicationManager.getApplication().saveAll();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public FacetType<AndroidFacet, AndroidFacetConfiguration> getFacetType() {
|
||||
return AndroidFacet.getFacetType();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public FileType getFileType() {
|
||||
return AndroidFrameworkDetector.super.getFileType();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ElementPattern<FileContent> createSuitableFilePattern() {
|
||||
return FileContentPattern.fileContent().withName(SdkConstants.FN_ANDROID_MANIFEST_XML);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user