Jf-Layout

Un article de Wikipédia, l'encyclopédie libre.


Le Jf-Layout est une forme de mise en page, classiquement connu des programmeurs d'interface homme-machine. Il s'agit d'un ensemble de contraintes concernant la disposition des éléments contenus dans une page web ou dans une fenêtre d'un logiciel, ainsi que la description de leur comportement lorsque l'élément de base est subi à des modifications concernant sa taille.

On parle de Jf-Layout lorsqu'on impose une taille fixe pour certains éléments tandis qu'on soumet les éléments restants à des redimensionnements proportionnels par rapport à un changement global. Ce changement global peut être le redimensionnement de la taille de la fênetre conteneur, ou seulement la taille d'un des éléments de taille non-fixe.

Dans la pratique, malgré ses avantages sur la lisibilité et l'ergonomie pour l'utilisateur final, le Jf-Layout n'est malheureusement pas très présent dans la plupart des interfaces, probablement du à sa difficulté d'implémentation.

Sommaire

[modifier] Jf-Layout à une dimension

On parle de Jf-Layout à une dimension lorsque les éléments qui subissent les contraintes de redimensionnement concernent uniquement un seul axe. Ainsi, une suite d'éléments disposés horizontalement (resp. verticalement) pouvant être répartis entre des éléments de taille fixe et des éléments de largeur (resp. hauteur) modifiable est un Jf-Layout à une dimension.

On retrouve souvent ceci dans les explorateurs de fichiers des OS classiques, lorsque les tailles des en-têtes de listes sont modifiables par l'utilisateur, sauf certaines qui sont soumises à rester de taille fixe.

Particulièrement dans un Jf-Layout à une dimension, lorsque des éléments de taille fixe sont côte à côte, il est généralement mal vu de donner la possibilité à l'utilisateur de modifier la frontière entre ces deux éléments. En effet, les deux éléments étant de taille fixe, la modification de la frontière va avoir comme effet le déplacement des deux éléments, ce qui induit l'utilisateur en erreur par rapport à l'action possible, et constitue une faiblesse d'ergonomie.


[modifier] Jf-Layout à deux dimensions

Le Jf-Layout à deux dimensions décrit le comportement en modification de position et de taille des éléments dont certains de taille fixe, contenus dans un conteneur (navigateur web ou fenêtre de logiciel) subissant des modifications sur sa taille. Dans la pratique, il est souvent très peu nécessaire de vouloir modifier en deux dimensions les éléments proportionnellement à leur taille de départ et ce, avec des éléments de taille fixe entre eux. De plus, ceci donne lieu à des comportements non-souhaités et réduit considérablement la lisibilité globale. Dans la pratique, pour les redimensionnements à deux dimensions, on imbrique plusieurs Jf-Layout à une dimension, certains étant horizontaux, d'autres verticaux. Ceci permet de conserver la lisibilité du contenu et de profiter de la complexité à coût réduit du Jf-Layout à une dimension.


[modifier] Difficultés

Plusieurs points peuvent rebuter un programmeur à implémenter une interface en suivant les règles d'un Jf-Layout. Tout d'abord la difficulté à implémenter les algorithmes. Il n'est pas toujours facile pour un programmeur novice de répartir le surplus ou le manque de pixels proportionnellement à leur taille de base, lorsque la taille globale change. La largeur et la hauteur des éléments devant être entiers, on peut se retrouver confronté à des problèmes de division entière qui peuvent provoquer une largeur (resp. hauteur) totale plus grande que la largeur (resp. hauteur) initiale.

[modifier] Complexité

La complexité du Jf-Layout à une dimension est en O(n) à chaque mouvement de souris. En effet, on peut sauvegarder dans un tableau la taille en pourcentage de chacun des éléments et lors du redimensionnement distribuer selon cette répartition le surplus ou le manque de pixel en parcourant les éléments de taille non-fixe.

[modifier] Jf-Layout Total

On parle de Jf-Layout total lorsqu'un conteneur de taille modifiable par l'utilisateur contient uniquement des éléments qui sont eux-mêmes des conteneurs suivant les contraintes du Jf-Layout.

[modifier] Voir aussi