* Contributors:
* Igor Malinin - initial contribution
*
- * $Id: MultiViewPartitioner.java,v 1.2 2004-09-22 18:51:51 jsurfer Exp $
+ * $Id: MultiViewPartitioner.java,v 1.6 2004-11-12 20:15:58 axelcl Exp $
*/
package net.sourceforge.phpeclipse.ui.text.rules;
if (DEBUG) {
Assert.isTrue(position.offset >= 0, Integer.toString(position.offset));
}
- DocumentEvent event = new DocumentEvent(outerDocument, outerDocument.getLocalOffset(position.offset), position.length, null);
-
- outerDocument.fireDocumentAboutToBeChanged(event);
+ int outerOffset = outerDocument.getLocalOffset(position.offset);
+ // axelcl start
+ DocumentEvent event = null;
+ if (outerOffset>=0) {
+ // axelcl end
+ event = new DocumentEvent(outerDocument, outerOffset, position.length, null);
+
+ outerDocument.fireDocumentAboutToBeChanged(event);
+ }
super.addInnerRegion(position);
- outerDocument.fireDocumentChanged(event);
+// axelcl start
+ if (event != null) {
+ // axelcl end
+ outerDocument.fireDocumentChanged(event);
+ }
} else {
super.addInnerRegion(position);
}
try {
if (outerDocument != null) {
DocumentEvent event = null;
- if (position.offset >= 0) {
- event = new DocumentEvent(outerDocument, outerDocument.getLocalOffset(position.offset), 0, document.get(position.offset,
- position.length));
+ if (position.offset >= 0 && position.length >= 0) {
+ int outerOffset = outerDocument.getLocalOffset(position.offset);
+ if (outerOffset > 0) {
+ event = new DocumentEvent(outerDocument, outerOffset, 0, document.get(position.offset, position.length));
- outerDocument.fireDocumentAboutToBeChanged(event);
+ outerDocument.fireDocumentAboutToBeChanged(event);
+ }
}
super.removeInnerRegion(position);
if (position.offset >= 0) {
- outerDocument.fireDocumentChanged(event);
+ if (event != null) {
+ outerDocument.fireDocumentChanged(event);
+ }
}
} else {
super.removeInnerRegion(position);
if (p instanceof ViewNode) {
// TODO: revisit condition
InnerDocumentView innerDocument = ((ViewNode) p).view;
- if (innerDocument != null) {
+ if (innerDocument != null) {
int start = innerDocument.getLocalOffset(offset);
innerDocument.fireDocumentChanged(new DocumentEvent(innerDocument, start, length, text));
}
end = document.getLength();
type = getContentType(null, IDocument.DEFAULT_CONTENT_TYPE);
} else {
- ITypedRegion region = outerDocument.getPartition(outerDocument.getLocalOffset(offset));
+ int outerOffset = outerDocument.getLocalOffset(offset);
+ //axelcl start
+ if (outerOffset < 0) {
+ start = 0;
+ end = document.getLength();
+ type = getContentType(null, IDocument.DEFAULT_CONTENT_TYPE);
+ } else {
+// axelcl end
+ ITypedRegion region = outerDocument.getPartition(outerOffset);
- start = region.getOffset();
- end = start + region.getLength();
+ start = region.getOffset();
+ end = start + region.getLength();
- // convert to parent offset
- start = outerDocument.getParentOffset(start);
- end = outerDocument.getParentOffset(end);
+ // convert to parent offset
+ start = outerDocument.getParentOffset(start);
+ end = outerDocument.getParentOffset(end);
- type = getContentType(null, region.getType());
+ type = getContentType(null, region.getType());
+ }
}
if (prev != null) {
return new TypedRegion(start, end - start, type);
} catch (BadLocationException x) {
+ x.printStackTrace();
throw new IllegalArgumentException();
}
}