Я пытаюсь изменить изображение внутри изображения.eclipse scout изменение изображения
Я знаю, что getTestImageField().setImageId(Icons.Logo);
не будет работать, потому что он не обновит рендер.
Потому что мне нужно использовать setImage()
, мне нужен способ получить изображение от Icons
класс.
Как Патрик предложил мне попробовать
final IconProviderService provider = SERVICES.getService(IconProviderService.class);
final IconSpec ic = provider.getIconSpec(AbstractIcons.StatusError);
final byte[] content = ic.getContent();
, но моя проблема в том, что ic
всегда null
.
В то время как я отладка это я замечаю, что внутри IconProviderService.class
в строке 57:
@Override
protected URL findResource(String fullPath) {
URL[] entries = FileLocator.findEntries(m_hostBundle, new Path(fullPath));
if (entries != null && entries.length > 0) {
URL url = entries[entries.length - 1];
if (LOG.isDebugEnabled()) {
LOG.debug("find image " + fullPath + " in bundle " + m_hostBundle.getSymbolicName() + "->" + url);
}
return url;
}
return null;
}
URL[]
запись всегда пустая нет иконки дела ведьмы я пытаюсь представить.
После дополнительной отладки я узнал, что FileLocator
пытается найти фрагменты из пакета, а затем искать путь внутри этих фрагментов. (line 242
)
Bundle[] fragments = activator.getFragments(b);
но Bundle[] fragments
всегда нуль.
Обычно мой комплект b
- (Bundle) EquinoxBundle : org.eclipse.scout.rt.ui.rap.mobile_4.0.100.20140829-1424
.
Я хочу попробовать с разной пачкой поэтому я:
final BundleContext context = Activator.getDefault().getBundle().getBundleContext();
for (final Bundle b : context.getBundles()) {
final IconProviderService provider = SERVICES.getService(IconProviderService.class);
provider.setHostBundle(b);
final IconSpec ic = provider.getIconSpec(AbstractIcons.StatusError);
if (ic != null) {
final byte[] content = ic.getContent();
imageField().setImage(content);
}
}
но fragments
(из выше коды) всегда нуля.
Это звучит как твердый орешек для взлома. Не могли бы вы добавить следующую информацию: Иконы работают для вас вообще? (например, getConfiguredIconId в столбце таблицы) Где находится файл значков (png), который вы хотите отобразить? Где находится соответствующий класс Icons (файл java)? В каком комплекте вы извлекаете значок? Каково значение m_hostBundle в AbstractIconProviderService во время вызова для получения IconSpec? – Patrick
Да, настройки значков работают. Если я установлю getConfiguredIconId, он будет работать, и если в кодовом наборе setIconId и странице обновления он будет работать. Значки по умолчанию - это значки по умолчанию, которые входят в Scout, или значки, которые я добавляю (клиент/ресурсы/значки/...). Icons.class находится в общей папке (root). Пакет, как я писал: org.eclipse.scout.rt.ui.rap.mobile. –
Я пытаюсь установить другой пакет provider.setHostBundle (Activator.getDefault(). GetBundle()); но он тоже не работал. –