blob: 166d8c67b129e024c76d7a4c1ab3cc29ad29dcfb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Jens Lukowski/Innoopract - initial renaming/restructuring
*
*******************************************************************************/
package org.eclipse.wst.xml.core.internal.document;
import java.util.Vector;
import org.eclipse.wst.sse.core.events.StructuredDocumentEvent;
import org.eclipse.wst.sse.core.text.IStructuredDocument;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.text.ITextRegion;
import org.eclipse.wst.sse.core.text.ITextRegionContainer;
import org.eclipse.wst.sse.core.text.ITextRegionList;
class StructuredDocumentRegionContainer implements IStructuredDocumentRegion {
private Vector flatNodes = new Vector(2);
/**
*/
StructuredDocumentRegionContainer() {
super();
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.IStructuredDocumentRegion#addRegion(com.ibm.sed.structured.text.ITextRegion)
*/
public void addRegion(ITextRegion aRegion) {
// XXX Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegion#adjust(int)
*/
public void adjust(int i) {
// XXX Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegion#adjustLengthWith(int)
*/
public void adjustLengthWith(int i) {
// XXX Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegion#adjustStart(int)
*/
public void adjustStart(int i) {
// XXX Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegion#adjustTextLength(int)
*/
public void adjustTextLength(int i) {
// XXX Auto-generated method stub
}
/**
*/
void appendStructuredDocumentRegion(IStructuredDocumentRegion flatNode) {
if (flatNode == null)
return;
if (flatNode instanceof StructuredDocumentRegionContainer) {
StructuredDocumentRegionContainer container = (StructuredDocumentRegionContainer) flatNode;
if (container.getStructuredDocumentRegionCount() > 0) {
this.flatNodes.addAll(container.flatNodes);
}
} else {
this.flatNodes.addElement(flatNode);
}
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegionCollection#containsOffset(int)
*/
public boolean containsOffset(int i) {
// XXX Auto-generated method stub
return false;
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegionCollection#containsOffset(com.ibm.sed.structured.text.ITextRegion,
* int)
*/
public boolean containsOffset(ITextRegion region, int i) {
// XXX Auto-generated method stub
return false;
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegion#equatePositions(com.ibm.sed.structured.text.ITextRegion)
*/
public void equatePositions(ITextRegion region) {
// XXX Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegionCollection#getDeepestRegionAtCharacterOffset(int)
*/
public ITextRegion getDeepestRegionAtCharacterOffset(int offset) {
// XXX Auto-generated method stub
return null;
}
/**
*/
public int getEnd() {
IStructuredDocumentRegion last = getLastStructuredDocumentRegion();
if (last == null)
return 0;
return last.getEnd();
}
/**
*/
public int getEndOffset() {
return getEnd();
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegionCollection#getEndOffset(com.ibm.sed.structured.text.ITextRegion)
*/
public int getEndOffset(ITextRegion containedRegion) {
// XXX Auto-generated method stub
return 0;
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegionCollection#getFirstRegion()
*/
public ITextRegion getFirstRegion() {
// XXX Auto-generated method stub
return null;
}
/**
*/
IStructuredDocumentRegion getFirstStructuredDocumentRegion() {
if (this.flatNodes.isEmpty())
return null;
return (IStructuredDocumentRegion) this.flatNodes.elementAt(0);
}
/**
*/
public String getFullText() {
return getText();
}
/**
*/
public String getFullText(ITextRegion aRegion) {
// not supported
return null;
}
/**
*/
public String getFullText(String context) {
// not supported
return null;
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegionCollection#getLastRegion()
*/
public ITextRegion getLastRegion() {
// XXX Auto-generated method stub
return null;
}
/**
*/
IStructuredDocumentRegion getLastStructuredDocumentRegion() {
int size = this.flatNodes.size();
if (size == 0)
return null;
return (IStructuredDocumentRegion) this.flatNodes.elementAt(size - 1);
}
/**
*/
public int getLength() {
return (getEnd() - getStart());
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.IStructuredDocumentRegion#getNext()
*/
public IStructuredDocumentRegion getNext() {
// XXX Auto-generated method stub
return null;
}
/**
*/
public int getNumberOfRegions() {
// not supported
return 0;
}
/**
*/
public ITextRegionContainer getParent() {
return null;
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.IStructuredDocumentRegion#getParentDocument()
*/
public IStructuredDocument getParentDocument() {
// XXX Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.IStructuredDocumentRegion#getPrevious()
*/
public IStructuredDocumentRegion getPrevious() {
// XXX Auto-generated method stub
return null;
}
/**
*/
public ITextRegion getRegionAtCharacterOffset(int offset) {
// not supported
return null;
}
/**
*/
public ITextRegionList getRegions() {
// not supported
return null;
}
/**
*/
public int getStart() {
IStructuredDocumentRegion first = getFirstStructuredDocumentRegion();
if (first == null)
return 0;
return first.getStart();
}
/**
*/
public int getStartOffset() {
return getStart();
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegionCollection#getStartOffset(com.ibm.sed.structured.text.ITextRegion)
*/
public int getStartOffset(ITextRegion containedRegion) {
// XXX Auto-generated method stub
return 0;
}
/**
*/
public IStructuredDocument getStructuredDocument() {
IStructuredDocumentRegion first = getFirstStructuredDocumentRegion();
if (first == null)
return null;
return first.getParentDocument();
}
/**
*/
IStructuredDocumentRegion getStructuredDocumentRegion(int index) {
if (index < 0 || index >= this.flatNodes.size())
return null;
return (IStructuredDocumentRegion) this.flatNodes.elementAt(index);
}
/**
*/
int getStructuredDocumentRegionCount() {
return this.flatNodes.size();
}
/**
*/
public String getText() {
int size = this.flatNodes.size();
if (size == 0)
return new String();
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < size; i++) {
IStructuredDocumentRegion flatNode = (IStructuredDocumentRegion) this.flatNodes.elementAt(i);
if (flatNode == null)
continue;
buffer.append(flatNode.getText());
}
return buffer.toString();
}
/**
*/
public String getText(ITextRegion aRegion) {
// not supported
return null;
}
/**
*/
public String getText(String context) {
// not supported
return null;
}
/**
*/
public int getTextEnd() {
return getEnd();
}
/**
*/
public int getTextEndOffset() {
return getTextEnd();
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegionCollection#getTextEndOffset(com.ibm.sed.structured.text.ITextRegion)
*/
public int getTextEndOffset(ITextRegion containedRegion) {
// XXX Auto-generated method stub
return 0;
}
/**
* The text length is equal to length if there is no white space at the
* end of a region. Otherwise it is smaller than length.
*/
public int getTextLength() {
return (getTextEnd() - getStart());
}
/**
*/
public String getType() {
return "StructuredDocumentRegionContainer";//$NON-NLS-1$
}
/**
*/
void insertStructuredDocumentRegion(IStructuredDocumentRegion flatNode, int index) {
if (flatNode == null)
return;
if (index < 0)
return;
int size = this.flatNodes.size();
if (index > size)
return;
if (index == size) {
appendStructuredDocumentRegion(flatNode);
return;
}
this.flatNodes.insertElementAt(flatNode, index);
}
public boolean isDeleted() {
// I'll assume never really needed here
return false;
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.IStructuredDocumentRegion#isEnded()
*/
public boolean isEnded() {
// XXX Auto-generated method stub
return false;
}
/**
*/
IStructuredDocumentRegion removeStructuredDocumentRegion(int index) {
if (index < 0 || index >= this.flatNodes.size())
return null;
IStructuredDocumentRegion flatNode = (IStructuredDocumentRegion) this.flatNodes.elementAt(index);
this.flatNodes.removeElementAt(index);
return flatNode;
}
/**
*/
IStructuredDocumentRegion removeStructuredDocumentRegion(IStructuredDocumentRegion oldStructuredDocumentRegion) {
if (oldStructuredDocumentRegion == null)
return null;
int size = this.flatNodes.size();
for (int i = 0; i < size; i++) {
IStructuredDocumentRegion flatNode = (IStructuredDocumentRegion) this.flatNodes.elementAt(i);
if (flatNode == oldStructuredDocumentRegion) {
this.flatNodes.removeElementAt(i);
return flatNode;
}
}
return null; // not found
}
/**
*/
IStructuredDocumentRegion replaceStructuredDocumentRegion(IStructuredDocumentRegion flatNode, int index) {
if (flatNode == null)
return removeStructuredDocumentRegion(index);
if (index < 0 || index >= this.flatNodes.size())
return null;
IStructuredDocumentRegion oldStructuredDocumentRegion = (IStructuredDocumentRegion) this.flatNodes.elementAt(index);
this.flatNodes.setElementAt(flatNode, index);
return oldStructuredDocumentRegion;
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.IStructuredDocumentRegion#sameAs(com.ibm.sed.structured.text.IStructuredDocumentRegion,
* int)
*/
public boolean sameAs(IStructuredDocumentRegion region, int shift) {
// XXX Auto-generated method stub
return false;
}
/**
*/
public boolean sameAs(ITextRegion region, int shift) {
// not support
return false;
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.IStructuredDocumentRegion#sameAs(com.ibm.sed.structured.text.ITextRegion,
* com.ibm.sed.structured.text.IStructuredDocumentRegion,
* com.ibm.sed.structured.text.ITextRegion, int)
*/
public boolean sameAs(ITextRegion oldRegion, IStructuredDocumentRegion documentRegion, ITextRegion newRegion, int shift) {
// XXX Auto-generated method stub
return false;
}
public void setDeleted(boolean deleted) {
// I'll assume never really needed here
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.IStructuredDocumentRegion#setEnded(boolean)
*/
public void setEnded(boolean hasEnd) {
// XXX Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.IStructuredDocumentRegion#setLength(int)
*/
public void setLength(int newLength) {
// XXX Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.IStructuredDocumentRegion#setNext(com.ibm.sed.structured.text.IStructuredDocumentRegion)
*/
public void setNext(IStructuredDocumentRegion newNext) {
// XXX Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.IStructuredDocumentRegion#setParentDocument(com.ibm.sed.structured.text.IStructuredDocument)
*/
public void setParentDocument(IStructuredDocument document) {
// XXX Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.IStructuredDocumentRegion#setPrevious(com.ibm.sed.structured.text.IStructuredDocumentRegion)
*/
public void setPrevious(IStructuredDocumentRegion newPrevious) {
// XXX Auto-generated method stub
}
/**
*/
public void setRegions(ITextRegionList embeddedRegions) {
// not supported
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.IStructuredDocumentRegion#setStart(int)
*/
public void setStart(int newStart) {
// XXX Auto-generated method stub
}
/**
* toString method
*
* @return java.lang.String
*/
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append('{');
int count = getStructuredDocumentRegionCount();
for (int i = 0; i < count; i++) {
if (i != 0)
buffer.append(',');
IStructuredDocumentRegion flatNode = getStructuredDocumentRegion(i);
if (flatNode == null)
buffer.append("null");//$NON-NLS-1$
else
buffer.append(flatNode.toString());
}
buffer.append('}');
return buffer.toString();
}
/*
* (non-Javadoc)
*
* @see com.ibm.sed.structured.text.ITextRegion#updateModel(java.lang.Object,
* com.ibm.sed.structured.text.IStructuredDocumentRegion,
* java.lang.String, int, int)
*/
public StructuredDocumentEvent updateModel(Object requester, IStructuredDocumentRegion flatnode, String changes, int start, int end) {
// XXX Auto-generated method stub
return null;
}
}