Я не думаю, что вам нужно 2 точки входа. Как сказал Киран выше, вы должны повторно использовать весь код, кроме компонентов представления. Если вы использовали модуль «Действия и места» GWT, компоненты представления должны быть полностью отделены от остального кода.
В этом случае вы можете использовать метод GWT.create, связанный с правильными определениями в определении модуля xml:
// в вашей точке входа:
private IClientFactory clientFactory = GWT.create(IClientFactory.class);
// в определении xml вашего модуля:
<replace-with class="com.vv.xui.client.DesktopClientFactory">
<when-type-is class="com.vv.xui.client.IClientFactory" />
<when-property-is name="formfactor" value="desktop"/>
</replace-with>
<replace-with class="com.vv.xui.client.MobileClientFactory">
<when-type-is class="com.vv.xui.client.IClientFactory" />
<when-property-is name="formfactor" value="mobile"/>
</replace-with>
Свойство форм-фактора можно определить, как в этом примере: https://code.google.com/p/gwt-cx/source/browse/trunk/gwtcx/gwtcx-core/gwtcx-core-client./src/main/resources/com/gwtcx/FormFactor.gwt.xml
В вашем IClientFactory у вас будет что-то вроде этого:
public interface IClientFactory {
IHomeView getHomeView();
ISearchView getSearchView();
...
}
Где IHomeView и ISearchView — это интерфейсы просмотра, реализованные в настольной и мобильной версиях. В моем случае реализации представления представляют собой компоненты UiBinder, которые реализуют связанный интерфейс представления.
В вашем DesktopClientFactory у вас будет что-то вроде этого:
public class DesktopClientFactory implements IClientFactory {
private static final ISearchView searchView = new com.vv.xui.client.view.desktop.SearchView.SearchView();
@Override
public ISearchView getSearchView() {
return searchView;
}
...
}
Таким образом, вам не нужны разные точки входа для мобильных и настольных компьютеров, и вы можете совместно использовать весь код, кроме компонентов представления.
person
vlad_dd
schedule
24.04.2014