Change 20100709-maxcarlson-M by maxcarl...@friendly on 2010-07-09 10:25:23 PDT
    in /Users/maxcarlson/openlaszlo/trunk-clean
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: UPDATED: Move selection managers and command to lzx includes

Bugs Fixed: LPP-9180 - Move non-essential parts of the LFC to LZX includes 
(partial)

Release Notes: command, selectionmanager and dataselectionmanager have been 
moved out of the LFC and into LZX auto includes, found at 
lps/components/utils/.  Any other components that use the autoinclude mechanism 
will need to be updated to manually include dataselectionmanager.lzx, 
selectionmanager.lzx and/or command.lzx

Technical Reviewer: ptw
QA Reviewer: hminsky

Details: Updated to address Andre's comments:

- Some additional release notes are required. For example where to find the 
selection managers, in which cases explicit includes are now necessary, etc.

Done. 

- dataselectionmanager uses lfc-internal methods (e.g. datapath#setSelected, 
DataElement#sel), so special care needs to be taken to document that now 
non-lfc classes use these fields/methods

I added notes to the relevant fields to LzDataNode and LzDatapath and marked 
them public.

- Why is as3 excluded here?
> +<script>
> +if ($as3) {
> +} else {
> +    var LzSelectionManager = lz.selectionmanager;  // publish for 
> compatibility
> +}
> +</script>

I removed those.

- "lastRangeStart" not "lastRangeStar"
> + <!---
> +        @access private
> +      -->
> + <attribute name="lastRangeStar"/>

Fixed.

- Why did you remove the "@type *" doc-comment?
> + <!---
> +        @access private
> +      -->
> + <attribute name="lastRangeStar"/>

Fixed.

- Why did you remove the return types for all methods? For example:
> + <method name="__LZaddToSelection" args="d:*, o:LzView">
instead of
<method name="__LZaddToSelection" args="d:*, o:LzView" returns="void">

Fixed.

- I'm not sure that this ("o /*:LzView*/") works for lzx2js2doc.xsl (see 
"processargs" template), have you tested this, that means did you rebuild the 
reference guide?
> + <method name="isSelected" args="o /*:LzView*/">

It _should_ work, but if this breaks the reference guide I'll address it.

- I'd prefer to keep the CDATA start at the end of the line:
> + <method name="__LZaddToSelection" args="d:*, o:LzView">
> + <![CDATA[
> +        ]]>
> + </method>


like:
<method name="..." args="..."><![CDATA[
  ...
]]></method>

Unfortunately we don't seem to have a consistent code style for CDATA blocks, 
both types (CDATA directly following the <method> element,  and CDATA on the 
next line) are used in the components directory at the same frequency.

Done.

- This is a clear public API change, also see the related JIRA bugs: LPP-4982, 
LPP-7814
> -var keys = null;
> [...]
> +<attribute name="key" value="null"/>;

- Both methods are now broken, but see above about the key/keys issue:
> +<method name="destroy">
>      var oldKeys = this.keys;

> +<method name="keysToString">
> + <![CDATA[
>    var s= "";
>    var keys = this.keys;

I fixed this to work the way it did before, which is confusing.

- Why does the dhtml kernel uses a plain object to store font information, 
whereas the swf runtimes use the LzFont class?

LzFont has a bunch of extra stuff that used to be initialized by the server for 
compiled fonts.  That wasn't relevant for DHTML.

- If you want to restructure / re-modularize the lfc,  you should also consider 
to rename or move other files. For example the "controllers" and "helpers" 
directories should be renamed, or the files moved to other directories. 
"controllers" will now only contain the animator classes lz.animator and 
lz.animatorgroup, so maybe "animators" is a better name. The same goes for 
"helpers", the directory will now only contain the lz.state, maybe the file 
could be moved into a different directory. For bonus points, you could also 
move LzUrl.lzs and LzContextMenu.lzs out of the "services" directory, because 
both files don't actually contain any service classes at all. Do you have any 
bigger plans how to change the lfc at this point or did you just thought: 
"Well, the selection-managers and layout classes don't seem to be necessary for 
the lfc, so let's move them out?" I'd be interested to hear your ideas! 

More the latter.  I want to trim down the LFC as much as possible.  I'm 
planning to move a bunch of the compatibility adapters (deprecated methods) in 
LzView to a separate mixin as well - so folks can get the compatibility shims 
if they want it on a class-by-class basis.

I'll address the changes to services, and rename controllers and helpers, etc. 
in a subsequent change.

Let me know your thoughts about how we could best slim down the LFC and make it 
work better in resource-constrained environments like mobile!

Otherwise:

lfc-undeclared - Remove explicit definitions for command, selectionmanager and 
dataselectionmanager

kernel/LzFont,Library - Move to kernel, and only include for swf - DHTML 
doesn't use this

LaszloView - Fix doc comment

LzCommand,LzSelectionManager,LzDataSelectionManager - Move to 
lps/components/utils/, rewrite to use LZX syntax

data/LzDataNode,LzDatapath - Explicitly make setSelected() and sel attributes 
public now that they're used in LZX.

lzx-autoincludes - Add command, selectionmanager and dataselectionmanager 
entries

debugger.lzx - Explicitly include command.lzx

datalistselector - Explicitly include dataselectionmanager

listselector - Explicitly include selectionmanager

Tests: Component sampler and debugger run as before.

Files:
M       WEB-INF/lps/schema/lfc-undeclared.lzx
A  +    WEB-INF/lps/lfc/kernel/LzFont.lzs
M       WEB-INF/lps/lfc/kernel/Library.lzs
M       WEB-INF/lps/lfc/views/LaszloView.lzs
D       WEB-INF/lps/lfc/helpers/LzFont.lzs
D       WEB-INF/lps/lfc/helpers/LzDataSelectionManager.lzs
M       WEB-INF/lps/lfc/helpers/Library.lzs
D       WEB-INF/lps/lfc/helpers/LzCommand.lzs
D       WEB-INF/lps/lfc/helpers/LzSelectionManager.lzs
M       WEB-INF/lps/lfc/data/LzDataNode.lzs
M       WEB-INF/lps/lfc/data/LzDatapath.lzs
M       WEB-INF/lps/misc/lzx-autoincludes.properties
M       lps/components/debugger/debugger.lzx
A  +    lps/components/utils/dataselectionmanager.lzx
A  +    lps/components/utils/command.lzx
A  +    lps/components/utils/selectionmanager.lzx
M       lps/components/base/datalistselector.lzx
M       lps/components/base/listselector.lzx

Changeset: 
http://svn.openlaszlo.org/openlaszlo/patches/20100709-maxcarlson-M.tar

Reply via email to