I think there is a simpler way to do this for example if you modify
you code  iCombo.java to be abstract

/****************
* iCombo.java
****************/
public abstract class iCombo extends Composite implements
SourcesChangeEvents
{
    private HorizontalPanel hPanel = new HorizontalPanel();
    private ListBox ListA = new ListBox();
    private ListBox ListB = new ListBox();
    private ListBox ListC = new ListBox();
    private ChangeListenerCollection listeners = new
ChangeListenerCollection();

public abstract void manageAllListeners( ListBox  listBox); // you
need to have this method that will manage your listener in this class
    public iCombo () {
        hPanel.add(ListA);
        hPanel.add(ListB);
        hPanel.add(ListC);

        FillList();

        ListA.addChangeListener(new ChangeListener() {
            public void onChange(Widget arg0) {
              //   listeners.fireChange(ListA);
            manageAllListeners(  ListA); // use this
            }
        });
        ListB.addChangeListener(new ChangeListener() {
            public void onChange(Widget arg0) {
              manageAllListeners(  ListB);
            }
        });
        ListC.addChangeListener(new ChangeListener() {
            public void onChange(Widget arg0) {
               manageAllListeners(  ListC);
            }
        });

        initWidget(hPanel);
    }

    private void FillList() {
        ListA.clear();
        ListA.addItem("ListA1");
        ListA.addItem("ListA2");
        ListA.addItem("ListA3");
        ListB.clear();
        ListB.addItem("ListB1");
        ListB.addItem("ListB2");
        ListB.addItem("ListB3");
        ListC.clear();
        ListC.addItem("ListC1");
        ListC.addItem("ListC2");
        ListC.addItem("ListC3");
    }

    public void addChangeListener(ChangeListener listener) {
        listeners.add(listener);
    }

    public void removeChangeListener(ChangeListener listener) {
        listeners.remove(listener);
    }

}


now in the ComboParent when you try to create an instance of iCombo
it will ask you to add unimplemanted method ..see the example

/****************
* ComboParent.java
****************/
public class ComboParent extends Composite {
    private VerticalPanel vPanel = new VerticalPanel();
    private iCombo MyCombo = new iCombo(){
public  void manageAllListeners( ListBox  listBox){

// here you can add what you want
}
};

    private Button btn1 = new Button("OK");
    private TextBox txt1 = new TextBox();

    public ComboParent() {
        vPanel.add(txt1);
        vPanel.add(MyCombo);
        vPanel.add(btn1);

        initWidget(vPanel);
    }

}

in the same way you can go through the other class.

hope that will help you .

On Sep 29, 4:27 pm, YoeZ <[EMAIL PROTECTED]> wrote:
> Thank you very much, thomas
> here's the final sample code and it really works... :)
>
> but the problem is, in the MainMenu, I don't know which listbox that
> send the listener.
> in the MainMenu, I provide three textboxes
> txtListA = catch the event from listA
> txtListB = catch the event from listB
> txtListC = catch the event from listC
> so, I have to know first, the name of the sender widget, (which is
> listA? listB? or listC?)
> then set the txtListA.setText(listA); and so on
>
> I have no idea, how to get the sender name.
> I have tried sender.getclass().getname() but the result is not what I
> want.
>
> please help me (again) ;)
>
> best regards
>
> /****************
> * iCombo.java
> ****************/
> public class iCombo extends Composite implements SourcesChangeEvents
> {
>     private HorizontalPanel hPanel = new HorizontalPanel();
>     private ListBox ListA = new ListBox();
>     private ListBox ListB = new ListBox();
>     private ListBox ListC = new ListBox();
>     private ChangeListenerCollection listeners = new
> ChangeListenerCollection();
>
>     public iCombo () {
>         hPanel.add(ListA);
>         hPanel.add(ListB);
>         hPanel.add(ListC);
>
>         FillList();
>
>         ListA.addChangeListener(new ChangeListener() {
>             public void onChange(Widget arg0) {
>                 listeners.fireChange(ListA);
>             }
>         });
>         ListB.addChangeListener(new ChangeListener() {
>             public void onChange(Widget arg0) {
>                 listeners.fireChange(ListB);
>             }
>         });
>         ListC.addChangeListener(new ChangeListener() {
>             public void onChange(Widget arg0) {
>                 listeners.fireChange(ListC);
>             }
>         });
>
>         initWidget(hPanel);
>     }
>
>     private void FillList() {
>         ListA.clear();
>         ListA.addItem("ListA1");
>         ListA.addItem("ListA2");
>         ListA.addItem("ListA3");
>         ListB.clear();
>         ListB.addItem("ListB1");
>         ListB.addItem("ListB2");
>         ListB.addItem("ListB3");
>         ListC.clear();
>         ListC.addItem("ListC1");
>         ListC.addItem("ListC2");
>         ListC.addItem("ListC3");
>     }
>
>     public void addChangeListener(ChangeListener listener) {
>         listeners.add(listener);
>     }
>
>     public void removeChangeListener(ChangeListener listener) {
>         listeners.remove(listener);
>     }
>
> }
>
> /****************
> * iComboParent.java
> ****************/
> public class iComboParent extends Composite implements
> SourcesChangeEvents  {
>     private HorizontalPanel vPanel = new HorizontalPanel();
>     private iCombo MyCombo = new iCombo();
>     private Button btn1 = new Button("OK");
>     private ChangeListenerCollection listeners = new
> ChangeListenerCollection();
>
>     public iComboParent() {
>         vPanel.add(MyCombo);
>         vPanel.add(btn1);
>
>         initWidget(vPanel);
>
>         MyCombo.addChangeListener(new ChangeListener() {
>             public void onChange(Widget sender) {
>                 listeners.fireChange(sender);
>             }
>         });
>
>     }
>
>     public void addChangeListener(ChangeListener listener) {
>         listeners.add(listener);
>     }
>
>     public void removeChangeListener(ChangeListener listener) {
>         listeners.remove(listener);
>     }
>
> }
>
> /****************
> * MainMenu.java
> ****************/
> public class MainMenu implements EntryPoint {
>     private VerticalPanel vPanel = new VerticalPanel();
>     private TextBox txtListA = new TextBox();
>     private TextBox txtListB = new TextBox();
>     private TextBox txtListC = new TextBox();
>     private ComboParent cp = new ComboParent ();
>
>     public void onModuleLoad() {
>         vPanel.add(txtListA);
>         vPanel.add(txtListB);
>         vPanel.add(txtListC);
>         vPanel.add(cp);
>
>         cp.addChangeListener(new ChangeListener() {
>             public void onChange(Widget sender) {
>                 ListBox lb = (ListBox) sender;
>
> txtListA.setText(lb.getItemText(lb.getSelectedIndex()));
>             }
>         });
>
>         RootPanel.get().add(vPanel);
>     }
>
> }
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to Google-Web-Toolkit@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to