I think my current version is (nearly) like your FlexTable version.
The first layer is working, because it's just one FlexTable. In layer
2 there is one FlexTable for each different layer 1 FlexTable element.
The problems are just the NullPointerExceptions in layer 2 when I want
to access another FlexTable, than the last one, that is out of the
scope. How can I access this "old" FlexTables? Do I have to save them
in a vector or do I just have to define them in another scope? How
does it works?


On Aug 12, 8:38 pm, Ian Bambury <[email protected]> wrote:
> OK, I understand the kind of problem now.
> You have an awful lot of possibilities to consider - you could have a
> tree-explorer setup for example.
>
> If you want the kind of look you have suggested, then I would probably (if
> it were me) consider the FlexTable approach you have suggested:
>
>     - first line spans the whole width and contains details of the exam
> itself
>
>     - after that, pairs of FlexTable lines - the first has cells with the
> various fields you want to display for the exam section header, the second
> spans the whole width and contains another widget with details of the
> exercises. This could be a flextable, or maybe a VP with each section
> displaying a class for the exercise.
>
> I would suggest (whatever my suggestion is worth) that you concentrate on
> the first level first. Basically you have the same design problem at each
> level - a list which requires the insertion of elements.
>
> You need to consider the abilities of your users - can they cope with
> left-click menus? Do they need blindingly obvious 'Insert A Line Here'
> buttons?
>
> The simplest answer all-round is to have 'Insert Here' buttons everywhere
> and insert two lines above- one is the new line, and one is a new 'Insert
> Here' button.
>
> A big concern is if you need to save this to a database (which you will
> unless this is just an academic exercise) and at what point do you do this.
>
> But the simple answer is a flextable
>
> InsertAbove Button
> Detail Line ================================>
> InsertAbove  Button
> Detail Line ================================>InsertAbove  Button
> Detail Line ================================>InsertAbove  Button
> Detail Line ================================>InsertAbove  Button
>
> Once you have that working, create a similar class that does the exercise
> details and insert that into the detail line
>
> Does that make sense? If not, feel free to say so :-)
>
> Ian
>
> http://examples.roughian.com
>
> 2009/8/12 Tobe <[email protected]>
>
>
>
>
>
> > What I forget to say is that the problems are the
> > NullPointerExceptions when you add inner elements not at the last
> > position.
>
> > The project is about creating exams. The outer container are parts of
> > the exams with a description what the part is about. The inner
> > container are the exercise with a description what the students have
> > to do.
>
> > On Aug 12, 6:01 pm, Ian Bambury <[email protected]> wrote:
> > > Hi Tobe,
> > > Sorry - what I meant was: can you give a use case example for what you
> > are
> > > trying to do.
>
> > > I need more of an idea of how it will be used before I can get my head
> > > around this.
>
> > > For example, you might want to create a set of instructions (say a
> > recipe)
> > > where everything is done in order so you need to be able to insert/append
> > > steps and move them up and down.
>
> > > I had a look at your example code and some of it works, but I'm getting
> > > NullPointerExceptions for addInner.
>
> > > I don't understand why you need addinner and addouter. A real-world
> > example
> > > would help.
>
> > > Cheers,
>
> > > Ian
>
> > >http://examples.roughian.com
>
> > > 2009/8/12 Tobe <[email protected]>
>
> > > > @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...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to