/*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
*/
package com.intellij.lang.properties;
+import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.util.Computable;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.Nullable;
public interface BundleNameEvaluator {
-
BundleNameEvaluator DEFAULT = new BundleNameEvaluator() {
-
@Nullable
public String evaluateBundleName(final PsiFile psiFile) {
- final PsiDirectory directory = psiFile.getParent();
- if (directory == null) {
- return null;
- }
+ PsiDirectory directory = ApplicationManager.getApplication().runReadAction(new Computable<PsiDirectory>() {
+ @Override
+ public PsiDirectory compute() {
+ return psiFile.getParent();
+ }
+ });
+ if (directory == null) return null;
- final String packageQualifiedName = PropertiesUtil.getPackageQualifiedName(directory);
+ String packageQualifiedName = PropertiesUtil.getPackageQualifiedName(directory);
+ if (packageQualifiedName == null) return null;
- if (packageQualifiedName != null) {
- final StringBuilder qName = new StringBuilder(packageQualifiedName);
- if (qName.length() > 0) {
- qName.append(".");
- }
- qName.append(ResourceBundleManager.getInstance(psiFile.getProject()).getBaseName(psiFile));
- return qName.toString();
- }
- return null;
+ StringBuilder qName = new StringBuilder(packageQualifiedName);
+ if (qName.length() > 0) qName.append(".");
+ qName.append(ResourceBundleManager.getInstance(psiFile.getProject()).getBaseName(psiFile));
+ return qName.toString();
}
};