package javax.swing.text;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Shape;
import javax.swing.SwingConstants;
public abstract class View implements SwingConstants
{
public static final int BadBreakWeight = 0;
public static final int ExcellentBreakWeight = 2000;
public static final int ForcedBreakWeight = 3000;
public static final int GoodBreakWeight = 1000;
public static final int X_AXIS = 0;
public static final int Y_AXIS = 1;
private float width, height;
private Element elt;
private View parent;
public View(Element elem)
{
elt = elem;
}
public abstract void paint(Graphics g, Shape s);
public void setParent(View parent)
{
this.parent = parent;
}
public View getParent()
{
return parent;
}
public Container getContainer()
{
View parent = getParent();
return parent != null ? parent.getContainer() : null;
}
public Document getDocument()
{
return getElement().getDocument();
}
public Element getElement()
{
return elt;
}
public abstract float getPreferredSpan(int axis);
public int getResizeWeight(int axis)
{
return 0;
}
public float getMaximumSpan(int axis)
{
if (getResizeWeight(axis) <= 0)
return getPreferredSpan(axis);
return Integer.MAX_VALUE;
}
public float getMinimumSpan(int axis)
{
if (getResizeWeight(axis) <= 0)
return getPreferredSpan(axis);
return Integer.MAX_VALUE;
}
public void setSize(float width, float height)
{
}
public float getAlignment(int axis)
{
return 0.5f;
}
public AttributeSet getAttributes()
{
return getElement().getAttributes();
}
public boolean isVisible()
{
return true;
}
public int getViewCount()
{
return 0;
}
public View getView(int index)
{
return null;
}
public ViewFactory getViewFactory()
{
View parent = getParent();
return parent != null ? parent.getViewFactory() : null;
}
public void replace(int offset, int length, View[] views)
{
}
public void insert(int offset, View view)
{
View[] array = { view };
replace(offset, 1, array);
}
public void append(View view)
{
View[] array = { view };
replace(getViewCount(), 1, array);
}
public void removeAll()
{
replace(0, getViewCount(), null);
}
public void remove(int index)
{
replace(index, 1, null);
}
public View createFragment(int p0, int p1)
{
return this;
}
public int getStartOffset()
{
return getElement().getStartOffset();
}
public int getEndOffset()
{
return getElement().getEndOffset();
}
public Shape getChildAllocation(int index, Shape a)
{
return null;
}
public int getViewIndex(float x, float y, Shape allocation)
{
return -1;
}
public String getToolTipText(float x, float y, Shape allocation)
{
int index = getViewIndex(x, y, allocation);
if (index < -1)
return null;
Shape childAllocation = getChildAllocation(index, allocation);
if (childAllocation.getBounds().contains(x, y))
return getView(index).getToolTipText(x, y, childAllocation);
return null;
}
public Graphics getGraphics()
{
return getContainer().getGraphics();
}
public void preferenceChanged(View child, boolean width, boolean height)
{
if (parent != null)
parent.preferenceChanged(this, width, height);
}
public int getBreakWeight(int axis, float pos, float len)
{
return BadBreakWeight;
}
public View breakView(int axis, int offset, float pos, float len)
{
return this;
}
public int getViewIndex(int pos, Position.Bias b)
{
return -1;
}
}