package org.netbeans.modules.gwt4nb;
import org.netbeans.api.editor.mimelookup.MimeLookup;
import org.netbeans.api.java.lexer.JavaTokenId;
import org.netbeans.api.lexer.InputAttributes;
import org.netbeans.api.lexer.Language;
import org.netbeans.api.lexer.LanguagePath;
import org.netbeans.api.lexer.Token;
import org.netbeans.api.lexer.TokenUtilities;
import org.netbeans.spi.lexer.LanguageEmbedding;
import org.netbeans.spi.lexer.LanguageProvider;
import org.openide.util.lookup.ServiceProvider;
/**
*
* @author Chris2011
*/
@ServiceProvider(service = LanguageProvider.class)
public class JSNISupport extends LanguageProvider {
private Language embeddedLanguage;
private static final String START_FRAGMENT = "/*-{";
private static final String END_FRAGMENT = "}-*/";
@Override
public Language<?> findLanguage(String mimeType) {
return null;
}
@Override
public LanguageEmbedding<?> findLanguageEmbedding(Token<?> token, LanguagePath languagePath, InputAttributes inputAttributes) {
if (embeddedLanguage == null) {
initLanguage();
}
if (JavaTokenId.BLOCK_COMMENT == token.id()) {
if (token.text() != null
&& TokenUtilities.startsWith(token.text(), START_FRAGMENT)
&& TokenUtilities.endsWith(token.text(), END_FRAGMENT)) {
return LanguageEmbedding.create(embeddedLanguage, START_FRAGMENT.length(), END_FRAGMENT.length(), true);
}
}
return null;
}
private void initLanguage() {
embeddedLanguage = MimeLookup.getLookup("text/javascript").lookup(Language.class);
}
}