Добрый день!
На редакторе некоторой сущности на кнопке закрыть висит следующий код:
public void onWindowCloseBtnClick() {
if (super.isModifiedAfterOpen())
dialogs.createOptionDialog()
.withCaption("Закрытие редактирования точки поставки")
.withMessage("Сохранить данные?")
.withActions(new DialogAction(DialogAction.Type.YES, Action.Status.PRIMARY)
.withIcon("YES")
.withHandler(e -> onWindowCommitAndCloseBtnClick()),
new DialogAction(DialogAction.Type.NO)
.withIcon("CLOSE")
.withHandler(e -> this.closeWithDiscard())
).show();
else
this.closeWithDiscard();
}
Работает штатно, до тех пор пока я не открываю вкладку, где находится фрагмент с таблицей сущностей EntityLog. После открытия этой вкладки, при нажатии на кнопку он видит какие то изменения и выводит диалоговое окно, хотя никаких изменений внесено не было. Причем даже если нажать ДА на диалоговом окне и сохранить эти фантомные изменения, по факту ничего изменено не будет. Может есть какие то мысли откуда берутся эти изменения?
Контроллер фрагмента из вкладки:
public class EntityLogFragment extends ScreenFragment {
@Inject
private CollectionLoader<EntityLogItem> entityLogItemsDl;
@Inject
private Table<EntityLogItem> logsTable;
private UUID entityId;
@Inject
private Fragments fragments;
@Inject
private CollectionContainer<EntityLogItem> entitylogsDc;
@Subscribe
public void onInit(InitEvent event) {
entityLogItemsDl.setParameter("entity", entityId);
entityLogItemsDl.load();
}
public void setEntityId(UUID entityId) {
this.entityId = entityId;
}
public Component generateAttrTableCell(EntityLogItem entity) {
EntityLogAttributesTable attributesTable = fragments.create(this, EntityLogAttributesTable.class);
attributesTable.getFragment().setWidthFull();
attributesTable.getFragment().setHeightFull();
attributesTable.setAttributes(entity.getAttributes());
String title = entity.getEventTs().toLocaleString() + ", Пользователь: " + entity.getUser().getName()+ " (" + entity.getUser().getLogin()+")";
attributesTable.setTitle(title);
return attributesTable.getFragment();
}
}
Контроллер вложенного фрагмента
public class EntityLogAttributesTable extends ScreenFragment {
@Inject
private CollectionLoader<EntityLogAttr> entityLogItemsDl;
@Inject
private CollectionContainer<EntityLogAttr> entitylogsDc;
@Inject
private GroupBoxLayout logBox;
public void setAttributes(Set<EntityLogAttr> attributes){
List<EntityLogAttr> attrToShow = new ArrayList<>();
for (EntityLogAttr attr : attributes){
if (attr.getOldValue() != null && attr.getValue() != null)
attrToShow.add(attr);
}
entitylogsDc.setItems(attrToShow);
}
public void setTitle(String s){
logBox.setCaption(s);
}
}