public static GridPanel getFilesByAnalysisPanel( WaspPluginRegistry pluginRegistry, FileUrlResolver fileUrlResolver, FileService fileService, List<FileGroup> analysisFileGroupList, Map<FileGroup, List<FileGroup>> outerCollectionFileGroupInnerFileGroupListMap) { // create the panel GridPanel panel = new GridPanel(); panel.setTitle("Files By Analysis"); panel.setResizable(true); panel.setMaximizable(true); panel.setOrder(1); panel.setGrouping(true); panel.setGroupField("Analysis"); // create content (think of it as the table) GridContent content = new GridContent(); // create the data model content.addDataFields( new GridDataField( "Analysis", "String")); // THIS WILL BE THE UNIQUE GROUPING FIELD //dataIndex, datatype content.addDataFields(new GridDataField("File", "String")); // dataIndex, datatype content.addDataFields(new GridDataField("Size", "String")); // dataIndex, datatype content.addDataFields(new GridDataField("MD5", "String")); // dataIndex, datatype // create columns and associate each column with its displayed header and a data model attribute // (dataIndex) /////// unique grouping field is NOT displayed: content.addColumn(new GridColumn("Analysis", // "Analysis"));//header,dataIndex content.addColumn( new GridColumn("File", "File", 1, true)); // header,dataIndex flex=1, shown in tooltip content.addColumn( new GridColumn("Size", "Size", 100, 0)); // header,dataIndex width=270; flex=0 content.addColumn( new GridColumn("MD5", "MD5", 170, 0)); // header,dataIndex width=270; flex=0 for (FileGroup outerCollectionFileGroup : analysisFileGroupList) { String headerForGroup = outerCollectionFileGroup.getDescription(); for (FileGroup innerFileGroup : outerCollectionFileGroupInnerFileGroupListMap.get(outerCollectionFileGroup)) { List<String> row = new ArrayList<String>(); row.add(headerForGroup); // won't be displayed on each row, but will be the header for each // section (but must be part of the row) FileHandle fileHandle = new ArrayList<FileHandle>(innerFileGroup.getFileHandles()).get(0); row.add(fileHandle.getFileName()); Integer sizeK = fileHandle.getSizek(); if (sizeK != null) { row.add(fileHandle.getSizek().toString()); } else { row.add(""); } row.add(fileHandle.getMd5hash()); content.addDataRow(row); // add the new row to the content List<Action> actionList = new ArrayList<Action>(); // add download action to the list String resolvedURL = ""; try { resolvedURL = fileUrlResolver.getURL(fileHandle).toString(); } catch (Exception e) { logger.debug("UNABLE TO RESOLVE URL for file: " + fileHandle.getFileName()); } actionList.add( new Action("icon-download", "Download", CallbackFunctionType.DOWNLOAD, resolvedURL)); if (!fileService.getTabViewProvidingPluginsByFileGroup(innerFileGroup).isEmpty()) actionList.add( new Action( "icon-view-file", "View", CallbackFunctionType.OPEN_IN_CSS_WIN, innerFileGroup.getId().toString())); List<GenomeBrowserProviding> plugins = new ArrayList<>(); plugins.addAll(pluginRegistry.getPlugins(GenomeBrowserProviding.class)); for (GenomeBrowserProviding plugin : plugins) { Action action = plugin.getAction(innerFileGroup); if (action != null) { actionList.add(action); } } content.addActions(actionList); } } panel.setContent(content); return panel; }
public static GridPanel getLibrariesAndHcountFilesUsedByAnalysisPanel( List<FileGroup> analysisFileGroupList, Map<FileGroup, List<Sample>> fileGroupLibrariesUsedMap, Map<FileGroup, List<FileHandle>> fileGroupHcountFilesUsedMap) { GridPanel panel = new GridPanel(); panel.setTitle("Libraries & Hcount Files Used"); panel.setResizable(true); panel.setMaximizable(true); panel.setOrder(1); GridContent content = new GridContent(); content.addDataFields(new GridDataField("Analysis", "String")); // dataIndex, datatype content.addDataFields(new GridDataField("Libraries Used", "String")); // dataIndex, datatype content.addDataFields(new GridDataField("Hcount Files Used", "String")); // dataIndex, datatype content.addColumn( new GridColumn("Analysis", "Analysis", 500, 0)); // header,dataIndex width=500; flex=0 content.addColumn( new GridColumn( "Libraries Used", "Libraries Used", 150, 0)); // header,dataIndex width=300; flex=0 content.addColumn( new GridColumn("Hcount Files Used", "Hcount Files Used", 1)); // header,dataIndex flex=1 // create rows with information for (FileGroup fileGroup : analysisFileGroupList) { List<String> row = new ArrayList<String>(); row.add(fileGroup.getDescription()); List<Sample> libraries = fileGroupLibrariesUsedMap.get(fileGroup); if (libraries.isEmpty()) { row.add("Error"); } else { StringBuilder libraryNamesAsStringBuilder = new StringBuilder(); for (Sample library : libraries) { if (libraryNamesAsStringBuilder.length() > 0) { libraryNamesAsStringBuilder.append("<br />"); } libraryNamesAsStringBuilder.append(library.getName()); } row.add(new String(libraryNamesAsStringBuilder)); } List<FileHandle> bamFiles = fileGroupHcountFilesUsedMap.get(fileGroup); if (bamFiles.isEmpty()) { row.add("Error"); } else { StringBuilder fileNamesAsStringBuilder = new StringBuilder(); for (FileHandle fh : bamFiles) { if (fileNamesAsStringBuilder.length() > 0) { fileNamesAsStringBuilder.append("<br />"); } fileNamesAsStringBuilder.append(fh.getFileName()); } row.add(new String(fileNamesAsStringBuilder)); } content.addDataRow(row); } panel.setContent(content); return panel; }