use of org.eclipse.wst.sse.core.internal.provisional.INodeNotifier in project jbosstools-hibernate by jbosstools.
the class DOMModelUtil method getAdaptedElements.
public static List getAdaptedElements(Element n, String elementName, INodeAdapterFactory factory) {
List result = new ArrayList();
List list = DOMModelUtil.getChildrenByTagName(n, elementName);
for (int i = 0; i < list.size(); i++) {
Node item = (Node) list.get(i);
result.add(factory.adapt((INodeNotifier) item));
}
return result;
}
use of org.eclipse.wst.sse.core.internal.provisional.INodeNotifier in project webtools.sourceediting by eclipse.
the class AbstractCSSSourceFormatter method formatChildren.
/**
*/
protected final void formatChildren(ICSSNode node, IRegion region, StringBuffer source) {
ICSSNode child = node.getFirstChild();
int start = region.getOffset();
int end = region.getOffset() + region.getLength();
boolean first = true;
while (child != null) {
int curEnd = ((IndexedRegion) child).getEndOffset();
StringBuffer childSource = null;
boolean toFinish = false;
if (start < curEnd) {
int curStart = ((IndexedRegion) child).getStartOffset();
if (curStart < end) {
// append child
CSSSourceFormatter formatter = (CSSSourceFormatter) ((INodeNotifier) child).getAdapterFor(CSSSourceFormatter.class);
if (formatter == null) {
formatter = CSSSourceFormatterFactory.getInstance().getSourceFormatter((INodeNotifier) child);
}
if (includes(region, curStart, curEnd))
childSource = ((AbstractCSSSourceFormatter) formatter).formatProc(child);
else
childSource = ((AbstractCSSSourceFormatter) formatter).formatProc(child, overlappedRegion(region, curStart, curEnd));
} else
toFinish = true;
}
// append between children
if (!first) {
// change
curEnd = ((IndexedRegion) child).getStartOffset();
// start
if (start < curEnd) {
int curStart = ((IndexedRegion) child.getPreviousSibling()).getEndOffset();
if (curStart < end) {
// $NON-NLS-1$
String toAppend = (childSource != null) ? new String(childSource) : "";
if (includes(region, curStart, curEnd))
formatBefore(node, child, toAppend, source, null);
else
formatBefore(node, child, overlappedRegion(region, curStart, curEnd), toAppend, source);
}
}
}
if (childSource != null) {
source.append(childSource);
}
first = false;
if (toFinish)
break;
child = child.getNextSibling();
}
}
use of org.eclipse.wst.sse.core.internal.provisional.INodeNotifier in project webtools.sourceediting by eclipse.
the class AbstractStyleSheetAdapter method styleUpdate.
/**
* @param srcModel com.ibm.sed.css.model.interfaces.ICSSModel
*/
public void styleUpdate(ICSSModel srcModel) {
IDOMNode node = (IDOMNode) getElement();
if (node == null)
return;
IDOMModel model = node.getModel();
if (model == null)
return;
XMLModelNotifier notifier = model.getModelNotifier();
if (notifier == null)
return;
// before updating, all sub-models should be loaded!
DocumentStyle document = (DocumentStyle) model.getDocument();
StyleSheetList styles = document.getStyleSheets();
if (styles != null) {
int n = styles.getLength();
ImportedCollector trav = new ImportedCollector();
for (int i = 0; i < n; i++) {
org.w3c.dom.stylesheets.StyleSheet sheet = styles.item(i);
if (sheet instanceof ICSSNode)
trav.apply((ICSSNode) sheet);
}
}
// flash style changed events
if (styleChangedNodes != null) {
Object[] elements = styleChangedNodes.toArray();
for (int i = 0; elements != null && i < elements.length; i++) notifyStyleChanged((Element) elements[i]);
styleChangedNodes.clear();
}
// to notify GEF tree
if (document instanceof INodeNotifier) {
Collection adapters = ((INodeNotifier) document).getAdapters();
if (adapters == null)
return;
Iterator it = adapters.iterator();
if (it == null)
return;
while (it.hasNext()) {
INodeAdapter adapter = (INodeAdapter) it.next();
if (adapter instanceof ICSSStyleListener) {
((ICSSStyleListener) adapter).styleUpdate(srcModel);
}
}
}
notifier.propertyChanged(node);
}
use of org.eclipse.wst.sse.core.internal.provisional.INodeNotifier in project webtools.sourceediting by eclipse.
the class AbstractStyleSheetAdapter method styleChanged.
/**
* @param srcModel com.ibm.sed.css.model.interfaces.ICSSModel
* @param removed com.ibm.sed.css.model.interfaces.ICSSSelector[]
* @param added com.ibm.sed.css.model.interfaces.ICSSSelector[]
* @param media java.lang.String
*/
public void styleChanged(ICSSModel srcModel, ICSSSelector[] removed, ICSSSelector[] added, String media) {
Element element = getElement();
if (element == null)
// might released
return;
Document doc = element.getOwnerDocument();
if (doc == null)
// error
return;
// to notify GEF tree
if (doc instanceof INodeNotifier) {
Collection adapters = ((INodeNotifier) doc).getAdapters();
if (adapters == null)
return;
Iterator it = adapters.iterator();
if (it == null)
return;
while (it.hasNext()) {
INodeAdapter adapter = (INodeAdapter) it.next();
if (adapter instanceof ICSSStyleListener) {
((ICSSStyleListener) adapter).styleChanged(srcModel, removed, added, media);
}
}
}
if (styleChangedNodes == null) {
styleChangedNodes = new HashSet();
}
try {
int removedSelNum = removed != null ? removed.length : 0;
int addedSelNum = added != null ? added.length : 0;
NodeIterator iter = ((DocumentTraversal) doc).createNodeIterator(doc, NodeFilter.SHOW_ELEMENT, null, true);
Node node;
while ((node = iter.nextNode()) != null) {
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element elm = (Element) node;
boolean match = false;
int i;
for (i = 0; i < removedSelNum && !match; i++) {
match = removed[i].match(elm, null);
}
for (i = 0; i < addedSelNum && !match; i++) {
match = added[i].match(elm, null);
}
if (match) {
if (!styleChangedNodes.contains(elm))
styleChangedNodes.add(elm);
// notifyStyleChanged(elm);
}
}
}
} catch (ClassCastException ex) {
// Document doesn't implement DocumentTraversal...
}
}
use of org.eclipse.wst.sse.core.internal.provisional.INodeNotifier in project webtools.sourceediting by eclipse.
the class LinkElementAdapter method attrReplaced.
/**
*/
private void attrReplaced() {
this.replaceModel = true;
Element element = getElement();
if (element == null)
// error
return;
Document document = element.getOwnerDocument();
if (document == null)
// error
return;
INodeNotifier notifier = (INodeNotifier) document;
HTMLDocumentAdapter adapter = (HTMLDocumentAdapter) notifier.getAdapterFor(IStyleSheetListAdapter.class);
if (adapter == null)
return;
adapter.childReplaced();
}
Aggregations