Как написать полностью настраиваемые виджеты, узнаваемые GWT Designer? - PullRequest
3 голосов
/ 12 августа 2011

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

Предположим, что я хочу создать свою собственную панель с нуля и не хочу расширять стандартные панели GWT.Я хочу, чтобы GWT Designer распознавал мою панель и предоставлял те же функциональные возможности, которые она предоставляет при использовании стандартных панелей gwt.

Насколько я знаю, фреймворки, такие как Ext-GWT, писали свои библиотеки виджетов с нуля, и все же они работаютв унисон с GWT Designer.Нужно ли реализовывать определенные методы в моей пользовательской панели для достижения этой функциональности?Любые рекомендации или идеи приветствуются.

Спасибо

Ответы [ 2 ]

3 голосов
/ 22 сентября 2011

Подводя итог, поддержка нового компонента требует добавления специальной поддержки этого компонента в GWT Designer.Предположим, у меня есть пользовательский компонент, который я хочу, чтобы он действовал как VerticalPanel, но который является составным типом:

public class CustomPanel extends Composite implements HasWidgets{
    private VerticalPanel panel = new VerticalPanel();
    public CustomPanel() {
        initWidget(panel);
    }   
    @Override
    public void add(Widget w) {panel.add(w);}
    @Override
    public void clear() {panel.clear();}
    @Override
    public Iterator<Widget> iterator() {return panel.iterator();}
    @Override
    public boolean remove(Widget w) {return panel.remove(w);}
}

Это будет работать как VerticalPanel, но когда вы смотрите с точки зрения дизайнеров, это все ещеКомпозит.В результате вы не можете сбросить виджеты внутри него.В простейшем случае, чтобы сделать его удобным для дизайнера, вам нужно создать CustomPanel.wbp-component.xml в том же пакете CustomPanel, следуя указанному соглашению об именах.Простой способ задать поток, подобный поведению при добавлении виджета, будет:

<?xml version="1.0" encoding="UTF-8"?>
<component xmlns="http://www.eclipse.org/wb/WBPComponent">
    <description>This is a simple Composite acting like VerticalPanel</description>
    <!-- CREATION -->
    <creation>
        <source><![CDATA[new org.test.client.CustomPanel()]]></source>
    </creation>
    <parameters>
        <parameter name="flowContainer">true</parameter>
        <parameter name="flowContainer.horizontal">false</parameter>
        <parameter name="flowContainer.association">%parent%.add(%child%)</parameter>   
    </parameters>
</component>

. После добавления этого шага ваш композит должен обрабатываться как вертикальная панель (отбрасывание виджетов внутри поддержки) и дизайнером gwt.Если одного этого XML недостаточно, то есть вам нужно более сложное поведение, вам нужно начать писать классы моделей Java, которые определяют пользовательское поведение вашего компонента, в Designer и ссылаться на него в xml компонента с помощью тега <model>.В этом случае вам нужно написать плагин для размещения ваших моделей и политик.

Вот ссылки на эту сводку и полезные ссылки:

0 голосов
/ 12 августа 2011

В документации GWT Designer есть страница о пользовательских композитах и ​​панелях , но они относятся к компонентам Swing и SWT.Что касается GWT, в документации рекомендуется использовать менеджеры компоновки GWT для максимальной переносимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...