1. Formatter stuff moved to Language. 2. Invalid usage double click caused NPE. Fixed.

This commit is contained in:
Maxim Shafirov
2005-01-24 18:19:29 +03:00
parent e23a43861e
commit e4f15175c7
25 changed files with 54 additions and 110 deletions
@@ -28,8 +28,8 @@ import com.intellij.util.ui.tree.TreeUtil;
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -669,7 +669,10 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
private void collectUsages(DefaultMutableTreeNode node, Set<Usage> usages) {
if (node instanceof UsageNode) {
UsageNode usageNode = (UsageNode)node;
usages.add(usageNode.getUsage());
final Usage usage = usageNode.getUsage();
if (usage != null && usage.isValid()) {
usages.add(usage);
}
}
Enumeration enumeration = node.children();
@@ -690,7 +693,9 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
if (lastPathComponent instanceof UsageTargetNode) {
UsageTargetNode usageTargetNode = (UsageTargetNode)lastPathComponent;
UsageTarget target = usageTargetNode.getTarget();
targets.add(target);
if (target != null && target.isValid()) {
targets.add(target);
}
}
}
+1 -1
View File
@@ -43,7 +43,7 @@ public abstract class Language {
return null;
}
public ParserDefinition getParserDefinition() {
public ParserDefinition getParserDefinition(Project project) {
return null;
}
@@ -4,7 +4,6 @@
*/
package com.intellij.openapi.fileTypes;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.lang.Language;
import com.intellij.openapi.project.Project;
@@ -38,8 +37,6 @@ public interface FileType {
FileTypeSupportCapabilities getSupportCapabilities();
PseudoTextBuilder getPseudoTextBuilder();
StructureViewModel getStructureViewModel(VirtualFile file, Project project);
Language getLanguage();
@@ -31,7 +31,6 @@
*/
package com.intellij.openapi.fileTypes;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.lang.Language;
import com.intellij.openapi.options.SettingsEditor;
@@ -102,10 +101,6 @@ public abstract class UserFileType <T extends UserFileType> implements FileType,
return null;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return null;
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return null;
}
@@ -31,7 +31,6 @@
*/
package com.intellij.ide.highlighter;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.lang.Language;
import com.intellij.openapi.fileTypes.FileType;
@@ -94,10 +93,6 @@ public class ArchiveFileType implements FileType {
return null;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return null;
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return null;
}
@@ -31,7 +31,6 @@
*/
package com.intellij.ide.highlighter;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.lang.dtd.DTDLanguage;
import com.intellij.openapi.fileTypes.FileTypeSupportCapabilities;
@@ -104,10 +103,6 @@ public class DTDFileType extends LanguageFileType {
return mySupportCapabilities;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return null;
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return null;
}
@@ -31,7 +31,6 @@
*/
package com.intellij.ide.highlighter;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.lang.Language;
import com.intellij.openapi.fileTypes.FileType;
@@ -94,10 +93,6 @@ public class GuiFormFileType implements FileType {
return null;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return null;
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return null;
}
@@ -31,8 +31,6 @@
*/
package com.intellij.ide.highlighter;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.codeFormatting.xml.html.HtmlPseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.ide.structureView.impl.xml.XmlStructureViewTreeModel;
import com.intellij.lang.html.HTMLLanguage;
@@ -107,11 +105,6 @@ public class HtmlFileType extends LanguageFileType {
return capabilities;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return new HtmlPseudoTextBuilder();
//return null;
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return new XmlStructureViewTreeModel((XmlFile)PsiManager.getInstance(project).findFile(file));
}
@@ -31,7 +31,6 @@
*/
package com.intellij.ide.highlighter;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.lang.Language;
import com.intellij.openapi.fileTypes.FileType;
@@ -108,10 +107,6 @@ public class JavaClassFileType implements FileType {
return null;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return null;
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return null;
}
@@ -31,11 +31,9 @@
*/
package com.intellij.ide.highlighter;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.ide.structureView.impl.java.JavaFileTreeModel;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.FileTypeSupportCapabilities;
import com.intellij.openapi.fileTypes.LanguageFileType;
import com.intellij.openapi.project.Project;
@@ -49,7 +47,6 @@ import com.intellij.psi.PsiManager;
import com.intellij.psi.impl.PsiManagerImpl;
import com.intellij.psi.impl.source.PsiJavaFileImpl;
import com.intellij.psi.impl.source.PsiPlainTextFileImpl;
import com.intellij.psi.impl.source.codeStyle.java.JavaAdapter;
import javax.swing.*;
@@ -92,14 +89,6 @@ public class JavaFileType extends LanguageFileType {
return null;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return new JavaAdapter() {
protected FileType getFileType() {
return JavaFileType.this;
}
};
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
final PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
if (!(psiFile instanceof PsiJavaFile)) return null;
@@ -31,7 +31,6 @@
*/
package com.intellij.ide.highlighter;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.lang.Language;
import com.intellij.openapi.fileTypes.FileType;
@@ -94,10 +93,6 @@ public class ModuleFileType implements FileType {
return null;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return null;
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return null;
}
@@ -31,7 +31,6 @@
*/
package com.intellij.ide.highlighter;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.lang.Language;
import com.intellij.openapi.fileTypes.FileType;
@@ -94,10 +93,6 @@ public class ProjectFileType implements FileType {
return null;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return null;
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return null;
}
@@ -31,7 +31,6 @@
*/
package com.intellij.ide.highlighter;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.lang.Language;
import com.intellij.openapi.fileTypes.FileType;
@@ -91,10 +90,6 @@ public class UnknownFileType implements FileType {
return null;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return null;
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return null;
}
@@ -31,7 +31,6 @@
*/
package com.intellij.ide.highlighter;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.lang.Language;
import com.intellij.openapi.fileTypes.FileType;
@@ -94,10 +93,6 @@ public class WorkspaceFileType implements FileType {
return null;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return null;
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return null;
}
@@ -31,7 +31,6 @@
*/
package com.intellij.ide.highlighter;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.lang.xhtml.XHTMLLanguage;
import com.intellij.openapi.fileTypes.FileTypeSupportCapabilities;
@@ -104,10 +103,6 @@ public class XHtmlFileType extends LanguageFileType {
return capabilities;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return null;
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return null;
}
@@ -31,12 +31,9 @@
*/
package com.intellij.ide.highlighter;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.codeFormatting.xml.xml.XmlPseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.ide.structureView.impl.xml.XmlStructureViewTreeModel;
import com.intellij.lang.xml.XMLLanguage;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.FileTypeSupportCapabilities;
import com.intellij.openapi.fileTypes.LanguageFileType;
import com.intellij.openapi.fileTypes.StdFileTypes;
@@ -46,8 +43,6 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.impl.PsiManagerImpl;
import com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade;
import com.intellij.psi.impl.source.codeStyle.java.JavaAdapter;
import com.intellij.psi.impl.source.xml.XmlFileImpl;
import com.intellij.psi.xml.XmlFile;
@@ -88,19 +83,6 @@ public class XmlFileType extends LanguageFileType {
return null;
}
public PseudoTextBuilder getPseudoTextBuilder() {
if (CodeFormatterFacade.USE_NEW_CODE_FORMATTER <= 0) {
return new JavaAdapter() {
protected FileType getFileType() {
return XmlFileType.this;
}
};
}
else {
return new XmlPseudoTextBuilder();
}
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return new XmlStructureViewTreeModel((XmlFile)PsiManager.getInstance(project).findFile(file));
}
@@ -81,6 +81,7 @@ public class VirtualFileArrayRule implements GetDataRule {
if (usages != null) {
for (int i = 0; i < usages.length; i++) {
Usage usage = usages[i];
if (!usage.isValid()) continue;
if (usage instanceof UsageInFile) {
UsageInFile usageInFile = (UsageInFile)usage;
result.add(usageInFile.getFile());
@@ -96,6 +97,7 @@ public class VirtualFileArrayRule implements GetDataRule {
if (usageTargets != null) {
for (int i = 0; i < usageTargets.length; i++) {
UsageTarget usageTarget = usageTargets[i];
if (!usageTarget.isValid()) continue;
VirtualFile[] files = usageTarget.getFiles();
if (files != null) {
result.addAll(Arrays.asList(files));
@@ -1,5 +1,7 @@
package com.intellij.lang.html;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.codeFormatting.xml.html.HtmlPseudoTextBuilder;
import com.intellij.ide.highlighter.HtmlFileHighlighter;
import com.intellij.lang.Language;
import com.intellij.openapi.fileTypes.SyntaxHighlighter;
@@ -20,4 +22,8 @@ public class HTMLLanguage extends Language {
public SyntaxHighlighter getSyntaxHighlighter(Project project) {
return new HtmlFileHighlighter();
}
public PseudoTextBuilder getFormatter() {
return new HtmlPseudoTextBuilder();
}
}
@@ -1,11 +1,15 @@
package com.intellij.lang.java;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.highlighter.JavaFileHighlighter;
import com.intellij.lang.Language;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.fileTypes.SyntaxHighlighter;
import com.intellij.openapi.project.Project;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.PsiManager;
import com.intellij.psi.impl.source.codeStyle.java.JavaAdapter;
/**
* Created by IntelliJ IDEA.
@@ -23,4 +27,12 @@ public class JavaLanguage extends Language {
LanguageLevel level = project != null ? PsiManager.getInstance(project).getEffectiveLanguageLevel() : LanguageLevel.HIGHEST;
return new JavaFileHighlighter(level);
}
public PseudoTextBuilder getFormatter() {
return new JavaAdapter() {
protected FileType getFileType() {
return StdFileTypes.JAVA;
}
};
}
}
@@ -1,9 +1,15 @@
package com.intellij.lang.xml;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.codeFormatting.xml.xml.XmlPseudoTextBuilder;
import com.intellij.ide.highlighter.XmlFileHighlighter;
import com.intellij.lang.Language;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.fileTypes.SyntaxHighlighter;
import com.intellij.openapi.project.Project;
import com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade;
import com.intellij.psi.impl.source.codeStyle.java.JavaAdapter;
/**
* Created by IntelliJ IDEA.
@@ -20,4 +26,17 @@ public class XMLLanguage extends Language {
public SyntaxHighlighter getSyntaxHighlighter(Project project) {
return new XmlFileHighlighter();
}
public PseudoTextBuilder getFormatter() {
if (CodeFormatterFacade.USE_NEW_CODE_FORMATTER <= 0) {
return new JavaAdapter() {
protected FileType getFileType() {
return StdFileTypes.XML;
}
};
}
else {
return new XmlPseudoTextBuilder();
}
}
}
@@ -31,7 +31,6 @@
*/
package com.intellij.openapi.fileTypes;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.lang.Language;
import com.intellij.openapi.project.Project;
@@ -91,10 +90,6 @@ public class PlainTextFileType implements FileType {
return null;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return null;
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return null;
}
@@ -6,7 +6,6 @@
*/
package com.intellij.openapi.fileTypes.ex;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.lang.Language;
import com.intellij.openapi.fileTypes.FileType;
@@ -52,10 +51,6 @@ public abstract class FakeFileType implements FileType {
return null;
}
public PseudoTextBuilder getPseudoTextBuilder() {
return null;
}
public StructureViewModel getStructureViewModel(VirtualFile file, Project project) {
return null;
}
@@ -1,5 +1,8 @@
package com.intellij.psi.impl.source.codeStyle;
import com.intellij.codeFormatting.PseudoText;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.lang.ASTNode;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.StdFileTypes;
@@ -12,9 +15,6 @@ import com.intellij.psi.impl.source.SourceTreeToPsiMap;
import com.intellij.psi.impl.source.tree.*;
import com.intellij.util.CharTable;
import com.intellij.util.containers.HashMap;
import com.intellij.codeFormatting.PseudoTextBuilder;
import com.intellij.codeFormatting.PseudoText;
import com.intellij.lang.ASTNode;
public class CodeEditUtil {
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.codeStyle.CodeEditUtil");
@@ -411,7 +411,7 @@ public class CodeEditUtil {
LOG.assertTrue(firstAsPsiElement != null);
final PsiFile file = firstAsPsiElement.getContainingFile();
final FileType fileType = file.getVirtualFile().getFileType();
final PseudoTextBuilder pseudoTextBuilder = fileType.getPseudoTextBuilder();
final PseudoTextBuilder pseudoTextBuilder = fileType.getLanguage().getFormatter();
LOG.assertTrue(pseudoTextBuilder != null);
final Project project = firstAsPsiElement.getProject();
final CodeStyleSettings settings = CodeStyleSettingsManager.getInstance(project).getCurrentSettings();
@@ -110,7 +110,7 @@ public class CodeFormatterFacade implements Constants {
public ASTNode processRange(ASTNode element, int startOffset, int endOffset) {
FileType fileType = myHelper.getFileType();
if (useNewFormatter(fileType)) {
PseudoTextBuilder pseudoTextBuilder = fileType.getPseudoTextBuilder();
PseudoTextBuilder pseudoTextBuilder = fileType.getLanguage().getFormatter();
if (pseudoTextBuilder == null) {
return element;
}
@@ -1,5 +1,6 @@
package com.intellij.psi.impl.source.parsing;
import com.intellij.lang.ASTNode;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.psi.PsiLock;
import com.intellij.psi.impl.DebugUtil;
@@ -7,7 +8,6 @@ import com.intellij.psi.impl.source.Constants;
import com.intellij.psi.impl.source.PsiFileImpl;
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
import com.intellij.psi.impl.source.tree.*;
import com.intellij.lang.ASTNode;
/**
*
@@ -74,7 +74,6 @@ public class ChameleonTransforming implements Constants {
}
child = child.getTreeNext();
}
;
}
}
}