2015-06-27 2 views
0

Как это сделать? https://vaadin.com/book/-/page/advanced.urifu.html#figure.advanced.urifuVaadin - Как я могу использовать класс UriFragmentUtility?

Я хотел бы использовать ярлык (например, как на этой странице «Рисунок 11.12, Управление состояниями приложения с помощью утилиты фрагмента URI»), и если пользователь нажмет на него, тогда браузер сосредоточит этот пункт.

+0

Или как я могу перемещаться внутри вида? – Gregory01

ответ

2

Один из способов - использовать метод UI.scrollIntoView(Component) после получения UriFragmentChangedEvent. Другой способ - использовать JavaScript. SSCCE (класс MainUI):

VerticalLayout layout = new VerticalLayout(); 
Label up = new Label("Up"); 
Label middle = new Label("Middle"); 
Label down = new Label("Down"); 


@WebServlet(value = "/*", asyncSupported = true) 
@VaadinServletConfiguration(productionMode = false, ui = QwertUI.class) 
public static class Servlet extends VaadinServlet { 
} 

@Override 
protected void init(VaadinRequest request) { 
    Button buttonUp = new Button("Up"); 
    Button buttonMiddle = new Button("Middle"); 
    Button buttonDown = new Button("Down"); 
    buttonUp.addClickListener(this); 
    buttonMiddle.addClickListener(this); 
    buttonDown.addClickListener(this); 
    up.setHeight("666px"); 
    middle.setHeight("666px"); 
    down.setHeight("666px"); 
    layout.addComponents(buttonUp, buttonMiddle, buttonDown, up, middle, down); 
    setContent(layout); 
    getPage().addUriFragmentChangedListener(
      new UriFragmentChangedListener() { 
     public void uriFragmentChanged(
       UriFragmentChangedEvent source) { 
      enter(source.getUriFragment()); 
     } 
    }); 
    enter(getPage().getUriFragment()); 
} 

private void enter(String uriFragment){ 

    UI ui = up.getUI(); 
    if(uriFragment != null){ 
     switch(uriFragment){ 
      case "Up": ui.scrollIntoView(up);; break; 
      case "Middle": ui.scrollIntoView(middle); break; 
      case "Down": ui.scrollIntoView(down); break; 
     } 
    } 
} 

@Override 
public void buttonClick(ClickEvent event) 
{ 
    getPage().setUriFragment(event.getButton().getCaption()); 
} 
Смежные вопросы