package org.ovirt.engine.ui.common.widget.action;
import org.ovirt.engine.ui.common.widget.MenuBar;
import org.ovirt.engine.ui.common.widget.PopupPanel;
import org.ovirt.engine.ui.common.widget.TitleMenuItemSeparator;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.MenuItem;
import com.google.gwt.user.client.ui.MenuItemSeparator;
import com.google.gwt.user.client.ui.SimplePanel;
public class MenuPanelPopup extends Composite {
public interface Resources extends ClientBundle {
@Source("org/ovirt/engine/ui/common/css/MenuPanelPopup.css")
Style style();
}
public interface Style extends CssResource {
String actionPanelPopupPanel();
String actionPanelPopupMenuBar();
}
private static final Resources resources = GWT.create(Resources.class);
private final PopupPanel panel;
private final MenuBar menu;
public MenuPanelPopup(boolean autoHide) {
panel = new PopupPanel(autoHide);
menu = new MenuBar(true) {
@Override
public MenuItem addItem(MenuItem item) {
item.setStylePrimaryName("menuItem"); //$NON-NLS-1$
return super.addItem(item);
}
@Override
public MenuItemSeparator addSeparator(MenuItemSeparator separator) {
if (separator instanceof TitleMenuItemSeparator) {
separator.setStylePrimaryName("menuItem"); //$NON-NLS-1$
}
return super.addSeparator(separator);
}
};
panel.setWidget(menu);
initWidget(new SimplePanel(panel));
resources.style().ensureInjected();
panel.setStylePrimaryName(resources.style().actionPanelPopupPanel());
menu.setStylePrimaryName(resources.style().actionPanelPopupMenuBar());
NodeList<Element> table = menu.getElement().getElementsByTagName("table"); //$NON-NLS-1$
table.getItem(0).getStyle().setProperty("width", "100%"); //$NON-NLS-1$ //$NON-NLS-2$
}
public PopupPanel asPopupPanel() {
return panel;
}
public MenuBar getMenuBar() {
return menu;
}
}