下面列出了怎么用com.intellij.psi.PsiCodeFragment的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
myCodeFragment = (PsiCodeFragment)value;
myDocument = PsiDocumentManager.getInstance(myProject).getDocument(myCodeFragment);
myEditorTextField = createEditorField(myDocument);
if (myEditorTextField != null) {
for (DocumentListener listener : myListeners) {
myEditorTextField.addDocumentListener(listener);
}
myEditorTextField.setDocument(myDocument);
myEditorTextField.setBorder(new LineBorder(table.getSelectionBackground()));
}
return myEditorTextField;
}
@Nonnull
@Override
@RequiredReadAction
public PsiElementVisitor buildVisitor(@Nonnull ProblemsHolder holder, boolean isOnTheFly, @Nonnull LocalInspectionToolSession session)
{
PsiFile file = holder.getFile();
if(!(file instanceof CSharpFile))
{
return PsiElementVisitor.EMPTY_VISITOR;
}
if(file instanceof PsiCodeFragment)
{
return PsiElementVisitor.EMPTY_VISITOR;
}
DotNetSimpleModuleExtension extension = ModuleUtilCore.getExtension(file, DotNetSimpleModuleExtension.class);
if(extension == null)
{
return PsiElementVisitor.EMPTY_VISITOR;
}
MatchNamespaceVisitor visitor = session.getUserData(KEY);
if(visitor == null)
{
session.putUserData(KEY, visitor = new MatchNamespaceVisitor(holder, extension));
}
return visitor;
}
@Override
public boolean shouldHighlight(@Nonnull PsiFile psiFile)
{
if(psiFile instanceof CSharpFile)
{
if(psiFile instanceof PsiCodeFragment)
{
return true;
}
return CSharpLocationUtil.isValidLocation(psiFile.getProject(), psiFile.getVirtualFile());
}
return true;
}
@Override
protected CSharpParameterTableModelItem createRowItem(@Nullable CSharpParameterInfo parameterInfo)
{
Project project = myMethodDescriptor.getMethod().getProject();
if(parameterInfo == null)
{
parameterInfo = new CSharpParameterInfo("", null, new CSharpTypeRefByQName(myDefaultValueContext, DotNetTypes.System.Object), getRowCount());
}
PsiCodeFragment fragment = CSharpFragmentFactory.createTypeFragment(project, parameterInfo.getTypeText(), myDefaultValueContext);
PsiCodeFragment defaultValue = CSharpFragmentFactory.createExpressionFragment(project, "", myDefaultValueContext);
return new CSharpParameterTableModelItem(parameterInfo, fragment, defaultValue);
}
@Override
@RequiredUIAccess
protected PsiCodeFragment createReturnTypeCodeFragment()
{
String text = CSharpTypeRefPresentationUtil.buildShortText(myMethod.getMethod().getReturnTypeRef(), myDefaultValueContext);
CSharpFragmentFileImpl typeFragment = CSharpFragmentFactory.createTypeFragment(getProject(), text, myDefaultValueContext);
typeFragment.putUserData(CS1547.ourReturnTypeFlag, Boolean.TRUE);
return typeFragment;
}
public static boolean isOutsideSourceRoot(@Nullable PsiFile psiFile) {
if (psiFile == null) return false;
if (psiFile instanceof PsiCodeFragment) return false;
final VirtualFile file = psiFile.getVirtualFile();
if (file == null) return false;
final ProjectFileIndex projectFileIndex = ProjectRootManager.getInstance(psiFile.getProject()).getFileIndex();
return !projectFileIndex.isInSource(file) && !projectFileIndex.isInLibraryClasses(file);
}
@Nullable
@Override
protected PsiCodeFragment createReturnTypeCodeFragment() {
return null;
}
public CSharpParameterTableModelItem(CSharpParameterInfo parameter, PsiCodeFragment typeCodeFragment, PsiCodeFragment defaultValueCodeFragment)
{
super(parameter, typeCodeFragment, defaultValueCodeFragment);
}
@Override
public PsiCodeFragment valueOf(TableItem item) {
return item.typeCodeFragment;
}
@Override
public PsiCodeFragment valueOf(TableItem item) {
return item.defaultValueCodeFragment;
}
public ParameterTableModelItemBase(P parameter, PsiCodeFragment typeCodeFragment, PsiCodeFragment defaultValueCodeFragment) {
this.parameter = parameter;
this.typeCodeFragment = typeCodeFragment;
this.defaultValueCodeFragment = defaultValueCodeFragment;
}
@Override
public PsiCodeFragment getCellEditorValue() {
return myCodeFragment;
}
protected abstract PsiCodeFragment createReturnTypeCodeFragment();