mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
extract JavaCodeFragmentFactory out of PsiElementFactory; remove a number of unnecessary back and forth conversions between Project and PsiManager
This commit is contained in:
+3
-3
@@ -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);
|
||||
}
|
||||
|
||||
+2
-2
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -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() {
|
||||
|
||||
+2
-2
@@ -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() {
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
+2
-2
@@ -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);
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+1
-1
@@ -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();
|
||||
}
|
||||
|
||||
+1
-2
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -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();
|
||||
}
|
||||
|
||||
+3
-4
@@ -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);
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
}
|
||||
+1
-1
@@ -108,7 +108,7 @@ public class PsiUtilEx {
|
||||
return new DocumentImpl(s);
|
||||
}
|
||||
else {
|
||||
return JavaReferenceEditorUtil.createTypeDocument(s, PsiManager.getInstance(project));
|
||||
return JavaReferenceEditorUtil.createTypeDocument(s, project);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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));
|
||||
}
|
||||
|
||||
+2
-2
@@ -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());
|
||||
|
||||
|
||||
+5
-5
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
+3
-3
@@ -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);
|
||||
|
||||
+3
-4
@@ -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();
|
||||
}
|
||||
|
||||
+3
-4
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user