package org.geogebra.desktop.gui.menubar;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JMenu;
import javax.swing.JRadioButtonMenuItem;
import org.geogebra.common.gui.menubar.MyActionListener;
import org.geogebra.common.gui.menubar.RadioButtonMenuBar;
import org.geogebra.common.main.App;
import org.geogebra.common.util.debug.Log;
import org.geogebra.desktop.main.AppD;
public class RadioButtonMenuBarD extends JMenu implements RadioButtonMenuBar {
private static final long serialVersionUID = 1L;
private AppD app;
private ButtonGroup buttonGroup;
public RadioButtonMenuBarD(App application) {
super();
app = (AppD) application;
}
@Override
public void addRadioButtonMenuItems(final MyActionListener alistener,
String[] items, String[] actionCommands, int selectedPos,
boolean changeText) {
JRadioButtonMenuItem mi;
buttonGroup = new ButtonGroup();
// String label;
for (int i = 0; i < items.length; i++) {
if ("---".equals(items[i])) {
addSeparator();
} else {
String text = (changeText)
? app.getLocalization().getMenu(items[i]) : items[i];
mi = new JRadioButtonMenuItem(text);
mi.setFont(app.getFontCanDisplayAwt(text, false, Font.PLAIN,
app.getGUIFontSize()));
if (i == selectedPos) {
mi.setSelected(true);
}
mi.setActionCommand(actionCommands[i]);
if (alistener instanceof ActionListener) {
mi.addActionListener((ActionListener) alistener);
} else {
mi.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
alistener.actionPerformed(e.getActionCommand());
}
});
}
buttonGroup.add(mi);
add(mi);
}
}
}
@Override
public void setSelected(int pos) {
if (pos == -1) { // unselect all
buttonGroup.clearSelection();
} else {
Component item = getMenuComponent(pos);
if (item instanceof JRadioButtonMenuItem) {
((JRadioButtonMenuItem) item).setSelected(true);
} else {
Log.debug(
"Bad construction of radiobutton menu. All item must be an instance of JRadioButtonMenuItem.");
}
}
}
}