< 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 >