use of com.github.bordertech.wcomponents.WMenuItem in project wcomponents by BorderTech.
the class MenuBarExample method buildMenuBar.
/**
* Builds up a menu bar for inclusion in the example.
*
* @param selectedMenuText the WText to display the selected menu item.
* @return a menu bar for the example.
*/
private WMenu buildMenuBar(final WText selectedMenuText) {
WMenu menu = new WMenu();
// The Colours menu just shows simple text
WSubMenu colourMenu = new WSubMenu("Colours");
colourMenu.setMode(WSubMenu.MenuMode.LAZY);
colourMenu.setAccessKey('C');
addMenuItem(colourMenu, "Red", selectedMenuText);
addMenuItem(colourMenu, "Green", selectedMenuText);
addMenuItem(colourMenu, "Blue", selectedMenuText);
colourMenu.addSeparator();
colourMenu.add(new WMenuItem("Disable colour menu", new ToggleDisabledAction(colourMenu)));
menu.add(colourMenu);
// The Shapes menu shows grouping of items
WSubMenu shapeMenu = new WSubMenu("Shapes");
shapeMenu.setAccessKey('S');
addMenuItem(shapeMenu, "Circle", selectedMenuText);
WMenuItemGroup triangleGroup = new WMenuItemGroup("Triangles");
shapeMenu.add(triangleGroup);
shapeMenu.setMode(WSubMenu.MenuMode.DYNAMIC);
addMenuItem(triangleGroup, "Equilateral", selectedMenuText);
addMenuItem(triangleGroup, "Isosceles", selectedMenuText);
addMenuItem(triangleGroup, "Scalene", selectedMenuText);
addMenuItem(triangleGroup, "Right-angled", selectedMenuText);
addMenuItem(triangleGroup, "Obtuse", selectedMenuText);
WMenuItemGroup quadGroup = new WMenuItemGroup("Quadrilaterals");
shapeMenu.add(quadGroup);
addMenuItem(quadGroup, "Square", selectedMenuText);
addMenuItem(quadGroup, "Rectangle", selectedMenuText);
addMenuItem(quadGroup, "Rhombus", selectedMenuText);
addMenuItem(quadGroup, "Trapezoid", selectedMenuText);
addMenuItem(quadGroup, "Parallelogram", selectedMenuText);
shapeMenu.addSeparator();
shapeMenu.add(new WMenuItem("Disable shape menu", new ToggleDisabledAction(shapeMenu)));
menu.add(shapeMenu);
// The Image menu shows use of decorated labels and images
WDecoratedLabel imageLabel = new WDecoratedLabel(new WImage("/image/wrench.png", "spanner"), new WText("Images"), null);
WSubMenu imageMenu = new WSubMenu(imageLabel);
imageMenu.add(createImageMenuItem("/image/flag.png", "Flag", "eg-menu-image-1", selectedMenuText));
imageMenu.add(createImageMenuItem("/image/attachment.png", "Attachment", "eg-menu-image-2", selectedMenuText));
imageMenu.add(createImageMenuItem("/image/settings.png", "Settings", "eg-menu-image-3", selectedMenuText));
imageMenu.addSeparator();
imageMenu.add(new WMenuItem("Disable image menu", new ToggleDisabledAction(imageMenu)));
menu.add(imageMenu);
WSubMenu sitesMenu = new WSubMenu("External apps");
sitesMenu.add(new WMenuItem("External website", "http://www.example.com/"));
WMenuItem google = new WMenuItem("Example (new window)", "http://www.example.com/");
google.setTargetWindow("exampleWindow");
sitesMenu.add(google);
menu.add(sitesMenu);
// Add an item to toggle the states of all the menus
menu.add(new WMenuItem("Toggle top-level menus", new ToggleDisabledAction(colourMenu, shapeMenu, imageMenu, sitesMenu)));
menu.add(new WMenuItem("Link", "http://www.example.com"));
menu.add(new WMenuItem("No Action"));
WMenuItem itemWithIcon = new WMenuItem("Help");
itemWithIcon.setAction(new Action() {
@Override
public void execute(final ActionEvent event) {
// do something
}
});
itemWithIcon.setHtmlClass(HtmlClassProperties.ICON_HELP_BEFORE);
menu.add(itemWithIcon);
WMenuItem itemWithImage = new WMenuItem(new WDecoratedLabel(new WImage("/image/home.png", "home"), new WText("Home"), null));
menu.add(itemWithImage);
menu.add(new WMenuItem(new WDecoratedLabel(new WImage("/image/settings.png", "settings"), new WText("Settings Menu"), null)));
itemWithImage = new WMenuItem(new WDecoratedLabel(new WImage("/image/flag.png", "flag")));
itemWithImage.setAccessibleText("flag this view");
menu.add(itemWithImage);
return menu;
}
use of com.github.bordertech.wcomponents.WMenuItem in project wcomponents by BorderTech.
the class MenuFlyoutExample method addMenuItem.
/**
* Adds an example menu item with the given text and an example action to the a parent component.
*
* @param parent the component to add the menu item to.
* @param text the text to display on the menu item.
* @param selectedMenuText the WText to display the selected menu item.
*/
private void addMenuItem(final WComponent parent, final String text, final WText selectedMenuText) {
WMenuItem menuItem = new WMenuItem(text, new ExampleMenuAction(selectedMenuText));
menuItem.setActionObject(text);
if (parent instanceof WSubMenu) {
((WSubMenu) parent).add(menuItem);
} else {
((WMenuItemGroup) parent).add(menuItem);
}
}
use of com.github.bordertech.wcomponents.WMenuItem in project wcomponents by BorderTech.
the class TreeMenuExample method mapTreeHierarchy.
/**
* Recursively maps a tree hierarchy to a hierarchical menu.
*
* @param currentComponent the current component in the menu.
* @param currentNode the current node in the tree.
* @param selectedMenuText the WText to display the selected menu item.
*/
private void mapTreeHierarchy(final WComponent currentComponent, final StringTreeNode currentNode, final WText selectedMenuText) {
if (currentNode.isLeaf()) {
WMenuItem menuItem = new WMenuItem(currentNode.getData(), new ExampleMenuAction(selectedMenuText));
menuItem.setActionObject(currentNode.getData());
if (currentComponent instanceof WMenu) {
((WMenu) currentComponent).add(menuItem);
} else {
((WSubMenu) currentComponent).add(menuItem);
}
} else {
WSubMenu subMenu = new WSubMenu(currentNode.getData());
subMenu.setSelectMode(SelectMode.SINGLE);
if (currentComponent instanceof WMenu) {
((WMenu) currentComponent).add(subMenu);
} else {
((WSubMenu) currentComponent).add(subMenu);
}
// Expand the first couple of levels in the tree by default.
if (currentNode.getLevel() < 2) {
subMenu.setOpen(true);
}
for (Iterator<TreeNode> i = currentNode.children(); i.hasNext(); ) {
mapTreeHierarchy(subMenu, (StringTreeNode) i.next(), selectedMenuText);
}
}
}
use of com.github.bordertech.wcomponents.WMenuItem in project wcomponents by BorderTech.
the class WContentExample method addContentRow.
/**
* Adds components to the given container which demonstrate various ways of acessing the given content.
*
* @param contentDesc the description of the content, used to label the controls.
* @param contentAccess the content which will be displayed.
* @param target the container to add the UI controls to.
*/
private void addContentRow(final String contentDesc, final ContentAccess contentAccess, final MutableContainer target) {
// Demonstrate WButton + WContent, round trip
WButton button = new WButton(contentDesc);
final WContent buttonContent = new WContent();
button.setAction(new Action() {
@Override
public void execute(final ActionEvent event) {
buttonContent.setContentAccess(contentAccess);
buttonContent.display();
}
});
WContainer buttonCell = new WContainer();
buttonCell.add(buttonContent);
buttonCell.add(button);
target.add(buttonCell);
// Demonstrate WButton + WContent, using AJAX
WButton ajaxButton = new WButton(contentDesc);
final WContent ajaxContent = new WContent();
ajaxButton.setAction(new Action() {
@Override
public void execute(final ActionEvent event) {
ajaxContent.setContentAccess(contentAccess);
ajaxContent.display();
}
});
WContainer ajaxCell = new WContainer();
// The WContent must be wrapped in an AJAX targetable container
WPanel ajaxContentPanel = new WPanel();
ajaxContentPanel.add(ajaxContent);
ajaxCell.add(ajaxButton);
ajaxCell.add(ajaxContentPanel);
ajaxButton.setAjaxTarget(ajaxContentPanel);
target.add(ajaxCell);
// Demonstrate WContentLink - new window
WContentLink contentLinkNewWindow = new WContentLink(contentDesc) {
@Override
protected void preparePaintComponent(final Request request) {
super.preparePaintComponent(request);
setContentAccess(contentAccess);
}
};
target.add(contentLinkNewWindow);
// Demonstrate WContentLink - prompt to save
WContentLink contentLinkPromptToSave = new WContentLink(contentDesc) {
@Override
protected void preparePaintComponent(final Request request) {
super.preparePaintComponent(request);
setContentAccess(contentAccess);
}
};
contentLinkPromptToSave.setDisplayMode(DisplayMode.PROMPT_TO_SAVE);
target.add(contentLinkPromptToSave);
// Demonstrate WContentLink - inline
WContentLink contentLinkInline = new WContentLink(contentDesc) {
@Override
protected void preparePaintComponent(final Request request) {
super.preparePaintComponent(request);
setContentAccess(contentAccess);
}
};
contentLinkInline.setDisplayMode(DisplayMode.DISPLAY_INLINE);
target.add(contentLinkInline);
// Demonstrate targeting of content via a URL
WMenu menu = new WMenu(WMenu.MenuType.FLYOUT);
final WContent menuContent = new WContent();
menuContent.setDisplayMode(DisplayMode.PROMPT_TO_SAVE);
WMenuItem menuItem = new WMenuItem(contentDesc) {
@Override
protected void preparePaintComponent(final Request request) {
super.preparePaintComponent(request);
menuContent.setContentAccess(contentAccess);
setUrl(menuContent.getUrl());
}
};
menu.add(menuItem);
WContainer menuCell = new WContainer();
menuCell.add(menuContent);
menuCell.add(menu);
target.add(menuCell);
}
use of com.github.bordertech.wcomponents.WMenuItem in project wcomponents by BorderTech.
the class WMenuItemRenderer_Test method testTargetWindow.
@Test
public void testTargetWindow() throws IOException, SAXException, XpathException {
final String targetWindow = "WMenuItemLayout-targetWindow";
// Test with target window
WMenuItem item = new WMenuItem(itemText, url);
item.setTargetWindow(targetWindow);
WMenu wrapped = wrapMenuItem(item);
assertSchemaMatch(wrapped);
assertXpathEvaluatesTo(itemText, "normalize-space(//ui:menuitem/ui:decoratedlabel)", item);
assertXpathEvaluatesTo(targetWindow, "//ui:menuitem/@targetWindow", item);
}
Aggregations