blob: e9d8b325f69347d484e74975901b2e3b1dcb2122 [file] [log] [blame]
package org.jetbrains.plugins.javaFX.fxml;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.xml.XmlFile;
import com.intellij.xml.XmlSchemaProvider;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.net.URL;
/**
* User: anna
* Date: 1/10/13
*/
public class JavaFXSchemaHandler extends XmlSchemaProvider {
private static final Logger LOG = Logger.getInstance("#" + JavaFXSchemaHandler.class.getName());
@Override
public boolean isAvailable(final @NotNull XmlFile file) {
return JavaFxFileTypeFactory.isFxml(file);
}
@Nullable
@Override
public XmlFile getSchema(@NotNull @NonNls String url, @Nullable Module module, @NotNull PsiFile baseFile) {
return module != null && JavaFxFileTypeFactory.isFxml(baseFile) ? getReference(module) : null;
}
private static XmlFile getReference(@NotNull Module module) {
final URL resource = JavaFXSchemaHandler.class.getResource("fx.xsd");
final VirtualFile fileByURL = VfsUtil.findFileByURL(resource);
PsiFile psiFile = PsiManager.getInstance(module.getProject()).findFile(fileByURL);
LOG.assertTrue(psiFile != null);
return (XmlFile)psiFile.copy();
}
}