/******************************************************************************* * Copyright (c) 2015 Development Gateway, Inc and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the MIT License (MIT) * which accompanies this distribution, and is available at * https://opensource.org/licenses/MIT * * Contributors: * Development Gateway - initial API and implementation *******************************************************************************/ package org.devgateway.toolkit.forms.wicket.components.form; import java.util.Collection; import org.apache.wicket.event.IEvent; import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.model.IModel; import org.devgateway.toolkit.forms.wicket.components.ComponentUtil; import org.devgateway.toolkit.persistence.dao.FileMetadata; import de.agilecoders.wicket.core.util.Attributes; /** * @author idobre * @since 11/13/14 * * Multi-file upload file component. We use * FileInputBootstrapFormComponentWrapper since BootstrapFileInput it's * not actually a FormComponent * @see FileInputBootstrapFormComponentWrapper */ public class FileInputBootstrapFormComponent extends GenericBootstrapFormComponent<Collection<FileMetadata>, FileInputBootstrapFormComponentWrapper<Collection<FileMetadata>>> { private static final long serialVersionUID = 1L; private Boolean isFloatedInput = false; private FileInputBootstrapFormComponentWrapper<Collection<FileMetadata>> fileInputBootstrapFormComponentWrapper; /** * @param id * @param model */ public FileInputBootstrapFormComponent(final String id, final IModel<Collection<FileMetadata>> model) { super(id, model); } /** * @param id * @param labelModel * @param model */ public FileInputBootstrapFormComponent(final String id, final IModel<String> labelModel, final IModel<Collection<FileMetadata>> model) { super(id, labelModel, model); } /** * @param id */ public FileInputBootstrapFormComponent(final String id) { super(id); } @Override protected void getAjaxFormComponentUpdatingBehavior() { // do nothing; } public FileInputBootstrapFormComponent maxFiles(final int maxFiles) { field.maxFiles(maxFiles); return this; } @Override protected FileInputBootstrapFormComponentWrapper<Collection<FileMetadata>> inputField(final String id, final IModel<Collection<FileMetadata>> model) { fileInputBootstrapFormComponentWrapper = new FileInputBootstrapFormComponentWrapper<>(id, initFieldModel()); return fileInputBootstrapFormComponentWrapper; } @Override protected void onComponentTag(final ComponentTag tag) { super.onComponentTag(tag); if (getIsFloatedInput()) { Attributes.addClass(tag, "floated-input"); } } @Override public void onEvent(final IEvent<?> event) { ComponentUtil.enableDisableEvent(this, event); } public void setVisibleOnlyToAdmin(final Boolean visibleOnlyToAdmin) { fileInputBootstrapFormComponentWrapper.setVisibleOnlyToAdmin(visibleOnlyToAdmin); } public void setDisableDeleteButton(final Boolean disableDeleteButton) { fileInputBootstrapFormComponentWrapper.setDisableDeleteButton(disableDeleteButton); } public Boolean getIsFloatedInput() { return isFloatedInput; } public void setIsFloatedInput(final Boolean isFloatedInput) { this.isFloatedInput = isFloatedInput; } public FileInputBootstrapFormComponentWrapper<Collection<FileMetadata>> getFileInputBootstrapFormComponentWrapper() { return fileInputBootstrapFormComponentWrapper; } }