Hi all-
I have list-item-label and list-item-body kept
together on the same page. I will need a lesson in
the etiquette of presenting the changes. Should I
send the full class files to this list? Attempt to
diff the class files? A little advice woudl be good.
As for what I did:
FONode.java
1) Added a protected Vector allAreas = new Vector()
2) Filled in removeAreas() with
public void removeAreas() {
// still to do
Area parentArea;
int numAreas = this.allAreas.size();
for(int i=0; i < numAreas; i++) {
parentArea =
((Area)allAreas.elementAt(i)).getParent();
parentArea.removeChild
((Area)allAreas.elementAt(i));
}
int numChildren = this.children.size();
for(int i = 0; i < numChildren; i++) {
FONode fo = (FONode) children.elementAt(i);
fo.removeAreas();
}
this.marker = 0;
}
Problem: How to set marker so that if layout is called
again area will be recreated, but IDs will not. Or,
how to remove IDs related to above areas as well. 0
seems to work right now, but maybe markers needed to
be enumerated?
Changes to Block.java:
1) In layout() after this.blockArea is created added:
allAreas.add(this.blockArea);
Changes to ListItemLabel.java:
1) In layout():
if(this.marker == START) {
String id = this.properties.get("id").getString();
area.getIDReferences().initializeID(id,area);
this.marker = 0;
}
Simply to prevent a error due to the same ID being
initialized again.
Changes to ListItemBody.java:
None. It returns Status.AREA_FULL_NONE when the first
item overflows the page.
Changes to ListItem.java:
1)Changed the following from:
if (this.marker == 0) {
// configure id
area.getIDReferences().configureID(id, area);
status = label.layout(blockArea);
if (status.isIncomplete()) {
return status;
}
}
To:
// configure id
if(this.marker == 0){
area.getIDReferences().configureID(id,area);
}
status = label.layout(blockArea);
if (status.isIncomplete()) {
return status;
}
Again prevents errors due to bad ID. I tried leaving
this if alone mostly, and just setting the marker to
2. And only configuring the ID when the marker = 0,
and the rest if the marker equaled 0 or 2, but kept
getting a 2 >= 2 error during the rendering areas
step, and couldn't figure out what was generating the
error.
2) Inserted:
if(status.laidOutNone()) {
label.removeAreas();
this.marker = 1;
return status;
}
after:
status = body.layout(blockArea);
if (status.isIncomplete()) {
So, if it nothing is laid out in the body, I remove
all the areas created by label set the marker equal to
1 so it doesn't redo IDs. And return AREA_FULL_NONE.
Comments?
Don
__________________________________________________
Do You Yahoo!?
Make international calls for as low as $.04/minute with Yahoo! Messenger
http://phonecard.yahoo.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]