1 pièce(s) jointe(s)
Titre description wizard page + icones personnalisées
Bonsoir,
j'ai continué à avancer l'integration de XUIL avec AWL et j'aurrais besoin de plusieurs fonctionnalités. Je t'avoues que je n'ai pas pris le temps de regarder si c'etait possible de faire ou non avec AWL car j'essaie d'avancer aussi sur mon API XUIL. Desole si je pose des questions betes.
Je t'ai mis une copie d'ecran de SWT pour que tu comprennes mieux mes besoins :
- Titre wizard page dans le bandeau : afficher un titre dans la page du wizard (voir Wizard Page Title dans le bandeau du haut).
- Titre wizard description dans le bandeau du haut : afficher une description dans la page du wizard (voir Wizard Page description dans le bandeau). J'ai vu qu'il y avait un setDescription mais il met a jour le Summary. Moi je souhaiterais enlever le summary (ca j'ai trouve en faisant setSummary(false) )et avoir une description au niveau du bandeau. Si un message est affiche (WARN, ERROR...) ca s'affiche par au dessus. Quand on fait resetMessages ca supprime le message et la description apparait.
- Icones dans le footer : dans mon cas lorsque la page ets chargée il peut y avoir des erreurs de scripts. En SWT j'active un icone (en bas a gauche de la page) pour indiquer qu'il y a une erreur de script. Si l'utilisateur clique dessus ca ouvre une fenetre avec l'erreur du script.
J'aimeras faire la meme chose et donc ajouter mon icone dans le footer du wizard page. J'ai vu que la methode initComponents creait les boutons je pense qu'il faudrait que j'utilise cette methode, le probleme c'est que je souhaiterais afficher mon icone(rouge) a gauche du wizard page. Comment pourrais je gerer ceci simplement? Peut faudrait il ajouter un CustomPanel dans AWL? - Button help : j'ai vu qu'il y avait un bouton help,mais help est private. Comment on l'active? Il sert a koi ce bouton?
Dans Eclipse ce bouton help permet d'appeler un fichier topic XML qui permet d'afficher une aide. Je nel'ai pas implemente dans Akrogen mais j'ai l'intention de le faire. Sais tu si dans Netbeans tu as un equivalement de ces fichiers XML d'aide?
Tu dois etre en vacances. J'attends tes reponses pour gerer ces fonctionnalites avec AWL et je vais m'attaquer au wizard page dynamique.
Merci encore de ton aide.
Angelo
Problème avec appel methode addPage
Bonjour,
j'ai continue a avancer avec AWL et je suis face a un problème que je n'arrive pas a expliquer. J'ai trouvé une solution, mais je pense qu'elle n'est pas très propre.
Voici mon explication (qui va surement etre longue). J'ai passer pas mal de temps a indentifier le problème et j'ai trouve un test qui pose probleme. Le problème vient de la methode addPage. Lorsque l'on execute ce code, ca marche tres bien :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| DefaultWizard w = new DefaultWizard((JFrame)null);
// Page 1
String pageId1 = "1";
DefaultWizardPageDescriptor page1 = new DefaultWizardPageDescriptor();
page1.setComponent(new JLabel("Page 1"));
// Page 2
String pageId2 = "2";
DefaultWizardPageDescriptor page2 = new DefaultWizardPageDescriptor();
page2.setComponent(new JLabel("Page 2"));
page1.setNextDescriptorId(pageId2);
page2.setPreviousDescriptorId(pageId1);
// Ajout des pages au wizard
w.addPage(page1, pageId1);
w.addPage(page2, pageId2);
w.pack();
w.setVisible(true); |
Par contre dans mon cas j'ajoute les page au fur et a mesure car je ne connais pas les pages d'avances, ce qui donne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
DefaultWizard w = new DefaultWizard((JFrame)null);
// Page 1
String pageId1 = "1";
DefaultWizardPageDescriptor page1 = new DefaultWizardPageDescriptor();
page1.setComponent(new JLabel("Page 1"));
// Ajout de la page 1 au wizard
w.addPage(page1, pageId1);
// Page 2
String pageId2 = "2";
DefaultWizardPageDescriptor page2 = new DefaultWizardPageDescriptor();
page2.setComponent(new JLabel("Page 2"));
page2.setPreviousDescriptorId(pageId1);
page1.setNextDescriptorId(pageId2);
//Ajout de la page 2 au wizard
w.addPage(page2, pageId2);
w.pack();
w.setVisible(true); |
Et la le problème c'est que le programme tourne en boucle mais n'affiche pas le wizzard. Lorsque je mets un point d'arret sur la ligne w.pack();, j'attends quelques secondes, je debloque le debug, le wizard s'affiche. Je n'arrive pas expliquer la raison de ce problème?
J'ai reflechi au problème et la solution pour l'instant est de creer toutes les pages puis d'appeler addPage pour chacune des pages a la fin. Mais ou?
Ce que j'ai fait c'est que j'ai defini une methode a moi addPage(IXuilWizardPage page) que j'utilise pour mettre a jour les id Next et Previous et qui au lieu d'appeler addPage de AWL stockes la page dans un ArrayList.
Ensuite j'ai redefini pack du Wizard pour iterer sur cette liste et appeler les addPage AWL pour chaque page enregistre dans la liste. Le 2ème problème c'est que pack est appelé plusieurs fois. C'est la méthode resize du Wizard AWL qui l'appelle. Donc j'ai redefini resize en mettant un flag comme quoi elle a ete appelée et dans pack je test si cette methode a été appelée. Si elle n'a pas été appelé, cela signifie que l'on est dans le cas w.pack(); et j'itere sur la liste des pages en appelant addPage.
Ce qui donne au niveau du code de mon Wizard :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| private boolean resizeCalled;
/**
* Add Xuil wizard page.
*
* @param xuilPage
*/
public void addPage(IXuilWizardPage xuilPage) {
// Register the wizard into the page.
XuilWizardPage page = (XuilWizardPage) xuilPage;
page.setWizard(this);
// Create page content described with XML.
Component content = page.createPageContents();
page.setComponent(content);
// Manage AWL next, previous ID.
if (lastWizardPageAdded != null) {
lastWizardPageAdded.setNextDescriptorId(page.getPageid());
page.setPreviousDescriptorId(lastWizardPageAdded.getPageid());
}
pages.add(page);
// Add AWL wizardpage.
//super.addPage(page, page.getPageid());
lastWizardPageAdded = page;
}
public void pack() {
if (!resizeCalled ) {
for (Iterator iterator = pages.iterator(); iterator.hasNext();) {
XuilWizardPage page = (XuilWizardPage) iterator.next();
super.addPage(page, page.getPageid());
}
}
super.pack();
}
protected void resize() {
resizeCalled = true;
super.resize();
resizeCalled = false;
} |
Pour l'instant ca marche, mais je trouve que c'est du bricolage. Si tu as une meilleure solution, n'hesite pas! Merci.
Angelo