Technical notes (for developers)
Edito2 - big volumes management (fc-29.5.2013, under progress)
A copy of Simeo-Edito, aims at organizing better the files management: as least copies as possible, if a plant is added 2 times in the scene, only one file is copied in the working dir and the 2 mockups have the same file.
A Proxy can be asked to get the archiTree of a mockup, it will look in maps. It may also cache the archiTrees to answer faster.
When a mockup is changed, be careful to change a copy of its archiTree (to avoid changing several trees). Write through the proxy: it will write a real file for this mockup and memo it if is different (e.g. in filePath_1). This new backup file will be returned by the proxy for the mockup.
In Mockup: getFileKey ()
// Check the primary key String key = mockup.getR_FilePath_1 (); // If primary the key is null, get the secondary key if (key == null) { // a_filePath_0 is the secondary key key = mockup.getA_FilePath_0 (); // never null }
In proxy:
// Get the backup file String backupFile = mockupFile_backupFile.get (key);
The proxy may take care of the bboxes, the outlines (see the May 2013 work on outlines in Edito).
Ideas:
FileProxy: add (Mockup), instead of copyFile (…), getFile (Mockup) returns the backup file
ArchiTreeCache: getArchiTree (Mockup), relies on FileProxy and a Map of SoftReferences
OutlineCache: getOutline (Mockup), relies on ArchiTreeCache
BboxCache: getBbox (Mockup), relies on ArchiTreeCache
OR MockupCache: getArchiTree (Mockup), getOutline (Mockup), getBbox (Mockup)
See the writing system quickly
a mockup has been changed (twisted, pruned, irradiated…)
→ The change must be done in a copy of the ArchiTree: manage properly
→ The change must be written through the FileProxy: a new file must be created and the FileKey must be changed. FileProxy.write (Mockup) ?
Xplo JTreeTable
- JTreeTable implements LisenedTo
- Fine tuning of the selection event thrown by the JTreeTable
- one single event sent to the Listeners (ArchiTreeTableView) with deselection, selection
Simeo: moving items
- Polylines / polygons (LineItem subclasses): bounding box can not go outside the terrain during the moves.
- Other items: the anchor point can not go outside the terrain during the moves
JeebSceneInterface
- All Gscene subclasses in Simeo AND Xplo modules must implement JeebSceneInterface. JeebSceneInterface = GScene + isEditable ().
- JeebScene is a particular case, often used but not always: Lollymangrove scene is a JeebSceneInterface but not a JeebScene (it extends a capsis.defaulttype.TreeList)
Editable steps
in Xplo and Simeo, steps are editable if they are intervention results (with a '*') and isLeaf (). Special case: in PlantEditor and Edito, all steps are editable.
→ To edit a non-editable step, make a copy with the 'duplicate step' command.