Bah!

I’ve been relying on replaceChildren(), findChild(), etc.for TableCellElements.

None of that will work if I change TableElement to a leaf…

I could really use multiple inheritance.

Why was TLF designed that elements are either leaf elements of group elements? 
Couldn’t elements conceivably be both / either?

On Jun 9, 2014, at 10:18 PM, Harbs <harbs.li...@gmail.com> wrote:

> OK.
> 
> I’ll see how it goes...
> 
> On Jun 9, 2014, at 9:31 PM, Alex Harui <aha...@adobe.com> wrote:
> 
>> OK, I guess TLF doesn't really have block elements.  I was just wondering
>> if there would be some problem further down the line.  Folks seem to want
>> to have TLF elements work like HTML elements.
>> 
>> I was pondering if you next had to support DIV and if block elements
>> should first be introduced to TLF.  So those are some concerns that popped
>> into my head, but no real objections at this point.
>> 
>> Good luck,
>> -Alex
>> 
>> On 6/9/14 11:21 AM, "Harbs" <harbs.li...@gmail.com> wrote:
>> 
>>> That’s pretty close to what I already did. Table composition is all
>>> working very well as each table cell acting as a separate TextFlow and
>>> container. Except extending InlineGraphicElement does not make sense.
>>> There’s a lot of code in there dealing with loading assets which is not
>>> applicable to tables.
>>> 
>>> I’d just subclass FlowLeafElement (which is what InlineGraphicElement
>>> does) instead of subclassing FlowGroupElement as tables currently do.
>>> 
>>> If I had to pick between block or inline for tables, I think I’d pick
>>> inline…
>>> 
>>> On Jun 9, 2014, at 9:05 PM, Alex Harui <aha...@adobe.com> wrote:
>>> 
>>>> I'm not an HTML expert, but they seem to divide up their elements
>>>> between
>>>> those that default to "inline" and those that default to "block".  I
>>>> think
>>>> in TLF, SpanElement and InlineGraphicElement are inline and
>>>> ParagraphElement is "block".  I haven't really thought through this, but
>>>> one possible strategy to make Table extend InlineGraphicElement to
>>>> reserve
>>>> space and then then make each cell its own TLF container in that space?
>>>> Is that sort of what you are trying to do?
>>>> 
>>>> -Alex
>>>> 
>>>> On 6/9/14 10:28 AM, "Harbs" <harbs.li...@gmail.com> wrote:
>>>> 
>>>>> I have not yet implemented arrow navigation (beyond what was there
>>>>> originally), but here’s my plan:
>>>>> 
>>>>> * When text outside the table is selected, arrow navigation would treat
>>>>> the entire table like a single atom (i.e. if the cursor is right
>>>>> before,
>>>>> a right arrow will move the cursor beyond the table).
>>>>> * If text inside a cell is selected, arrow navigation will work within
>>>>> the cell confines (as a separate TextFlow)
>>>>> * If a cell is selected, arrow navigation will select the next previous
>>>>> cell in the row/column.
>>>>> 
>>>>> #1 and #2 should be working now out of the box. #3 will take a bit of
>>>>> work getting it to work.
>>>>> 
>>>>> In HTML, tables are general layout elements similar to divs. I’m
>>>>> treating
>>>>> tables much differently. (Each cell is a separate TextFlow.) Trying to
>>>>> handle tables purely inline had too many challenges for me to
>>>>> stomach...
>>>>> Just looking at the spaghetti that was composition and selections made
>>>>> me
>>>>> dizzy...
>>>>> 
>>>>> Treating tables as block elements, requires handling the table content
>>>>> as
>>>>> leaf elements. This make composition and selections (especially things
>>>>> like column selections) very challenging.
>>>>> 
>>>>> On Jun 9, 2014, at 7:20 PM, Alex Harui <aha...@adobe.com> wrote:
>>>>> 
>>>>>> What is the leftArrow/rightArrow navigation model when Tables are
>>>>>> involved?
>>>>>> 
>>>>>> Also, in HTML, isn't a Table a block-level element?  Are there other
>>>>>> reasons for making it a leaf?  Shouldn't Table be more like
>>>>>> ParagraphElement?
>>>>>> 
>>>>>> -Alex
>>>>>> 
>>>>>> On 6/8/14 10:48 PM, "Harbs" <harbs.li...@gmail.com> wrote:
>>>>>> 
>>>>>>> My real concern is the fact that findLeaf() is used in so many
>>>>>>> places.
>>>>>>> It
>>>>>>> makes the assumption that you can find a leaf by index anywhere in a
>>>>>>> text
>>>>>>> flow. That assumption falls apart with tables. I make a clear
>>>>>>> separation
>>>>>>> between tables and their contents. As far as the text flow is
>>>>>>> concerned,
>>>>>>> the table has a single index (and can only be selected as a whole
>>>>>>> when
>>>>>>> selected with surrounding text).
>>>>>>> 
>>>>>>> So, unless I go through every place findLeaf() is used in TLF and
>>>>>>> make
>>>>>>> special cases for tables, the only way I can see of handling it is by
>>>>>>> making a table a leaf. Even if I fix all the findLeaf() calls in the
>>>>>>> framework, I’d still be causing client code to fall apart when it
>>>>>>> comes
>>>>>>> to tables.
>>>>>>> 
>>>>>>> Although tables have cell children, they are not index tracked within
>>>>>>> the
>>>>>>> text flow as other children are. I could override the text property
>>>>>>> to
>>>>>>> return all text contents of all cells in the table. That actually
>>>>>>> makes
>>>>>>> kind of sense.
>>>>>>> 
>>>>>>> On Jun 9, 2014, at 6:59 AM, Alex Harui <aha...@adobe.com> wrote:
>>>>>>> 
>>>>>>>> Hmm.  The doc says that FlowLeafElement doesn't have any children.
>>>>>>>> But
>>>>>>>> Tables can certainly contain other tables, right?  And aren't the
>>>>>>>> headers/rows/cells considered children?
>>>>>>>> 
>>>>>>>> FlowLeafElement also has a text property.  Are you going to be
>>>>>>>> overriding
>>>>>>>> that?
>>>>>>>> 
>>>>>>>> Is it just too hard to make a TableElement extend FlowElement and in
>>>>>>>> other
>>>>>>>> ways be treated as an InlineGraphicElement?
>>>>>>>> 
>>>>>>>> -Alex
>>>>>>>> 
>>>>>>>> On 6/8/14 12:46 PM, "Harbs" <harbs.li...@gmail.com> wrote:
>>>>>>>> 
>>>>>>>>> Please see this issue. I¹m sure there are plenty of related bugs.
>>>>>>>>> 
>>>>>>>>> https://github.com/Harbs/TLF-Table-Work/issues/28
>>>>>>>>> 
>>>>>>>>> I¹m thinking of changing the base-class of TableElement to change
>>>>>>>>> it
>>>>>>>>> to a
>>>>>>>>> leaf element rather than a group element. I don¹t see any reason
>>>>>>>>> off-hand
>>>>>>>>> not to do that, but I very likely might be missing something.
>>>>>>>>> 
>>>>>>>>> Reason why I think it makes sense:
>>>>>>>>> 
>>>>>>>>> Basically, I¹m treating a table as an inline object. The contents
>>>>>>>>> of
>>>>>>>>> a
>>>>>>>>> table are laid out in a grid, but largely independent from the main
>>>>>>>>> text
>>>>>>>>> composition. It¹s really not much more than a really fancy inline
>>>>>>>>> object
>>>>>>>>> (or one that can span across multiple containers).
>>>>>>>>> 
>>>>>>>>> If anyone can think of a good reason why it¹s a bad idea, I¹d
>>>>>>>>> really
>>>>>>>>> like
>>>>>>>>> to hearŠ
>>>>>>>>> 
>>>>>>>>> Harbs
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to