in application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/common/FlavorSelector.java [232:341]
private FlavorSelector(Form form, IItemFilter filter, List<IAttribute<?>> attributes, IItemCollection items,
IPageContainer pageContainer, SelectionWithThreadAndRangeConsumer onSelectWithThreads,
Optional<Consumer<Boolean>> onShow, FlavorSelectorState flavorSelectorState) {
this.filter = filter;
this.attributes = attributes;
this.items = items;
this.pageContainer = pageContainer;
this.onSelectWithThreads = onSelectWithThreads;
flavorSelectorState = flavorSelectorState != null ? flavorSelectorState : new FlavorSelectorState();
this.flavorSelectorState = flavorSelectorState;
container = new Composite(form.getHead(), SWT.NONE);
container.setLayout(GridLayoutFactory.fillDefaults().margins(0, 0).spacing(2, 2).create());
Composite selectorRow = new Composite(container, SWT.NONE);
selectorRow
.setLayoutData(GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).create());
selectorRow.setLayout(GridLayoutFactory.swtDefaults().numColumns(9).create());
// useSelectionButton = new Button(selectorRow, SWT.CHECK);
// useSelectionButton.setLayoutData(GridDataFactory.swtDefaults().create());
// useSelectionButton.setText("Filter on:");
// useSelectionButton.setEnabled(pageContainer.getSelectionStore().getSelections().count() > 0);
// useSelectionButton.setSelection(pageContainer.getSelectionStore().isCurrentActive());
// useSelectionButton.addSelectionListener(new SelectionCheckboxSelectionListener());
selectionCombo = new ComboViewer(selectorRow);
selectionCombo.getCombo().setLayoutData(GridDataFactory.swtDefaults().hint(200, SWT.DEFAULT)
.minSize(100, SWT.DEFAULT).grab(false, false).create());
selectionCombo.setContentProvider(new SelectionComboContentProvider());
selectionCombo.setLabelProvider(new SelectionComboLabelProvider());
selectionCombo.addSelectionChangedListener(new SelectionComboSelectionListener());
// selectionCombo.getControl().setEnabled(pageContainer.getSelectionStore().isCurrentActive());
Label flavorLabel = new Label(selectorRow, SWT.NONE);
flavorLabel.setLayoutData(GridDataFactory.swtDefaults().create());
flavorLabel.setText(Messages.FlavorSelector_LABEL_ASPECT);
flavorCombo = new ComboViewer(selectorRow);
flavorCombo.getCombo().setLayoutData(GridDataFactory.swtDefaults().hint(300, SWT.DEFAULT)
.minSize(100, SWT.DEFAULT).grab(true, false).create());
flavorCombo.setContentProvider(new FlavorComboContentProvider());
flavorCombo.setLabelProvider(new FlavorComboLabelProvider());
flavorCombo.addSelectionChangedListener(new FlavorComboSelectionListener());
// flavorCombo.getControl().setEnabled(pageContainer.getSelectionStore().isCurrentActive());
showConcurrentButton = new Button(selectorRow, SWT.CHECK);
showConcurrentButton.setLayoutData(GridDataFactory.swtDefaults().create());
showConcurrentButton.setText(Messages.FlavorSelector_BUTTON_SHOW_CONCURRENT);
showConcurrentButton.setToolTipText(Messages.FlavorSelector_BUTTON_SHOW_CONCURRENT_TOOLTIP);
showConcurrentButton.setSelection(this.flavorSelectorState.showConcurrent);
showConcurrentButton.addSelectionListener(new ShowConcurrentSelectionListener());
// FIXME: Instead use radio buttons with images?
rangeStyleButton = new Button(selectorRow, SWT.CHECK);
rangeStyleButton.setLayoutData(GridDataFactory.swtDefaults().create());
rangeStyleButton.setText(Messages.FlavorSelector_BUTTON_CONTAINED);
rangeStyleButton.setToolTipText(Messages.FlavorSelector_BUTTON_CONTAINED_TOOLTIP);
rangeStyleButton.setEnabled(showConcurrentButton.getSelection());
rangeStyleButton.setSelection(flavorSelectorState.concurrentContained);
rangeStyleButton.addSelectionListener(new RangeStyleSelectionListener());
// FIXME: Instead use radio buttons with images?
sameThreadsButton = new Button(selectorRow, SWT.CHECK);
sameThreadsButton.setLayoutData(GridDataFactory.swtDefaults().create());
sameThreadsButton.setText(Messages.FlavorSelector_BUTTON_SAME_THREADS);
sameThreadsButton.setToolTipText(Messages.FlavorSelector_BUTTON_SAME_THREADS_TOOLTIP);
sameThreadsButton.setEnabled(showConcurrentButton.getSelection());
sameThreadsButton.setSelection(flavorSelectorState.sameThreads);
sameThreadsButton.addSelectionListener(new SameThreadsSelectionListener());
// FIXME: Persist state for above checkboxes?
onShow.ifPresent(on -> {
Label rangeLabel = new Label(selectorRow, SWT.NONE);
rangeLabel.setLayoutData(GridDataFactory.swtDefaults().create());
rangeLabel.setText(Messages.FlavorSelector_LABEL_TIMERANGE);
showButton = new Button(selectorRow, SWT.PUSH);
showButton.setText(Messages.FlavorSelector_BUTTON_TIMERANGE_SET);
showButton.setToolTipText(Messages.FlavorSelector_BUTTON_TIMERANGE_SET_TOOLTIP);
showButton.setLayoutData(GridDataFactory.swtDefaults().create());
resetButton = new Button(selectorRow, SWT.PUSH);
resetButton.setText(Messages.FlavorSelector_BUTTON_TIMERANGE_CLEAR);
resetButton.setToolTipText(Messages.FlavorSelector_BUTTON_TIMERANGE_CLEAR_TOOLTIP);
resetButton.addListener(SWT.Selection, e -> on.accept(false));
resetButton.setLayoutData(GridDataFactory.swtDefaults().create());
showButton.addListener(SWT.Selection, e -> on.accept(true));
});
canvas = new Canvas(container, SWT.NO_BACKGROUND);
canvas.setLayoutData(GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).hint(SWT.DEFAULT, 7)
.grab(true, false).create());
painter = new RangePainter(canvas, pageContainer.getRecordingRange());
selectionCombo.setInput(pageContainer.getSelectionStore());
selectionCombo.setSelection(getCurrentSelection());
callbackActive = true;
enableSelection();
IItemStreamFlavor currentFlavor = null;
if (pageContainer.getSelectionStore().isCurrentActive()) {
currentFlavor = getSelectedFlavor();
}
useFlavor(currentFlavor);
pageContainer.getSelectionStore().setListener(this);
form.setHeadClient(container);
}