Methods Summary |
---|
public javax.swing.text.View | breakView(int axis, int offset, float pos, float len)
return null;
|
public void | changedUpdate(javax.swing.event.DocumentEvent changes, java.awt.Shape a, javax.swing.text.ViewFactory f)
super.changedUpdate(changes, a, f);
int pos = changes.getOffset();
if (pos <= getStartOffset() && (pos + changes.getLength()) >=
getEndOffset()) {
setPropertiesFromAttributes();
}
|
public javax.swing.text.AttributeSet | getAttributes()Fetches the attributes to use when rendering. This is
implemented to multiplex the attributes specified in the
model with a StyleSheet.
return attr;
|
public int | getBreakWeight(int axis, float pos, float len)Determines how attractive a break opportunity in
this view is. This is implemented to request a forced break.
if (axis == X_AXIS) {
return ForcedBreakWeight;
}
return BadBreakWeight;
|
private float | getLength(javax.swing.text.html.CSS$Attribute key, javax.swing.text.AttributeSet a)
CSS.LengthValue lv = (CSS.LengthValue) a.getAttribute(key);
float len = (lv != null) ? lv.getValue() : 0;
return len;
|
public float | getPreferredSpan(int axis)Calculates the desired shape of the rule... this is
basically the preferred size of the border.
switch (axis) {
case View.X_AXIS:
return 1;
case View.Y_AXIS:
if (size > 0) {
return size + SPACE_ABOVE + SPACE_BELOW + topMargin +
bottomMargin;
} else {
if (noshade != null) {
return 2 + SPACE_ABOVE + SPACE_BELOW + topMargin +
bottomMargin;
} else {
return SPACE_ABOVE + SPACE_BELOW + topMargin +bottomMargin;
}
}
default:
throw new IllegalArgumentException("Invalid axis: " + axis);
}
|
public int | getResizeWeight(int axis)Gets the resize weight for the axis.
The rule is: rigid vertically and flexible horizontally.
if (axis == View.X_AXIS) {
return 1;
} else if (axis == View.Y_AXIS) {
return 0;
} else {
return 0;
}
|
public java.awt.Shape | modelToView(int pos, java.awt.Shape a, javax.swing.text.Position$Bias b)Provides a mapping from the document model coordinate space
to the coordinate space of the view mapped to it.
int p0 = getStartOffset();
int p1 = getEndOffset();
if ((pos >= p0) && (pos <= p1)) {
Rectangle r = a.getBounds();
if (pos == p1) {
r.x += r.width;
}
r.width = 0;
return r;
}
return null;
|
public void | paint(java.awt.Graphics g, java.awt.Shape a)Paints the view.
Rectangle alloc = (a instanceof Rectangle) ? (Rectangle)a :
a.getBounds();
int x = 0;
int y = alloc.y + SPACE_ABOVE + (int)topMargin;
int width = alloc.width - (int)(leftMargin + rightMargin);
if (widthValue != null) {
width = (int)widthValue.getValue((float)width);
}
int height = alloc.height - (SPACE_ABOVE + SPACE_BELOW +
(int)topMargin + (int)bottomMargin);
if (size > 0)
height = size;
// Align the rule horizontally.
switch (alignment) {
case StyleConstants.ALIGN_CENTER:
x = alloc.x + (alloc.width / 2) - (width / 2);
break;
case StyleConstants.ALIGN_RIGHT:
x = alloc.x + alloc.width - width - (int)rightMargin;
break;
case StyleConstants.ALIGN_LEFT:
default:
x = alloc.x + (int)leftMargin;
break;
}
// Paint either a shaded rule or a solid line.
if (noshade != null) {
g.setColor(Color.black);
g.fillRect(x, y, width, height);
}
else {
Color bg = getContainer().getBackground();
Color bottom, top;
if (bg == null || bg.equals(Color.white)) {
top = Color.darkGray;
bottom = Color.lightGray;
}
else {
top = Color.darkGray;
bottom = Color.white;
}
g.setColor(bottom);
g.drawLine(x + width - 1, y, x + width - 1, y + height - 1);
g.drawLine(x, y + height - 1, x + width - 1, y + height - 1);
g.setColor(top);
g.drawLine(x, y, x + width - 1, y);
g.drawLine(x, y, x, y + height - 1);
}
|
protected void | setPropertiesFromAttributes()Update any cached values that come from attributes.
StyleSheet sheet = ((HTMLDocument)getDocument()).getStyleSheet();
AttributeSet eAttr = getElement().getAttributes();
attr = sheet.getViewAttributes(this);
alignment = StyleConstants.ALIGN_CENTER;
size = 0;
noshade = null;
widthValue = null;
if (attr != null) {
// getAlignment() returns ALIGN_LEFT by default, and HR should
// use ALIGN_CENTER by default, so we check if the alignment
// attribute is actually defined
if (attr.getAttribute(StyleConstants.Alignment) != null) {
alignment = StyleConstants.getAlignment(attr);
}
noshade = (String)eAttr.getAttribute(HTML.Attribute.NOSHADE);
Object value = eAttr.getAttribute(HTML.Attribute.SIZE);
if (value != null && (value instanceof String))
size = Integer.parseInt((String)value);
value = attr.getAttribute(CSS.Attribute.WIDTH);
if (value != null && (value instanceof CSS.LengthValue)) {
widthValue = (CSS.LengthValue)value;
}
topMargin = getLength(CSS.Attribute.MARGIN_TOP, attr);
bottomMargin = getLength(CSS.Attribute.MARGIN_BOTTOM, attr);
leftMargin = getLength(CSS.Attribute.MARGIN_LEFT, attr);
rightMargin = getLength(CSS.Attribute.MARGIN_RIGHT, attr);
}
else {
topMargin = bottomMargin = leftMargin = rightMargin = 0;
}
size = Math.max(2, size);
|
public int | viewToModel(float x, float y, java.awt.Shape a, javax.swing.text.Position$Bias[] bias)Provides a mapping from the view coordinate space to the logical
coordinate space of the model.
Rectangle alloc = (Rectangle) a;
if (x < alloc.x + (alloc.width / 2)) {
bias[0] = Position.Bias.Forward;
return getStartOffset();
}
bias[0] = Position.Bias.Backward;
return getEndOffset();
|