Как опускаются цифры редакторов ГЭФ во внешнем мире?

StackOverflow https://stackoverflow.com/questions/4897207

Вопрос

После долгих исследований и прочтения этого вопрос Я все еще не нашел" хорошего "решения моей проблемы.

У меня есть редактор Gef, и я хочу, чтобы пользователи перетаскивали фигуры (== объекты модели) из этого редактора в другое настраиваемое представление, доступное в моей перспективе.

Добавление DragSource с моим собственным переносом перетаскивания на холст рисунка редактора GEF позволяет это. Но в качестве побочного эффекта, а я не хочу этого побочного эффекта, это отключает возможность перемещать фигуры ВНУТРИ редактора с помощью перетаскивания.

После расследования я нашел эту запись на форумах eclipse. , но решение мне не подходит. Таким образом, я исследовал глубже и пришел к следующему чистому фрагменту SWT, который показывает, что события MouseMove (те, которые используются gef для поддержки перетаскивания ВНУТРИ редактора) больше не запускаются после добавления источника перетаскивания:

родовое слово

Думаю, это нормальное поведение с точки зрения человека, занимающегося SWT. Вы подтверждаете?

Более того, я действительно ищу решение этой проблемы, отличное от предложенного на форуме Eclipse, заключающееся в активации моего DragSource, только если выполняется заданное условие, например нажатие Shift (это делается в методе DragSourceListener.dragStart. установив для event.doit значение false)

Любая помощь, предложения и комментарии приветствуются.

Заранее спасибо,

Ману

Это было полезно?

Решение

Скорее всего, вы захотите расширить обычное перетаскивание GEF, чтобы оно также содержало поддержку перетаскивания изображений.

Когда вы перетаскиваете элементы внутри редактора GEF, вы можете перетаскивать их как фигуры (на самом деле это немного сложнее, используется шаблон «Запрос-команда»). Но когда ваше перетаскивание выходит за границы редактора, вы должны иметь возможность предоставить, т.е. Изображение вне этих данных.

SWT Обеспечивает поддержку нескольких различных передач данных перетаскиванием, например:

родовое слово

Итак, я считаю, что вы хотите найти способ в GEF DragTracker, чтобы также включить этот ImageTransfer в OS Drag. DragTrackers - это способ GEF для обработки перетаскивания, и они возвращаются функцией getDragTracker() EditPart

Я не совсем уверен, как это можно сделать, но расширение собственного DragTracker, который также может предоставлять изображение уровня ОС, должно помочь.

Случай очень похож на копирование вставки, и в базовом редакторе GMF можно копировать элементы вставки как изображения вне редактора в любой инструмент, принимающий изображения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top