/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE file at the root of the source
* tree and available online at
*
* https://github.com/keeps/roda
*/
package org.roda.wui.client.browse;
import java.util.Arrays;
import org.roda.core.data.common.RodaConstants;
import org.roda.core.data.v2.index.facet.Facets;
import org.roda.core.data.v2.index.filter.Filter;
import org.roda.core.data.v2.index.filter.SimpleFilterParameter;
import org.roda.core.data.v2.index.select.SelectedItems;
import org.roda.core.data.v2.index.select.SelectedItemsList;
import org.roda.core.data.v2.ip.IndexedFile;
import org.roda.wui.client.common.LastSelectedItemsSingleton;
import org.roda.wui.client.common.actions.FileActions;
import org.roda.wui.client.common.lists.SearchFileList;
import org.roda.wui.client.common.lists.pagination.ListSelectionUtils;
import org.roda.wui.client.common.lists.utils.ClientSelectedItemsUtils;
import org.roda.wui.client.common.search.SearchPanel;
import org.roda.wui.common.client.tools.RestUtils;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Widget;
import config.i18n.client.ClientMessages;
public class IndexedFilePreview extends BitstreamPreview<IndexedFile> {
private static final ClientMessages messages = GWT.create(ClientMessages.class);
private SearchFileList folderList = null;
private boolean justActive = true;
public IndexedFilePreview(Viewers viewers, IndexedFile file, boolean justActive, Command onPreviewFailure) {
super(viewers, RestUtils.createRepresentationFileDownloadUri(file.getUUID()), file.getFileFormat(),
file.getOriginalName() != null ? file.getOriginalName() : file.getId(), file.getSize(), file.isDirectory(),
onPreviewFailure, file);
this.justActive = justActive;
}
@Override
protected Widget directoryPreview() {
Filter filter = new Filter(new SimpleFilterParameter(RodaConstants.FILE_PARENT_UUID, getObject().getUUID()));
final FlowPanel layout = new FlowPanel();
final SearchPanel fileSearch = new SearchPanel(filter, RodaConstants.FILE_SEARCH, true,
messages.searchPlaceHolder(), false, false, true);
boolean selectable = true;
boolean showFilesPath = false;
this.folderList = new SearchFileList(filter, justActive, Facets.NONE, messages.representationListOfFiles(),
selectable, showFilesPath);
LastSelectedItemsSingleton.getInstance().setSelectedJustActive(justActive);
this.folderList.setActionable(FileActions.get(getObject().getAipId(), getObject().getRepresentationId()));
fileSearch.setList(folderList);
layout.add(fileSearch);
layout.add(folderList);
ListSelectionUtils.bindBrowseOpener(folderList);
return layout;
}
public SelectedItems<IndexedFile> getSelected() {
SelectedItems<IndexedFile> ret = SelectedItemsList.create(IndexedFile.class, Arrays.asList(getObject().getUUID()));
if (folderList != null) {
SelectedItems<IndexedFile> listSelected = folderList.getSelected();
if (!ClientSelectedItemsUtils.isEmpty(listSelected)) {
ret = listSelected;
}
}
return ret;
}
public void refresh() {
if (folderList != null) {
folderList.refresh();
}
}
}