package org.geogebra.desktop.gui.dialog; import java.awt.Color; import javax.swing.ImageIcon; import javax.swing.JOptionPane; import org.geogebra.common.euclidian.EuclidianConstants; import org.geogebra.common.kernel.Macro; import org.geogebra.common.main.GuiManagerInterface.Help; import org.geogebra.common.main.Localization; import org.geogebra.desktop.gui.GuiManagerD; import org.geogebra.desktop.gui.MyImageD; import org.geogebra.desktop.main.AppD; import org.geogebra.desktop.util.ImageManagerD; public class HelpDialog { private AppD app; public HelpDialog(AppD app) { this.app = app; } public void openToolHelp() { openToolHelp(app.getMode()); } public void openToolHelp(int mode) { String toolName = app.getToolNameOrHelp(mode, true); String helpText = app.getToolNameOrHelp(mode, false); ImageIcon icon; String modeTextInternal = null; if (mode >= EuclidianConstants.MACRO_MODE_ID_OFFSET) { Macro macro = app.getKernel() .getMacro(mode - EuclidianConstants.MACRO_MODE_ID_OFFSET); String iconName = macro.getIconFileName(); MyImageD img = app.getExternalImage(iconName); Color border = Color.lightGray; if (img == null || img.isSVG()) { // default icon icon = app.getToolIcon(border); } else { // use image as icon icon = new ImageIcon( ImageManagerD.addBorder(img.getImage(), border, null)); } } else { modeTextInternal = EuclidianConstants.getModeTextSimple(mode); icon = app.getToolBarImage(modeTextInternal, Color.BLACK); } Localization loc = app.getLocalization(); Object[] options = { loc.getMenu("ShowOnlineHelp"), loc.getMenu("Cancel") }; int n = JOptionPane.showOptionDialog(app.getMainComponent(), helpText, loc.getMenu("ToolHelp") + " - " + toolName, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, icon, options, // the titles of buttons options[0]); // default button title if (n == 0) { if (modeTextInternal == null) { // show help for custom tools? ((GuiManagerD) app.getGuiManager()).openHelp("Custom_Tools", Help.GENERIC); } else { ((GuiManagerD) app.getGuiManager()).openHelp(modeTextInternal, Help.TOOL); } } } }