public static DomFileEditor createDomFileEditor( final String name, @Nullable final Icon icon, final DomElement element, final Factory<? extends CommittablePanel> committablePanel) { final XmlFile file = DomUtil.getFile(element); final Factory<BasicDomElementComponent> factory = new Factory<BasicDomElementComponent>() { @Override public BasicDomElementComponent create() { CaptionComponent captionComponent = new CaptionComponent(name, icon); captionComponent.initErrorPanel(element); BasicDomElementComponent component = createComponentWithCaption(committablePanel.create(), captionComponent, element); Disposer.register(component, captionComponent); return component; } }; return new DomFileEditor<BasicDomElementComponent>( file.getProject(), file.getVirtualFile(), name, factory) { @Override public JComponent getPreferredFocusedComponent() { return null; } }; }
public AntHectorConfigurable(XmlFile file) { myFile = file; myProject = file.getProject(); final VirtualFile selfVFile = myFile.getVirtualFile(); myLocalPath = PathUtil.getLocalPath(selfVFile); myFileFilter = GlobalSearchScope.projectScope(myProject); }
@NotNull private static XmlFileHeader calcXmlFileHeader(final XmlFile file) { if (file instanceof PsiFileEx && ((PsiFileEx) file).isContentsLoaded() && file.getNode().isParsed()) { return computeHeaderByPsi(file); } if (!XmlUtil.isStubBuilding() && file.getFileType() == XmlFileType.INSTANCE) { VirtualFile virtualFile = file.getVirtualFile(); if (virtualFile instanceof VirtualFileWithId) { ObjectStubTree tree = StubTreeLoader.getInstance().readFromVFile(file.getProject(), virtualFile); if (tree != null) { Stub root = tree.getRoot(); if (root instanceof FileStub) { return ((FileStub) root).getHeader(); } } } } if (!file.isValid()) return XmlFileHeader.EMPTY; return NanoXmlUtil.parseHeader(file); }
protected CachedValue<XmlFileHeader> compute(final XmlFile file, final Object o) { return CachedValuesManager.getManager(file.getProject()) .createCachedValue( new CachedValueProvider<XmlFileHeader>() { public Result<XmlFileHeader> compute() { return new Result<XmlFileHeader>(calcXmlFileHeader(file), file); } }, false); }
private Collection<SchemaTypeInfo> gatherInheritors(XmlTagImpl xml) { XmlAttribute name = getNameAttr(xml); if (name == null || StringUtil.isEmptyOrSpaces(name.getValue())) return null; String localName = name.getValue(); final boolean hasPrefix = localName.contains(":"); localName = hasPrefix ? localName.substring(localName.indexOf(':') + 1) : localName; final String nsPrefix = hasPrefix ? name.getValue().substring(0, name.getValue().indexOf(':')) : null; final XmlFile file = XmlUtil.getContainingFile(xml); if (file == null) return null; final Project project = file.getProject(); if (project == null) return null; final Set<SchemaTypeInfo> result = new HashSet<SchemaTypeInfo>(); final ArrayDeque<SchemaTypeInfo> queue = new ArrayDeque<SchemaTypeInfo>(); String nsUri; if (!hasPrefix) { nsUri = getDefaultNs(file); } else { nsUri = XmlUtil.findNamespaceByPrefix(nsPrefix, file.getRootTag()); } if (nsUri == null) return null; queue.add(new SchemaTypeInfo(localName, true, nsUri)); final PairConvertor<String, String, List<Set<SchemaTypeInfo>>> worker = SchemaTypeInheritanceIndex.getWorker(project, file.getContainingFile().getVirtualFile()); while (!queue.isEmpty()) { final SchemaTypeInfo info = queue.removeFirst(); final List<Set<SchemaTypeInfo>> childrenOfType = worker.convert(info.getNamespaceUri(), info.getTagName()); for (Set<SchemaTypeInfo> infos : childrenOfType) { for (SchemaTypeInfo typeInfo : infos) { if (typeInfo.isIsTypeName()) { queue.add(typeInfo); } result.add(typeInfo); } } } return result; }