package ij.plugin; import ij.*; import ij.gui.*; import java.awt.*; /** This plugin implements the Edit/Options/Arrow Tool command. */ public class ArrowToolOptions implements PlugIn, DialogListener { private String colorName; private static GenericDialog gd; public void run(String arg) { if (gd!=null && gd.isVisible()) gd.toFront(); else arrowToolOptions(); } void arrowToolOptions() { if (!Toolbar.getToolName().equals("arrow")) IJ.setTool("arrow"); double width = Arrow.getDefaultWidth(); double headSize = Arrow.getDefaultHeadSize(); Color color = Toolbar.getForegroundColor(); colorName = Colors.getColorName(color, "red"); int style = Arrow.getDefaultStyle(); gd = new NonBlockingGenericDialog("Arrow Tool"); gd.addSlider("Width:", 1, 50, (int)width); gd.addSlider("Size:", 0, 30, headSize); gd.addChoice("Color:", Colors.colors, colorName); gd.addChoice("Style:", Arrow.styles, Arrow.styles[style]); gd.addCheckbox("Outline", Arrow.getDefaultOutline()); gd.addCheckbox("Double head", Arrow.getDefaultDoubleHeaded()); gd.addDialogListener(this); gd.showDialog(); } public boolean dialogItemChanged(GenericDialog gd, AWTEvent e) { double width2 = gd.getNextNumber(); double headSize2 = gd.getNextNumber(); String colorName2 = gd.getNextChoice(); int style2 = gd.getNextChoiceIndex(); boolean outline2 = gd.getNextBoolean(); boolean doubleHeaded2 = gd.getNextBoolean(); if (colorName!=null && !colorName2.equals(colorName)) { Color color = Colors.getColor(colorName2, Color.black); Toolbar.setForegroundColor(color); } colorName = colorName2; Arrow.setDefaultWidth(width2); Arrow.setDefaultHeadSize(headSize2); Arrow.setDefaultStyle(style2); Arrow.setDefaultOutline(outline2); Arrow.setDefaultDoubleHeaded(doubleHeaded2); ImagePlus imp = WindowManager.getCurrentImage(); if (imp==null) return true; Roi roi = imp.getRoi(); if (roi==null) return true; if (roi instanceof Arrow) { Arrow arrow = (Arrow)roi; roi.setStrokeWidth((float)width2); arrow.setHeadSize(headSize2); arrow.setStyle(style2); arrow.setOutline(outline2); arrow.setDoubleHeaded(doubleHeaded2); imp.draw(); } Prefs.set(Arrow.STYLE_KEY, style2); Prefs.set(Arrow.WIDTH_KEY, width2); Prefs.set(Arrow.SIZE_KEY, headSize2); Prefs.set(Arrow.OUTLINE_KEY, outline2); Prefs.set(Arrow.DOUBLE_HEADED_KEY, doubleHeaded2); return true; } }