Поддерживает ли wicket-stuff-gmap3 DropTarget? - PullRequest
0 голосов
/ 20 сентября 2018

Я занимаюсь разработкой веб-приложения с использованием Apache Wicket 6 и WicketStuff GMap3 , а также wicketdnd Свена Мейера.На главной странице у меня есть таблица элементов и экземпляр виджета GMap3.

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

Я добавил DragSource в таблицу следующим образом:

DefaultDataTable dataTable = new DefaultDataTable(ID_CUSTOM_TABLE, columns, new CustomDataProvider(), 5) {
                                @Override
                                protected Item newRowItem(String id, int index, IModel model) {
                                    Item item = super.newRowItem(id, index, model);
                                    item.setOutputMarkupId(true);
                                    return item;
                                }
                            };

dataTable.add(new WebTheme());
dataTable.add(new DragSource(Operation.COPY) {
                    public void onBeforeDrop(AjaxRequestTarget target, Transfer transfer) {
                        logger.info("We are before the DROP");
                    }
                    public void onAfterDrop(AjaxRequestTarget target, Transfer transfer) {
                        logger.info("we are after the DROP");
                    }
                }.drag("tr"));

final MarkupContainer ajaxPanel = new WebMarkupContainer(ID_AJAX_FORM_PANEL);
ajaxPanel.setOutputMarkupId(true);
ajaxPanel.add(dataTable);

и целевой объект Drop для виджета GMap3 следующим образом:

GMap map = new GMap(ID_GMAP, GMAP_TOKEN);
map.setCenter(new GLatLng(51.209096,-1.5238051));
map.setMapType(GMapType.ROADMAP);
map.setZoom(10);
map.setStreetViewControlEnabled(false);
map.setScrollWheelZoomEnabled(false);
map.setZoomControlEnabled(false);
map.setScaleControlEnabled(false);
map.setOutputMarkupId(true);
map.add(new DropTarget(Operation.COPY) {
                @Override
                public void onDrag(AjaxRequestTarget target, Location location) {
                    logger.info("Map got drag event.");
                }
                @Override
                public void onDrop(AjaxRequestTarget target, Transfer transfer, Location location) throws Reject {
                    logger.info("Map got drop event.");
                }
            }.dropCenter("div"));
final MarkupContainer ajaxMapPanel = new WebMarkupContainer(ID_AJAX_MAP_PANEL);

ajaxMapPanel.add(map);

Фрагмент HTML для карты приведен ниже:

<div wicket:id="map.ajaxpanel" style="width:1580px;height:680px;background:white">
    <div id="map" wicket:id="map" style="width:1580px;height:680px;background:white"/>
</div>

Кто-нибудь решил эту проблему и если да, то как ты это сделал?

Большое спасибо.

...