[Jeremias Maerki on ]
Yeah: Wow! Finn, you're the specialist here. Can you take the lead on
I'm hardly a specialist on the layout system, and that is where a good
sized part of Manuels patch is, but in the property system I do not like
the hack to LineHeightPropertyMaker and FontSizePropertyMaker that test
for a PercentLength since it will not work for expressions. I assume
that a FixedLength is returned because somebody
(BlockLM.createLineManager?) tries to resolve line-height before a
context is available. The solution is to delay resolution of
line-height, by passing the Length into the LineLM.
Eventually the no-args getValue() and getNumericValue() should be
removed. And a throws PropertyException added to the Length.getValue()
signature. But that is for later.
In the layout system, I find to strange to see calls to the initialize()
method from addAreas() and getParentArea(). I would rather see a public
initialize() method that was called once from the outside, perhaps from
AbstractLayoutManager.getChildLM() before a LM is traversed by
getNextKnuthElements. But not all agree:
Other than that, the patch looks ok.
There is one thing I would have made differently: Instead of setting an
PercentBase.XXX integer on the PropertyMakers I would set an instance of
an implementation of PercentBase that implemented the rule by that
property. So there would be a subclass of PercentBase for each of the
rules you have identified in the PropertyHandling/Percentages wiki. That
way the code for dealing with percentage rules can be placed in the
property package instead of the LM package. The LM package only supplied
the context that the rules can work on. But since I haven't written that
code, I don't get to decide.