@Override public void onClick(ClickEvent event) { if (delegate != null) { delegate.onItemSelected(MenuItemActionWidget.this); } } },
@Override public void addListItem(MenuItem menuItem) { menuItem.setDelegate(itemDelegate); listPanel.add(menuItem); adjustTopPosition(); }
@Override public void onMouseDown(MouseDownEvent event) { long time = System.currentTimeMillis(); if (time - closeTime < 100) { return; } showList(); } },
@Inject public MenuWidget(Resources resources) { this.resources = resources; resources.css().ensureInjected(); initWidget(UI_BINDER.createAndBindUi(this)); addDomHandler( new MouseDownHandler() { @Override listPanel.addStyleName(resources.css().listItemPanel());
public void showList() { int x = getAbsoluteLeft() + getOffsetWidth() - 6; popupPanel.show(); popupPanel.getElement().getStyle().setProperty("position", "absolute"); popupPanel.getElement().getStyle().clearProperty("left"); popupPanel.getElement().getStyle().setProperty("right", "calc(100% - " + x + "px"); adjustTopPosition(); }
public MenuItemActionWidget(Action action) { initWidget(UI_BINDER.createAndBindUi(this)); this.action = action; final Element actionIcon = action.getTemplatePresentation().getImageElement(); if (actionIcon != null) { iconPanel.add(new ElementWidget(actionIcon)); } title.setText(action.getTemplatePresentation().getText()); addDomHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { if (delegate != null) { delegate.onItemSelected(MenuItemActionWidget.this); } } }, ClickEvent.getType()); }
this.menu = menu; closePaneMenuItem = new MenuItemActionWidget(closePaneAction); menu.addListItem(closePaneMenuItem); menu.addListItem(new MenuItemActionWidget(removeAllWidgetsInPaneAction)); menu.addListItem(new MenuItemActionWidget(splitHorizontallyAction)); menu.addListItem(new MenuItemActionWidget(splitVerticallyAction)); menu.setDelegate(this);
public MenuItemWidget(Tab tab, boolean closable) { initWidget(UI_BINDER.createAndBindUi(this)); this.tab = tab; title.setText(tab.getTitleText()); addDomHandler( new ClickHandler() { @Override
@Override public void addWidget(WidgetToShow widget, boolean removable) { final Tab tab = tabItemFactory.createTabItem(widget.getTitle(), widget.getIcon(), removable); tab.setDelegate(this); tabs2Widgets.put(tab, widget); widgets2Tabs.put(widget, tab); tabsPanel.insert(tab, tabsPanel.getWidgetIndex(plusPanel)); Widget visibleWidget = widgetsPanel.getVisibleWidget(); widgetsPanel.setWidget(widget.getWidget()); if (visibleWidget != null) { widgetsPanel.showWidget(visibleWidget); } // add item to drop-down menu final MenuItemWidget listItemWidget = new MenuItemWidget(tab, removable); menu.addListItem(listItemWidget); widgets2ListItems.put(widget, listItemWidget); }
@Override public void onMenuItemClosing(MenuItem menuItem) { Object data = menuItem.getData(); if (data instanceof Tab) { closeTab((Tab) data); } }
@Override public void setParentPanel(@Nullable SubPanelView parentPanel) { this.parentPanel = parentPanel; if (parentPanel == null) { // do not allow to remove root panel (if it doesn't have parent) menu.removeListItem(closePaneMenuItem); } }
@Override public void onItemSelected(MenuItem menuItem) { popupPanel.hide(); if (delegate != null) { delegate.onMenuItemSelected(menuItem); } }
@Override public void onItemClosing(MenuItem menuItem) { popupPanel.hide(); if (delegate != null) { delegate.onMenuItemClosing(menuItem); } } };
@Override public void removeListItem(MenuItem menuItem) { listPanel.remove(menuItem); adjustTopPosition(); }
@Override public void onClick(ClickEvent clickEvent) { clickEvent.stopPropagation(); clickEvent.preventDefault(); if (delegate != null) { delegate.onItemClosing(MenuItemWidget.this); } } },
/** Fix top value if need. Need in case if bottom part of menu not display */ private void adjustTopPosition() { int totalHeight = listPanel.getWidgetCount() * 19; // 19 height of menu item int y = getAbsoluteTop() + 19 + totalHeight; if (y > Window.getClientHeight()) { y = getAbsoluteTop() - 8 - totalHeight; // 8 need some correction for looking good in UI popupPanel.getElement().getStyle().clearProperty("top"); } else { y = getAbsoluteTop() + 19; } popupPanel.getElement().getStyle().setProperty("top", "" + y + "px"); }
@Override public void onClick(ClickEvent event) { if (delegate != null) { delegate.onItemSelected(MenuItemWidget.this); } } },
@Override public void onMenuItemSelected(MenuItem menuItem) { final Object data = menuItem.getData(); if (data instanceof Tab) { final WidgetToShow widget = tabs2Widgets.get(data); if (widget != null) { activateWidget(widget); delegate.onWidgetFocused(widget.getWidget()); } } else if (data instanceof BaseAction) { ((Action) data).actionPerformed(null); } }
private void removeWidgetFromUI(WidgetToShow widget) { final Tab tab = widgets2Tabs.remove(widget); if (tab != null) { tabsPanel.remove(tab); widgetsPanel.remove(widget.getWidget()); tabs2Widgets.remove(tab); // remove item from drop-down menu final MenuItemWidget listItemWidget = widgets2ListItems.remove(widget); if (listItemWidget != null) { menu.removeListItem(listItemWidget); } } }