Gwt 创建可重用的布局样式
我想创建一个布局uibinder以在其他uibinder中使用 我有一个我经常使用的布局模式,里面有很多html,还有一个放置内容的地方。我想创建一个uibinder并将所有与布局相关的html放入其中,然后在我的其他uibinder中使用此uibinder(称之为Gwt 创建可重用的布局样式,gwt,uibinder,Gwt,Uibinder,我想创建一个布局uibinder以在其他uibinder中使用 我有一个我经常使用的布局模式,里面有很多html,还有一个放置内容的地方。我想创建一个uibinder并将所有与布局相关的html放入其中,然后在我的其他uibinder中使用此uibinder(称之为),并从xml文件中提供其内部html,如下所示: <my:myHTMLPanel> Hello world(+other wigets or html) </my:myHTMLPanel> <m
),并从xml文件中提供其内部html,如下所示:
<my:myHTMLPanel>
Hello world(+other wigets or html)
</my:myHTMLPanel>
<my:myHTMLPanel>
How are you
</my:myHTMLPanel>?
Hello world(+其他wigets或html)
你好吗
?
这可能吗?在自定义小部件“myHTMLPanel”中,您可以添加以下功能:
@UiChild
public void addContent(Widget content) {
// add the content in your custom widget
}
然后,您可以像在ui.xml部分中那样使用它:
<my:myHTMLPanel>
<my:content>
<g:HTML> Hello world </g:HTML>
</my:content>
</my:myHTMLPanel>
你好,世界
.VCenter{
垂直对齐:中间对齐;
}
包装;
导入java.util.Iterator;
导入com.google.gwt.core.client.gwt;
导入com.google.gwt.dom.client.Style.Unit;
导入com.google.gwt.dom.client.TableElement;
导入com.google.gwt.event.dom.client.ClickEvent;
导入com.google.gwt.event.dom.client.ClickHandler;
导入com.google.gwt.event.dom.client.HasClickHandlers;
导入com.google.gwt.event.shared.GwtEvent;
导入com.google.gwt.event.shared.HandlerManager;
导入com.google.gwt.event.shared.HandlerRegistration;
导入com.google.gwt.uibinder.client.uibinder;
导入com.google.gwt.uibinder.client.UiChild;
导入com.google.gwt.uibinder.client.UiConstructor;
导入com.google.gwt.uibinder.client.UiField;
导入com.google.gwt.user.client.ui.HTMLPanel;
导入com.google.gwt.user.client.ui.haswidget;
导入com.google.gwt.user.client.ui.IsWidget;
导入com.google.gwt.user.client.ui.Widget;
公共类vCenter实现HasWidgets、IsWidget和HasClickHandler{
专用静态vCenter eDubinder uiBinder=GWT
.create(vcenteredubinder.class);
接口vCenter扩展UiBinder{
}
HandlerManager HandlerManager;
@UiField HTMLPanel容器;
@UiField HTMLPanel包装器;
@UiField表元素表;
公共空间设置高度(字符串高度){
Table.getStyle().setHeight(Integer.parseInt(height),Unit.PX);
}
public@ui(字符串高度){
handlerManager=新的handlerManager(容器);
uiBinder.createAndBindUi(这个);
设置高度(高度);
}
@凌驾
公共小部件asWidget(){
返回包装器;
}
@乌伊奇尔德
公共void addContent(小部件内容){
容器。添加(内容);
}
@凌驾
公共无效添加(小部件w){
容器。添加(w);
}
@凌驾
公共空间清除(){
容器。清除();
}
@凌驾
公共迭代器迭代器(){
返回Container.iterator();
}
@凌驾
公共布尔删除(小部件w){
返回容器。移除(w);
}
@凌驾
公共无效火灾事件(GwtEvent事件){
handlerManager.fireEvent(事件);
}
@凌驾
公共句柄注册addClickHandler(ClickHandler处理程序){
return Container.addDomHandler(handler,ClickEvent.getType());
}
}
这是一个用于垂直居中未知高度儿童的uibinder
<!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:style>
.VCenter {
vertical-align: middle;
}
</ui:style>
<g:HTMLPanel styleName="{style.VCenter}" ui:field="Wrapper">
<table class="{style.VCenter}" width="100%" valign="middle" border="0" ui:field="Table">
<tr class="{style.VCenter}" valign="middle">
<td class="{style.VCenter}" valign="middle">
<g:HTMLPanel styleName="{style.VCenter}" ui:field="Container"></g:HTMLPanel>
</td>
</tr>
</table>
</g:HTMLPanel>
</ui:UiBinder>
package package;
import java.util.Iterator;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.dom.client.TableElement;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiChild;
import com.google.gwt.uibinder.client.UiConstructor;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
public class VCentered implements HasWidgets, IsWidget, HasClickHandlers {
private static VCenteredUiBinder uiBinder = GWT
.create(VCenteredUiBinder.class);
interface VCenteredUiBinder extends UiBinder<Widget, VCentered> {
}
HandlerManager handlerManager;
@UiField HTMLPanel Container;
@UiField HTMLPanel Wrapper;
@UiField TableElement Table;
public void setHeight(String height) {
Table.getStyle().setHeight(Integer.parseInt(height), Unit.PX);
}
public @UiConstructor VCentered(String height) {
handlerManager = new HandlerManager(Container);
uiBinder.createAndBindUi(this);
setHeight(height);
}
@Override
public Widget asWidget() {
return Wrapper;
}
@UiChild
public void addContent(Widget content) {
Container.add(content);
}
@Override
public void add(Widget w) {
Container.add(w);
}
@Override
public void clear() {
Container.clear();
}
@Override
public Iterator<Widget> iterator() {
return Container.iterator();
}
@Override
public boolean remove(Widget w) {
return Container.remove(w);
}
@Override
public void fireEvent(GwtEvent<?> event) {
handlerManager.fireEvent(event);
}
@Override
public HandlerRegistration addClickHandler(ClickHandler handler) {
return Container.addDomHandler(handler, ClickEvent.getType());
}
}