package com.fr.design.gui.syntax.ui.rsyntaxtextarea;

//import java.awt.Graphics;
//import java.awt.Rectangle;
//import java.awt.Shape;

//import javax.swing.text.CompositeView;
import javax.swing.text.Element;
//import javax.swing.text.View;


/**
 * Replacement for the old <code>WrappedSyntaxView</code> class, designed to
 * be faster with large wrapped documents.  Heavily based off of
 * <code>BoxView</code>, but streamlined to only care about the y-axis, and
 * takes code folding into account.<p>
 *
 * This class is not currently used.
 *
 * @author Robert Futrell
 * @version 1.0
 */
public class WrappedSyntaxView2 {//extends CompositeView {

//	private Rectangle tempRect;
//	private int[] cachedOffsets;
//	private int[] cachedSpans;
//	private boolean sizeRequirementsValid;


	public WrappedSyntaxView2(Element root) {
		//super(root);
//		tempRect = new Rectangle();
//		cachedOffsets = new int[0];
//		cachedSpans = new int[0];
//		sizeRequirementsValid = false;
	}


//	protected void childAllocation(int index, Rectangle alloc) {
//		alloc.y += getOffset(index);
//		alloc.height = getHeight(index);
//	}
//
//
//	private int getHeight(int childIndex) {
//		return cachedSpans[childIndex];
//	}
//
//
//	private int getOffset(int childIndex) {
//		return cachedOffsets[childIndex]; 
//	}
//
//
//	protected View getViewAtPoint(int x, int y, Rectangle alloc) {
//		// TODO Auto-generated method stub
//		return null;
//	}
//
//
//	/**
//	 * @param alloc The allocated region; this is the area inside of the insets
//	 * @return Whether the point lies after the region.
//	 */
//	protected boolean isAfter(int x, int y, Rectangle alloc) {
//		return y > (alloc.y + alloc.height);
//	}
//
//
//	/**
//	 * @param alloc The allocated region; this is the area inside of the insets
//	 * @return Whether the point lies before the region.
//	 */
//	protected boolean isBefore(int x, int y, Rectangle alloc) {
//		return y < alloc.y;
//	}
//
//
//	public float getPreferredSpan(int axis) {
//		if (axis==X_AXIS) {
//			return preferredWidth + getLeftInset() + getRightInset();
//		}
//		else {
//			return preferredHeight + getTopInset() + getBottomInset();
//		}
//	}
//
//
//	public void paint(Graphics g, Shape allocation) {
//
//		Rectangle alloc = (allocation instanceof Rectangle) ?
//				(Rectangle)allocation : allocation.getBounds();
//		int n = getViewCount();
//
//		int x = alloc.x + getLeftInset();
//		int y = alloc.y + getTopInset();
//		Rectangle clip = g.getClipBounds();
//		int preferredWidth = (int)getPreferredSpan(X_AXIS);
//
//		for (int i = 0; i < n; i++) {
//			tempRect.x = x;
//			tempRect.y = y + getOffset(i);
//			tempRect.width = preferredWidth;
//			tempRect.height = getHeight(i);
//			if (tempRect.intersects(clip)) {
//				paintChild(g, tempRect, i);
//			}
//		}
//
//	}
//
//
//	/**
//	 * Called when a child view's preferred span changes.  This invalidates
//	 * our layout cache and calls the super implementation.
//	 */
//	public void preferenceChanged(View child, boolean widthPreferenceChanged,
//								boolean heightPreferenceChanged) {
//
//		if (heightPreferenceChanged) {
//			sizeRequirementsValid = false;
////			majorAllocValid = false;
//		}
////		if (width) {
////			minorReqValid = false;
////			minorAllocValid = false;
////		}
//
//		super.preferenceChanged(child, widthPreferenceChanged, heightPreferenceChanged);
//
//	}
//
//	public void replace(int index, int length, View[] elems) {
//
//		super.replace(index, length, elems);
//
//		// Invalidate cache
//		int insertCount = elems==null ? 0 : elems.length;
//		cachedOffsets = updateLayoutArray(cachedOffsets, index, insertCount);
//		majorReqValid = false;
//		majorAllocValid = false;
//
//	}
//
//
//	private int[] updateLayoutArray(int[] oldArray, int offset, int nInserted) {
//		int n = getViewCount(); // Called after super.replace() so this is accurate
//		int[] newArray = new int[n];
//		System.arraycopy(oldArray, 0, newArray, 0, offset);
//		System.arraycopy(oldArray, offset, 
//				newArray, offset + nInserted, n - nInserted - offset);
//		return newArray;
//	}
//

}