package nota.oxygen.epub; import java.net.URL; import nota.oxygen.common.Utils; import org.w3c.dom.Document; import ro.sync.ecss.extensions.api.AuthorExtensionStateListener; import ro.sync.ecss.extensions.api.AuthorExtensionStateListenerDelegator; import ro.sync.ecss.extensions.api.AuthorOperationException; import ro.sync.ecss.extensions.api.CustomAttributeValueEditor; import ro.sync.ecss.extensions.api.UniqueAttributesRecognizer; public class XHTMLExtensionsBundle extends ro.sync.ecss.extensions.xhtml.XHTMLExtensionsBundle { @Override public AuthorExtensionStateListener createAuthorExtensionStateListener() { if (stateListener == null) { stateListener = new AuthorExtensionStateListenerDelegator(); stateListener.addListener(getUniqueAttributesIdentifier()); stateListener.addListener(getLangStateListener()); } return stateListener; } XHTMLUniqueAttributesRecognizer uniqueAttributesRecognizer; LangExtensionStateListener langStateListener; AuthorExtensionStateListenerDelegator stateListener; @Override public UniqueAttributesRecognizer getUniqueAttributesIdentifier() { if (uniqueAttributesRecognizer == null) uniqueAttributesRecognizer = new XHTMLUniqueAttributesRecognizer(); return uniqueAttributesRecognizer; } public LangExtensionStateListener getLangStateListener() { if (langStateListener == null) langStateListener = new LangExtensionStateListener(); return langStateListener; } private static Document attributeValueListsDocument; public static Document getAttributeValueListsDocument() { if (attributeValueListsDocument == null) { try { try { attributeValueListsDocument = Utils.loadDocument(new URL("http://notalib.github.io/nota.oxygen/attributeValueLists.xml")); } catch (Exception e) { attributeValueListsDocument = Utils.deserializeDocument("<attributeValueLists/>", null); } } catch (AuthorOperationException e) { attributeValueListsDocument = null; } } return attributeValueListsDocument; } XHTMLAttributeValueEditor attributesValueEditor; @Override public CustomAttributeValueEditor createCustomAttributeValueEditor( boolean arg0) { if (attributesValueEditor == null) { attributesValueEditor = new XHTMLAttributeValueEditor(getAttributeValueListsDocument()); } return attributesValueEditor; } }