< prev index next >

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

Print this page




 168                 private ItemList list;
 169                 private final SashForm treeSash;
 170                 private final IPageContainer container;
 171                 private final List<ColumnSettings> listColumns = new ArrayList<>();
 172                 private String listOrderBy;
 173                 private Set<IType<?>> selectedTypes = Collections.emptySet();
 174                 private final TypeFilterBuilder typeFilterTree;
 175                 private IItemCollection selectionItems;
 176                 private FlavorSelector flavorSelector;
 177                 private Boolean showTypesWithoutEvents;
 178 
 179                 EventBrowserUI(Composite parent, FormToolkit toolkit, IState state, IPageContainer container) {
 180                         this.container = container;
 181 
 182                         Form form = DataPageToolkit.createForm(parent, toolkit, getName(), getIcon());
 183 
 184                         treeSash = new SashForm(form.getBody(), SWT.HORIZONTAL);
 185                         toolkit.adapt(treeSash);
 186                         typeFilterTree = DataPageToolkit.buildEventTypeTree(treeSash, toolkit, this::onTypeChange, false);
 187                         MCContextMenuManager mm = typeFilterTree.getMenuManager();
 188                         IAction addPageAction = ActionToolkit.action(this::addPage,
 189                                         Messages.EventBrowserPage_NEW_PAGE_USING_TYPES_ACTION, NEW_PAGE_ICON);
 190                         mm.appendToGroup(MCContextMenuManager.GROUP_NEW, addPageAction);
 191 
 192                         IAction typesWithoutEventsAction = ActionToolkit.checkAction(this::setTypesWithoutEvents,
 193                                         Messages.EventBrowserPage_DISPLAY_TYPES_WITHOUT_EVENTS, null);
 194                         showTypesWithoutEvents = StateToolkit.readBoolean(state, SHOW_TYPES_WITHOUT_EVENTS, true);
 195                         typesWithoutEventsAction.setChecked(showTypesWithoutEvents);
 196                         mm.appendToGroup(MCContextMenuManager.GROUP_OPEN, typesWithoutEventsAction);
 197 
 198                         SelectionStoreActionToolkit.addSelectionStoreActions(typeFilterTree.getViewer(), () -> selectedTypes,
 199                                         container.getSelectionStore(), Messages.EventBrowserPage_EVENT_TYPE_TREE_SELECTION, mm);
 200 
 201                         Composite listParent = toolkit.createComposite(treeSash);
 202                         listParent.setLayout(new FillLayout());
 203                         PersistableSashForm.loadState(treeSash, state.getChild(TREE_SASH));
 204 
 205                         form.getToolBarManager().add(addPageAction);
 206                         form.getToolBarManager().add(new Separator());
 207                         OrientationAction.installActions(form, treeSash);
 208 


 211                                 TableSettings settings = new TableSettings(itemListState);
 212                                 listColumns.addAll(settings.getColumns());
 213                                 listOrderBy = settings.getOrderBy();
 214                         }
 215                         list = new ItemListBuilder().build(listParent, null);
 216 
 217                         flavorSelector = FlavorSelector.itemsWithTimerange(form, null, getDataSource().getItems(), container,
 218                                         this::onInputSelected, flavorSelectorState);
 219 
 220                         addResultActions(form);
 221                         if (treeExpansion != null) {
 222                                 typeFilterTree.getViewer().setExpandedTreePaths(treeExpansion);
 223                         } else {
 224                                 typeFilterTree.getViewer().expandAll();
 225                         }
 226                         typeFilterTree.getViewer().setSelection(treeSelection);
 227 //                      if (topIndex >= 0) {
 228 //                              typeFilterTree.getViewer().getTree().setTopItem(typeFilterTree.getViewer().getTree().getItem(topIndex));
 229 //                      }
 230                         list.getManager().setSelectionState(tableSelection);
 231                 }
 232 
 233                 private void addPage() {
 234                         PageManager pm = FlightRecorderUI.getDefault().getPageManager();
 235                         pm.makeRoot(pm.createPage(ItemHandlerPage.Factory.class, new ItemHandlerUiStandIn(selectedTypes)));
 236                 }
 237 
 238                 private void setTypesWithoutEvents(boolean checked) {
 239                         showTypesWithoutEvents = checked;
 240                         refreshTree();
 241                 }
 242 
 243                 private void onInputSelected(IItemCollection items, IRange<IQuantity> timeRange) {
 244                         this.selectionItems = (items == null) ? getDataSource().getItems() : items;
 245                         refreshTree();
 246                 }
 247 
 248                 private void refreshTree() {
 249                         boolean noTypesWereSelected = selectedTypes.isEmpty();
 250 
 251                         typeFilterTree.getViewer().getControl().setRedraw(false);
 252                         TreePath[] expansion = typeFilterTree.getViewer().getExpandedTreePaths();
 253                         ISelection selection = typeFilterTree.getViewer().getSelection();
 254                         typeFilterTree.setInput(getDataSource().getTypeTree((ItemCollectionToolkit.stream(selectionItems)
 255                                         .filter(ii -> showTypesWithoutEvents || ii.hasItems()))));




 168                 private ItemList list;
 169                 private final SashForm treeSash;
 170                 private final IPageContainer container;
 171                 private final List<ColumnSettings> listColumns = new ArrayList<>();
 172                 private String listOrderBy;
 173                 private Set<IType<?>> selectedTypes = Collections.emptySet();
 174                 private final TypeFilterBuilder typeFilterTree;
 175                 private IItemCollection selectionItems;
 176                 private FlavorSelector flavorSelector;
 177                 private Boolean showTypesWithoutEvents;
 178 
 179                 EventBrowserUI(Composite parent, FormToolkit toolkit, IState state, IPageContainer container) {
 180                         this.container = container;
 181 
 182                         Form form = DataPageToolkit.createForm(parent, toolkit, getName(), getIcon());
 183 
 184                         treeSash = new SashForm(form.getBody(), SWT.HORIZONTAL);
 185                         toolkit.adapt(treeSash);
 186                         typeFilterTree = DataPageToolkit.buildEventTypeTree(treeSash, toolkit, this::onTypeChange, false);
 187                         MCContextMenuManager mm = typeFilterTree.getMenuManager();
 188                         IAction addPageAction = ActionToolkit.action(() -> DataPageToolkit.addPage(selectedTypes),
 189                                         Messages.EventBrowserPage_NEW_PAGE_USING_TYPES_ACTION, NEW_PAGE_ICON);
 190                         mm.appendToGroup(MCContextMenuManager.GROUP_NEW, addPageAction);
 191 
 192                         IAction typesWithoutEventsAction = ActionToolkit.checkAction(this::setTypesWithoutEvents,
 193                                         Messages.EventBrowserPage_DISPLAY_TYPES_WITHOUT_EVENTS, null);
 194                         showTypesWithoutEvents = StateToolkit.readBoolean(state, SHOW_TYPES_WITHOUT_EVENTS, true);
 195                         typesWithoutEventsAction.setChecked(showTypesWithoutEvents);
 196                         mm.appendToGroup(MCContextMenuManager.GROUP_OPEN, typesWithoutEventsAction);
 197 
 198                         SelectionStoreActionToolkit.addSelectionStoreActions(typeFilterTree.getViewer(), () -> selectedTypes,
 199                                         container.getSelectionStore(), Messages.EventBrowserPage_EVENT_TYPE_TREE_SELECTION, mm);
 200 
 201                         Composite listParent = toolkit.createComposite(treeSash);
 202                         listParent.setLayout(new FillLayout());
 203                         PersistableSashForm.loadState(treeSash, state.getChild(TREE_SASH));
 204 
 205                         form.getToolBarManager().add(addPageAction);
 206                         form.getToolBarManager().add(new Separator());
 207                         OrientationAction.installActions(form, treeSash);
 208 


 211                                 TableSettings settings = new TableSettings(itemListState);
 212                                 listColumns.addAll(settings.getColumns());
 213                                 listOrderBy = settings.getOrderBy();
 214                         }
 215                         list = new ItemListBuilder().build(listParent, null);
 216 
 217                         flavorSelector = FlavorSelector.itemsWithTimerange(form, null, getDataSource().getItems(), container,
 218                                         this::onInputSelected, flavorSelectorState);
 219 
 220                         addResultActions(form);
 221                         if (treeExpansion != null) {
 222                                 typeFilterTree.getViewer().setExpandedTreePaths(treeExpansion);
 223                         } else {
 224                                 typeFilterTree.getViewer().expandAll();
 225                         }
 226                         typeFilterTree.getViewer().setSelection(treeSelection);
 227 //                      if (topIndex >= 0) {
 228 //                              typeFilterTree.getViewer().getTree().setTopItem(typeFilterTree.getViewer().getTree().getItem(topIndex));
 229 //                      }
 230                         list.getManager().setSelectionState(tableSelection);





 231                 }
 232 
 233                 private void setTypesWithoutEvents(boolean checked) {
 234                         showTypesWithoutEvents = checked;
 235                         refreshTree();
 236                 }
 237 
 238                 private void onInputSelected(IItemCollection items, IRange<IQuantity> timeRange) {
 239                         this.selectionItems = (items == null) ? getDataSource().getItems() : items;
 240                         refreshTree();
 241                 }
 242 
 243                 private void refreshTree() {
 244                         boolean noTypesWereSelected = selectedTypes.isEmpty();
 245 
 246                         typeFilterTree.getViewer().getControl().setRedraw(false);
 247                         TreePath[] expansion = typeFilterTree.getViewer().getExpandedTreePaths();
 248                         ISelection selection = typeFilterTree.getViewer().getSelection();
 249                         typeFilterTree.setInput(getDataSource().getTypeTree((ItemCollectionToolkit.stream(selectionItems)
 250                                         .filter(ii -> showTypesWithoutEvents || ii.hasItems()))));


< prev index next >