public void testFormatCodeFragment() throws Exception { final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(getProject()); final PsiCodeFragment fragment = factory.createCodeBlockCodeFragment("a=1;int b=2;", null, true); final PsiElement[] result = new PsiElement[1]; CommandProcessor.getInstance().executeCommand(getProject(), new Runnable() { @Override public void run() { WriteCommandAction.runWriteCommandAction(null, new Runnable() { @Override public void run() { try { result[0] = CodeStyleManager.getInstance(getProject()).reformat(fragment); } catch (IncorrectOperationException e) { fail(e.getLocalizedMessage()); } } }); } }, null, null); assertEquals("a = 1;\n" + "int b = 2;", result[0].getText()); }
private void doTest(String evaluatedText, String expectedCallSite, String expectedClass, boolean codeBlock) throws Exception { final String testName = getTestName(false); configureByFile("/refactoring/extractMethodObject4Debugger/" + testName + ".java"); final int offset = getEditor().getCaretModel().getOffset(); final PsiElement context = getFile().findElementAt(offset); final JavaCodeFragmentFactory fragmentFactory = JavaCodeFragmentFactory.getInstance(getProject()); final JavaCodeFragment fragment = codeBlock ? fragmentFactory.createCodeBlockCodeFragment(evaluatedText, context, false) : fragmentFactory.createExpressionCodeFragment(evaluatedText, context, null, false); final ExtractLightMethodObjectHandler.ExtractedData extractedData = ExtractLightMethodObjectHandler.extractLightMethodObject(getProject(), getFile(), fragment, "test"); assertNotNull(extractedData); assertEquals(expectedCallSite, extractedData.getGeneratedCallText()); final PsiClass innerClass = extractedData.getGeneratedInnerClass(); assertEquals(expectedClass, innerClass.getText()); }
public GrTableParameterInfo(GrParameter parameter, int position) { myPosition = position; final Project project = parameter.getProject(); myName = new GroovyCodeFragment(project, parameter.getName()); final PsiType type = parameter.getDeclaredType(); 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, JavaCodeFragmentFactory.ALLOW_VOID | JavaCodeFragmentFactory.ALLOW_ELLIPSIS); } else { myType = factory.createTypeCodeFragment("", parameter, true, JavaCodeFragmentFactory.ALLOW_VOID | JavaCodeFragmentFactory.ALLOW_ELLIPSIS); } final GrExpression defaultInitializer = parameter.getInitializerGroovy(); if (defaultInitializer != null) { myDefaultInitializer = new GroovyCodeFragment(project, defaultInitializer.getText()); } else { myDefaultInitializer = new GroovyCodeFragment(project, ""); } myDefaultValue = new GroovyCodeFragment(project, ""); }
public GrTableParameterInfo(Project project, PsiElement context) { this.myPosition = -1; myName = new GroovyCodeFragment(project, ""); myDefaultValue = new GroovyCodeFragment(project, ""); myType = JavaCodeFragmentFactory.getInstance(project).createTypeCodeFragment("", context, true, JavaCodeFragmentFactory.ALLOW_VOID); myDefaultInitializer = new GroovyCodeFragment(project, ""); }
public GrTableParameterInfo(Project project, PsiElement context, String name, String type, String defaultValue, String defaultInitializer) { this.myPosition = -1; myName = new GroovyCodeFragment(project, name); myDefaultValue = new GroovyCodeFragment(project, defaultValue); myType = JavaCodeFragmentFactory.getInstance(project).createTypeCodeFragment(type, context, true, JavaCodeFragmentFactory.ALLOW_VOID); myDefaultInitializer = new GroovyCodeFragment(project, defaultInitializer); }
private void setEditorText(final String className) { final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(myProject); PsiJavaPackage defaultPackage = JavaPsiFacade.getInstance(myProject).findPackage(""); final PsiCodeFragment fragment = factory.createReferenceCodeFragment(className, defaultPackage, true, true); myDocument = PsiDocumentManager.getInstance(myProject).getDocument(fragment); myEditorTextField.setDocument(myDocument); updateOKAction(); }
private void setEditorText(final String s) { final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(myProject); PsiJavaPackage defaultPackage = JavaPsiFacade.getInstance(myProject).findPackage(""); final PsiCodeFragment fragment = factory.createReferenceCodeFragment(s, defaultPackage, true, true); myDocument = PsiDocumentManager.getInstance(myProject).getDocument(fragment); myEditorTextField.setDocument(myDocument); }
private void createUIComponents() { myEditorTextField1 = new EditorTextField("", myProject, JavaFileType.INSTANCE); final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(myProject); PsiJavaPackage defaultPackage = JavaPsiFacade.getInstance(myProject).findPackage(""); final PsiCodeFragment fragment = factory.createReferenceCodeFragment("", defaultPackage, true, true); myEditorTextField1.setDocument(PsiDocumentManager.getInstance(myProject).getDocument(fragment)); }
@Nullable @RequiredReadAction public static Document createDocument(final String text, Project project, boolean isClassesAccepted) { final PsiJavaPackage 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(project).getDocument(fragment); }
@Nullable @RequiredReadAction public static Document createTypeDocument(final String text, Project project) { final PsiJavaPackage 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(project).getDocument(fragment); }
private static Document createDocument(final String text, Project project, boolean isClassesAccepted, JavaCodeFragment.VisibilityChecker visibilityChecker) { 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(project).getDocument(fragment); }
public PsiTypeCodeFragmentImpl(final Project project, final boolean isPhysical, @NonNls final String name, final CharSequence text, final int flags, PsiElement context) { super(project, isSet(flags, JavaCodeFragmentFactory.ALLOW_INTERSECTION) ? JavaElementType.TYPE_WITH_CONJUNCTIONS_TEXT : JavaElementType.TYPE_WITH_DISJUNCTIONS_TEXT, isPhysical, name, text, context); myAllowEllipsis = isSet(flags, JavaCodeFragmentFactory.ALLOW_ELLIPSIS); myAllowDisjunction = isSet(flags, JavaCodeFragmentFactory.ALLOW_DISJUNCTION); myAllowConjunction = isSet(flags, JavaCodeFragmentFactory.ALLOW_INTERSECTION); LOG.assertTrue(!myAllowConjunction || !myAllowDisjunction); if(isSet(flags, JavaCodeFragmentFactory.ALLOW_VOID)) { putUserData(PsiUtil.VALID_VOID_TYPE_IN_CODE_FRAGMENT, Boolean.TRUE); } }
private static Document createDocument(final String text, Project project, boolean isClassesAccepted, final JavaCodeFragment.VisibilityChecker visibilityChecker) { PsiJavaPackage defaultPackage = JavaPsiFacade.getInstance(project).findPackage(""); final JavaCodeFragment fragment = JavaCodeFragmentFactory.getInstance(project).createReferenceCodeFragment(text, defaultPackage, true, isClassesAccepted); fragment.setVisibilityChecker(visibilityChecker); return PsiDocumentManager.getInstance(project).getDocument(fragment); }
public void testFormatCodeFragment() throws Exception { final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(getProject()); final PsiCodeFragment fragment = factory.createCodeBlockCodeFragment("a=1;int b=2;", null, true); final PsiElement[] result = new PsiElement[1]; CommandProcessor.getInstance().executeCommand(getProject(), new Runnable() { @Override public void run() { ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override public void run() { try { result[0] = CodeStyleManager.getInstance(getProject()).reformat(fragment); } catch(IncorrectOperationException e) { fail(e.getLocalizedMessage()); } } }); } }, null, null); assertEquals("a = 1;\n" + "int b = 2;", result[0].getText()); }
@Override protected PsiFile createExpressionCodeFragment(@NotNull Project project, @NotNull String text, @Nullable PsiElement context, boolean isPhysical) { return JavaCodeFragmentFactory.getInstance(project).createExpressionCodeFragment(text, context, null, isPhysical); }
@Override protected JComponent createNorthPanel() { JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints gbConstraints = new GridBagConstraints(); gbConstraints.insets = JBUI.insets(4); gbConstraints.weighty = 0; gbConstraints.gridwidth = GridBagConstraints.RELATIVE; gbConstraints.fill = GridBagConstraints.BOTH; gbConstraints.weightx = 0; myRbPackage = new JRadioButton(RefactoringBundle.message("migration.entry.package")); panel.add(myRbPackage, gbConstraints); gbConstraints.gridwidth = GridBagConstraints.RELATIVE; gbConstraints.fill = GridBagConstraints.BOTH; gbConstraints.weightx = 0; myRbClass = new JRadioButton(RefactoringBundle.message("migration.entry.class")); panel.add(myRbClass, gbConstraints); gbConstraints.gridwidth = GridBagConstraints.REMAINDER; gbConstraints.fill = GridBagConstraints.BOTH; gbConstraints.weightx = 1; panel.add(new JPanel(), gbConstraints); ButtonGroup buttonGroup = new ButtonGroup(); buttonGroup.add(myRbPackage); buttonGroup.add(myRbClass); gbConstraints.weightx = 0; gbConstraints.gridwidth = GridBagConstraints.RELATIVE; gbConstraints.fill = GridBagConstraints.NONE; JLabel oldNamePrompt = new JLabel(RefactoringBundle.message("migration.entry.old.name")); panel.add(oldNamePrompt, gbConstraints); gbConstraints.gridwidth = GridBagConstraints.REMAINDER; gbConstraints.fill = GridBagConstraints.HORIZONTAL; gbConstraints.weightx = 1; final LanguageTextField.DocumentCreator documentCreator = new LanguageTextField.DocumentCreator() { @Override public Document createDocument(String value, @Nullable Language language, Project project) { PsiPackage defaultPackage = JavaPsiFacade.getInstance(project).findPackage(""); final JavaCodeFragment fragment = JavaCodeFragmentFactory.getInstance(project).createReferenceCodeFragment("", defaultPackage, true, true); return PsiDocumentManager.getInstance(project).getDocument(fragment); } }; myOldNameField = new LanguageTextField(JavaLanguage.INSTANCE, myProject, "", documentCreator); panel.add(myOldNameField, gbConstraints); gbConstraints.weightx = 0; gbConstraints.gridwidth = GridBagConstraints.RELATIVE; gbConstraints.fill = GridBagConstraints.NONE; JLabel newNamePrompt = new JLabel(RefactoringBundle.message("migration.entry.new.name")); panel.add(newNamePrompt, gbConstraints); gbConstraints.gridwidth = GridBagConstraints.REMAINDER; gbConstraints.fill = GridBagConstraints.HORIZONTAL; gbConstraints.weightx = 1; myNewNameField = new LanguageTextField(JavaLanguage.INSTANCE, myProject, "", documentCreator); panel.setPreferredSize(new Dimension(300, panel.getPreferredSize().height)); panel.add(myNewNameField, gbConstraints); final DocumentListener documentAdapter = new DocumentListener() { @Override public void documentChanged(DocumentEvent e) { validateOKButton(); } }; myOldNameField.getDocument().addDocumentListener(documentAdapter); myNewNameField.getDocument().addDocumentListener(documentAdapter); return panel; }
private PsiTypeCodeFragment createValueCodeFragment() { final JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(myProject); return factory.createTypeCodeFragment("", myClass.getLBrace(), true); }
@Override public JavaCodeFragment createCodeFragment(TextWithImports item, PsiElement context, final Project project) { 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 = factory.createExpressionCodeFragment(expressionText, context, null, true); } else /*if (CodeFragmentKind.CODE_BLOCK == item.getKind())*/ { fragment = factory.createCodeBlockCodeFragment(text, context, true); } if(item.getImports().length() > 0) { fragment.addImportsFromString(item.getImports()); } fragment.setVisibilityChecker(JavaCodeFragment.VisibilityChecker.EVERYTHING_VISIBLE); //noinspection HardCodedStringLiteral fragment.putUserData(KEY, "DebuggerComboBoxEditor.IS_DEBUGGER_EDITOR"); fragment.putCopyableUserData(JavaCompletionUtilCore.DYNAMIC_TYPE_EVALUATOR, new PairFunction<PsiExpression, CompletionParameters, PsiType>() { @Override public PsiType fun(PsiExpression expression, CompletionParameters parameters) { if(!RuntimeTypeEvaluator.isSubtypeable(expression)) { return null; } if(parameters.getInvocationCount() <= 1 && JavaCompletionUtilCore.mayHaveSideEffects(expression)) { final CompletionService service = CompletionService.getCompletionService(); if(parameters.getInvocationCount() < 2) { service.setAdvertisementText("Invoke completion once more to see runtime type variants"); } return null; } final DebuggerContextImpl debuggerContext = DebuggerManagerEx.getInstanceEx(project).getContext(); DebuggerSession debuggerSession = debuggerContext.getDebuggerSession(); if(debuggerSession != null && debuggerContext.getSuspendContext() != null) { final Semaphore semaphore = new Semaphore(); semaphore.down(); final AtomicReference<PsiType> nameRef = new AtomicReference<PsiType>(); final RuntimeTypeEvaluator worker = new RuntimeTypeEvaluator(null, expression, debuggerContext, ProgressManager.getInstance().getProgressIndicator()) { @Override protected void typeCalculationFinished(@Nullable PsiType type) { nameRef.set(type); semaphore.up(); } }; debuggerSession.getProcess().getManagerThread().invoke(worker); for(int i = 0; i < 50; i++) { ProgressManager.checkCanceled(); if(semaphore.waitFor(20)) { break; } } return nameRef.get(); } return null; } }); return fragment; }