extract JavaCodeFragmentFactory out of PsiElementFactory; remove a number of unnecessary back and forth conversions between Project and PsiManager

This commit is contained in:
Dmitry Jemerov
2011-10-14 19:28:03 +02:00
parent a4c521f9e5
commit d84c902a3a
44 changed files with 301 additions and 250 deletions
@@ -55,16 +55,16 @@ public class DefaultCodeFragmentFactory implements CodeFragmentFactory {
}
public JavaCodeFragment createCodeFragment(TextWithImports item, PsiElement context, final Project project) {
final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(project).getElementFactory();
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(project);
final String text = item.getText();
final JavaCodeFragment fragment;
if (CodeFragmentKind.EXPRESSION == item.getKind()) {
final String expressionText = StringUtil.endsWithChar(text, ';')? text.substring(0, text.length() - 1) : text;
fragment = elementFactory.createExpressionCodeFragment(expressionText, context, null, true);
fragment = factory.createExpressionCodeFragment(expressionText, context, null, true);
}
else /*if (CodeFragmentKind.CODE_BLOCK == item.getKind())*/ {
fragment = elementFactory.createCodeBlockCodeFragment(text, context, true);
fragment = factory.createCodeBlockCodeFragment(text, context, true);
}
if(item.getImports().length() > 0) {
@@ -186,7 +186,7 @@ public class PeerFactoryImpl extends PeerFactory {
public TextComponent createTypedTextField(final String text, PsiType type, PsiElement context, final Project project) {
final PsiExpressionCodeFragment fragment =
JavaPsiFacade.getInstance(project).getElementFactory().createExpressionCodeFragment(text, context, type, true);
JavaCodeFragmentFactory.getInstance(project).createExpressionCodeFragment(text, context, type, true);
final Document document = PsiDocumentManager.getInstance(project).getDocument(fragment);
return new EditorTextField(document, project, StdFileTypes.JAVA);
}
@@ -384,7 +384,7 @@ public class ReferenceExpressionCompletionContributor {
final Consumer<LookupElement> result,
PsiType qualifierType,
final PsiType expectedType, JavaSmartCompletionParameters parameters) throws IncorrectOperationException {
final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(place.getProject()).getElementFactory();
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(place.getProject());
PsiType varType = qualifierType;
if (varType instanceof PsiEllipsisType) {
varType = ((PsiEllipsisType)varType).getComponentType();
@@ -394,7 +394,7 @@ public class ReferenceExpressionCompletionContributor {
}
final String typeText = varType.getCanonicalText();
final JavaCodeFragment block = elementFactory.createCodeBlockCodeFragment(typeText + " xxx;xxx.xxx;", place, false);
final JavaCodeFragment block = factory.createCodeBlockCodeFragment(typeText + " xxx;xxx.xxx;", place, false);
final PsiElement secondChild = block.getChildren()[1];
if (!(secondChild instanceof PsiExpressionStatement)) {
LOG.error(typeText + " of " + varType.getClass());
@@ -18,7 +18,7 @@ package com.intellij.codeInsight.template;
import com.intellij.codeInsight.completion.JavaCompletionData;
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer;
import com.intellij.ide.highlighter.JavaFileHighlighter;
import com.intellij.lang.StdLanguages;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileTypes.SyntaxHighlighter;
import com.intellij.openapi.project.Project;
@@ -41,7 +41,7 @@ public abstract class JavaCodeContextType extends TemplateContextType {
}
public boolean isInContext(@NotNull final PsiFile file, final int offset) {
if (PsiUtilBase.getLanguageAtOffset(file, offset).isKindOf(StdLanguages.JAVA)) {
if (PsiUtilBase.getLanguageAtOffset(file, offset).isKindOf(JavaLanguage.INSTANCE)) {
PsiElement element = file.findElementAt(offset);
if (element instanceof PsiWhiteSpace) {
return false;
@@ -66,7 +66,7 @@ public abstract class JavaCodeContextType extends TemplateContextType {
return super.createDocument(text, project);
}
final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(project);
final PsiElementFactory factory = psiFacade.getElementFactory();
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(project);
final JavaCodeFragment fragment = factory.createCodeBlockCodeFragment((String)text, psiFacade.findPackage(""), true);
DaemonCodeAnalyzer.getInstance(project).setHighlightingEnabled(fragment, false);
return PsiDocumentManager.getInstance(project).getDocument(fragment);
@@ -97,8 +97,8 @@ public class GenerateVisitorByHierarchyAction extends AnAction {
private JComponent createBaseClassPanel() {
final JPanel panel = new JPanel(new BorderLayout());
panel.add(new JLabel("Hierarchy Base Class"), BorderLayout.WEST);
final PsiElementFactory factory = psiFacade.getElementFactory();
final PsiTypeCodeFragment codeFragment = factory.createTypeCodeFragment("", null, true, PsiElementFactory.ALLOW_VOID);
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(project);
final PsiTypeCodeFragment codeFragment = factory.createTypeCodeFragment("", null, true, JavaCodeFragmentFactory.ALLOW_VOID);
final Document document = PsiDocumentManager.getInstance(project).getDocument(codeFragment);
final EditorTextField editorTextField = new EditorTextField(document, project, StdFileTypes.JAVA);
editorTextField.addDocumentListener(new com.intellij.openapi.editor.event.DocumentAdapter() {
@@ -0,0 +1,82 @@
/*
* 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 com.intellij.psi.impl;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.PsiCodeFragmentImpl;
import com.intellij.psi.impl.source.PsiExpressionCodeFragmentImpl;
import com.intellij.psi.impl.source.PsiJavaCodeReferenceCodeFragmentImpl;
import com.intellij.psi.impl.source.PsiTypeCodeFragmentImpl;
import com.intellij.psi.impl.source.tree.JavaElementType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class JavaCodeFragmentFactoryImpl extends JavaCodeFragmentFactory {
private final Project myProject;
public JavaCodeFragmentFactoryImpl(Project project) {
myProject = project;
}
@NotNull
@Override
public PsiExpressionCodeFragment createExpressionCodeFragment(@NotNull final String text,
final PsiElement context,
final PsiType expectedType,
final boolean isPhysical) {
final PsiExpressionCodeFragmentImpl result =
new PsiExpressionCodeFragmentImpl(myProject, isPhysical, "fragment.java", text, expectedType);
result.setContext(context);
return result;
}
@NotNull
@Override
public JavaCodeFragment createCodeBlockCodeFragment(@NotNull final String text, @Nullable final PsiElement context, final boolean isPhysical) {
final PsiCodeFragmentImpl result =
new PsiCodeFragmentImpl(myProject, JavaElementType.STATEMENTS, isPhysical, "fragment.java", text);
result.setContext(context);
return result;
}
@NotNull
@Override
public PsiTypeCodeFragment createTypeCodeFragment(@NotNull final String text, @Nullable final PsiElement context, final boolean isPhysical) {
return createTypeCodeFragment(text, context, isPhysical, 0);
}
@NotNull
@Override
public PsiTypeCodeFragment createTypeCodeFragment(@NotNull final String text, @Nullable final PsiElement context, final boolean isPhysical, final int flags) {
final PsiTypeCodeFragmentImpl result = new PsiTypeCodeFragmentImpl(myProject, isPhysical, "fragment.java", text, flags);
result.setContext(context);
return result;
}
@NotNull
@Override
public PsiJavaCodeReferenceCodeFragment createReferenceCodeFragment(@NotNull final String text,
final PsiElement context,
final boolean isPhysical,
final boolean isClassesAccepted) {
final PsiJavaCodeReferenceCodeFragmentImpl result =
new PsiJavaCodeReferenceCodeFragmentImpl(myProject, isPhysical, "fragment.java", text, isClassesAccepted);
result.setContext(context);
return result;
}
}
@@ -31,7 +31,6 @@ import com.intellij.psi.impl.light.*;
import com.intellij.psi.impl.source.*;
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
import com.intellij.psi.impl.source.tree.FileElement;
import com.intellij.psi.impl.source.tree.JavaElementType;
import com.intellij.psi.impl.source.tree.TreeElement;
import com.intellij.psi.javadoc.PsiDocTag;
import com.intellij.psi.search.GlobalSearchScope;
@@ -396,18 +395,6 @@ public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements Ps
return stmt;
}
@NotNull
@Override
public PsiJavaCodeReferenceCodeFragment createReferenceCodeFragment(@NotNull final String text,
final PsiElement context,
final boolean isPhysical,
final boolean isClassesAccepted) {
final PsiJavaCodeReferenceCodeFragmentImpl result =
new PsiJavaCodeReferenceCodeFragmentImpl(myManager.getProject(), isPhysical, "fragment.java", text, isClassesAccepted);
result.setContext(context);
return result;
}
@NotNull
@Override
public PsiImportStaticStatement createImportStaticStatement(@NotNull final PsiClass aClass,
@@ -593,41 +580,6 @@ public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements Ps
}
}
@NotNull
@Override
public PsiExpressionCodeFragment createExpressionCodeFragment(@NotNull final String text,
final PsiElement context,
final PsiType expectedType,
final boolean isPhysical) {
final PsiExpressionCodeFragmentImpl result =
new PsiExpressionCodeFragmentImpl(myManager.getProject(), isPhysical, "fragment.java", text, expectedType);
result.setContext(context);
return result;
}
@NotNull
@Override
public JavaCodeFragment createCodeBlockCodeFragment(@NotNull final String text, @Nullable final PsiElement context, final boolean isPhysical) {
final PsiCodeFragmentImpl result =
new PsiCodeFragmentImpl(myManager.getProject(), JavaElementType.STATEMENTS, isPhysical, "fragment.java", text);
result.setContext(context);
return result;
}
@NotNull
@Override
public PsiTypeCodeFragment createTypeCodeFragment(@NotNull final String text, @Nullable final PsiElement context, final boolean isPhysical) {
return createTypeCodeFragment(text, context, isPhysical, 0);
}
@NotNull
@Override
public PsiTypeCodeFragment createTypeCodeFragment(@NotNull final String text, @Nullable final PsiElement context, final boolean isPhysical, final int flags) {
final PsiTypeCodeFragmentImpl result = new PsiTypeCodeFragmentImpl(myManager.getProject(), isPhysical, "fragment.java", text, flags);
result.setContext(context);
return result;
}
@NotNull
@Override
public PsiAnnotation createAnnotationFromText(@NotNull final String annotationText, @Nullable final PsiElement context) throws IncorrectOperationException {
@@ -40,10 +40,10 @@ public class PsiTypeCodeFragmentImpl extends PsiCodeFragmentImpl implements PsiT
final int flags) {
super(project, JavaElementType.TYPE_TEXT, isPhysical, name, text);
myAllowEllipsis = BitUtil.isSet(flags, PsiElementFactory.ALLOW_ELLIPSIS);
myAllowDisjunction = BitUtil.isSet(flags, PsiElementFactory.ALLOW_DISJUNCTION);
myAllowEllipsis = BitUtil.isSet(flags, JavaCodeFragmentFactory.ALLOW_ELLIPSIS);
myAllowDisjunction = BitUtil.isSet(flags, JavaCodeFragmentFactory.ALLOW_DISJUNCTION);
if (isSet(flags, PsiElementFactory.ALLOW_VOID)) {
if (isSet(flags, JavaCodeFragmentFactory.ALLOW_VOID)) {
putUserData(PsiUtil.VALID_VOID_TYPE_IN_CODE_FRAGMENT, Boolean.TRUE);
}
}
@@ -54,7 +54,7 @@ public class ChangeClassSignatureDialog extends RefactoringDialog {
private final List<PsiTypeCodeFragment> myTypeCodeFragments;
private final PsiClass myClass;
private final PsiTypeParameter[] myOriginalParameters;
private final PsiManager myManager;
private final Project myProject;
private final MyTableModel myTableModel;
private JBTable myTable;
static final String REFACTORING_NAME = RefactoringBundle.message("changeClassSignature.refactoring.name");
@@ -63,7 +63,7 @@ public class ChangeClassSignatureDialog extends RefactoringDialog {
super(aClass.getProject(), true);
setTitle(REFACTORING_NAME);
myClass = aClass;
myManager = myClass.getManager();
myProject = myClass.getProject();
myTypeParameterInfos = new ArrayList<TypeParameterInfo>();
myTypeCodeFragments = new ArrayList<PsiTypeCodeFragment>();
myOriginalParameters = myClass.getTypeParameters();
@@ -76,8 +76,8 @@ public class ChangeClassSignatureDialog extends RefactoringDialog {
}
private PsiTypeCodeFragment createValueCodeFragment() {
final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(myManager.getProject()).getElementFactory();
return elementFactory.createTypeCodeFragment("", myClass.getLBrace(), true);
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(myProject);
return factory.createTypeCodeFragment("", myClass.getLBrace(), true);
}
protected JComponent createNorthPanel() {
@@ -113,8 +113,8 @@ public class ExceptionsTableModel extends AbstractTableModel implements Editable
}
public PsiTypeCodeFragment createParameterTypeCodeFragment(final String typeText, PsiElement context) {
final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(myContext.getProject()).getElementFactory();
return elementFactory.createTypeCodeFragment(typeText, context, true, PsiElementFactory.ALLOW_ELLIPSIS);
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(myContext.getProject());
return factory.createTypeCodeFragment(typeText, context, true, JavaCodeFragmentFactory.ALLOW_ELLIPSIS);
}
public PsiTypeCodeFragment[] getTypeCodeFragments() {
@@ -458,8 +458,8 @@ public class JavaChangeSignatureDialog extends ChangeSignatureDialogBase<Paramet
@Override
protected PsiCodeFragment createReturnTypeCodeFragment() {
final String returnTypeText = StringUtil.notNullize(myMethod.getReturnTypeText());
final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(myProject).getElementFactory();
return elementFactory.createTypeCodeFragment(returnTypeText, myMethod.getMethod(), true, PsiElementFactory.ALLOW_VOID);
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(myProject);
return factory.createTypeCodeFragment(returnTypeText, myMethod.getMethod(), true, JavaCodeFragmentFactory.ALLOW_VOID);
}
@Override
@@ -78,9 +78,9 @@ public class JavaParameterTableModel extends ParameterTableModelBase<ParameterIn
if (parameterInfo == null) {
parameterInfo = new ParameterInfoImpl(-1);
}
PsiElementFactory f = JavaPsiFacade.getInstance(myProject).getElementFactory();
JavaCodeFragmentFactory f = JavaCodeFragmentFactory.getInstance(myProject);
final PsiTypeCodeFragment paramTypeCodeFragment =
f.createTypeCodeFragment(parameterInfo.getTypeText(), myTypeContext, true, PsiElementFactory.ALLOW_ELLIPSIS);
f.createTypeCodeFragment(parameterInfo.getTypeText(), myTypeContext, true, JavaCodeFragmentFactory.ALLOW_ELLIPSIS);
final CanonicalTypes.Type paramType = parameterInfo.getTypeWrapper();
if (paramType != null) {
paramType.addImportsTo(paramTypeCodeFragment);
@@ -194,7 +194,7 @@ class IntroduceConstantDialog extends DialogWrapper {
}
}
myTfTargetClassName =
new ReferenceEditorComboWithBrowseButton(new ChooseClassAction(), "", PsiManager.getInstance(myProject), true, RECENTS_KEY);
new ReferenceEditorComboWithBrowseButton(new ChooseClassAction(), "", myProject, true, RECENTS_KEY);
myTargetClassNamePanel.setLayout(new BorderLayout());
myTargetClassNamePanel.add(myTfTargetClassName, BorderLayout.CENTER);
myTargetClassNameLabel.setLabelFor(myTfTargetClassName);
@@ -306,7 +306,7 @@ public class IntroduceParameterObjectDialog extends RefactoringDialog {
RecentsManager.getInstance(myProject).registerRecentEntry(EXISTING_KEY, className);
}
}
}, "", PsiManager.getInstance(myProject), true, EXISTING_KEY);
}, "", myProject, true, EXISTING_KEY);
existingClassField.getChildComponent().getDocument().addDocumentListener(new com.intellij.openapi.editor.event.DocumentAdapter() {
@Override
@@ -167,7 +167,7 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog {
myWithBrowseButtonReference = createPackageChooser();
myClassPackageChooser = createPackageChooser();
myInnerClassChooser = new ClassNameReferenceEditor(PsiManager.getInstance(myProject), null, ProjectScope.getProjectScope(myProject));
myInnerClassChooser = new ClassNameReferenceEditor(myProject, null, ProjectScope.getProjectScope(myProject));
myInnerClassChooser.addDocumentListener(new DocumentAdapter() {
public void documentChanged(DocumentEvent e) {
validateButtons();
@@ -42,17 +42,13 @@ import com.intellij.refactoring.ui.RefactoringDialog;
import com.intellij.refactoring.util.CommonRefactoringUtil;
import com.intellij.refactoring.util.classMembers.MemberInfo;
import com.intellij.refactoring.util.classMembers.UsesAndInterfacesDependencyMemberInfoModel;
import com.intellij.ui.IdeBorderFactory;
import com.intellij.ui.RecentsManager;
import com.intellij.ui.ReferenceEditorComboWithBrowseButton;
import com.intellij.ui.ScrollPaneFactory;
import com.intellij.usageView.UsageViewUtil;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NonNls;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -125,7 +121,7 @@ public class MoveMembersDialog extends RefactoringDialog implements MoveMembersO
}
myMemberInfos = memberList;
String fqName = initialTargetClass != null && !sourceClass.equals(initialTargetClass) ? initialTargetClass.getQualifiedName() : "";
myTfTargetClassName = new ReferenceEditorComboWithBrowseButton(new ChooseClassAction(), fqName, PsiManager.getInstance(myProject), true, RECENTS_KEY);
myTfTargetClassName = new ReferenceEditorComboWithBrowseButton(new ChooseClassAction(), fqName, myProject, true, RECENTS_KEY);
init();
}
@@ -41,7 +41,6 @@ import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.event.DocumentEvent;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableColumnModel;
@@ -250,7 +249,7 @@ public class ReplaceConstructorWithBuilderDialog extends RefactoringDialog {
myExistentClassTF.setText(selectedClass.getQualifiedName());
}
}
}, "", PsiManager.getInstance(myProject), true, RECENT_KEYS);
}, "", myProject, true, RECENT_KEYS);
myExistentClassTF.getChildComponent().getDocument().addDocumentListener(adapter);
}
@@ -59,8 +59,7 @@ public class ReplaceConstructorWithFactoryDialog extends RefactoringDialog {
setTitle(ReplaceConstructorWithFactoryHandler.REFACTORING_NAME);
myTfTargetClassName = JavaReferenceEditorUtil
.createReferenceEditorWithBrowseButton(new ChooseClassAction(), "", PsiManager.getInstance(project), true);
myTfTargetClassName = JavaReferenceEditorUtil.createReferenceEditorWithBrowseButton(new ChooseClassAction(), "", project, true);
init();
}
@@ -72,7 +72,6 @@ public class TypeMigrationDialog extends RefactoringDialog {
myRoot = root;
myRules = rules;
final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(project).getElementFactory();
final PsiType migrationRootType = rules != null ? rules.getMigrationRootType() : null;
final PsiType rootType = getRootType();
final String text = migrationRootType != null ? migrationRootType.getPresentableText()
@@ -81,13 +80,13 @@ public class TypeMigrationDialog extends RefactoringDialog {
if (root instanceof PsiParameter) {
final PsiElement scope = ((PsiParameter)root).getDeclarationScope();
if (scope instanceof PsiMethod) {
flags |= PsiElementFactory.ALLOW_ELLIPSIS;
flags |= JavaCodeFragmentFactory.ALLOW_ELLIPSIS;
}
else if (scope instanceof PsiCatchSection && PsiUtil.getLanguageLevel(root).isAtLeast(LanguageLevel.JDK_1_7)) {
flags |= PsiElementFactory.ALLOW_DISJUNCTION;
flags |= JavaCodeFragmentFactory.ALLOW_DISJUNCTION;
}
}
myTypeCodeFragment = elementFactory.createTypeCodeFragment(text, root, true, flags);
myTypeCodeFragment = JavaCodeFragmentFactory.getInstance(project).createTypeCodeFragment(text, root, true, flags);
final PsiDocumentManager documentManager = PsiDocumentManager.getInstance(project);
final Document document = documentManager.getDocument(myTypeCodeFragment);
@@ -38,25 +38,25 @@ public class ClassNameReferenceEditor extends ReferenceEditorWithBrowseButton {
private PsiClass mySelectedClass;
private String myChooserTitle;
public ClassNameReferenceEditor(@NotNull final PsiManager manager, @Nullable final PsiClass selectedClass) {
this(manager, selectedClass, null);
public ClassNameReferenceEditor(@NotNull final Project project, @Nullable final PsiClass selectedClass) {
this(project, selectedClass, null);
}
public ClassNameReferenceEditor(@NotNull final PsiManager manager, @Nullable final PsiClass selectedClass,
public ClassNameReferenceEditor(@NotNull final Project project, @Nullable final PsiClass selectedClass,
@Nullable final GlobalSearchScope resolveScope) {
super(null, manager.getProject(), new Function<String,Document>() {
super(null, project, new Function<String,Document>() {
public Document fun(final String s) {
PsiPackage defaultPackage = JavaPsiFacade.getInstance(manager.getProject()).findPackage("");
final JavaCodeFragment fragment = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory().createReferenceCodeFragment(s, defaultPackage, true, true);
PsiPackage defaultPackage = JavaPsiFacade.getInstance(project).findPackage("");
final JavaCodeFragment fragment = JavaCodeFragmentFactory.getInstance(project).createReferenceCodeFragment(s, defaultPackage, true, true);
fragment.setVisibilityChecker(JavaCodeFragment.VisibilityChecker.EVERYTHING_VISIBLE);
if (resolveScope != null) {
fragment.forceResolveScope(resolveScope);
}
return PsiDocumentManager.getInstance(manager.getProject()).getDocument(fragment);
return PsiDocumentManager.getInstance(project).getDocument(fragment);
}
}, selectedClass != null ? selectedClass.getQualifiedName() : "");
myProject = manager.getProject();
myProject = project;
myChooserTitle = "Choose Class";
addActionListener(new ChooseClassAction());
}
@@ -17,7 +17,6 @@ package com.intellij.refactoring.ui;
import com.intellij.ide.util.PackageChooserDialog;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiManager;
import com.intellij.psi.PsiPackage;
import com.intellij.ui.ReferenceEditorComboWithBrowseButton;
import org.jetbrains.annotations.NotNull;
@@ -31,7 +30,7 @@ import java.awt.event.ActionListener;
public class PackageNameReferenceEditorCombo extends ReferenceEditorComboWithBrowseButton {
public PackageNameReferenceEditorCombo(final String text, @NotNull final Project project,
final String recentsKey, final String chooserTitle) {
super(null, text, PsiManager.getInstance(project), false, recentsKey);
super(null, text, project, false, recentsKey);
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
PackageChooserDialog chooser = new PackageChooserDialog(chooserTitle, project);
@@ -281,7 +281,7 @@ class WrapReturnValueDialog extends RefactoringDialog {
existingClassField.setText(selectedClass.getQualifiedName());
}
}
}, "", PsiManager.getInstance(myProject), true, RECENT_KEYS);
}, "", myProject, true, RECENT_KEYS);
existingClassField.getChildComponent().getDocument().addDocumentListener(adapter);
myDestinationCb = new DestinationFolderComboBox() {
@@ -29,7 +29,6 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.application.Result;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.editor.event.*;
import com.intellij.openapi.editor.event.DocumentAdapter;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.help.HelpManager;
@@ -59,7 +58,6 @@ import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -191,8 +189,7 @@ public class CreateTestDialog extends DialogWrapper {
}
});
mySuperClassField = JavaReferenceEditorUtil
.createReferenceEditorWithBrowseButton(new MyChooseSuperClassAction(), "", PsiManager.getInstance(myProject), true);
mySuperClassField = JavaReferenceEditorUtil.createReferenceEditorWithBrowseButton(new MyChooseSuperClassAction(), "", myProject, true);
mySuperClassField.setMinimumSize(mySuperClassField.getPreferredSize());
String targetPackageName = targetPackage != null ? targetPackage.getQualifiedName() : "";
@@ -32,19 +32,19 @@ public class EditorTextFieldWithBrowseButton extends ComponentWithBrowseButton<E
public EditorTextFieldWithBrowseButton(Project project,
boolean isClassAccepted,
final JavaCodeFragment.VisibilityChecker visibilityChecker) {
super(new EditorTextField(createDocument("", PsiManager.getInstance(project), isClassAccepted,
super(new EditorTextField(createDocument("", project, isClassAccepted,
visibilityChecker), project, StdFileTypes.JAVA), null);
}
private static Document createDocument(final String text,
PsiManager manager,
Project project,
boolean isClassesAccepted,
JavaCodeFragment.VisibilityChecker visibilityChecker) {
PsiElement defaultPackage = JavaPsiFacade.getInstance(manager.getProject()).findPackage("");
final JavaCodeFragment fragment = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory()
.createReferenceCodeFragment(text, defaultPackage, true, isClassesAccepted);
PsiElement defaultPackage = JavaPsiFacade.getInstance(project).findPackage("");
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(project);
final JavaCodeFragment fragment = factory.createReferenceCodeFragment(text, defaultPackage, true, isClassesAccepted);
fragment.setVisibilityChecker(visibilityChecker);
return PsiDocumentManager.getInstance(manager.getProject()).getDocument(fragment);
return PsiDocumentManager.getInstance(project).getDocument(fragment);
}
@Override
@@ -16,6 +16,7 @@
package com.intellij.ui;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.util.NullableFunction;
import org.jetbrains.annotations.Nullable;
@@ -31,31 +32,31 @@ public class JavaReferenceEditorUtil {
public static ReferenceEditorWithBrowseButton createReferenceEditorWithBrowseButton(final ActionListener browseActionListener,
final String text,
final PsiManager manager,
final Project project,
final boolean toAcceptClasses) {
return new ReferenceEditorWithBrowseButton(browseActionListener, manager.getProject(),
return new ReferenceEditorWithBrowseButton(browseActionListener, project,
new NullableFunction<String,Document>() {
public Document fun(final String s) {
return createDocument(s, manager, toAcceptClasses);
return createDocument(s, project, toAcceptClasses);
}
}, text);
}
@Nullable
public static Document createDocument(final String text, PsiManager manager, boolean isClassesAccepted) {
final PsiPackage defaultPackage = JavaPsiFacade.getInstance(manager.getProject()).findPackage("");
final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory();
final JavaCodeFragment fragment = elementFactory.createReferenceCodeFragment(text, defaultPackage, true, isClassesAccepted);
public static Document createDocument(final String text, Project project, boolean isClassesAccepted) {
final PsiPackage defaultPackage = JavaPsiFacade.getInstance(project).findPackage("");
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(project);
final JavaCodeFragment fragment = factory.createReferenceCodeFragment(text, defaultPackage, true, isClassesAccepted);
fragment.setVisibilityChecker(JavaCodeFragment.VisibilityChecker.EVERYTHING_VISIBLE);
return PsiDocumentManager.getInstance(manager.getProject()).getDocument(fragment);
return PsiDocumentManager.getInstance(project).getDocument(fragment);
}
@Nullable
public static Document createTypeDocument(final String text, PsiManager manager) {
final PsiPackage defaultPackage = JavaPsiFacade.getInstance(manager.getProject()).findPackage("");
final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory();
final JavaCodeFragment fragment = elementFactory.createTypeCodeFragment(text, defaultPackage, true);
public static Document createTypeDocument(final String text, Project project) {
final PsiPackage defaultPackage = JavaPsiFacade.getInstance(project).findPackage("");
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(project);
final JavaCodeFragment fragment = factory.createTypeCodeFragment(text, defaultPackage, true);
fragment.setVisibilityChecker(JavaCodeFragment.VisibilityChecker.EVERYTHING_VISIBLE);
return PsiDocumentManager.getInstance(manager.getProject()).getDocument(fragment);
return PsiDocumentManager.getInstance(project).getDocument(fragment);
}
}
@@ -17,6 +17,7 @@ package com.intellij.ui;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.ComponentWithBrowseButton;
import com.intellij.psi.*;
import com.intellij.util.ArrayUtil;
@@ -31,10 +32,10 @@ import java.util.List;
public class ReferenceEditorComboWithBrowseButton extends ComponentWithBrowseButton<EditorComboBox> implements TextAccessor {
public ReferenceEditorComboWithBrowseButton(final ActionListener browseActionListener,
final String text,
@NotNull final PsiManager manager,
@NotNull final Project project,
boolean toAcceptClasses, final String recentsKey) {
super(new EditorComboBox(createDocument(text, manager, toAcceptClasses), manager.getProject(), StdFileTypes.JAVA), browseActionListener);
final List<String> recentEntries = RecentsManager.getInstance(manager.getProject()).getRecentEntries(recentsKey);
super(new EditorComboBox(createDocument(text, project, toAcceptClasses), project, StdFileTypes.JAVA), browseActionListener);
final List<String> recentEntries = RecentsManager.getInstance(project).getRecentEntries(recentsKey);
if (recentEntries != null) {
setHistory(ArrayUtil.toStringArray(recentEntries));
}
@@ -43,11 +44,11 @@ public class ReferenceEditorComboWithBrowseButton extends ComponentWithBrowseBut
}
}
private static Document createDocument(final String text, PsiManager manager, boolean isClassesAccepted) {
PsiPackage defaultPackage = JavaPsiFacade.getInstance(manager.getProject()).findPackage("");
final JavaCodeFragment fragment = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory().createReferenceCodeFragment(text, defaultPackage, true, isClassesAccepted);
private static Document createDocument(final String text, Project project, boolean isClassesAccepted) {
PsiPackage defaultPackage = JavaPsiFacade.getInstance(project).findPackage("");
final JavaCodeFragment fragment = JavaCodeFragmentFactory.getInstance(project).createReferenceCodeFragment(text, defaultPackage, true, isClassesAccepted);
fragment.setVisibilityChecker(JavaCodeFragment.VisibilityChecker.EVERYTHING_VISIBLE);
return PsiDocumentManager.getInstance(manager.getProject()).getDocument(fragment);
return PsiDocumentManager.getInstance(project).getDocument(fragment);
}
public String getText(){
@@ -58,8 +58,7 @@ public class PsiClassControl extends EditorTextFieldControl<PsiClassPanel> {
if (boundedComponent == null) {
boundedComponent = new PsiClassPanel();
}
ReferenceEditorWithBrowseButton editor = JavaReferenceEditorUtil
.createReferenceEditorWithBrowseButton(null, "", PsiManager.getInstance(project), true);
ReferenceEditorWithBrowseButton editor = JavaReferenceEditorUtil.createReferenceEditorWithBrowseButton(null, "", project, true);
Document document = editor.getChildComponent().getDocument();
PsiCodeFragmentImpl fragment = (PsiCodeFragmentImpl) PsiDocumentManager.getInstance(project).getPsiFile(document);
assert fragment != null;
@@ -8,11 +8,10 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.FixedSizeButton;
import com.intellij.openapi.util.Conditions;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiManager;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.ui.EditorTextField;
import com.intellij.ui.UIBundle;
import com.intellij.ui.JavaReferenceEditorUtil;
import com.intellij.ui.UIBundle;
import com.intellij.util.ui.AbstractTableCellEditor;
import javax.swing.*;
@@ -48,7 +47,7 @@ public class PsiClassTableCellEditor extends AbstractTableCellEditor {
}
public final Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
final Document document = JavaReferenceEditorUtil.createDocument(value == null ? "" : (String)value, PsiManager.getInstance(myProject), true);
final Document document = JavaReferenceEditorUtil.createDocument(value == null ? "" : (String)value, myProject, true);
myEditor = new EditorTextField(document, myProject, StdFileTypes.JAVA){
protected boolean shouldHaveBorder() {
return false;
@@ -86,7 +86,7 @@ public class PsiTypeControl extends EditorTextFieldControl<PsiTypePanel> {
return PsiClassControl.initReferenceEditorWithBrowseButton(boundedComponent,
new ReferenceEditorWithBrowseButton(null, project, new Function<String, Document>() {
public Document fun(final String s) {
return JavaReferenceEditorUtil.createTypeDocument(s, PsiManager.getInstance(project));
return JavaReferenceEditorUtil.createTypeDocument(s, project);
}
}, ""), this);
}
@@ -358,71 +358,6 @@ public interface PsiElementFactory extends PsiJavaParserFacade, JVMElementFactor
*/
@NotNull PsiDocTag createParamTag(@NotNull String parameterName, String description) throws IncorrectOperationException;
/**
* Creates a Java expression code fragment from the text of the expression.
*
* @param text the text of the expression to create.
* @param context the context for resolving references from the code fragment.
* @param expectedType expected type of the expression (does not have any effect on creation
* but can be accessed as {@link PsiExpressionCodeFragment#getExpectedType()}).
* @param isPhysical whether the code fragment is created as a physical element
* (see {@link PsiElement#isPhysical()}).
* @return the created code fragment.
*/
@NotNull PsiExpressionCodeFragment createExpressionCodeFragment(@NotNull String text, PsiElement context, final PsiType expectedType, boolean isPhysical);
/**
* Creates a Java code fragment from the text of a Java code block.
*
* @param text the text of the code block to create.
* @param context the context for resolving references from the code fragment.
* @param isPhysical whether the code fragment is created as a physical element
* (see {@link PsiElement#isPhysical()}).
* @return the created code fragment.
*/
@NotNull
JavaCodeFragment createCodeBlockCodeFragment(@NotNull String text, PsiElement context, boolean isPhysical);
/**
* Flag for {@linkplain #createTypeCodeFragment(String, PsiElement, boolean, int)} - allows void type.
*/
int ALLOW_VOID = 0x01;
/**
* Flag for {@linkplain #createTypeCodeFragment(String, PsiElement, boolean, int)} - allows type with ellipsis.
*/
int ALLOW_ELLIPSIS = 0x02;
/**
* Flag for {@linkplain #createTypeCodeFragment(String, PsiElement, boolean, int)} - allows disjunctive type.
*/
int ALLOW_DISJUNCTION = 0x02;
/**
* Creates a Java type code fragment from the text of the name of a Java type (the name
* of a primitive type, array type or class), with <code>void</code> and ellipsis
* not treated as a valid type.
*
* @param text the text of the Java type to create.
* @param context the context for resolving references from the code fragment.
* @param isPhysical whether the code fragment is created as a physical element
* (see {@link PsiElement#isPhysical()}).
* @return the created code fragment.
*/
@NotNull PsiTypeCodeFragment createTypeCodeFragment(@NotNull String text, PsiElement context, boolean isPhysical);
/**
* Creates a Java type code fragment from the text of the name of a Java type (the name
* of a primitive type, array type or class).<br>
* {@code void}, ellipsis and disjunctive types are optionally treated as valid ones.
*
* @param text the text of the Java type to create.
* @param context the context for resolving references from the code fragment.
* @param isPhysical whether the code fragment is created as a physical element
* (see {@link PsiElement#isPhysical()}).
* @param flags types allowed to present in text.
* @return the created code fragment.
*/
@NotNull PsiTypeCodeFragment createTypeCodeFragment(@NotNull String text, PsiElement context, boolean isPhysical, int flags);
/**
* Returns a synthetic Java class containing methods which are defined on Java arrays.
*
@@ -450,23 +385,6 @@ public interface PsiElementFactory extends PsiJavaParserFacade, JVMElementFactor
*/
@NotNull PsiPackageStatement createPackageStatement(@NotNull String name) throws IncorrectOperationException;
/**
* Creates a Java reference code fragment from the text of a Java reference to a
* package or class.
*
* @param text the text of the reference to create.
* @param context the context for resolving the reference.
* @param isPhysical whether the code fragment is created as a physical element
* (see {@link PsiElement#isPhysical()}).
* @param isClassesAccepted if true then classes as well as packages are accepted as
* reference target, otherwise only packages are
* @return the created reference fragment.
*/
@NotNull PsiJavaCodeReferenceCodeFragment createReferenceCodeFragment(@NotNull String text,
PsiElement context,
boolean isPhysical,
boolean isClassesAccepted);
/**
* Creates an <code>import static</code> statement for importing the specified member
* from the specified class.
@@ -7,7 +7,7 @@ import com.intellij.psi.search.GlobalSearchScope;
@PlatformTestCase.WrapInCommand
public class CodeFragmentsTest extends PsiTestCase{
public void testAddImport() throws Exception {
PsiCodeFragment fragment = myJavaFacade.getElementFactory().createExpressionCodeFragment("AAA.foo()", null, null, false);
PsiCodeFragment fragment = JavaCodeFragmentFactory.getInstance(myProject).createExpressionCodeFragment("AAA.foo()", null, null, false);
PsiClass arrayListClass = myJavaFacade.findClass("java.util.ArrayList", GlobalSearchScope.allScope(getProject()));
PsiReference ref = fragment.findReferenceAt(0);
ref.bindToElement(arrayListClass);
@@ -6,10 +6,7 @@ import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.openapi.util.TextRange;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiCodeFragment;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementFactory;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
@@ -1139,7 +1136,7 @@ public class JavaFormatterTest extends AbstractJavaFormatterTest {
}
public void testFormatCodeFragment() throws Exception {
final PsiElementFactory factory = JavaPsiFacade.getInstance(getProject()).getElementFactory();
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(getProject());
final PsiCodeFragment fragment = factory.createCodeBlockCodeFragment("a=1;int b=2;", null, true);
final PsiElement[] result = new PsiElement[1];
@@ -12,7 +12,7 @@ public class ResolveInCodeFragmentTest extends ResolveTestCase {
final PsiReference iRef = configure();
PsiElement context = PsiTreeUtil.getParentOfType(iRef.getElement(), PsiCodeBlock.class);
JavaCodeFragment codeFragment = JavaPsiFacade.getInstance(myProject).getElementFactory()
JavaCodeFragment codeFragment = JavaCodeFragmentFactory.getInstance(myProject)
.createExpressionCodeFragment(iRef.getElement().getText(), context, null, true);
codeFragment.setVisibilityChecker(JavaCodeFragment.VisibilityChecker.EVERYTHING_VISIBLE);
@@ -30,7 +30,7 @@ public class ResolveInCodeFragmentTest extends ResolveTestCase {
}
public void testjavaLangClass() throws Exception {
PsiCodeFragment codeFragment = JavaPsiFacade.getInstance(myProject).getElementFactory().createExpressionCodeFragment(
PsiCodeFragment codeFragment = JavaCodeFragmentFactory.getInstance(myProject).createExpressionCodeFragment(
"Boolean.getBoolean(\"true\")", null, null, true);
PsiElement[] fileContent = codeFragment.getChildren();
@@ -0,0 +1,113 @@
/*
* 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 com.intellij.psi;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
public abstract class JavaCodeFragmentFactory {
public static JavaCodeFragmentFactory getInstance(Project project) {
return ServiceManager.getService(project, JavaCodeFragmentFactory.class);
}
/**
* Creates a Java expression code fragment from the text of the expression.
*
* @param text the text of the expression to create.
* @param context the context for resolving references from the code fragment.
* @param expectedType expected type of the expression (does not have any effect on creation
* but can be accessed as {@link PsiExpressionCodeFragment#getExpectedType()}).
* @param isPhysical whether the code fragment is created as a physical element
* (see {@link PsiElement#isPhysical()}).
* @return the created code fragment.
*/
@NotNull
public abstract PsiExpressionCodeFragment createExpressionCodeFragment(@NotNull String text, PsiElement context, final PsiType expectedType, boolean isPhysical);
/**
* Creates a Java code fragment from the text of a Java code block.
*
* @param text the text of the code block to create.
* @param context the context for resolving references from the code fragment.
* @param isPhysical whether the code fragment is created as a physical element
* (see {@link PsiElement#isPhysical()}).
* @return the created code fragment.
*/
@NotNull
public abstract JavaCodeFragment createCodeBlockCodeFragment(@NotNull String text, PsiElement context, boolean isPhysical);
/**
* Flag for {@linkplain #createTypeCodeFragment(String, PsiElement, boolean, int)} - allows void type.
*/
public static final int ALLOW_VOID = 0x01;
/**
* Flag for {@linkplain #createTypeCodeFragment(String, PsiElement, boolean, int)} - allows type with ellipsis.
*/
public static final int ALLOW_ELLIPSIS = 0x02;
/**
* Flag for {@linkplain #createTypeCodeFragment(String, PsiElement, boolean, int)} - allows disjunctive type.
*/
public static final int ALLOW_DISJUNCTION = 0x04;
/**
* Creates a Java type code fragment from the text of the name of a Java type (the name
* of a primitive type, array type or class), with <code>void</code> and ellipsis
* not treated as a valid type.
*
* @param text the text of the Java type to create.
* @param context the context for resolving references from the code fragment.
* @param isPhysical whether the code fragment is created as a physical element
* (see {@link PsiElement#isPhysical()}).
* @return the created code fragment.
*/
@NotNull
public abstract PsiTypeCodeFragment createTypeCodeFragment(@NotNull String text, PsiElement context, boolean isPhysical);
/**
* Creates a Java type code fragment from the text of the name of a Java type (the name
* of a primitive type, array type or class).<br>
* {@code void}, ellipsis and disjunctive types are optionally treated as valid ones.
*
* @param text the text of the Java type to create.
* @param context the context for resolving references from the code fragment.
* @param isPhysical whether the code fragment is created as a physical element
* (see {@link PsiElement#isPhysical()}).
* @param flags types allowed to present in text.
* @return the created code fragment.
*/
@NotNull
public abstract PsiTypeCodeFragment createTypeCodeFragment(@NotNull String text, PsiElement context, boolean isPhysical, int flags);
/**
* Creates a Java reference code fragment from the text of a Java reference to a
* package or class.
*
* @param text the text of the reference to create.
* @param context the context for resolving the reference.
* @param isPhysical whether the code fragment is created as a physical element
* (see {@link PsiElement#isPhysical()}).
* @param isClassesAccepted if true then classes as well as packages are accepted as
* reference target, otherwise only packages are
* @return the created reference fragment.
*/
@NotNull
public abstract PsiJavaCodeReferenceCodeFragment createReferenceCodeFragment(@NotNull String text,
PsiElement context,
boolean isPhysical,
boolean isClassesAccepted);
}
@@ -108,7 +108,7 @@ public class PsiUtilEx {
return new DocumentImpl(s);
}
else {
return JavaReferenceEditorUtil.createTypeDocument(s, PsiManager.getInstance(project));
return JavaReferenceEditorUtil.createTypeDocument(s, project);
}
}
@@ -141,7 +141,7 @@ public class GroovyCodeFragmentFactory implements CodeFragmentFactory {
final String hiddenJavaVars = StringUtil.replace(javaText.toString(), "|", "_$$_$$$_$$$$$$$$$_" + new Random().nextInt(42));
final String finalText = StringUtil.replace(StringUtil.replace(hiddenJavaVars, TEXT, groovyText), IMPORTS, imports);
JavaCodeFragment result = factory.createCodeBlockCodeFragment(finalText, null, true);
JavaCodeFragment result = JavaCodeFragmentFactory.getInstance(project).createCodeBlockCodeFragment(finalText, null, true);
if (contextClass != null) {
result.setThisType(factory.createType(contextClass));
}
@@ -137,8 +137,8 @@ public class GrChangeSignatureDialog extends RefactoringDialog {
myNameField = new EditorTextField(PsiDocumentManager.getInstance(myProject).getDocument(myNameCodeFragment), myProject,
myNameCodeFragment.getFileType());
final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(myProject).getElementFactory();
myReturnTypeCodeFragment = elementFactory.createTypeCodeFragment("", myMethod, true, PsiElementFactory.ALLOW_VOID);
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(myProject);
myReturnTypeCodeFragment = factory.createTypeCodeFragment("", myMethod, true, JavaCodeFragmentFactory.ALLOW_VOID);
final Document document = PsiDocumentManager.getInstance(myProject).getDocument(myReturnTypeCodeFragment);
myReturnTypeField = new EditorTextField(document, myProject, myReturnTypeCodeFragment.getFileType());
@@ -36,14 +36,14 @@ public class GrTableParameterInfo {
final Project project = parameter.getProject();
myName = new GroovyCodeFragment(project, parameter.getName());
final PsiType type = parameter.getDeclaredType();
final PsiElementFactory factory = JavaPsiFacade.getElementFactory(project);
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(project);
if (type != null) {
String typeText = type.getCanonicalText();
if (typeText == null) typeText = type.getPresentableText();
myType = factory.createTypeCodeFragment(typeText, parameter, true, PsiElementFactory.ALLOW_VOID | PsiElementFactory.ALLOW_ELLIPSIS);
myType = factory.createTypeCodeFragment(typeText, parameter, true, JavaCodeFragmentFactory.ALLOW_VOID | JavaCodeFragmentFactory.ALLOW_ELLIPSIS);
}
else {
myType = factory.createTypeCodeFragment("", parameter, true, PsiElementFactory.ALLOW_VOID | PsiElementFactory.ALLOW_ELLIPSIS);
myType = factory.createTypeCodeFragment("", parameter, true, JavaCodeFragmentFactory.ALLOW_VOID | JavaCodeFragmentFactory.ALLOW_ELLIPSIS);
}
final GrExpression defaultInitializer = parameter.getDefaultInitializer();
if (defaultInitializer != null) {
@@ -59,7 +59,7 @@ public class GrTableParameterInfo {
this.myPosition = -1;
myName = new GroovyCodeFragment(project, "");
myDefaultValue = new GroovyCodeFragment(project, "");
myType = JavaPsiFacade.getElementFactory(project).createTypeCodeFragment("", context, true, PsiElementFactory.ALLOW_VOID);
myType = JavaCodeFragmentFactory.getInstance(project).createTypeCodeFragment("", context, true, JavaCodeFragmentFactory.ALLOW_VOID);
myDefaultInitializer = new GroovyCodeFragment(project, "");
}
@@ -72,7 +72,7 @@ public class GrTableParameterInfo {
this.myPosition = -1;
myName = new GroovyCodeFragment(project, name);
myDefaultValue = new GroovyCodeFragment(project, defaultValue);
myType = JavaPsiFacade.getElementFactory(project).createTypeCodeFragment(type, context, true, PsiElementFactory.ALLOW_VOID);
myType = JavaCodeFragmentFactory.getInstance(project).createTypeCodeFragment(type, context, true, JavaCodeFragmentFactory.ALLOW_VOID);
myDefaultInitializer = new GroovyCodeFragment(project, defaultInitializer);
}
@@ -157,7 +157,7 @@ public class GrIntroduceConstantDialog extends DialogWrapper
}
}
}, "", PsiManager.getInstance(myContext.project), true, RECENTS_KEY);
}, "", myContext.project, true, RECENTS_KEY);
myTargetClassPanel.setLayout(new BorderLayout());
myTargetClassPanel.add(myTargetClassLabel, BorderLayout.NORTH);
myTargetClassPanel.add(myTargetClassEditor, BorderLayout.CENTER);
@@ -106,8 +106,7 @@ public class JavaI18nizeQuickFixDialog extends I18nizeQuickFixDialog {
myShowPreview = showPreview;
myResourceBundleSuggester.setLayout(new BorderLayout());
PsiManager psiManager = PsiManager.getInstance(myProject);
PsiElementFactory factory = JavaPsiFacade.getInstance(psiManager.getProject()).getElementFactory();
PsiElementFactory factory = JavaPsiFacade.getInstance(myProject).getElementFactory();
PsiClass resourceBundle = myResourceBundleManager.getResourceBundle();
myShowJavaCodeInfo = showJavaCodeInfo && myResourceBundleManager.canShowJavaCodeInfo();
@@ -116,8 +115,9 @@ public class JavaI18nizeQuickFixDialog extends I18nizeQuickFixDialog {
LOG.assertTrue(resourceBundle != null);
myResourceBundleType = factory.createType(resourceBundle);
@NonNls String defaultVarName = "resourceBundle";
final JavaCodeFragmentFactory codeFragmentFactory = JavaCodeFragmentFactory.getInstance(project);
PsiExpressionCodeFragment expressionCodeFragment =
factory.createExpressionCodeFragment(defaultVarName, myLiteralExpression, myResourceBundleType, true);
codeFragmentFactory.createExpressionCodeFragment(defaultVarName, myLiteralExpression, myResourceBundleType, true);
Document document = PsiDocumentManager.getInstance(myProject).getDocument(expressionCodeFragment);
myRBEditorTextField = new EditorComboBox(document, myProject, StdFileTypes.JAVA);
myResourceBundleSuggester.add(myRBEditorTextField, BorderLayout.CENTER);
@@ -44,11 +44,10 @@ public class ClassNameInputDialog extends DialogWrapper {
private void createUIComponents() {
myEditorTextField1 = new EditorTextField("", myProject, StdFileTypes.JAVA);
final PsiManager manager = PsiManager.getInstance(myProject);
final PsiElementFactory factory = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory();
PsiPackage defaultPackage = JavaPsiFacade.getInstance(manager.getProject()).findPackage("");
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(myProject);
PsiPackage defaultPackage = JavaPsiFacade.getInstance(myProject).findPackage("");
final PsiCodeFragment fragment = factory.createReferenceCodeFragment("", defaultPackage, true, true);
myEditorTextField1.setDocument(PsiDocumentManager.getInstance(manager.getProject()).getDocument(fragment));
myEditorTextField1.setDocument(PsiDocumentManager.getInstance(myProject).getDocument(fragment));
}
@Override
@@ -197,11 +197,10 @@ public final class ComponentItemDialog extends DialogWrapper {
}
private void setEditorText(final String className) {
final PsiManager manager = PsiManager.getInstance(myProject);
final PsiElementFactory factory = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory();
PsiPackage defaultPackage = JavaPsiFacade.getInstance(manager.getProject()).findPackage("");
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(myProject);
PsiPackage defaultPackage = JavaPsiFacade.getInstance(myProject).findPackage("");
final PsiCodeFragment fragment = factory.createReferenceCodeFragment(className, defaultPackage, true, true);
myDocument = PsiDocumentManager.getInstance(manager.getProject()).getDocument(fragment);
myDocument = PsiDocumentManager.getInstance(myProject).getDocument(fragment);
myEditorTextField.setDocument(myDocument);
updateOKAction();
}
@@ -130,11 +130,10 @@ public final class ClassToBindProperty extends Property<RadRootContainer, String
}
private void setEditorText(final String s) {
final PsiManager manager = PsiManager.getInstance(myProject);
final PsiElementFactory factory = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory();
PsiPackage defaultPackage = JavaPsiFacade.getInstance(manager.getProject()).findPackage("");
final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(myProject);
PsiPackage defaultPackage = JavaPsiFacade.getInstance(myProject).findPackage("");
final PsiCodeFragment fragment = factory.createReferenceCodeFragment(s, defaultPackage, true, true);
myDocument = PsiDocumentManager.getInstance(manager.getProject()).getDocument(fragment);
myDocument = PsiDocumentManager.getInstance(myProject).getDocument(fragment);
myEditorTextField.setDocument(myDocument);
}
+3
View File
@@ -285,6 +285,9 @@
<projectService serviceInterface="com.intellij.psi.PsiResolveHelper"
serviceImplementation="com.intellij.psi.impl.source.resolve.PsiResolveHelperImpl"/>
<projectService serviceInterface="com.intellij.psi.JavaCodeFragmentFactory"
serviceImplementation="com.intellij.psi.impl.JavaCodeFragmentFactoryImpl"/>
<applicationService serviceInterface="com.intellij.psi.JavaDirectoryService"
serviceImplementation="com.intellij.psi.impl.file.JavaDirectoryServiceImpl"/>