Work out having key state while mousing differentiate moving or copying on drop,
with related appearance differences while dragging.
Try making drag-across stateful based on DomEl types dragged across.
Add tests for each of the drop methods and related methods, including these and others,
and covering all of the different drop-vs-existing cases I can think of:
Possibly extend _addToParent() and maybe _addToDomParent() to place between
existing children, ideally with a shared dependency method.
Implement enough of the `over` dnd event listener/s to make sure of the identity of `this` there.
Finish trying out the dnd event listeners on the temporary HTML page,
fixing anything else as I go.
If `this` works in event listeners, try out the `self`-and-lambda syntax
as an alternative, if only to satisfy myself about it.
Remove any remaining cruft statements in alt.html, and possibly in the other alt HTML pages too.
Maybe simplify class CSS so the classes from the DomEL subclasses
match exactly to the region types.
Finish testing all of the direct drag-and-drop code in whatever its post-experiments form is.
Implement canDropOnOnto() for some key DomEl subclasses and make sure
that class-based dnd is working right for all of them.
Test all kinds of dnd circumstances, including dragging something onto itself.
Maybe drop all unwiring at some point.
Drop all of Locator if it looks like I won't need it anywhere.
Maybe make all DomEls store themselves again after a reindexing, maybe recursively.
Iron out all naming / naming differences between new system
and Dom and maybe other JS / HTML / CSS.
Remove any obsolete local DomEl-list code from the current classes.
Ensure that each DomEl subclass defines its .stencil and .class.
Think over switching to a DOM-derived Composite again, to see if it would be better.
Maybe gradually switch intended-to-be-private methods to _camelCase() naming style.
When things are all tested, go back and ensure that all passed methods are tagged as passed.
Ideate a method / process for initial construction of the two Composites,
and their cross-links between GroupEl and GroupBlurbsListEl via GroupBlurbsEl.
Track down stray points like missing values, unfinished code, and temporary code.
Change the code at each stray point, and/or list it for later, then change it later.
Tie up any loose ends for indexing and unique-ID setting.
Maybe add addChildren(), removeChildren(), and subtractChildren() to DomEl
to support several-item dnd, and to help avoid reverse-order adding.
Switch the new code to use the new storage system, with one value containing a
list of all the groups, and all other values containing one group's blurbs each.
Start TDD-reimplementing the other features that were implemented in my first
pass at it before, then the other features I hadn't gotten to yet.
The blurbs and their groups / sets are displayed with two Composites, one on the left, one on the right.
The leaves for blurb groups / sets on the left host buttons that cause forks for groups of blurbs to be
added to the Composite on the right, where they in turn display their blurbs.
The current old and newer systems are replaced with this Composite system.
In general, id's, sites, and indices (for ordering onscreen) are
passed downward during construction and retained during display.
I have removed the classes that were listed here, since I have moved them into JS itself.
- Maybe expanding key handling on drag-and-drop so that merging blurbs is possible.
- Maybe expanding drag-and-drop options to allow more clever options,
for instance adding a new blurb-set without a set name yet,
but with a first blurb, when a blurb is dragged into the blurb-sets.
- Some kind of save-this-now key combo, for both blurbs and blurb sets, but not just the enter key.
- Adding some flyout, float-over colored-squares menu for the levels / colors on the right side.
- Maybe some way to make the name itself clickable for copying, until an editing button is clicked.
Finishing things in "future" comments that still make sense,
and any related changes I come up with at the same time.
- Work out making the titles in blurb sets and the texts in blurbs change permanently whenever edited.
- Making sure that items don't temporarily appear to be deleted when dragged onto themselves.
- Putting new classes and inter-class interactions under test.
- Switching IndexController to using the new classes.
- Switching the import in index.html to the new IndexController.js when the new JS is tested and working.
- Seeing where I can put Blurb's fromJson() into things so there's a
consistent handling of missing properties.
- When all of the switch-over is done, dropping classes I'm no longer using,
and idea texts on this page.
- Factoring some of the DOM traversal stuff, probably to Dom, under test.
- Tossing the old IndexController.js once the blurbs on the new IndexController.js
are working right, at the least.
- Some kind of clicking adds clipboard name to the default new blurb and adds the blurb.
- Some kind of clicking adds clipboard name to a new blurb, if possible, maybe wherever clicked.
- Maybe trying out the HTML5 <menu> tag for context menus.
- Clicking the → on an existing group opens a pane for it on the right.
- Clicking the → on an existing group also swaps to a ← button to collapse its pane.
- Clicking the ← button collapses the pane and swaps back to →.
- Clicking the + on a new group saves and displays it, and opens a pane for it on the right.
- Some kind of clicking or choosing allows combining blurbs into one blurb.
- Some kind of option allows splitting a blurb into several blurbs.
- Maybe some kind of option to duplicate a blurb.
- Some kind of option to copy a blurb set.
- Each blurb group on the right can be collapsed from a button,
also changing the → and ← buttons for its set.
- Working out and coding a choice for cross-type drag-and-drop,
whether preventing it or making it useful.
- A way to collapse the blurb-set pane and/or widen / expand the blurb pane.
- Ideally, some undo capacity, probably with a Memento pattern
with the last change preserved as indices, name, etc.
Maybe some workaround for browsers that don't like clipboard use,
and/or onscreen messaging about enabling it.