Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > GWT DialogBox


Автор: Samotnik 4.2.2011, 19:35
Привет. 
Написал незатейливый код
Settings.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'>
    
    <ui:with field='i18n' type='com.my.project.gwt.client.i18n.Internationalization' />
    
    <g:DialogBox animationEnabled="true" modal="true" glassEnabled="true" ui:field="dialogBox" text="{i18n.settingsTitle}">
        <g:HTMLPanel ui:field="htmlPanel">
          <table>                        
                <tr>
                    <td class="psSettingsName">
                        <g:Label text="{i18n.settingsName}"/>
                    </td>
                    <td>
                        <g:TextBox ui:field="name" readOnly="true"/>
                    </td>
                </tr>
                <tr>
                    <td class="psSettingsOldPassword">
                        <g:Label text="{i18n.settingsOldPassword}"/>
                    </td>
                    <td>
                        <g:PasswordTextBox ui:field="oldPassword"/>
                    </td>
                </tr>
                <tr>
                    <td class="psSettingsNewPassword">
                        <g:Label text="{i18n.settingsNewPassword}"/>
                    </td>
                    <td>
                        <g:PasswordTextBox ui:field="newPassword"/>
                    </td>
                </tr>
                <tr>
                    <td class="psSettingsNewPassword">
                        <g:Button text="{i18n.ok}" ui:field="ok"/>
                    </td>
                    <td>
                        <g:Button text="{i18n.cancel}" ui:field="cancel"/>
                    </td>
                </tr>
            </table>
        </g:HTMLPanel>
    </g:DialogBox>
</ui:UiBinder>


Settings.java
Код

public class Settings extends Composite {
    
    interface SettingsUIBinder extends UiBinder<Widget, Settings> {}
    
    @UiField TextBox name;
    
    @UiField PasswordTextBox oldPassword;
    
    @UiField PasswordTextBox newPassword;
    
    @UiField Button ok;
    
    @UiField Button cancel;
    
    public Settings(String text) {
        initWidget(GWT.<SettingsUIBinder> create(SettingsUIBinder.class).createAndBindUi(this));
    }
}

Вызываю это так
Код

Settings settings = new Settings(userName.getText());
RootLayoutPanel.get().add(settings);

Работает, но.
1. Фон почему то не затемняется, хотя окно модальное, т.е. клики по другим элементам не работают, пока не закроешь это окно. 
2. Не центруется. Не понимаю, как сделать центрирование через UIBinder ? Вообще, через построение через Java код - это просто, создаешь объект DialogBox, затем вызываешь на нем метод center(); 
Как поступить в данной ситуации ? Как можно взять этот DialogBox, что отрисовался через xml и сделать ему center() ?

Автор: zxspec 6.2.2011, 00:23
Чтобы затемнить фон используйте setGlassEnabled(true);
Пример тут: http://google-web-toolkit.googlecode.com/svn/javadoc/2.1/com/google/gwt/user/client/ui/DialogBox.html

Автор: Samotnik 6.2.2011, 13:49
zxspec, я это использую, взгляните на мой код еще раз smile 

Автор: zxspec 7.2.2011, 00:55
Действительно.
Я проморгал.
И сегодня сам наткнулся на похожее поведение, это было связанно с тем, 
что в  gwt.xml файле модуля у меня была закомментирована строка со стандартным стилем 
Код

<inherits name='com.google.gwt.user.theme.standard.Standard'/>


Автор: Samotnik 7.2.2011, 10:36
zxspec, у меня не закомментирована  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)