On Wed, Dec 9, 2009 at 7:37 PM, romant <[email protected]> wrote:

> Ok I got it work, in case anyone is interested - to simulate the
> common FAQ page behaviour the simplest approach seems to be setting
> the scroll position of a ScrollPanel like this:
>
> int pos = panelToShow.getAbsoluteTop() - scrollPanel.getAbsoluteTop();
> scrollPanel.setScrollPosition(pos);
>
> panelToShow is one of many panels placed in a ScrollPanel.
>
>
>
>
>
> On 29 lis, 16:53, romant <[email protected]> wrote:
> > Hi,
> > I tried to implement a widget which would realize the commonly used
> > FAQ page approach (which means questions as links situated at the top
> > and answers below, when a link is clicked the panel scrolls at the
> > correct position to show the corresponding answer).
> >
> > I expected that using ScollPanel and its ensureVisible() method will
> > do the job. It does actually but in a very strange way. I would expect
> > that when one of the top links is clicked thescrollpanelwill scroll
> > so that the corresponding answer will be aligned right at the top of
> > the visiblescrollpanel'sarea. But it is not and I have no idea why.
> > It seems that the position of the element which is desired to be
> > visible is rather random.
> >
> > Have a try herehttp://romant1.sweb.cz/gwt/AppFaq.html
> >
> > Did anyone experience this?
> > Is even possible in GWT to implement the same functionality which the
> > classic html tag <a name="jump_here"/> provides?
> > Thnx.
> >
> > P.S. Here is the java source code.
> >
> > package my.gwt.client;
> >
> > import java.util.HashMap;
> >
> > 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.Composite;
> > import com.google.gwt.user.client.ui.FlowPanel;
> > import com.google.gwt.user.client.ui.HTML;
> > import com.google.gwt.user.client.ui.RootPanel;
> > import com.google.gwt.user.client.ui.ScrollPanel;
> >
> > public class AppFaq implements EntryPoint {
> >
> >    public void onModuleLoad() {
> >            RootPanel.get().add(new AppFaqInner());
> >    }
> >
> >    private class AppFaqInner extends Composite implements ClickHandler
> > {
> >
> >            private final String[] answers = {"Lorem ipsum dolor sit amet,
> > consectetur adipiscing elit. Pellentesque non magna eros, a mollis
> > lacus. Vestibulum a turpis libero, et volutpat eros. In id risus vitae
> > nunc vulputate adipiscing.",
> >
>        "Sed mollis egestas est, vel ornare augue malesuada ut.
> > Aliquam vulputate eros sit amet metus ultricies pellentesque. Vivamus
> > a velit purus. Nam fringilla, lorem a dignissim venenatis, nibh metus
> > posuere felis, ut euismod nisi enim sit amet erat.",
> >
>        "Morbi nulla justo, fringilla nec hendrerit a, pharetra
> > at libero. Sed id eros sapien, nec sagittis enim. Quisque viverra
> > justo nec urna venenatis et vestibulum metus luctus. In aliquam lacus
> > ac lacus placerat venenatis. Quisque et augue ante. Mauris ac nunc
> > est. Mauris ac nunc est. Mauris ac nunc est. Mauris ac nunc est.
> > Mauris ac nunc est.",
> >
>        "Cras convallis orci congue massa pharetra et consequat
> > nunc faucibus. Vestibulum sit amet ligula ut sem lacinia tempor.",
> >
>        "Quisque fermentum condimentum suscipit. Phasellus
> > sollicitudin, nibh non volutpat ornare, mi dolor facilisis diam, vitae
> > aliquet nulla nisi eu tellus.," +
> >
>        "Suspendisse at nisi ante, nec dapibus erat. Etiam
> > tincidunt lacus ac sem ultrices aliquet nec et erat. Vestibulum
> > pretium lacus vitae velit adipiscing vitae fermentum quam tincidunt.
> > Suspendisse quis massa ipsum. Duis ultricies malesuada posuere.",
> >
>        "Suspendisse ultricies neque vitae nisl tempor sed
> > fermentum mauris feugiat. ",
> >
>        "Suspendisse ultricies neque vitae nisl tempor sed
> > fermentum mauris feugiat. Suspendisse ultricies neque vitae nisl
> > tempor sed fermentum mauris feugiat. "};
> >
> >            private finalScrollPanelscrollPanel;
> >            // maps the top question links to the corresponding answers
> >            private HashMap<HTML, FlowPanel> linkMap;
> >
> >            public AppFaqInner() {
> >                scrollPanel= newScrollPanel(getFaqContent());
> >                scrollPanel.setStyleName("ScrollPanel");
> >
> >                initWidget(scrollPanel);
> >            }
> >
> >            private FlowPanel getFaqContent() {
> >                linkMap = new HashMap<HTML, FlowPanel>();
> >
> >                FlowPanel content = new FlowPanel();
> >                FlowPanel linkPanel = new FlowPanel();
> >                content.add(linkPanel);
> >
> >                for (int i=1; i< 8; i++) {
> >                        // top question link
> >                        HTML link = new HTML("Question " + i);
> >                        link.setStyleName("QuestionLink");
> >                        link.addClickHandler(this);
> >                        linkPanel.add(link);
> >                        // answer
> >                        FlowPanel answerBox = getAnswerBox("Question " +
> i, answers
> > [i-1]);
> >                        content.add(answerBox);
> >                        linkMap.put(link, answerBox);
> >                }
> >                return content;
> >            }
> >
> >            private FlowPanel getAnswerBox(String question, String answer)
> {
> >                FlowPanel answerBox = new FlowPanel();
> >                answerBox.setStyleName("AnswerBox");
> >                HTML html = new HTML(question);
> >                html.setStyleName("Question");
> >                answerBox.add(html);
> >                answerBox.add(new HTML(answer));
> >                return answerBox;
> >            }
> >
> >            public void onClick(ClickEvent event) {
> >                Object sender = event.getSource();
> >
> >                // question link clicked, show the correspoding answer
> >                if (sender instanceof HTML) {
> >                    scrollPanel.ensureVisible(linkMap.get(sender));
> >                }
> >            }
> >    }
> >
> > }
>
> --
>
> 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]<google-web-toolkit%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-web-toolkit?hl=en.
>
>
>

--

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