< prev index next >

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

Print this page




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


< prev index next >