Browse Source

MenuBar fixes & enhancements

 * fixes #3507: Menubar.MenuItem needs setEnabled()
 * "More" menuitem now presented as an arrow
 * menu opening/closing now more intuitive
 * client side stylename for menuitems changed to v-menuitem

svn changeset:9688/svn branch:6.2
tags/6.7.0.beta1
Jouni Koivuviita 14 years ago
parent
commit
ff991344bb

+ 18
- 7
WebContent/VAADIN/themes/base/menubar/menubar.css View File

@@ -3,12 +3,12 @@
padding: 0;
margin: 0;
}
.v-menubar .menuitem {
.v-menubar .v-menubar-menuitem {
cursor: default;
vertical-align: middle;
white-space: nowrap;
}
.v-menubar .menuitem * {
.v-menubar .v-menubar-menuitem * {
vertical-align: middle;
}
.v-menubar-submenu {
@@ -24,25 +24,36 @@
padding: 0;
margin: 0;
}
.v-menubar .menuitem-selected,
.v-menubar-submenu .menuitem-selected {
.v-menubar-menuitem-selected{
background: #333;
color: #fff;
}
.v-menubar-submenu .menuitem {
.v-menubar-submenu .v-menubar-menuitem {
cursor: default;
vertical-align: middle;
white-space: nowrap;
}
.v-menubar-submenu .menuitem * {
.v-menubar-submenu .v-menubar-menuitem * {
vertical-align: middle;
}
.v-menubar .v-menubar-submenu-indicator {
.v-menubar-submenu-indicator {
display: none;
/* Arial has the most coverage for geometric entity characters */
font-family: arial, helvetica, sans-serif;
}
.v-menubar-submenu .v-menubar-submenu-indicator {
display: inline;
display: inline-block;
zoom: 1;
margin-left: 1em;
float: right;
height: 100%;
font-size: 0.9em;
}
.v-menubar-menuitem-disabled {
color: #999;
}
.v-menubar-more-menuitem {
/* Arial has the most coverage for geometric entity characters */
font-family: arial, helvetica, sans-serif;
}

+ 34
- 10
WebContent/VAADIN/themes/base/styles.css View File

@@ -626,12 +626,12 @@ div.v-app-loading {
padding: 0;
margin: 0;
}
.v-menubar .menuitem {
.v-menubar .v-menubar-menuitem {
cursor: default;
vertical-align: middle;
white-space: nowrap;
}
.v-menubar .menuitem * {
.v-menubar .v-menubar-menuitem * {
vertical-align: middle;
}
.v-menubar-submenu {
@@ -647,28 +647,39 @@ div.v-app-loading {
padding: 0;
margin: 0;
}
.v-menubar .menuitem-selected,
.v-menubar-submenu .menuitem-selected {
.v-menubar-menuitem-selected{
background: #333;
color: #fff;
}
.v-menubar-submenu .menuitem {
.v-menubar-submenu .v-menubar-menuitem {
cursor: default;
vertical-align: middle;
white-space: nowrap;
}
.v-menubar-submenu .menuitem * {
.v-menubar-submenu .v-menubar-menuitem * {
vertical-align: middle;
}
.v-menubar .v-menubar-submenu-indicator {
.v-menubar-submenu-indicator {
display: none;
/* Arial has the most coverage for geometric entity characters */
font-family: arial, helvetica, sans-serif;
}
.v-menubar-submenu .v-menubar-submenu-indicator {
display: inline;
display: inline-block;
zoom: 1;
margin-left: 1em;
float: right;
height: 100%;
font-size: 0.9em;
}
.v-menubar-menuitem-disabled {
color: #999;
}
.v-menubar-more-menuitem {
/* Arial has the most coverage for geometric entity characters */
font-family: arial, helvetica, sans-serif;
}

.v-Notification {
background: #999;
@@ -1377,6 +1388,19 @@ div.v-progressindicator-indeterminate-disabled {
.v-tabsheet-tabs .v-caption span {
white-space: nowrap;
}
.v-tabsheet-caption-close {
display: inline;
display: inline-block;
zoom: 1;
width: 16px;
height: 16px;
background: url(common/img/close.png) no-repeat;
cursor: pointer;
vertical-align: middle;
}
.v-disabled .v-tabsheet-caption-close {
cursor: default;
}
.v-tabsheet-tabitem {
border: 1px solid #aaa;
border-right: none;
@@ -1600,9 +1624,9 @@ div.v-tree-node-leaf {
position: absolute;
top: 0;
right: 0;
width: 1em;
height: 1em;
background: red;
width: 16px;
height: 16px;
background: url(common/img/close.png) no-repeat;
cursor: pointer;
overflow: hidden;
}

+ 6
- 9
WebContent/VAADIN/themes/reindeer/menubar/menubar.css View File

@@ -10,7 +10,7 @@
margin: 0 8px;
height: 23px;
}
.v-menubar .menuitem {
.v-menubar .v-menubar-menuitem {
padding: 3px 8px;
height: 17px;
line-height: 16px;
@@ -25,31 +25,28 @@
overflow: hidden;
padding: 4px 0;
}
.v-menubar-submenu .menuitem {
.v-menubar-submenu .v-menubar-menuitem {
padding: 1px 15px 1px 10px;
height: 16px;
line-height: 16px;
}
.v-menubar .menuitem-selected,
.v-menubar-submenu .menuitem-selected {
.v-menubar .v-menubar-menuitem-selected,
.v-menubar-submenu .v-menubar-menuitem-selected {
background: #4d749f repeat-x;
background-image: url(../common/img/sel-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */
color: #fff;
text-shadow: #3b5a7a 0 1px 0;
}
.v-menubar .menuitem-selected {
.v-menubar .v-menubar-menuitem-selected {
background-image: url(img/menu-sel-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */
}
.v-menubar-submenu .v-menubar-submenu-indicator {
background: transparent url(img/submenu-icon.png) no-repeat right 50%;
display: inline;
display: inline-block;
zoom: 1;
width: 16px;
margin: 0 -15px 0 5px;
text-indent: -999px;
vertical-align: middle;
}
.v-menubar-submenu .menuitem-selected .v-menubar-submenu-indicator {
.v-menubar-submenu .v-menubar-menuitem-selected .v-menubar-submenu-indicator {
background-image: url(img/submenu-icon-hover.png);
}

+ 43
- 19
WebContent/VAADIN/themes/reindeer/styles.css View File

@@ -626,12 +626,12 @@ div.v-app-loading {
padding: 0;
margin: 0;
}
.v-menubar .menuitem {
.v-menubar .v-menubar-menuitem {
cursor: default;
vertical-align: middle;
white-space: nowrap;
}
.v-menubar .menuitem * {
.v-menubar .v-menubar-menuitem * {
vertical-align: middle;
}
.v-menubar-submenu {
@@ -647,28 +647,39 @@ div.v-app-loading {
padding: 0;
margin: 0;
}
.v-menubar .menuitem-selected,
.v-menubar-submenu .menuitem-selected {
.v-menubar-menuitem-selected{
background: #333;
color: #fff;
}
.v-menubar-submenu .menuitem {
.v-menubar-submenu .v-menubar-menuitem {
cursor: default;
vertical-align: middle;
white-space: nowrap;
}
.v-menubar-submenu .menuitem * {
.v-menubar-submenu .v-menubar-menuitem * {
vertical-align: middle;
}
.v-menubar .v-menubar-submenu-indicator {
.v-menubar-submenu-indicator {
display: none;
/* Arial has the most coverage for geometric entity characters */
font-family: arial, helvetica, sans-serif;
}
.v-menubar-submenu .v-menubar-submenu-indicator {
display: inline;
display: inline-block;
zoom: 1;
margin-left: 1em;
float: right;
height: 100%;
font-size: 0.9em;
}
.v-menubar-menuitem-disabled {
color: #999;
}
.v-menubar-more-menuitem {
/* Arial has the most coverage for geometric entity characters */
font-family: arial, helvetica, sans-serif;
}

.v-Notification {
background: #999;
@@ -1377,6 +1388,19 @@ div.v-progressindicator-indeterminate-disabled {
.v-tabsheet-tabs .v-caption span {
white-space: nowrap;
}
.v-tabsheet-caption-close {
display: inline;
display: inline-block;
zoom: 1;
width: 16px;
height: 16px;
background: url(../base/common/img/close.png) no-repeat;
cursor: pointer;
vertical-align: middle;
}
.v-disabled .v-tabsheet-caption-close {
cursor: default;
}
.v-tabsheet-tabitem {
border: 1px solid #aaa;
border-right: none;
@@ -1600,9 +1624,9 @@ div.v-tree-node-leaf {
position: absolute;
top: 0;
right: 0;
width: 1em;
height: 1em;
background: red;
width: 16px;
height: 16px;
background: url(../base/common/img/close.png) no-repeat;
cursor: pointer;
overflow: hidden;
}
@@ -2993,7 +3017,7 @@ td.v-datefield-calendarpanel-nextyear {
margin: 0 8px;
height: 23px;
}
.v-menubar .menuitem {
.v-menubar .v-menubar-menuitem {
padding: 3px 8px;
height: 17px;
line-height: 16px;
@@ -3008,13 +3032,13 @@ td.v-datefield-calendarpanel-nextyear {
overflow: hidden;
padding: 4px 0;
}
.v-menubar-submenu .menuitem {
.v-menubar-submenu .v-menubar-menuitem {
padding: 1px 15px 1px 10px;
height: 16px;
line-height: 16px;
}
.v-menubar .menuitem-selected,
.v-menubar-submenu .menuitem-selected {
.v-menubar .v-menubar-menuitem-selected,
.v-menubar-submenu .v-menubar-menuitem-selected {
background: #4d749f repeat-x;
background-image: url(common/img/vertical-sprites.png);
-background-image: url(common/img/vertical-sprites-ie6.png);
@@ -3022,22 +3046,19 @@ td.v-datefield-calendarpanel-nextyear {
color: #fff;
text-shadow: #3b5a7a 0 1px 0;
}
.v-menubar .menuitem-selected {
.v-menubar .v-menubar-menuitem-selected {
background-image: url(common/img/vertical-sprites.png);
-background-image: url(common/img/vertical-sprites-ie6.png);
background-position: left -423px;
}
.v-menubar-submenu .v-menubar-submenu-indicator {
background: transparent url(menubar/img/submenu-icon.png) no-repeat right 50%;
display: inline;
display: inline-block;
zoom: 1;
width: 16px;
margin: 0 -15px 0 5px;
text-indent: -999px;
vertical-align: middle;
}
.v-menubar-submenu .menuitem-selected .v-menubar-submenu-indicator {
.v-menubar-submenu .v-menubar-menuitem-selected .v-menubar-submenu-indicator {
background-image: url(menubar/img/submenu-icon-hover.png);
}

@@ -3964,6 +3985,9 @@ td.v-datefield-calendarpanel-nextyear {
.v-tabsheet-tabitem .v-captiontext {
height: 16px;
line-height: 16px;
}
.v-tabsheet-caption-close {
}
.v-tabsheet-tabitemcell-selected {
background-image: url(common/img/vertical-sprites.png);

+ 7
- 7
WebContent/VAADIN/themes/runo/menubar/menubar.css View File

@@ -1,14 +1,14 @@
.v-menubar {
color: #464f52;
border: 1px solid #c6cbcc;
border-right: none;
border-left: 1px solid #c6cbcc;
}
.v-menubar .menuitem {
.v-menubar .v-menubar-menuitem {
padding: 0 10px;
margin: 0 10px;
border-right: 1px solid #c6cbcc;
border: 1px solid #c6cbcc;
border-left: none;
}
.v-menubar .menuitem-selected {
.v-menubar .v-menubar-menuitem-selected {
color: #fff;
background: #5daee8;
}
@@ -23,10 +23,10 @@
border-top: 1px solid #d0d4d5;
border-left: 1px solid #d0d4d5;
}
.v-menubar-submenu .menuitem {
.v-menubar-submenu .v-menubar-menuitem {
padding: 2px 10px;
}
.v-menubar-submenu .menuitem-selected {
.v-menubar-submenu .v-menubar-menuitem-selected {
color: #fff;
background: #5daee8;
}

+ 41
- 17
WebContent/VAADIN/themes/runo/styles.css View File

@@ -626,12 +626,12 @@ div.v-app-loading {
padding: 0;
margin: 0;
}
.v-menubar .menuitem {
.v-menubar .v-menubar-menuitem {
cursor: default;
vertical-align: middle;
white-space: nowrap;
}
.v-menubar .menuitem * {
.v-menubar .v-menubar-menuitem * {
vertical-align: middle;
}
.v-menubar-submenu {
@@ -647,28 +647,39 @@ div.v-app-loading {
padding: 0;
margin: 0;
}
.v-menubar .menuitem-selected,
.v-menubar-submenu .menuitem-selected {
.v-menubar-menuitem-selected{
background: #333;
color: #fff;
}
.v-menubar-submenu .menuitem {
.v-menubar-submenu .v-menubar-menuitem {
cursor: default;
vertical-align: middle;
white-space: nowrap;
}
.v-menubar-submenu .menuitem * {
.v-menubar-submenu .v-menubar-menuitem * {
vertical-align: middle;
}
.v-menubar .v-menubar-submenu-indicator {
.v-menubar-submenu-indicator {
display: none;
/* Arial has the most coverage for geometric entity characters */
font-family: arial, helvetica, sans-serif;
}
.v-menubar-submenu .v-menubar-submenu-indicator {
display: inline;
display: inline-block;
zoom: 1;
margin-left: 1em;
float: right;
height: 100%;
font-size: 0.9em;
}
.v-menubar-menuitem-disabled {
color: #999;
}
.v-menubar-more-menuitem {
/* Arial has the most coverage for geometric entity characters */
font-family: arial, helvetica, sans-serif;
}

.v-Notification {
background: #999;
@@ -1377,6 +1388,19 @@ div.v-progressindicator-indeterminate-disabled {
.v-tabsheet-tabs .v-caption span {
white-space: nowrap;
}
.v-tabsheet-caption-close {
display: inline;
display: inline-block;
zoom: 1;
width: 16px;
height: 16px;
background: url(../base/common/img/close.png) no-repeat;
cursor: pointer;
vertical-align: middle;
}
.v-disabled .v-tabsheet-caption-close {
cursor: default;
}
.v-tabsheet-tabitem {
border: 1px solid #aaa;
border-right: none;
@@ -1600,9 +1624,9 @@ div.v-tree-node-leaf {
position: absolute;
top: 0;
right: 0;
width: 1em;
height: 1em;
background: red;
width: 16px;
height: 16px;
background: url(../base/common/img/close.png) no-repeat;
cursor: pointer;
overflow: hidden;
}
@@ -2123,15 +2147,15 @@ div.v-tree-node-leaf {

.v-menubar {
color: #464f52;
border: 1px solid #c6cbcc;
border-right: none;
border-left: 1px solid #c6cbcc;
}
.v-menubar .menuitem {
.v-menubar .v-menubar-menuitem {
padding: 0 10px;
margin: 0 10px;
border-right: 1px solid #c6cbcc;
border: 1px solid #c6cbcc;
border-left: none;
}
.v-menubar .menuitem-selected {
.v-menubar .v-menubar-menuitem-selected {
color: #fff;
background: #5daee8;
}
@@ -2146,10 +2170,10 @@ div.v-tree-node-leaf {
border-top: 1px solid #d0d4d5;
border-left: 1px solid #d0d4d5;
}
.v-menubar-submenu .menuitem {
.v-menubar-submenu .v-menubar-menuitem {
padding: 2px 10px;
}
.v-menubar-submenu .menuitem-selected {
.v-menubar-submenu .v-menubar-menuitem-selected {
color: #fff;
background: #5daee8;
}

+ 1
- 0
WebContent/VAADIN/themes/sampler/sampler/styles.css View File

@@ -304,6 +304,7 @@
line-height: 16px;
color: #787b7e;
float: left;
clear: left;
width: 155px;
height: 131px;
padding: 15px 175px 0 15px;

+ 74
- 38
src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java View File

@@ -47,6 +47,7 @@ public class VMenuBar extends Widget implements Paintable,
protected Element containerElement;
protected VOverlay popup;
protected VMenuBar visibleChildMenu;
protected boolean menuVisible = false;
protected VMenuBar parentMenu;
protected CustomMenuItem selected;

@@ -125,7 +126,12 @@ public class VMenuBar extends Widget implements Paintable,
.getStringAttribute("icon")) + "\" class=\""
+ Icon.CLASSNAME + "\" alt=\"\" />");
}
itemHTML.append(moreItemUIDL.getStringAttribute("text"));

String moreItemText = moreItemUIDL.getStringAttribute("text");
if ("".equals(moreItemText)) {
moreItemText = "▶";
}
itemHTML.append(moreItemText);

moreItem = new CustomMenuItem(itemHTML.toString(), emptyCommand);
collapsedRootItems = new VMenuBar(true);
@@ -151,15 +157,6 @@ public class VMenuBar extends Widget implements Paintable,
// Construct html from the text and the optional icon
StringBuffer itemHTML = new StringBuffer();

if (item.hasAttribute("icon")) {
itemHTML.append("<img src=\""
+ client.translateVaadinUri(item
.getStringAttribute("icon")) + "\" class=\""
+ Icon.CLASSNAME + "\" alt=\"\" />");
}

itemHTML.append(itemText);

// Add submenu indicator
if (item.getChildCount() > 0) {
// FIXME For compatibility reasons: remove in version 7
@@ -174,6 +171,15 @@ public class VMenuBar extends Widget implements Paintable,
+ ">&#x25B6;</span>");
}

if (item.hasAttribute("icon")) {
itemHTML.append("<img src=\""
+ client.translateVaadinUri(item
.getStringAttribute("icon")) + "\" class=\""
+ Icon.CLASSNAME + "\" alt=\"\" />");
}

itemHTML.append(itemText);

Command cmd = null;

if (itemHasCommand) {
@@ -187,6 +193,7 @@ public class VMenuBar extends Widget implements Paintable,
}

currentItem = currentMenu.addItem(itemHTML.toString(), cmd);
currentItem.setEnabled(!item.hasAttribute("disabled"));

if (item.getChildCount() > 0) {
menuStack.push(currentMenu);
@@ -348,7 +355,6 @@ public class VMenuBar extends Widget implements Paintable,
*/
@Override
public void onBrowserEvent(Event e) {
super.onBrowserEvent(e);

Element targetElement = DOM.eventGetTarget(e);
CustomMenuItem targetItem = null;
@@ -363,11 +369,15 @@ public class VMenuBar extends Widget implements Paintable,
switch (DOM.eventGetType(e)) {

case Event.ONCLICK:
itemClick(targetItem);
if (targetItem.isEnabled()) {
itemClick(targetItem);
}
break;

case Event.ONMOUSEOVER:
itemOver(targetItem);
if (targetItem.isEnabled()) {
itemOver(targetItem);
}
break;

case Event.ONMOUSEOUT:
@@ -375,6 +385,8 @@ public class VMenuBar extends Widget implements Paintable,
break;
}
}

super.onBrowserEvent(e);
}

/**
@@ -390,7 +402,8 @@ public class VMenuBar extends Widget implements Paintable,
visibleChildMenu.hideChildren();
}

hideParents();
hideParents(true);
menuVisible = false;
DeferredCommand.addCommand(item.getCommand());

} else {
@@ -398,6 +411,11 @@ public class VMenuBar extends Widget implements Paintable,
&& item.getSubMenu() != visibleChildMenu) {
setSelected(item);
showChildMenu(item);
menuVisible = true;
} else if (!subMenu) {
setSelected(null);
hideChildren();
menuVisible = false;
}
}
}
@@ -408,15 +426,16 @@ public class VMenuBar extends Widget implements Paintable,
* @param item
*/
public void itemOver(CustomMenuItem item) {
setSelected(item);
boolean menuWasVisible = visibleChildMenu != null;
if (subMenu || menuVisible) {
setSelected(item);
}

if (menuWasVisible && visibleChildMenu != item.getSubMenu()) {
if (menuVisible && visibleChildMenu != item.getSubMenu()
&& popup != null) {
popup.hide();
}

if (item.getSubMenu() != null && (parentMenu != null || menuWasVisible)
if (menuVisible && item.getSubMenu() != null
&& visibleChildMenu != item.getSubMenu()) {
showChildMenu(item);
}
@@ -428,9 +447,11 @@ public class VMenuBar extends Widget implements Paintable,
* @param item
*/
public void itemOut(CustomMenuItem item) {
if (visibleChildMenu != item.getSubMenu() || visibleChildMenu == null) {
if (visibleChildMenu != item.getSubMenu()) {
hideChildMenu(item);
setSelected(null);
} else if (visibleChildMenu == null) {
setSelected(null);
}
}

@@ -444,6 +465,8 @@ public class VMenuBar extends Widget implements Paintable,
popup = new VOverlay(true, false, true);
popup.setWidget(item.getSubMenu());
popup.addCloseHandler(this);
popup.addAutoHidePartner(item.getElement());

int left = 0;
int top = 0;
if (subMenu) {
@@ -486,7 +509,6 @@ public class VMenuBar extends Widget implements Paintable,
if (visibleChildMenu != null
&& !(visibleChildMenu == item.getSubMenu())) {
popup.hide();

}
}

@@ -499,6 +521,20 @@ public class VMenuBar extends Widget implements Paintable,
selected.setSelected(false);
selected = null;
}
menuVisible = true;
}

/**
* Listener method, fired when this menu is closed
*/
public void onClose(CloseEvent<PopupPanel> event) {
hideChildren();
if (event.isAutoClosed()) {
hideParents(true);
menuVisible = false;
}
visibleChildMenu = null;
popup = null;
}

/**
@@ -514,15 +550,15 @@ public class VMenuBar extends Widget implements Paintable,
/**
* Recursively hide all parent menus
*/
public void hideParents() {

public void hideParents(boolean autoClosed) {
if (visibleChildMenu != null) {
popup.hide();
setSelected(null);
menuVisible = !autoClosed;
}

if (getParentMenu() != null) {
getParentMenu().hideParents();
getParentMenu().hideParents(autoClosed);
}
}

@@ -573,19 +609,6 @@ public class VMenuBar extends Widget implements Paintable,
selected = item;
}

/**
* Listener method, fired when this menu is closed
*/
public void onClose(CloseEvent<PopupPanel> event) {
hideChildren();
if (event.isAutoClosed()) {
hideParents();
}
visibleChildMenu = null;
popup = null;

}

/**
*
* A class to hold information on menu items
@@ -597,6 +620,7 @@ public class VMenuBar extends Widget implements Paintable,
protected Command command = null;
protected VMenuBar subMenu = null;
protected VMenuBar parentMenu = null;
protected boolean enabled = true;

public CustomMenuItem(String html, Command cmd) {
setElement(DOM.createTD());
@@ -605,7 +629,7 @@ public class VMenuBar extends Widget implements Paintable,
setCommand(cmd);
setSelected(false);

addStyleName("menuitem");
setStylePrimaryName(CLASSNAME + "-menuitem");
}

public void setSelected(boolean selected) {
@@ -659,7 +683,19 @@ public class VMenuBar extends Widget implements Paintable,

public void setText(String text) {
setHTML(text);
}

public void setEnabled(boolean enabled) {
this.enabled = enabled;
if (enabled) {
removeStyleDependentName("disabled");
} else {
addStyleDependentName("disabled");
}
}

public boolean isEnabled() {
return enabled;
}
}


+ 17
- 4
src/com/vaadin/ui/MenuBar.java View File

@@ -97,6 +97,10 @@ public class MenuBar extends AbstractComponent {
target.addAttribute("icon", icon);
}

if (!item.isEnabled()) {
target.addAttribute("disabled", true);
}

if (item.hasChildren()) {
iteratorStack.push(itr); // For later use

@@ -148,7 +152,7 @@ public class MenuBar extends AbstractComponent {
}// while

// If we got the clicked item, launch the command.
if (found) {
if (found && tmpItem.isEnabled()) {
tmpItem.getCommand().menuSelected(tmpItem);
}
}// if
@@ -327,8 +331,7 @@ public class MenuBar extends AbstractComponent {
/**
* Set the item that is used when collapsing the top level menu. All
* "overflowing" items will be added below this. The item command will be
* ignored. If set to null, the default item with the "More..." text is be
* used.
* ignored. If set to null, the default item with a downwards arrow is used.
*
* The item command (if specified) is ignored.
*
@@ -338,7 +341,7 @@ public class MenuBar extends AbstractComponent {
if (item != null) {
moreItem = item;
} else {
moreItem = new MenuItem("More...", null, null);
moreItem = new MenuItem("", null, null);
}
requestRepaint();
}
@@ -378,6 +381,7 @@ public class MenuBar extends AbstractComponent {
private List<MenuItem> itsChildren;
private Resource itsIcon;
private MenuItem itsParent;
private boolean enabled = true;

/**
* Constructs a new menu item that can optionally have an icon and a
@@ -625,6 +629,15 @@ public class MenuBar extends AbstractComponent {
itsParent = parent;
}

public void setEnabled(boolean enabled) {
this.enabled = enabled;
requestRepaint();
}

public boolean isEnabled() {
return enabled;
}

}// class MenuItem

}// class MenuBar

Loading…
Cancel
Save