50 import org.eclipse.swt.widgets.Control;
51 import org.eclipse.ui.forms.widgets.FormToolkit;
52
53 import org.openjdk.jmc.common.IState;
54 import org.openjdk.jmc.common.IWritableState;
55 import org.openjdk.jmc.common.item.IAttribute;
56 import org.openjdk.jmc.common.item.IItem;
57 import org.openjdk.jmc.common.item.IItemCollection;
58 import org.openjdk.jmc.common.item.IItemFilter;
59 import org.openjdk.jmc.common.item.IMemberAccessor;
60 import org.openjdk.jmc.common.item.ItemToolkit;
61 import org.openjdk.jmc.common.unit.ContentType;
62 import org.openjdk.jmc.common.unit.IQuantity;
63 import org.openjdk.jmc.common.unit.IRange;
64 import org.openjdk.jmc.common.unit.LinearKindOfQuantity;
65 import org.openjdk.jmc.common.util.StateToolkit;
66 import org.openjdk.jmc.flightrecorder.ui.FlightRecorderUI;
67 import org.openjdk.jmc.flightrecorder.ui.IPageContainer;
68 import org.openjdk.jmc.flightrecorder.ui.ItemCollectionToolkit;
69 import org.openjdk.jmc.flightrecorder.ui.StreamModel;
70 import org.openjdk.jmc.flightrecorder.ui.common.FilterComponent;
71 import org.openjdk.jmc.flightrecorder.ui.common.ImageConstants;
72 import org.openjdk.jmc.flightrecorder.ui.common.ItemHistogram.HistogramSelection;
73 import org.openjdk.jmc.flightrecorder.ui.common.ItemList;
74 import org.openjdk.jmc.flightrecorder.ui.common.ItemList.ItemListBuilder;
75 import org.openjdk.jmc.flightrecorder.ui.messages.internal.Messages;
76 import org.openjdk.jmc.flightrecorder.ui.selection.SelectionStoreActionToolkit;
77 import org.openjdk.jmc.ui.column.ColumnManager;
78 import org.openjdk.jmc.ui.column.ColumnManager.SelectionState;
79 import org.openjdk.jmc.ui.column.ColumnMenusFactory;
80 import org.openjdk.jmc.ui.column.TableSettings;
81 import org.openjdk.jmc.ui.handlers.MCContextMenuManager;
82
83 class ItemListAndChart {
84
85 private static final String LIST_SETTINGS = "listSettings"; //$NON-NLS-1$
86 private static final String CHART_SETTINGS = "chartSettings"; //$NON-NLS-1$
87 private static final String SELECTED_SUBTAB = "selectedSubTab"; //$NON-NLS-1$
88 private static final String ITEM_LIST_FILTER = "itemListFilter"; //$NON-NLS-1$
89 private ItemList itemList;
136 tabFolder.setSelection(StateToolkit.readInt(state, SELECTED_SUBTAB, 0));
137 }
138
139 private void buildList(IState state, AttributeComponentConfiguration acc) {
140 listItems = streamModel.getItems().apply(inputFilter);
141
142 ItemListBuilder itemListBuilder = new ItemListBuilder();
143
144 acc.getAllAttributes().entrySet().forEach(entry -> {
145 String combinedId = entry.getKey();
146 IAttribute<?> a = entry.getValue();
147 ContentType<?> contentType = a.getContentType();
148 IMemberAccessor<?, IItem> accessor = ItemToolkit.accessor(a);
149 itemListBuilder.addColumn(combinedId, a.getName(), a.getDescription(),
150 contentType instanceof LinearKindOfQuantity, accessor);
151
152 });
153
154 // FIXME: Should we use the state here, if the columns have been updated?
155 // FIXME: Should we change the column state if the user explicitly has configured the columns?
156 TableSettings itemListSettings = TableSettings.forStateAndColumns(
157 state != null ? state.getChild(LIST_SETTINGS) : null, acc.getAllAttributes().keySet(),
158 acc.getCommonAttributes().keySet());
159
160 Composite listComposite = toolkit.createComposite(tabFolder);
161 listComposite.setLayout(GridLayoutFactory.swtDefaults().create());
162 itemList = itemListBuilder.buildWithoutBorder(listComposite, itemListSettings);
163 listTab.setControl(listComposite);
164 itemList.getManager().getViewer()
165 .addSelectionChangedListener(e -> selectionListener.accept(getListSelection()));
166 ColumnManager columnsManager = itemList.getManager();
167 listContextMenuManager = MCContextMenuManager.create(columnsManager.getViewer().getControl());
168
169 ColumnMenusFactory.addDefaultMenus(columnsManager, listContextMenuManager);
170 SelectionStoreActionToolkit.addSelectionStoreActions(controller.getSelectionStore(), itemList,
171 NLS.bind(Messages.ITEMHANDLER_LOG_SELECTION, pageName), listContextMenuManager);
172
173 itemListFilterComponent = FilterComponent.createFilterComponent(itemList, itemListFilter, listItems,
174 controller.getSelectionStore()::getSelections, this::onFilterChange);
175 listContextMenuManager.add(itemListFilterComponent.getShowFilterAction());
176 listContextMenuManager.add(itemListFilterComponent.getShowSearchAction());
177 if (state != null) {
|
50 import org.eclipse.swt.widgets.Control;
51 import org.eclipse.ui.forms.widgets.FormToolkit;
52
53 import org.openjdk.jmc.common.IState;
54 import org.openjdk.jmc.common.IWritableState;
55 import org.openjdk.jmc.common.item.IAttribute;
56 import org.openjdk.jmc.common.item.IItem;
57 import org.openjdk.jmc.common.item.IItemCollection;
58 import org.openjdk.jmc.common.item.IItemFilter;
59 import org.openjdk.jmc.common.item.IMemberAccessor;
60 import org.openjdk.jmc.common.item.ItemToolkit;
61 import org.openjdk.jmc.common.unit.ContentType;
62 import org.openjdk.jmc.common.unit.IQuantity;
63 import org.openjdk.jmc.common.unit.IRange;
64 import org.openjdk.jmc.common.unit.LinearKindOfQuantity;
65 import org.openjdk.jmc.common.util.StateToolkit;
66 import org.openjdk.jmc.flightrecorder.ui.FlightRecorderUI;
67 import org.openjdk.jmc.flightrecorder.ui.IPageContainer;
68 import org.openjdk.jmc.flightrecorder.ui.ItemCollectionToolkit;
69 import org.openjdk.jmc.flightrecorder.ui.StreamModel;
70 import org.openjdk.jmc.flightrecorder.ui.common.DataPageToolkit;
71 import org.openjdk.jmc.flightrecorder.ui.common.FilterComponent;
72 import org.openjdk.jmc.flightrecorder.ui.common.ImageConstants;
73 import org.openjdk.jmc.flightrecorder.ui.common.ItemHistogram.HistogramSelection;
74 import org.openjdk.jmc.flightrecorder.ui.common.ItemList;
75 import org.openjdk.jmc.flightrecorder.ui.common.ItemList.ItemListBuilder;
76 import org.openjdk.jmc.flightrecorder.ui.messages.internal.Messages;
77 import org.openjdk.jmc.flightrecorder.ui.selection.SelectionStoreActionToolkit;
78 import org.openjdk.jmc.ui.column.ColumnManager;
79 import org.openjdk.jmc.ui.column.ColumnManager.SelectionState;
80 import org.openjdk.jmc.ui.column.ColumnMenusFactory;
81 import org.openjdk.jmc.ui.column.TableSettings;
82 import org.openjdk.jmc.ui.handlers.MCContextMenuManager;
83
84 class ItemListAndChart {
85
86 private static final String LIST_SETTINGS = "listSettings"; //$NON-NLS-1$
87 private static final String CHART_SETTINGS = "chartSettings"; //$NON-NLS-1$
88 private static final String SELECTED_SUBTAB = "selectedSubTab"; //$NON-NLS-1$
89 private static final String ITEM_LIST_FILTER = "itemListFilter"; //$NON-NLS-1$
90 private ItemList itemList;
137 tabFolder.setSelection(StateToolkit.readInt(state, SELECTED_SUBTAB, 0));
138 }
139
140 private void buildList(IState state, AttributeComponentConfiguration acc) {
141 listItems = streamModel.getItems().apply(inputFilter);
142
143 ItemListBuilder itemListBuilder = new ItemListBuilder();
144
145 acc.getAllAttributes().entrySet().forEach(entry -> {
146 String combinedId = entry.getKey();
147 IAttribute<?> a = entry.getValue();
148 ContentType<?> contentType = a.getContentType();
149 IMemberAccessor<?, IItem> accessor = ItemToolkit.accessor(a);
150 itemListBuilder.addColumn(combinedId, a.getName(), a.getDescription(),
151 contentType instanceof LinearKindOfQuantity, accessor);
152
153 });
154
155 // FIXME: Should we use the state here, if the columns have been updated?
156 // FIXME: Should we change the column state if the user explicitly has configured the columns?
157 final TableSettings itemListSettings = state == null
158 ? DataPageToolkit.createTableSettingsByAllAndVisibleColumns(acc.getAllAttributes().keySet(),
159 acc.getCommonAttributes().keySet())
160 : TableSettings.forStateAndColumns(state.getChild(LIST_SETTINGS), acc.getAllAttributes().keySet(),
161 acc.getCommonAttributes().keySet());
162
163 Composite listComposite = toolkit.createComposite(tabFolder);
164 listComposite.setLayout(GridLayoutFactory.swtDefaults().create());
165 itemList = itemListBuilder.buildWithoutBorder(listComposite, itemListSettings);
166 listTab.setControl(listComposite);
167 itemList.getManager().getViewer()
168 .addSelectionChangedListener(e -> selectionListener.accept(getListSelection()));
169 ColumnManager columnsManager = itemList.getManager();
170 listContextMenuManager = MCContextMenuManager.create(columnsManager.getViewer().getControl());
171
172 ColumnMenusFactory.addDefaultMenus(columnsManager, listContextMenuManager);
173 SelectionStoreActionToolkit.addSelectionStoreActions(controller.getSelectionStore(), itemList,
174 NLS.bind(Messages.ITEMHANDLER_LOG_SELECTION, pageName), listContextMenuManager);
175
176 itemListFilterComponent = FilterComponent.createFilterComponent(itemList, itemListFilter, listItems,
177 controller.getSelectionStore()::getSelections, this::onFilterChange);
178 listContextMenuManager.add(itemListFilterComponent.getShowFilterAction());
179 listContextMenuManager.add(itemListFilterComponent.getShowSearchAction());
180 if (state != null) {
|