[Java] Créer des UI customizables

Bonjour à tous,

J’ai besoin de conseils (et éventuellement de quelques librairies pour me faciliter le travail). Voilà ce que je veux faire :

Je développe actuellement une application qui permet de customizer l’aspect visuel (entre autre) d’une application web qui contient plein de formulaires. Tout est décrit en XML, mais moi, j’aimerais rendre cette customization plus accessible (vu que c’est destiné à des utilisateurs non informaticiens, donc qui ne connaissent rien au XML en plus)… Donc si possible il faudrait que ça se fasse tout en visuel, et à la souris (et après, mon application gère tout le mic-mac pour retransformer tout ça en XML).

En gros, pour résumer, je voudrais permettre aux utilisateurs de mon logiciel de modifier manuellement une interface graphique. Par exemple, l’utilisateur pourrait sélectionner un bouton (ou quelque chose qui y ressemble), puis par un drag’n’drop afin le placer ailleurs (par exemple devant une zone de texte).

Bon, ce n’est peut-être pas très clair, mais si vous développez avec NetBeans (4.1) par exemple, ce que je veux faire, c’est comme la création d’interfaces graphiques via NetBeans : La possibilité de sélectionner, d’ajouter, de supprimer des composants graphiques et pouvoir les déplacer dans un JPanel grâce à la souris… bon, le tout en plus simple, bien sûr…

J’imaginais utiliser Java2D pour faire ça. Mais ça représente pas mal de boulot quand même.

Alors si certaines âmes pouvaient me donner quelques liens intéressants ou des idées, je suis prenneur !!

Merci.

Je veux pas du tout te decourager ou quoi mais je sais pas si tu realises bien ce dans quoi tu veux t’embarquer la :stuck_out_tongue: Enfin tu peux faire un truc simple (simpliste?) qui va faire la gestion de quelques trucs simples genre positionnement ou quoi mais pour avoir bosse 2 ans sur le designer Windows Forms dans Visual Studio c’est clairement un des problemes les plus compliques sur lequel j’ai jamais bosse. Quand tu dis « ca represente pas mal de boulot », c’est une litote… c’est plus proche des milliers d’heures de taf qu’autre chose a mon humble avis… Enfin tout depend de ce que tu veux faire exactement, mais meme la base est bien poilue.

Enfin cela dit le fait qu’au final ca soit du web te simplifie surement la tache, c’est pas le meme domaine, mais pour diminuer l’investissement il est surement plus rentable de rester dans le meme domaine, cad du web. Moi je serais toi je matterais pas pour faire ca en java necessairement, mais plutot du cote des web parts (et les movable web parts, etc) en asp.net 2.0 (pas pour les utiliser forcement, pour voir comment ca marche si c’est pas plus proche de ce que tu veux faire ou t’en inspirer).

Merci Glop de me décourager :stuck_out_tongue:

Non, je rigole. En fait, je vais être un poil plus précis. Je me doute que si je voulais vraiment faire quelque chose d’exhaustif, ce serait la mort ! Mais moi, je veux juste quelque chose qui soit limité à mon application Web (et oui, je dois rester en Java, pour plein de raisons, et ce doit être une application) :

En fait, mon application Web, c’est grosso-modo un ensemble de formulaires qui sont composés d’onglets, chaque onglet contenant un panneau. Dans chaque panneau, j’ai 2 colonnes de paramètres (plus le label du paramètre). Chaque paramètre est symbolisé soit par un JTextField (zone de texte) soit par un JComboBox.
Moi, je veux limiter les fonctionnalités offertes aux utilisateurs. Ceux ci doivent pouvoir :

  1. Sélectionner un composant (donc soit un TextField, soit un ComboBox).
  2. Le déplacer dans un autre onglet.
  3. Le déplacer dans une autre position de mon panneau.

Je pense que c’est sans doute trop complexe de gérer le drag’n’drop (surtout pour ce que ça apporte), c’est pour ça que je pense que je vais juste offrir la posibiliter de modifier la position d’un paramètre avec des boutons (un bouton pour monter le paramètre d’une ligne, un autre pour le descendre…).

A moins que quelqu’un ait une solution géniale :stuck_out_tongue:

+1 pour GloP, c’est un travail énooormmme mais c’est tout à fait faisable.

Pour l’instant, je n’ai pas le temps de te répondre, mais ça m’intéresse de bosser sur un truc de ce genre. Je réfléchi en faisant les courses avec ma chérie et je te dirais ce que j’en pense en rentrant dans 30min. Sinon, contact moi par MSN si tu peux, zobi.la.mouche@tele2.fr, ca serai sympa de discuter des différentes solutions en live aussi.

[quote name=‘ZGoblin’ date=’ 27 Sep 2005, 18:48’]+1 pour GloP, c’est un travail énooormmme mais c’est tout à fait faisable.

Pour l’instant, je n’ai pas le temps de te répondre, mais ça m’intéresse de bosser sur un truc de ce genre. Je réfléchi en faisant les courses avec ma chérie et je te dirais ce que j’en pense en rentrant dans 30min. Sinon, contact moi par MSN si tu peux, zobi.la.mouche@tele2.fr, ca serai sympa de discuter des différentes solutions en live aussi.
[right][post=“402056”]<{POST_SNAPBACK}>[/post][/right][/quote]

Merci pour ta proposition ZGobelin.
Certes ce serait un projet très intéressant, mais ce serait un projet à part entière.
Personnellement, je voulais introduire cette fonctionnalité dans mon soft pour m’amuser (entre autre), mais aussi parce que je trouvais que ça pouvait être pas mal pour modifier visuellement mes formulaires…
Hélas, je n’ai pas le temps de développer un tel truc en ne partant de rien, ou presque. C’est pour cela que j’avais fait appel à vous histoire de savoir s’il existe des librairies facilitant ce travail, ou si quelqu’un a une idée géniale pour coder ça simplement et rapidement.

Du coup, je pense opter pour une solution plus facilement implémentable, mais moins groovy…

Voici un début de réflexion, pour moi il faudrai commencer par regarder le fonctionnement des Layout: BoxLayout :stuck_out_tongue: , GridBagLayout :stuck_out_tongue: , il existe aussi FormLayout de JGoodies :stuck_out_tongue: , en gros il faudrai utiliser celui qui permettrai facilement d’ajouter et d’enlever des lignes.
Ensuite pour le drag & drop, pas de problème, je pourrai t’aider, il faut que je regarde juste comment savoir dans quelle zone du layout on drop, ensuite avec un MouseMotionListener, on peut facilement dragger d’une Tab à l’autre.

Ca serait sympa que tu fasse un dessin à la main de ton interface graphique.