< prev index next >

application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/pages/FileIOPage.java

Print this page

        

*** 167,176 **** --- 167,177 ---- private static final String LIST_ELEMENT = "eventList"; //$NON-NLS-1$ private static final String TABLE_ELEMENT = "table"; //$NON-NLS-1$ private final ChartCanvas timelineCanvas; private final ChartCanvas durationCanvas; + private final ChartCanvas sizeCanvas; private XYChart timelineChart; private IRange<IQuantity> timeRange; private IItemCollection selectionItems; private final ItemList itemList; private final ItemHistogram table;
*** 218,243 **** t2.setText(Messages.PAGES_DURATIONS); t2.setControl(durationCanvas); DataPageToolkit.createChartTooltip(durationCanvas); CTabItem t3 = new CTabItem(tabFolder, SWT.NONE); ! t3.setToolTipText(Messages.IO_PAGE_EVENT_LOG_DESCRIPTION); itemList = LIST.buildWithoutBorder(tabFolder, getTableSettings(state.getChild(LIST_ELEMENT))); MCContextMenuManager itemListMm = MCContextMenuManager .create(itemList.getManager().getViewer().getControl()); ColumnMenusFactory.addDefaultMenus(itemList.getManager(), itemListMm); SelectionStoreActionToolkit.addSelectionStoreActions(pageContainer.getSelectionStore(), itemList, Messages.FileIOPage_LOG_SELECTION, itemListMm); itemList.getManager().getViewer().addSelectionChangedListener( e -> pageContainer.showSelection(ItemCollectionToolkit.build(itemList.getSelection().get()))); ! t3.setText(Messages.PAGES_EVENT_LOG); itemListFilter = FilterComponent.createFilterComponent(itemList, FileIOPage.this.itemListFilter, getDataSource().getItems().apply(TABLE_ITEMS), pageContainer.getSelectionStore()::getSelections, this::onListFilterChange); itemListMm.add(itemListFilter.getShowFilterAction()); itemListMm.add(itemListFilter.getShowSearchAction()); ! t3.setControl(itemListFilter.getComponent()); tableFilter.loadState(state.getChild(FILE_IO_TABLE)); itemListFilter.loadState(state.getChild(FILE_IO_LIST)); tabFolder.setSelection(tabFolderIndex); --- 219,251 ---- t2.setText(Messages.PAGES_DURATIONS); t2.setControl(durationCanvas); DataPageToolkit.createChartTooltip(durationCanvas); CTabItem t3 = new CTabItem(tabFolder, SWT.NONE); ! t3.setToolTipText(Messages.IO_PAGE_SIZE_DESCRIPTION); ! sizeCanvas = new ChartCanvas(tabFolder); ! t3.setText(Messages.PAGES_SIZE); ! t3.setControl(sizeCanvas); ! DataPageToolkit.createChartTooltip(sizeCanvas); ! ! CTabItem t4 = new CTabItem(tabFolder, SWT.NONE); ! t4.setToolTipText(Messages.IO_PAGE_EVENT_LOG_DESCRIPTION); itemList = LIST.buildWithoutBorder(tabFolder, getTableSettings(state.getChild(LIST_ELEMENT))); MCContextMenuManager itemListMm = MCContextMenuManager .create(itemList.getManager().getViewer().getControl()); ColumnMenusFactory.addDefaultMenus(itemList.getManager(), itemListMm); SelectionStoreActionToolkit.addSelectionStoreActions(pageContainer.getSelectionStore(), itemList, Messages.FileIOPage_LOG_SELECTION, itemListMm); itemList.getManager().getViewer().addSelectionChangedListener( e -> pageContainer.showSelection(ItemCollectionToolkit.build(itemList.getSelection().get()))); ! t4.setText(Messages.PAGES_EVENT_LOG); itemListFilter = FilterComponent.createFilterComponent(itemList, FileIOPage.this.itemListFilter, getDataSource().getItems().apply(TABLE_ITEMS), pageContainer.getSelectionStore()::getSelections, this::onListFilterChange); itemListMm.add(itemListFilter.getShowFilterAction()); itemListMm.add(itemListFilter.getShowSearchAction()); ! t4.setControl(itemListFilter.getComponent()); tableFilter.loadState(state.getChild(FILE_IO_TABLE)); itemListFilter.loadState(state.getChild(FILE_IO_LIST)); tabFolder.setSelection(tabFolderIndex);
*** 321,347 **** --- 329,362 ---- : histogramSelection.getItems(); String pathCount = pathCount(histogramSelection.getRowCount()); List<IXDataRenderer> timelineRows = new ArrayList<>(); List<IXDataRenderer> durationRows = new ArrayList<>(); + List<IXDataRenderer> sizeRows = new ArrayList<>(); IItemCollection readItems = selectedItems.apply(JdkFilters.FILE_READ); if (readItems.hasItems()) { timelineRows.add(DataPageToolkit.buildSizeRow(Messages.FileIOPage_ROW_FILE_READ + pathCount, JdkAggregators.FILE_READ_SIZE.getDescription(), readItems, JdkAggregators.FILE_READ_SIZE, READ_COLOR, FileIOPage::getColor)); durationRows.add(DataPageToolkit.buildDurationHistogram(Messages.FileIOPage_ROW_FILE_READ + pathCount, JdkAggregators.FILE_READ_COUNT.getDescription(), readItems, JdkAggregators.FILE_READ_COUNT, READ_COLOR)); + sizeRows.add(DataPageToolkit.buildSizeHistogram(Messages.FileIOPage_ROW_FILE_READ + pathCount, + JdkAggregators.FILE_READ_COUNT.getDescription(), readItems, JdkAggregators.FILE_READ_COUNT, + READ_COLOR, JdkAttributes.IO_FILE_BYTES_READ)); } IItemCollection writeItems = selectedItems.apply(JdkFilters.FILE_WRITE); if (writeItems.hasItems()) { timelineRows.add(DataPageToolkit.buildSizeRow(Messages.FileIOPage_ROW_FILE_WRITE + pathCount, JdkAggregators.FILE_WRITE_SIZE.getDescription(), writeItems, JdkAggregators.FILE_WRITE_SIZE, WRITE_COLOR, FileIOPage::getColor)); durationRows.add(DataPageToolkit.buildDurationHistogram(Messages.FileIOPage_ROW_FILE_WRITE + pathCount, JdkAggregators.FILE_WRITE_COUNT.getDescription(), writeItems, JdkAggregators.FILE_WRITE_COUNT, WRITE_COLOR)); + sizeRows.add(DataPageToolkit.buildSizeHistogram(Messages.FileIOPage_ROW_FILE_WRITE + pathCount, + JdkAggregators.FILE_WRITE_COUNT.getDescription(), writeItems, JdkAggregators.FILE_WRITE_COUNT, + WRITE_COLOR, JdkAttributes.IO_FILE_BYTES_WRITTEN)); } // ItemRow[] pathRows = selection.getSelectedRows(FileIOPage::buildPathLane).toArray(ItemRow[]::new); timelineCanvas.replaceRenderer(RendererToolkit.uniformRows(timelineRows));
*** 357,366 **** --- 372,394 ---- durationChart.addVisibleRangeListener(range -> durationRange = range); durationCanvas.setChart(durationChart); SelectionStoreActionToolkit.addSelectionStoreActions(pageContainer.getSelectionStore(), durationChart, JfrAttributes.DURATION, Messages.FileIOPage_DURATION_SELECTION, durationCanvas.getContextMenu()); itemList.show(selectedItems); + + IXDataRenderer sizeRoot = RendererToolkit.uniformRows(sizeRows); + IQuantity sizeMax = selectedItems.getAggregate(JdkAggregators.FILE_READ_LARGEST); + // FIXME: Workaround to make max value included + sizeMax = sizeMax == null ? UnitLookup.BYTE.quantity(64): sizeMax.add(UnitLookup.BYTE.quantity(64)); + XYChart sizeChart = new XYChart(UnitLookup.BYTE.quantity(0), sizeMax, sizeRoot, 180); + DataPageToolkit.setChart(sizeCanvas, sizeChart, JdkAttributes.IO_SIZE, + selection -> pageContainer.showSelection(selection)); + sizeChart.setVisibleRange(sizeRange.getStart(), sizeRange.getEnd()); + sizeChart.addVisibleRangeListener(range -> sizeRange = range); + sizeCanvas.setChart(sizeChart); + SelectionStoreActionToolkit.addSelectionStoreActions(pageContainer.getSelectionStore(), sizeChart, + JdkAttributes.IO_SIZE, Messages.FileIOPage_SIZE_SELECTION, sizeCanvas.getContextMenu()); } } private static TableSettings getTableSettings(IState state) { if (state == null) {
*** 387,402 **** --- 415,432 ---- private IItemFilter tableFilter = null; private IItemFilter itemListFilter = null; private int tabFolderIndex = 0; private IRange<IQuantity> timelineRange; private IRange<IQuantity> durationRange; + private IRange<IQuantity> sizeRange; public FlavorSelectorState flavorSelectorState; public FileIOPage(IPageDefinition dpd, StreamModel items, IPageContainer editor) { super(dpd, items, editor); timelineRange = editor.getRecordingRange(); durationRange = editor.getRecordingRange(); + sizeRange = DataPageToolkit.buildSizeRange(items.getItems(), false); } // private static ItemRow buildPathLane(Object path, Supplier<Stream<ItemStream>> pathItems) { // String pathName = String.valueOf(path); // pathName = pathName.length() > 26 ? pathName.substring(0, 23) + "..." : pathName; //$NON-NLS-1$
< prev index next >