@Ian:
ok, I have an example what I created so far.I used FlexTables, because
I think it's the right one for this problem.
All starts with a FlexTable and a button inside for new outer
elements. If the user clicks the button, there will be added one new
row with a TextBox and a button inside a new inner FlexTable to add a
new inner element and one row to add a new outer element at the end.
The user can add new outer elements after the first outer button and
at the end (after the second outer button) - so he can always add
outer elements at any position. If the user adds the inner button
there will be added, like the outer one, one new row to the inner
FlexTable with a new TextBox and one new row with a button to add new
inner elements. So shall be just this two layers and no third one, so
there will be added just TextBoxes in the inner FlexTable and no new
buttons to add inner-inner elements.
Here is my code:
package de.testgwt.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.HTMLTable.Cell;
public class TestGWT implements EntryPoint {
FlexTable tableOuter;
FlexTable tableInner;
AbsolutePanel divOuter;
AbsolutePanel divInner;
public void onModuleLoad() {
System.out.println("---------------");
Button buttonAddOuter = new Button("add uter");
buttonAddOuter.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){
add(event);
}
});
divOuter = new AbsolutePanel();
divOuter.add(buttonAddOuter);
tableOuter = new FlexTable();
tableOuter.setWidget(0, 0, divOuter);
RootPanel.get().add(tableOuter);
}
public void add(ClickEvent event){
Cell cellForEvent = tableOuter.getCellForEvent(event);
System.out.println("tableOuter: "+tableOuter.hashCode()+" / row:
"+cellForEvent.getRowIndex());
divOuter = new AbsolutePanel();
divOuter.add(new TextBox());
tableInner = new FlexTable();
Button buttonAddInner = new Button("add Inner");
buttonAddInner.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){
addInner(event);
}
});
tableInner.setWidget(0, 0, buttonAddInner);
divOuter.add(tableInner);
tableOuter.insertRow(cellForEvent.getRowIndex()+1);
tableOuter.setWidget(cellForEvent.getRowIndex()+1, 0, divOuter);
Button buttonAddOuter = new Button("add outer");
buttonAddOuter.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){
add(event);
}
});
divOuter = new AbsolutePanel();
divOuter.add(buttonAddOuter);
tableOuter.insertRow(cellForEvent.getRowIndex()+2);
tableOuter.setWidget(cellForEvent.getRowIndex()+2, 0, divOuter);
}
public void addInner(ClickEvent event){
Cell cellForEvent = tableInner.getCellForEvent(event);
System.out.println("tableInner: "+tableInner.hashCode()+" / row:
"+cellForEvent.getRowIndex());
divInner = new AbsolutePanel();
divInner.add(new TextBox());
tableInner.insertRow(cellForEvent.getRowIndex()+1);
tableInner.setWidget(cellForEvent.getRowIndex()+1, 0, divInner);
Button buttonAddInner = new Button("add inner");
buttonAddInner.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){
addInner(event);
}
});
divInner = new AbsolutePanel();
divInner.add(buttonAddInner);
tableInner.insertRow(cellForEvent.getRowIndex()+2);
tableInner.setWidget(cellForEvent.getRowIndex()+2, 0, divInner);
}
}
On Aug 10, 8:27 pm, Ian Bambury <[email protected]> wrote:
> Hi Tobe,
> You seem to have changed from divs in the root panel to a widget, which is
> probably the right way to go - depends on what you are doing, and you don't
> say.
>
> It does rather depend on how you are displaying things, and what you are
> displaying. If there are columns (apart from the buttons) then are they
> fixed-width or do they self-adjust? Are the items sorted in some way?
>
> If you could give (even a theoretical) example of what this list consists
> of, then it will be easier to answer. I suspect that the lack of response is
> because people have too many possibilities in mind to comment
>
> Ian
>
> http://examples.roughian.com
>
> 2009/8/10 Tobe <[email protected]>
>
>
>
>
>
> > I'm currently trying to do it with a FlexTable, but the problem is
> > that I don't know how I can find out if the user really clicked the
> > button or just somewhere inside the table.
>
> > On Aug 10, 3:41 pm, Tobe <[email protected]> wrote:
> > > I don't really need to know how to create the Array. I already created
> > > a Vector of button and adding the buttons to the Vector. But my
> > > problem is that I don't know how to handle with it. How can I add the
> > > new div at the position behind the corresponding button on the
> > > RootPanel?
>
> > > On Aug 7, 5:22 pm, Tobe <[email protected]> wrote:
>
> > > > Hi,
> > > > I have a list, which items are divs, and want the user to add new
> > > > items at any position. So if there are 2 item there have to be 3
> > > > button, one before the first, one between both and one after the last.
> > > > Can somebody tell me how to create this "array" of buttons.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---