SOLVED!
w/o JS/AJAX

I created a factory to produce the corresponding Panel(including the form)
and I use a call to replaceWith() in onSelectionChanged():

[code]
 @Override
   protected void onSelectionChanged(final Object newSelection) {
    Panel newPanel = AddItemPanel.getAddItemPanel(selected, "addArticlePanel"); 
//the factory call
    addArticlePanel.replaceWith(newPanel);
    addArticlePanel = newPanel;
   }

Thanks to martin-g @ #wicket.

Regards,
Stephan

Am 11.11.2009 um 16:18 schrieb srm:

> Am 11.11.2009 um 15:59 schrieb Ernesto Reinaldo Barreiro:
> 
>> If you reload the page when selecting the element, instead of using AJAX, I
>> guess the same will work because you have a selected article... I think AJAX
>> is just a detail here, maybe you can use
>> 
>> protected boolean wantOnSelectionChangedNotifications()
>>   {
>>       return false;
>>   }
>> 
>> on DropDownChoice?
>> 
> 
> 
> From my understanding, I need wantOnSelectionChangedNotifications()
> returning TRUE, otherwise onSelectionChanged() is never triggered.
> My current approach as follows. That's working but it doesn't feel right.
> To clumsy. Any ideas? (and I beg your pardon for mixing german 
> with english in the code ;) )
> 
> package view;
> 
> ..some imports...
> public class AddArticlePage extends StorePage {
> 
>  private AddArticlePanel addArticlePanel;
> 
>  @SuppressWarnings("unchecked")
>  public AddArticlePage() {
>   addArticlePanel = new AddArticlePanel("addArticlePanel");
>   addArticlePanel.setVisible(false);
>   DropDownChoice dropDownType = new DropDownChoice("dropDownType",
>     new PropertyModel(this, "selected"), Artikel.TYPELIST) {
>    protected boolean wantOnSelectionChangedNotifications() {
>                return true;
>            }
>    @Override
>    protected void onSelectionChanged(final Object newSelection) {
>     System.out.println("SELECTION CHANGED!");
>     System.out.println("new Selection = " + (String) newSelection);
>     addArticlePanel.setVisibleFields((String) newSelection);
>     addArticlePanel.setVisible(true);
>    }
>   };
> 
>   Form formAdd = new Form("addArticleForm") {
>    @Override
>    protected void onSubmit() {
>     System.out.println("Added Article...");
>    }
>   };
> 
>   add(dropDownType);
>   add(addArticlePanel);
>   add(formAdd);
>   
>  }
> }
> 
> 
> /***** THE PANEL CLASS ******/
> public class AddArticlePanel extends Panel {
> 
>  private TextField artikelNummer;
>  private TextField preis;
>  private TextField erscheinungsJahr;
>  private TextField beschreibung;
>  private TextField titel;
>  
>  //fields for BOOK
>  private TextField isbn; 
>  private TextField autor;
>  private TextField verlag;
>  
>  //fields for CD
>  private TextField label;
>  private TextField artist;
>  
>  public AddArticlePanel(String id) {
>   super(id);
>   
>   artikelNummer = new TextField("artikelNummer", new Model());
>   preis = new TextField("preis", new Model());
>   erscheinungsJahr = new TextField("erscheinungsJahr", new Model());
>   beschreibung = new TextField("beschreibung", new Model());
>   titel = new TextField("titel", new Model());
>   isbn = new TextField("isbn", new Model());
>   autor = new TextField("autor", new Model());
>   verlag = new TextField("verlag", new Model());
>   label = new TextField("label", new Model());
>   artist = new TextField("artist", new Model());
>   add(artikelNummer);
>   add(preis);
>   add(erscheinungsJahr);
>   add(beschreibung);
>   add(titel);
>   add(isbn);
>   add(autor);
>   add(verlag);
>   add(label);
>   add(artist);
> 
> // THIS WHOLE THING WOULD HAVE TO BE DONE FOR EACH ITEM AGAIN TO
> // DISPLAY A LABEL IN FRONT OF EACH TEXTFIELD, HOLDING A DESCRIPTION
> // SOUNDS AWFULL!
>   
>  }
>   
>        //could probably be optimised
>  public void setVisibleFields(String type) {
>   if (type.equals("BOOK")) {
>    isbn.setVisible(true);
>    autor.setVisible(true);
>    verlag.setVisible(true);
>    
>    label.setVisible(false);
>    artist.setVisible(false);
>   }
>   else {
>    isbn.setVisible(false);
>    autor.setVisible(false);
>    verlag.setVisible(false);
>    
>    label.setVisible(true);
>    artist.setVisible(true);
>   }
>  }
>  
> 
> }
> 
> Comments please :)
> 
> 
>> Best,
>> 
>> Ernesto
>> 
>> On Wed, Nov 11, 2009 at 3:45 PM, srm <s...@schokokeks.org> wrote:
>> 
>>> 
>>> Am 11.11.2009 um 15:25 schrieb Ernesto Reinaldo Barreiro:
>>> 
>>>> I have used something similar to
>>> [snip]
>>> [snap]
>>>> 
>>>> for such situations... I delegate creation to a factory class (so that
>>> new
>>>> products can be plugged in).
>>>> 
>>>> Best,
>>>> 
>>>> Ernesto
>>>> 
>>> 
>>> 
>>> Thank you for this example.
>>> But I'm bound to not use Ajax/JavaScript...and now I'm stuck.
>>> 
>>> Regards,
>>> Stephan
>>> 
>>> 
>>> 
>>>> On Wed, Nov 11, 2009 at 2:53 PM, srm <s...@schokokeks.org> wrote:
>>>> 
>>>>> How would you approach the following:
>>>>> PageA is used to insert an article. At first, the user chooses what kind
>>> of
>>>>> article to insert (DropDownChoice).
>>>>> When the User made his choice, a coresponding form should be
>>> loaded/visible
>>>>> underneath the
>>>>> DropDownChoice. That's all to be solved without JavaScript.
>>>>> My current idea is currently to add an Panel (AddArticlePanel) which
>>> holds
>>>>> all fields for any kind of article
>>>>> and make them visible depending on what the user has chosen (using
>>>>> onSelectionChanged).
>>>>> But that seems like a brute approach so I wanted to get your opinions on
>>>>> this.
>>>>> 
>>>>> Further information will be happily provided.
>>>>> 
>>>>> Regards,
>>>>> Stephan
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>>> 
>>>>> 
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>> 
>>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to