import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
+import org.zkoss.bind.BindUtils;
+import org.zkoss.bind.annotation.Command;
import org.zkoss.zul.ListModelList;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
@Log4j2
@Component
private EDocumentRepository eDocumentRepository;
- public EDocument refresh(Long referenceId, String documentType) {
+ public EDocument getSelectedDocument() {
EDocument result = null;
+ Set<EDocument> documents = getSelection();
+ Optional<EDocument> document = documents.stream().findFirst();
+ if (document.isPresent()) {
+ result = document.get();
+ }
+ return result;
+ }
+
+
+ public void setSelectedDocument(EDocument document) {
+ clearSelection();
+ if (Objects.nonNull(document)) {
+ addToSelection(document);
+ }
+ BindUtils.postNotifyChange(this, "selectedDocument");
+ }
+
+ public void refresh(Long referenceId, String documentType) {
clear();
List<EDocument> documents = eDocumentRepository.findByReferenceIdAndDocumentType(referenceId, documentType);
addAll(documents);
if (!documents.isEmpty()) {
- result = documents.stream().findFirst().get();
+ setSelectedDocument(documents.stream().findFirst().get());
}
- return result;
}
public void addNew(EDocument document) {
added.add(document);
-// selectedDocument = document;
add(document);
+ setSelectedDocument(document);
}
public void remove() {
- Set<EDocument> documents = getSelection();
- if (documents.isEmpty()) {
- return;
- }
- removed.addAll(documents);
-// clearSelection();
-// selectedDocument = null;
- removeAll(documents);
+ EDocument selectedDocument = getSelectedDocument();
+ removed.add(selectedDocument);
+ setSelectedDocument(null);
+ remove(selectedDocument);
}
public void save(Long entityId) {
public boolean isChanged() {
return !added.isEmpty() || !removed.isEmpty();
}
+
+ @Command
+ public void onSelectionChanged() {
+ BindUtils.postNotifyChange(this, "selectedDocument");
+ }
}
import hu.user.lis.db.EDocument;
import hu.user.lis.ui.data.EntityDocumentDataModel;
import lombok.Getter;
-import lombok.Setter;
import lombok.extern.log4j.Log4j2;
import org.zkoss.bind.BindContext;
import org.zkoss.bind.BindUtils;
@WireVariable
private EntityDocumentDataModel entityDocumentDataModel;
- @Getter
- @Setter
- private EDocument selectedDocument;
-
protected boolean canSave(T entity) {
return true;
}
validate();
}
-// @Command
-// public void onSelectFile(@BindingParam("selectedDocument") EDocument selectedDocument) {
-// entityDocumentDataModel.clearSelection();
-// entityDocumentDataModel.addToSelection(selectedDocument);
-// entityDocumentDataModel.setSelectedDocument(selectedDocument);
-// }
-
@Override
protected boolean areDifferent(T entity) {
return super.areDifferent(entity) || entityDocumentDataModel.isChanged();
onUpload="@command('onUploadFile')"/>
<toolbarbutton label="Törlés" iconSclass="z-icon-remove"
onClick="@command('onRemoveFile')"
- disabled="@load(empty vm.selectedDocument)"/>
+ disabled="@load(empty vm.entityDocumentDataModel.selectedDocument)"/>
</toolbar>
</north>
- <west title="Fájlok" size="25%" flex="true" border="none" splittable="true" collapsible="true">
+ <west title="Fájlok" size="160px" flex="true" border="none" splittable="true" collapsible="true">
<listbox vflex="true" hflex="true" model="@load(vm.entityDocumentDataModel)" multiple="false"
- sizedByContent="true" selectedItem="@bind(vm.selectedDocument)">
+ sizedByContent="true" onSelect="@command(vm.entityDocumentDataModel.onSelectionChanged())">
<listhead visible="false">
- <listheader hflex="true"/>
+ <listheader hflex="true" align="center"/>
</listhead>
<template name="model">
<listitem>
- <listcell>
- <button iconSclass="z-icon-file-pdf-o"/>
- <label value="@load(each.name)"/>
+ <listcell iconSclass="z-icon-file-pdf-o" style="font-size: 1.5em">
+ <vlayout>
+ <label value="@load(each.name)"/>
+ </vlayout>
</listcell>
</listitem>
</template>
</west>
<center border="none" hflex="true" vflex="true">
<iframe hflex="true" vflex="true"
- content="@load(vm.selectedDocument.file) @converter('hu.user.lis.ui.converter.ByteArrayToAMediaConverter')"/>
+ content="@load(vm.entityDocumentDataModel.selectedDocument.file) @converter('hu.user.lis.ui.converter.ByteArrayToAMediaConverter')"/>
</center>
</borderlayout>
</zk>
\ No newline at end of file