package com.constellio.app.modules.rm.ui.components.document.fields; import com.constellio.app.modules.rm.ui.components.document.newFile.NewFileWindow; import com.constellio.app.modules.rm.ui.components.document.newFile.NewFileWindowImpl; import com.constellio.app.ui.entities.ContentVersionVO; import com.constellio.app.ui.framework.components.fields.upload.ContentVersionUploadField; import com.vaadin.data.Property; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import java.util.ArrayList; import java.util.List; import static com.constellio.app.ui.i18n.i18n.$; public class DocumentContentFieldImpl extends ContentVersionUploadField implements DocumentContentField { private Button newFileButton; private NewFileWindowImpl newFileWindow; private List<NewFileClickListener> newFileClickListeners = new ArrayList<>(); private List<ContentUploadedListener> contentUploadedListeners = new ArrayList<>(); public DocumentContentFieldImpl() { super(); addValueChangeListener(new ValueChangeListener() { @Override public void valueChange(Property.ValueChangeEvent event) { for (ContentUploadedListener contentUploadedListener : contentUploadedListeners) { contentUploadedListener.newContentUploaded(); } } }); newFileButton = new Button($("DocumentContentField.newFile")); newFileButton.addClickListener(new ClickListener() { @Override public void buttonClick(ClickEvent event) { for (NewFileClickListener newFileClickListener : newFileClickListeners) { newFileClickListener.newFileClicked(); } } }); getMainLayout().addComponent(newFileButton, 0); getMainLayout().setComponentAlignment(newFileButton, Alignment.TOP_RIGHT); newFileWindow = new NewFileWindowImpl(); } @Override public NewFileWindow getNewFileWindow() { return newFileWindow; } @Override public ContentVersionVO getFieldValue() { return (ContentVersionVO) getConvertedValue(); } @Override public void setFieldValue(Object value) { setInternalValue(value); } @Override public void setNewFileButtonVisible(boolean visible) { newFileButton.setVisible(visible); } @Override public void addNewFileClickListener(NewFileClickListener listener) { newFileClickListeners.add(listener); } @Override public void addNewFileClickListenerIfEmpty(NewFileClickListener listener) { if(newFileClickListeners.isEmpty()) { newFileClickListeners.add(listener); } } @Override public void removeNewFileClickListener(NewFileClickListener listener) { newFileClickListeners.remove(listener); } @Override public void addContentUploadedListener(ContentUploadedListener listener) { contentUploadedListeners.add(listener); } @Override public void removeContentUploadedListener(ContentUploadedListener listener) { contentUploadedListeners.remove(listener); } }