Окно RCP4 теряет цвет фона при закрытии и повторном открытии - PullRequest
0 голосов
/ 31 декабря 2018

Я создал это приложение для управления пользователями и применил к нему некоторые стили.Все цвета фона моих окон выглядят нормально при первом просмотре, но если я закрою их с помощью кнопки отмены или иным образом, а затем снова открою их, цвет фона просто исчезнет.Я подумал, что это может быть связано с тем, как я закрываю окна, устанавливая для отображения значение false, но этого не может быть, потому что кнопки и группы все еще сохраняют свой стиль.Может кто-нибудь сказать мне, почему это происходит и как это исправить?Если я должен выложить больше кода, пожалуйста, запросите это.Спасибо!

enter image description hereenter image description here

Я назначаю стилизацию здесь:

@PostConstruct
public void postConstruct(Composite parent) 
{
    parent.setData("org.eclipse.e4.ui.css.CssClassName", "ColorGrad");

    RoleController roleController = new RoleController();
    parent.getShell().setBounds(0, 0, 380, 435);

    parent.setLayout(null);
    ......

Кнопка отменыфункция, если она действительно как-то связана с этим:

btnCancel = new Button(parent, SWT.NONE);
btnCancel.setBounds(185, 354, 160, 36);
btnCancel.setText("Cancel");
btnCancel.setData("org.eclipse.e4.ui.css.CssClassName", "orange");
btnCancel.addSelectionListener(new SelectionListener( ) {
    public void widgetDefaultSelected(SelectionEvent e) {
    }

    public void widgetSelected(SelectionEvent e) {
        modelService.find("ats_usermanagement_rcp.part.UserAddDialog", application).setToBeRendered(false);
        modelService.find("ats_usermanagement_rcp.dialog.UserAdmin", application).setToBeRendered(false);
    }
});

CSS:

.ColorGrad
{
    swt-background-mode: default;
    background-color: #697d87 #ff4612 #697d87 #697d87 #ff4612 60% 90% 95% 100%  
}

1 Ответ

0 голосов
/ 07 января 2019

Это работает для меня:

В Application.e4xmi у меня есть окно, содержащее одну деталь. Только Окно «должно быть визуализировано» отключено.

Обработчик для отображения окна:

@Execute
public void execute(final EModelService modelService, final MApplication app)
{
  final var window = modelService.find("window-id", app);

  window.setToBeRendered(true);
}

Класс детали имеет:

@PostConstruct
public void postConstruct(final Composite parent, final EModelService modelService, final MApplication app)
{
  final var comp = new Composite(parent, SWT.None);
  comp.setLayout(new GridLayout());

  comp.setData("org.eclipse.e4.ui.css.CssClassName", "css-class-name");

  final var close = new Button(comp, SWT.PUSH);
  close.setText("Close");
  close.addListener(SWT.Selection, event ->
    {
      final var window = modelService.find(("window-id", app);

      window.setToBeRendered(false);
    });
}

Это установка стиля CSS для Composite, который является единственным потомком parent.

Этот код для Java 10 или более поздней версии (он использует var), он потребует небольших измененийдля более ранних версий Java.

...