use of org.jetbrains.android.dom.manifest.Manifest in project android by JetBrains.
the class AndroidApplicationPackageRenameProcessor method renameElement.
@Override
public void renameElement(PsiElement element, String newName, UsageInfo[] usages, @Nullable RefactoringElementListener listener) throws IncorrectOperationException {
if (element instanceof PsiPackage) {
final Map<GenericAttributeValue, String> newAttrValues = new HashMap<GenericAttributeValue, String>();
final Project project = element.getProject();
final String oldPackageQName = ((PsiPackage) element).getQualifiedName();
final String newPackageQName = PsiUtilCore.getQualifiedNameAfterRename(oldPackageQName, newName);
for (Module module : ModuleManager.getInstance(project).getModules()) {
final AndroidFacet facet = AndroidFacet.getInstance(module);
final Manifest manifest = facet != null ? facet.getManifest() : null;
if (manifest != null) {
final XmlElement manifestElement = manifest.getXmlElement();
final PsiFile manifestPsiFile = manifestElement != null ? manifestElement.getContainingFile() : null;
if (manifestPsiFile instanceof XmlFile) {
final String basePackage = manifest.getPackage().getValue();
if (basePackage == null) {
continue;
}
processAllAttributesToUpdate((XmlFile) manifestPsiFile, basePackage, oldPackageQName, newPackageQName, new Processor<Pair<GenericAttributeValue, String>>() {
@Override
public boolean process(Pair<GenericAttributeValue, String> pair) {
newAttrValues.put(pair.getFirst(), pair.getSecond());
return true;
}
});
}
}
}
new RenamePsiPackageProcessor().renameElement(element, newName, usages, listener);
for (Map.Entry<GenericAttributeValue, String> e : newAttrValues.entrySet()) {
//noinspection unchecked
e.getKey().setStringValue(e.getValue());
}
return;
}
final PsiFile file = element.getContainingFile();
if (!(file instanceof XmlFile)) {
return;
}
final Map<GenericAttributeValue, PsiClass> attr2class = buildAttr2ClassMap((XmlFile) file);
new RenameXmlAttributeProcessor().renameElement(element, newName, usages, listener);
for (Map.Entry<GenericAttributeValue, PsiClass> e : attr2class.entrySet()) {
//noinspection unchecked
e.getKey().setValue(e.getValue());
}
}
use of org.jetbrains.android.dom.manifest.Manifest in project android by JetBrains.
the class AbstractRegisterComponentAction method invoke.
@Override
public final void invoke(@NotNull Project project, @Nullable Editor editor, @Nullable PsiFile file) throws IncorrectOperationException {
final PsiClass psiClass = editor == null ? null : extractClass(editor, file);
if (psiClass == null) {
return;
}
final AndroidFacet facet = AndroidFacet.getInstance(file);
final Manifest manifest = facet == null ? null : facet.getManifest();
if (manifest == null) {
return;
}
final XmlElement element = manifest.getXmlElement();
final PsiFile manifestFile = element == null ? null : element.getContainingFile();
if (manifestFile == null) {
return;
}
new WriteCommandAction.Simple(project, file, manifestFile) {
@Override
protected void run() throws Throwable {
invoke(psiClass, manifest);
}
}.execute();
}
use of org.jetbrains.android.dom.manifest.Manifest in project android by JetBrains.
the class AndroidActivityAliasCompletionContributor method doCollectActivityAliases.
private static void doCollectActivityAliases(@NotNull AndroidFacet facet, @NotNull Set<String> result) {
final Manifest manifest = facet.getManifest();
if (manifest == null) {
return;
}
final String aPackage = manifest.getPackage().getStringValue();
final Application application = manifest.getApplication();
if (application == null) {
return;
}
for (ActivityAlias activityAlias : application.getActivityAliases()) {
String alias = activityAlias.getName().getStringValue();
if (alias != null && alias.length() > 0) {
if (!alias.startsWith(".")) {
if (alias.indexOf('.') > 0) {
result.add(alias);
}
alias = "." + alias;
}
if (aPackage != null && aPackage.length() > 0 && StringUtil.commonPrefixLength(aPackage, alias) == 0) {
result.add(aPackage + alias);
}
}
}
}
use of org.jetbrains.android.dom.manifest.Manifest in project android by JetBrains.
the class AndroidDataSourcePropertiesDialog method loadDatabases.
private void loadDatabases(@NotNull IDevice device) {
myDatabaseMap.clear();
final FileListingService service = device.getFileListingService();
if (service == null)
return;
final Set<String> packages = new HashSet<String>();
for (AndroidFacet facet : ProjectFacetManager.getInstance(myProject).getFacets(AndroidFacet.ID)) {
final Manifest manifest = facet.getManifest();
if (manifest != null) {
final String aPackage = manifest.getPackage().getStringValue();
if (aPackage != null && aPackage.length() > 0) {
packages.add(aPackage);
}
}
}
if (packages.isEmpty())
return;
final long startTime = System.currentTimeMillis();
boolean tooLong = false;
for (String aPackage : packages) {
myDatabaseMap.put(aPackage, tooLong ? Collections.<String>emptyList() : loadDatabases(device, aPackage));
if (System.currentTimeMillis() - startTime > 4000) {
tooLong = true;
}
}
}
Aggregations