/* GeoGebra - Dynamic Mathematics for Everyone http://www.geogebra.org This file is part of GeoGebra. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. */ package org.geogebra.desktop.gui.view.consprotocol; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.BorderFactory; import javax.swing.JCheckBoxMenuItem; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.table.TableColumn; import org.geogebra.common.kernel.Construction; import org.geogebra.common.main.Localization; import org.geogebra.desktop.gui.view.consprotocol.ConstructionProtocolViewD.ColumnKeeper; import org.geogebra.desktop.main.AppD; import org.geogebra.desktop.util.GuiResourcesD; /** * Context menu for construction protocol * * */ public class ConstructionProtocolContextMenu extends JPopupMenu { private static final long serialVersionUID = 1L; /** Application */ AppD app; private Construction cons; /** Construction protocol view associated with this menu */ ConstructionProtocolViewD constprotView; /** * Creates new context menu * * @param app * application */ public ConstructionProtocolContextMenu(AppD app) { this.app = app; this.cons = app.getKernel().getConstruction(); constprotView = (ConstructionProtocolViewD) app.getGuiManager() .getConstructionProtocolView(); initItems(); } /** * Initialize the menu items. */ private void initItems() { Localization loc = app.getLocalization(); // title for menu JLabel title = new JLabel(loc.getMenu("ConstructionProtocol")); JMenu colMenu = new JMenu(loc.getMenu("Columns")); JMenu optionsMenu = new JMenu(loc.getMenu("Options")); title.setFont(app.getBoldFont()); title.setBackground(Color.white); title.setForeground(Color.black); title.setIcon(app.getEmptyIcon()); title.setBorder(BorderFactory.createEmptyBorder(5, 15, 2, 5)); add(title); addSeparator(); title.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { setVisible(false); } }); // menu items // "Columns" menu for (int k = 1; k < constprotView.getTableColumns().length; k++) { JCheckBoxMenuItem item = new JCheckBoxMenuItem( constprotView.getData().columns[k].getTranslatedTitle()); TableColumn column = constprotView.getTableColumns()[k]; item.setSelected(constprotView.isColumnInModel(column)); ColumnKeeper colKeeper = constprotView.new ColumnKeeper(column, constprotView.getData().columns[k]); item.addActionListener(colKeeper); colMenu.add(item); } add(colMenu); // "Options" menu JCheckBoxMenuItem cbShowOnlyBreakpoints = new JCheckBoxMenuItem( loc.getMenu("ShowOnlyBreakpoints")); cbShowOnlyBreakpoints.setSelected(cons.showOnlyBreakpoints()); cbShowOnlyBreakpoints.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { constprotView.showOnlyBreakpointsAction(); } }); optionsMenu.add(cbShowOnlyBreakpoints); JCheckBoxMenuItem cbUseColors = new JCheckBoxMenuItem( loc.getMenu("ColorfulConstructionProtocol")); cbUseColors.setSelected(constprotView.getUseColors()); cbUseColors.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { constprotView.setUseColors(!constprotView.getUseColors()); // constprotView.getData().updateAll(); } }); optionsMenu.add(cbUseColors); add(optionsMenu); // Export and Print menu add(constprotView.getExportHtmlAction()); add(constprotView.getPrintPreviewAction()); // Help menu JMenuItem mi = new JMenuItem(loc.getMenu("FastHelp"), app.getScaledIcon(GuiResourcesD.HELP)); ActionListener lstHelp = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { app.showHelp("ConstructionProtocolHelp"); requestFocus(); } }; mi.addActionListener(lstHelp); add(mi); app.setComponentOrientation(this); } }