/* 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.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JCheckBoxMenuItem; import javax.swing.JToolBar; import javax.swing.table.TableColumn; import org.geogebra.common.main.Localization; import org.geogebra.desktop.gui.util.PopupMenuButtonD; import org.geogebra.desktop.gui.view.consprotocol.ConstructionProtocolViewD.ColumnKeeper; import org.geogebra.desktop.main.AppD; import org.geogebra.desktop.util.GuiResourcesD; /** * Stylebar for construction protocol view */ public class ConstructionProtocolStyleBar extends JToolBar implements ActionListener { private static final long serialVersionUID = 1L; /** * The construction protocol view which uses this tool bar. */ protected ConstructionProtocolViewD cpView; /** * Instance of the application. */ protected AppD app; /** Columns button */ PopupMenuButtonD btnColumns; /** Options button */ PopupMenuButtonD btnOptions; private JButton btnExport, btnPrint, btnHelp; /** Item for Show only breakpoints option */ JCheckBoxMenuItem miShowOnlyBreakpoints; /** Item for Colorful protocol option */ JCheckBoxMenuItem miColorfulConstructionProtocol; private Localization loc; /** * Helper bar. * * @param cpView * construction protocol view * @param app * application */ public ConstructionProtocolStyleBar(ConstructionProtocolViewD cpView, AppD app) { this.cpView = cpView; this.app = app; this.loc = app.getLocalization(); setFloatable(false); addButtons(); } /** * add the buttons */ protected void addButtons() { // "columns" button btnColumns = new PopupMenuButtonD(app) { private static final long serialVersionUID = 1L; @Override public boolean prepareToShowPopup() { JCheckBoxMenuItem item; removeAllMenuItems(); for (int k = 1; k < cpView.getTableColumns().length; k++) { item = new JCheckBoxMenuItem( cpView.getData().getColumns()[k] .getTranslatedTitle()); TableColumn column = cpView.getTableColumns()[k]; item.setSelected(cpView.isColumnInModel(column)); ColumnKeeper colKeeper = cpView.new ColumnKeeper(column, cpView.getData().columns[k]); item.addActionListener(colKeeper); btnColumns.addPopupMenuItem(item); } return true; } }; btnColumns.setKeepVisible(true); btnColumns.setStandardButton(true); // mouse clicks over total button // region btnColumns.setIcon(app.getScaledIcon(GuiResourcesD.COLUMN_HEADER)); add(btnColumns); addSeparator(); // options button // PopupMenuButton without selection table, add JMenuItems directly. btnOptions = new PopupMenuButtonD(app) { private static final long serialVersionUID = 1L; @Override public boolean prepareToShowPopup() { miShowOnlyBreakpoints.setSelected(app.getKernel() .getConstruction().showOnlyBreakpoints()); miColorfulConstructionProtocol .setSelected(cpView.getUseColors()); return true; } }; btnOptions.setKeepVisible(true); btnOptions.setStandardButton(true); // mouse clicks over total button // region btnOptions .setIcon(app.getScaledIcon(GuiResourcesD.DOCUMENT_PROPERTIES)); miShowOnlyBreakpoints = new JCheckBoxMenuItem( loc.getPlain("ShowOnlyBreakpoints")); miShowOnlyBreakpoints.setSelected( app.getKernel().getConstruction().showOnlyBreakpoints()); miShowOnlyBreakpoints.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { cpView.showOnlyBreakpointsAction(); } }); btnOptions.addPopupMenuItem(miShowOnlyBreakpoints); miColorfulConstructionProtocol = new JCheckBoxMenuItem( loc.getPlain("ColorfulConstructionProtocol")); miColorfulConstructionProtocol.setSelected(cpView.getUseColors()); miColorfulConstructionProtocol.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { cpView.setUseColors(!cpView.getUseColors()); } }); btnOptions.addPopupMenuItem(miColorfulConstructionProtocol); add(btnOptions); addSeparator(); // export button btnExport = new JButton(app.getScaledIcon(GuiResourcesD.TEXT_HTML)); btnExport.setToolTipText(loc.getPlainTooltip("ExportAsWebpage")); btnExport.addActionListener(this); add(btnExport); addSeparator(); // print button btnPrint = new JButton( app.getScaledIcon(GuiResourcesD.DOCUMENT_PRINT_PREVIEW)); btnPrint.setToolTipText(loc.getPlainTooltip("Print")); btnPrint.addActionListener(this); add(btnPrint); addSeparator(); // Help button btnHelp = new JButton(app.getScaledIcon(GuiResourcesD.HELP)); // btnHelp.setToolTipText(loc.getPlainTooltip("FastHelp")); btnHelp.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Thread runner = new Thread() { @Override public void run() { app.getGuiManager().openHelp("Construction_Protocol"); } }; runner.start(); } }); add(btnHelp); setLabels(); } /** * Set the tool tip texts (used for language change, and at initialization * labels). */ public void setLabels() { btnColumns.setToolTipText(loc.getMenuTooltip("Columns")); btnOptions.setToolTipText(loc.getMenuTooltip("Options")); btnExport.setToolTipText(loc.getPlainTooltip("ExportAsWebpage")); btnPrint.setToolTipText(loc.getMenuTooltip("Print")); btnHelp.setToolTipText(loc.getMenuTooltip("FastHelp")); miShowOnlyBreakpoints.setText(loc.getPlain("ShowOnlyBreakpoints")); miColorfulConstructionProtocol .setText(loc.getPlain("ColorfulConstructionProtocol")); } /** reset actions and buttons */ public void reinit() { removeAll(); addButtons(); } /** * React to button presses. */ @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == btnColumns) { int selIndex = btnColumns.getSelectedIndex(); TableColumn column = cpView.getTableColumns()[selIndex]; ColumnKeeper colKeeper = cpView.new ColumnKeeper(column, cpView.getData().columns[selIndex]); colKeeper.actionPerformed(e); } if (e.getSource() == btnOptions) { if (btnOptions.getSelectedIndex() == 0) { cpView.showOnlyBreakpointsAction(); } else if (btnOptions.getSelectedIndex() == 1) { cpView.setUseColors(!cpView.getUseColors()); } } if (e.getSource() == btnExport) { cpView.getExportHtmlAction().actionPerformed(e); } if (e.getSource() == btnPrint) { cpView.getPrintPreviewAction().actionPerformed(e); } } }