package org.geogebra.desktop.gui.menubar; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.JMenuItem; import org.geogebra.common.gui.Layout; import org.geogebra.common.io.layout.Perspective; import org.geogebra.desktop.gui.layout.LayoutD; import org.geogebra.desktop.main.AppD; /** * The "Perspectives" menu. */ class PerspectivesMenuD extends BaseMenu { private static final long serialVersionUID = 1125756553396593316L; LayoutD layout; private AbstractAction changePerspectiveAction; /** * Creates new perspectives menu * * @param app * @param layout */ public PerspectivesMenuD(AppD app, LayoutD layout) { super(app, "Perspectives"); this.layout = layout; // items are added to the menu when it's opened, see BaseMenu: // addMenuListener(this); } /** * Initialize the menu items. */ @Override protected void initItems() { if (!initialized) { // menus not created yet, so nothing to do return; } for (int i = 0; i < Layout.getDefaultPerspectivesLength(); ++i) { JMenuItem tmpItem = new JMenuItem(changePerspectiveAction); tmpItem.setText(loc.getMenu( "Perspective." + Layout.getDefaultPerspectives(i).getId())); tmpItem.setIcon(app.getEmptyIcon()); tmpItem.setActionCommand("d" + i); add(tmpItem); } addSeparator(); // user perspectives Perspective[] perspectives = layout.getPerspectives(); if (perspectives.length != 0) { for (int i = 0; i < perspectives.length; ++i) { JMenuItem tmpItem = new JMenuItem(changePerspectiveAction); tmpItem.setText(perspectives[i].getId()); tmpItem.setIcon(app.getEmptyIcon()); tmpItem.setActionCommand(Integer.toString(i)); add(tmpItem); } addSeparator(); } } /** * Initialize the actions. */ @Override protected void initActions() { changePerspectiveAction = new AbstractAction() { @SuppressWarnings("hiding") public static final long serialVersionUID = 1L; @Override public void actionPerformed(ActionEvent e) { // default perspectives start with a "d" if (e.getActionCommand().startsWith("d")) { int index = Integer .parseInt(e.getActionCommand().substring(1)); layout.applyPerspective( Layout.getDefaultPerspectives(index)); } else { int index = Integer.parseInt(e.getActionCommand()); layout.applyPerspective(layout.getPerspective(index)); } } }; } @Override public void update() { removeAll(); initItems(); } }