/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package Sirius.navigator.ui.embedded;
import org.apache.log4j.Logger;
import java.awt.*;
import java.util.*;
import javax.swing.*;
/**
* DOCUMENT ME!
*
* @author pascal
* @version $Revision$, $Date$
*/
public class EmbeddedMenu extends JMenu implements EmbeddedComponent {
//~ Static fields/initializers ---------------------------------------------
protected static final Logger logger = Logger.getLogger(EmbeddedMenu.class);
//~ Instance fields --------------------------------------------------------
protected final String id;
//~ Constructors -----------------------------------------------------------
/**
* Creates a new EmbeddedMenu object.
*
* @param id DOCUMENT ME!
*/
public EmbeddedMenu(final String id) {
this.id = id;
}
/**
* Creates a new EmbeddedMenu object.
*
* @param id DOCUMENT ME!
* @param buttons DOCUMENT ME!
*/
public EmbeddedMenu(final String id, final Collection buttons) {
this.id = id;
this.add(buttons);
}
//~ Methods ----------------------------------------------------------------
/**
* Getter for property id.
*
* @return Value of property id.
*/
@Override
public String getId() {
return this.id;
}
/**
* Setter for property id.
*
* @param enabled id New value of property id.
*/
/*public void setId(String id)
* { this.id = id;}*/
@Override
public void setEnabled(final boolean enabled) {
final Component[] components = this.getComponents();
if ((components != null) && (components.length > 0)) {
;
}
for (int i = 0; i < components.length; i++) {
components[i].setEnabled(enabled);
}
super.setEnabled(enabled);
}
@Override
public void setVisible(final boolean visible) {
final Component[] components = this.getComponents();
if ((components != null) && (components.length > 0)) {
;
}
for (int i = 0; i < components.length; i++) {
components[i].setVisible(visible);
}
super.setVisible(visible);
}
/**
* DOCUMENT ME!
*
* @param components DOCUMENT ME!
*/
protected void add(final Collection components) {
if (logger.isDebugEnabled()) {
logger.debug("adding '" + components.size() + "' menu items"); // NOI18N
}
final Iterator iterator = components.iterator();
while (iterator.hasNext()) {
this.addItem(iterator.next());
}
}
/**
* DOCUMENT ME!
*
* @param item DOCUMENT ME!
*/
public void addItem(final Object item) {
if (item instanceof JComponent) {
if (item instanceof JMenuItem) {
this.add((JMenuItem)item);
} else if (item instanceof JSeparator) {
this.addSeparator();
} else {
logger.warn("item type '" + item.getClass().getName()
+ "' found, 'javax.swing.JMenuItem' or 'javax.swing.JSeparator' preferred"); // NOI18N
this.add((JComponent)item);
}
} else {
logger.error("invalid item type '" + item.getClass().getName() + "', 'javax.swing.JComponent' expected"); // NOI18N
}
}
}