2009-09-23 2 views
2

В настоящее время мы используем Eclipse Draw2D/GEF для информационной страницы, описывающей процесс в нашем приложении. Это в основном состоит из матрицы больших квадратов, каждая из которых содержит матрицу меньших квадратов. Первоначально у нас были все квадраты в качестве объектов ГЭФ, но из-за большого объема их показалось, что это не очень хорошо масштабировалось, и представление заняло очень много времени. Затем мы изменили его так, чтобы только большие квадраты были фигурами, а затем рисуем меньшие квадраты, используя графику в paintFigure.Динамическое изменение всплывающей подсказки рисунка draw2d

Проблема, с которой мы сталкиваемся, заключается в том, что мы по-прежнему хотим, чтобы всплывающая подсказка изменялась в зависимости от того, на какой небольшой квадрат вы нависаете. Я попытался сделать это, добавив mouseMotionListener и установив всплывающую подсказку с помощью setTooltip в зависимости от того, где находится мышь. Проблема заключается в том, что после отображения всплывающей подсказки она больше не изменяется при вызове setTooltip.

Кто-нибудь знает об альтернативном способе этого? Есть ли способ получить popupHelper viewpart и использовать его? Любая помощь будет оценена по достоинству.

Thanks

+0

Можете ли вы опубликовать фрагмент кода? – andyczerwonka

ответ

1

Hmnn .. интересный проблема. Поскольку вы рисуете свою собственную сетку внутри фигуры, я бы подумал, что у вас есть два варианта.

  1. Попробуйте опубликовать SWT-события, чтобы обмануть Eclipse. Я бы попытался потерять фокус, за которым последовал целенаправленный успех, чтобы запустить инструмент всплывающей подсказки, после чего вы могли получить координаты и отобразить соответствующее содержимое.

  2. Не используйте рисунок # getTooltip. Просто покажите свой собственный композит.

+0

Спасибо, не подумал о публикации SWT-событий. Хорошая идея.У меня есть, в то же время, реализованный вариант 2, который работает достаточно хорошо. – 2009-10-12 05:14:37

+0

Если это сработало, вы можете отметить это как правильный ответ? Он дает очки - спасибо. :-) – andyczerwonka

1

Чтобы динамически изменить всплывающую подсказку, вы можете удерживать экземпляр всплывающей подсказки. Рисунок на родительском рисунке. В конструкторе родительского рисунка создайте новую всплывающую подсказку (например, метку) и используйте метод setToolTip(), чтобы установить всплывающую подсказку на родительский рисунок.

При изменении модели данных обновленный текст/значок всплывающей подсказки может быть установлен на всплывающую подсказку. Затем вы снова вызываете метод setToolTip (tooltipFigure).

Вы можете иметь метод, как:

защищены Лейбл toolTipLabel;

защищен недействительным updateToolTip (String текст, значок изображения) {
toolTipLabel.setText (текст);
toolTipLabel.setIcon (значок);
setToolTip (toolTipLabel);
}

Метод updateToolTip() может быть использован в conturctor родительской фигуры, чтобы инициализировать всплывающую подсказку. И этот метод можно вызывать каждый раз после изменения модели данных.

Я столкнулся с той же проблемой в своем коде и решил ее с помощью этого метода. В моем коде я вызвал updateToolTip() в методе parentFigure.paintFigure().

Смежные вопросы