2012-03-16 2 views
1

Возможно ли, что в GWT был обработчик, который обнаруживает, что ручка pf SplitLayoutPanel была нажата или нажата?GWT Handler to SplitLayoutPanel drag

Спасибо за помощь.

ответ

1

Я думаю, вы можете сделать это с помощью переопределения onResize() унаследованного метода DockLayoutPanel:

SplitLayoutPanel splitLayoutPanel = new SplitLayoutPanel(){ 
      @Override 
      public void onResize() { 
       super.onResize(); 
       Window.alert("resized"); 
      } 
     }; 
+0

Это событие не запускается для панели разметки. Сама панель не изменяется при перетаскивании сплиттера. –

+1

Я играл с идеей и придумал решение, которое я опубликовал в качестве ответа. –

2

Вы можете сделать это путем добавления промежуточных ResizeLayoutPanels.

MyComposite.ui.xml :

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
    xmlns:g="urn:import:com.google.gwt.user.client.ui" 
    xmlns:my="urn:import:my.custom.package.client"> 

<g:SplitLayoutPanel ui:field="splitLayoutPanel"> 
    <g:west size="250"> 
    <g:ResizeLayoutPanel ui:field="leftMenuOuterPanel"> 
      <my:MenuWidget ui:field="menuWidget" /> 
     </g:ResizeLayoutPanel> 
    </g:west> 
    <g:center> 
     <g:ResizeLayoutPanel ui:field="centerOuterPanel"> 
      <my:AwesomeWidget ui:field="centerWidget" /> 
     </g:ResizeLayoutPanel> 
    </g:center> 
</g:SplitLayoutPanel> 

</ui:UiBinder> 

MyComposite.java :

class MyComposite extends Composite{ 
    // fuss with ui binder interfaces 
    // other fuss to declare widgets as @UiField 

    public MyComposite(){ 
     initWidget(uiBinder.createAndBindUi(this)); 
     leftMenuOuterPanel.addResizeHandler(new ResizeHandler(){ 
      public void onResize(ResizeEvent event){ 
       // Here do what you want 
      } 
     }); 
    } 
} 

Я бы рекомендовал использовать отложенную команду делать то, что вы хотите с этим событием изменения размера, потому что срабатывает много раз при перемещении сплиттер.

Я использую это, чтобы сохранить ширину панели меню в настройках пользователя.

+0

эти советы также разрешают некоторые проблемы, когда изменение размера выглядит очень рывким (в моем случае с компонентом SmartGWT внутри)! splendide: D – Donatello

Смежные вопросы