[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.webtools] Displaying Attribute Node

I have instantiated WST's structured Text Editor.
I'm trying to semi mimick WTP's xml editor.

Here's my content provider:

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.w3c.dom.Node;

class DOMContentProvider implements ITreeContentProvider {
	public void dispose() {
	}

public Object[] getChildren(Object parentElement) {
if (parentElement instanceof INodeNotifier) {
((INodeNotifier) parentElement).getAdapterFor(RefreshOnNotifyChangedAdapter.class);
}


if (parentElement instanceof Node) {
List children = new ArrayList();
Node child = ((Node) parentElement).getFirstChild();
while (child != null) {
if (child instanceof INodeNotifier) {
((INodeNotifier) child).getAdapterFor(RefreshOnNotifyChangedAdapter.class);
}
children.add(child);
child = child.getNextSibling();
}
return children.toArray();
}
return new Object[0];
}


public Object[] getElements(Object inputElement) {
if (inputElement instanceof IDOMModel) {
if (inputElement instanceof INodeNotifier) {
((INodeNotifier) inputElement).getAdapterFor(RefreshOnNotifyChangedAdapter.class);
}
return new Object[]{((IDOMModel) inputElement).getDocument()};
}
return new Object[0];
}


public Object getParent(Object element) {
if (element instanceof Node) {
if (element instanceof INodeNotifier) {
((INodeNotifier) element).getAdapterFor(RefreshOnNotifyChangedAdapter.class);
}
return ((Node) element).getParentNode();
}
return null;
}


public boolean hasChildren(Object element) {
if (element instanceof Node) {
if (element instanceof INodeNotifier) {
((INodeNotifier) element).getAdapterFor(RefreshOnNotifyChangedAdapter.class);
}


			return ((Node) element).getFirstChild() != null;
		}
		return false;
	}

public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}


}

Anyone know a simple way of modifying this in order to get the attribute node to be returned as well.

Thanks