if (element == null)
return;
ICSSModel model = getExistingModel();
if (model == null)
return;
IStructuredDocument structuredDocument = model.getStructuredDocument();
if (structuredDocument == null)
return;
String data = null;
Node child = element.getFirstChild();
if (child != null && child.getNodeType() == Node.TEXT_NODE && child.getNextSibling() == null) {
data = child.getNodeValue();
}
if (data == null)
data = "";//$NON-NLS-1$
// minimize replace range
int start = 0, end = 0;
String oldData = structuredDocument.get();
if (oldData == null)
oldData = "";//$NON-NLS-1$
// search differenct character position from first
for (; start < oldData.length() && start < data.length(); start++)
if (oldData.charAt(start) != data.charAt(start))
break;
if (start == oldData.length() && start == data.length())
return; // no change
else if (start == oldData.length()) {
structuredDocument.replaceText(getRequesterH2C(), start, 0, data.substring(start)); // append text to last
}
else if (start == data.length()) {
structuredDocument.replaceText(getRequesterH2C(), start, oldData.length() - start, ""); // remove text of last //$NON-NLS-1$
}
else {
// search differenct character position from last
for (; start < oldData.length() - end && start < data.length() - end; end++) {
if (oldData.charAt(oldData.length() - end - 1) != data.charAt(data.length() - end - 1))
break;
}
structuredDocument.replaceText(getRequesterH2C(), start, oldData.length() - end - start, data.substring(start, data.length() - end));
}
}