~ / RICM5 / IHM / tps / 0-range-slider /
© 2014–2015 - Renaud Blanch
Le but de ce TP est d'implémenter, avec Java/SWING, une interface proposant des interactions avancées non-standard. Il faudra pour cela réaliser un widget qui n'est pas fourni par les boîtes à outils classiques de construction d'interface : le Range Slider qui permet de sélectionner un ensemble de valeurs dans un intervalle. Ce widget sera ensuite utilisé pour reproduire un système historique : le HomeFinder présenté ci-dessous.
HomeFinder est un prototype de recherche datant de 1993 qui permet de localiser et filtrer des annonces immobilières en fonctions de divers critères. Vous pouvez regarder la vidéo présentant le système pour vous faire une idée de son fonctionnement et lire cette description du système.
Une des propriétés intéressante du système est la possibilité de sélectionner un intervalle de valeur à l'aide d'un widget particulier : le RangeSlider.
Le RangeSlider ressemble à un Slider classique, mais il permet de sélectionner un intervalle plutôt qu'une valeur unique. Son fonctionnement est décrit ici.
En vous inspirant du BoundedRangeModel qui est le modèle utilisé par le JSlider de Java/SWING, spécifiez l'interface pouvant servir de modèle au RangeSlider.
Spécifiez l'interaction du RangeSlider, i.e., ce qu'il se passe lorsque l'on clique ou glisse les diverses parties du widget (curseurs, intervalle sélectionné, parties à l'extérieur de cet intervalle). L'utilisation de machines à états ou de tout autre formalisme à votre convenance pourra s'avérer judicieuse.
Réalisez le RangeSlider en Java/SWING. Le code du JSlider et de son SliderUI peut vous inspirer. Dans un premier temps, ne vous souciez pas du pluggable look-and-feel.
(bonus) Améliorez votre réalisation en séparant maintenant son rendu au sein d'un composant RangeSliderUI. La description de comment Java/SWING utilise le modèle MVC pour ses composants pourra vous être utile.
Créez une classe Home qui modélise un bien immobilier (position géographique, nombre de pièces, valeur du bien). Créez un programme qui affiche sur une carte de biens immobiliers pris dans une liste initialisée avec des instances de Home tirées aléatoirement au lancement de votre programme.
Ajoutez à cette carte la possibilité de filtrer dynamiquement les biens affichés en ne retenant qu'un intervalle sur le nombre de pièces et/ou la valeur du bien. Cette sélection se fera à l'aide d'instance de votre RangeSlider.
(bonus) Ajoutez la possibilité pour l'utilisateur de positionner à la souris des points A et B sur la carte, et de sélectionner des distances maximales à ces points pour filtrer les biens affichés.
mise à jour : 9 octobre 2014