L'atelier et les docks
L'atelier (shell-dock.js) gère trois docks à onglets, avec redimensionnement, glisser-déposer entre zones et persistance. Il s'installe au DOM prêt et pose alors la clé shell.ready, puis expose K.shell.
Zones
| Zone | Clé | Taille par défaut | Usage typique |
|---|---|---|---|
| Dock gauche | left | 280 px | Navigation : fichiers, explorateur de base |
| Dock droit | right | 340 px | Contexte : historique, assistant, tableau de bord |
| Dock bas | bottom | 260 px | Sortie : journal, problèmes, consoles |
Enregistrer un panneau
| Champ | Requis | Description |
|---|---|---|
| id | Oui | Lève si absent. Le shell crée d'office la commande <id>.toggle, catégorie panneau. |
| dock | Oui | Lève si la zone est inconnue. C'est la zone par défaut : l'utilisateur peut déplacer le panneau ailleurs. |
| title | Oui | Libellés FR et EN, repris dans l'onglet et dans la commande de bascule. |
| factory | Oui | Appelée à la première ouverture. Une exception affiche Panneau indisponible sans casser le dock. |
| source | Non | core par défaut. |
| icon | Non | SVG inline, en currentColor pour suivre les jetons du thème actif. |
Le contexte de fabrique
| Membre | Description |
|---|---|
| ctx.panelId | Identifiant du panneau. |
| ctx.root | Élément DOM racine, déjà inséré dans le corps du dock. |
| ctx.state | L'état persisté, ou null. Propriété, pas fonction. |
| ctx.saveState(o) | Persiste un objet sérialisable. Écriture différée. |
| ctx.close() | Referme le panneau depuis l'intérieur. |
La fabrique retourne un contrôleur, dont le dispose() est appelé à la fermeture, au déplacement et à chaque navigation.
Persistance et cycle de vie
La disposition est stockée sous isofind_shell_v1 et n'est pas propre à une page : un panneau ouvert dans le tableau de bord reste ouvert après navigation vers Échantillons, mais il est détruit puis reconstruit. L'illusion de permanence tient entièrement à ctx.saveState().
Déplacer un panneau
Un onglet se glisse d'un dock à l'autre. Les docks fermés s'ouvrent pendant le glissement, et le panneau est détruit puis reconstruit à l'arrivée : son instance vit dans le corps de son dock, et la rattacher ailleurs sans la reconstruire laisserait un panneau dont le contexte de rendu ne correspond plus à son parent.
Un panneau ramené à sa zone d'origine ne laisse aucune entrée dans l'état : sinon une disposition mémorisée grossirait indéfiniment de choix qui n'en sont plus.
Instantané et restauration
restore() détruit tous les panneaux vivants avant de réécrire l'état, et non après : ils sont enfants du dock où ils se trouvent aujourd'hui, et le rendu suivant les chercherait là où la disposition les place, sans jamais les retirer de leur ancien parent.
Réinitialiser
K.shell.reset(), ou Affichage › Réinitialiser la disposition, rend à chaque panneau la zone déclarée par son auteur et referme tout. C'est le recours quand une disposition devient inutilisable : un panneau déplacé dans un dock qu'on referme ensuite est introuvable autrement que par la palette.
Les quatre hôtes d'un panneau
Depuis la V2.0, le dock n'est plus le seul endroit où un panneau peut vivre. Le même panneau, avec le même contrat de fabrique, s'affiche indifféremment dans un dock, dans un onglet de la zone centrale, dans une fenêtre flottante posée au-dessus de l'application, ou dans une fenêtre système séparée.
| Hôte | Fichier | Ce qu'il apporte |
|---|---|---|
| Dock | shell-dock.js | Les trois zones décrites plus haut, à onglets et redimensionnables. |
| Zone centrale | zone-centrale.js | Un onglet, scindable et épinglable, pour les panneaux qui ont besoin de largeur. |
| Fenêtre flottante | shell-flottant.js | Une fenêtre déplaçable et redimensionnable, dans le cadre de l'application. |
| Fenêtre détachée | shell-detach.js | Une fenêtre système, pour un second écran. |
K.shell.placer sert d'arbitre unique : il ferme le panneau là où il se trouve avant de l'ouvrir ailleurs, de sorte qu'il n'existe jamais deux instances vivantes du même panneau. Le détail des surfaces, des gestes de dépôt et du drapeau detachable est en page Surfaces et fenêtres.