Skip to content

Commit

Permalink
Move TurtleModifierAction to TurtleTool
Browse files Browse the repository at this point in the history
  • Loading branch information
i-make-robots committed Oct 13, 2024
1 parent e2a0183 commit ed1cd17
Show file tree
Hide file tree
Showing 32 changed files with 61 additions and 63 deletions.
22 changes: 13 additions & 9 deletions src/main/java/com/marginallyclever/makelangelo/MainMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
import com.marginallyclever.convenience.log.Log;
import com.marginallyclever.convenience.log.LogPanel;
import com.marginallyclever.makelangelo.firmwareuploader.FirmwareUploaderPanel;
import com.marginallyclever.makelangelo.makeart.TurtleModifierAction;
import com.marginallyclever.makelangelo.makeart.turtletool.TurtleTool;
import com.marginallyclever.makelangelo.makeart.io.OpenFileChooser;
import com.marginallyclever.makelangelo.makeart.tools.*;
import com.marginallyclever.makelangelo.makeart.turtletool.*;
import com.marginallyclever.makelangelo.makeart.turtlegenerator.TurtleGenerator;
import com.marginallyclever.makelangelo.makeart.turtlegenerator.TurtleGeneratorFactory;
import com.marginallyclever.makelangelo.makeart.turtlegenerator.TurtleGeneratorPanel;
Expand Down Expand Up @@ -366,37 +366,41 @@ private JMenu createToolsMenu() {

menu.addSeparator();

TurtleModifierAction a4 = new FlipTurtleAction(1,-1,Translator.get("FlipV"));
TurtleTool a4 = new FlipTurtleAction(1,-1,Translator.get("FlipV"));
a4.putValue(Action.SMALL_ICON, new ImageIcon(Objects.requireNonNull(getClass().getResource("/com/marginallyclever/makelangelo/icons8-flip-horizontal-16.png"))));
a4.setSource(app);
a4.addModifierListener(app::setTurtle);
menu.add(a4);

TurtleModifierAction a5 = new FlipTurtleAction(-1,1,Translator.get("FlipH"));
TurtleTool a5 = new FlipTurtleAction(-1,1,Translator.get("FlipH"));
a5.putValue(Action.SMALL_ICON, new ImageIcon(Objects.requireNonNull(getClass().getResource("/com/marginallyclever/makelangelo/icons8-flip-vertical-16.png"))));
a5.setSource(app);
a5.addModifierListener(app::setTurtle);
menu.add(a5);

menu.addSeparator();

TurtleModifierAction a1 = createModifier(new SimplifyTurtleAction(),null);
TurtleTool a1 = createModifier(new SimplifyTurtleAction(),null);
a1.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Y, SHORTCUT_CTRL));//"ctrl Y"
//a1.putValue(Action.SMALL_ICON,new ImageIcon(Objects.requireNonNull(getClass().getResource("/com/marginallyclever/makelangelo/icons8-simplify-16.png"))));
menu.add(a1);

TurtleModifierAction a2 = createModifier(new ReorderTurtleAction(),"/com/marginallyclever/makelangelo/icons8-sort-16.png");
TurtleTool a2 = createModifier(new ReorderTurtleAction(),"/com/marginallyclever/makelangelo/icons8-sort-16.png");
a2.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, SHORTCUT_CTRL));//"ctrl R"
menu.add(a2);

TurtleModifierAction a3 = createModifier(new InfillTurtleAction(), "/com/marginallyclever/makelangelo/icons8-fill-color-16.png");
TurtleTool a3 = createModifier(new InfillTurtleAction(), "/com/marginallyclever/makelangelo/icons8-fill-color-16.png");
a3.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_I, SHORTCUT_CTRL));//"ctrl I"
menu.add(a3);

LeastHopsTurtleAction a4 = createModifier(new LeastHopsTurtleAction(),"/com/marginallyclever/makelangelo/icons8-kangaroo-16.png");
a4.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_H, SHORTCUT_CTRL));//"ctrl H"
menu.add(a4);

return menu;
}

private TurtleModifierAction createModifier(TurtleModifierAction action, String resource) {
private TurtleTool createModifier(TurtleTool action, String resource) {
if(resource!=null) {
action.putValue(Action.SMALL_ICON, new ImageIcon(Objects.requireNonNull(getClass().getResource(resource))));
}
Expand All @@ -413,7 +417,7 @@ private JMenuItem createMover(String label, String resource, ActionListener list
return menuItem;
}

private TurtleModifierAction createActionMenuItem(TurtleModifierAction action) {
private TurtleTool createActionMenuItem(TurtleTool action) {
action.setSource(app);
action.addModifierListener(app::setTurtle);
return action;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
package com.marginallyclever.makelangelo.makeart;

import com.marginallyclever.makelangelo.makeart.turtletool.TurtleTool;
import com.marginallyclever.makelangelo.turtle.Turtle;

import java.util.EventListener;

/**
* {@link TurtleModifierListener} subscribe to {@link TurtleModifierAction}s in order
* {@link TurtleModifierListener} subscribe to {@link TurtleTool}s in order
* to be notified when the action is complete.
* @author Dan Royer
* @since 7.31.0
*/
public interface TurtleModifierListener extends EventListener {
/**
* @param turtle the result of a {@link TurtleModifierAction} being run.
* @param turtle the result of a {@link TurtleTool} being run.
*/
void turtleModifiedEvent(Turtle turtle);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.TransformedImage;
import com.marginallyclever.makelangelo.makeart.imagefilter.FilterCMYK;
import com.marginallyclever.makelangelo.makeart.tools.InfillTurtle;
import com.marginallyclever.makelangelo.makeart.tools.RemoveExtraColorChangesFromTurtle;
import com.marginallyclever.makelangelo.makeart.turtletool.InfillTurtle;
import com.marginallyclever.makelangelo.makeart.turtletool.RemoveExtraColorChangesFromTurtle;
import com.marginallyclever.makelangelo.paper.Paper;
import com.marginallyclever.makelangelo.select.SelectReadOnlyText;
import com.marginallyclever.makelangelo.select.SelectSlider;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.marginallyclever.convenience.voronoi.VoronoiCell;
import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.TransformedImage;
import com.marginallyclever.makelangelo.makeart.tools.InfillTurtle;
import com.marginallyclever.makelangelo.makeart.turtletool.InfillTurtle;
import com.marginallyclever.makelangelo.paper.Paper;
import com.marginallyclever.makelangelo.select.SelectSlider;
import com.marginallyclever.makelangelo.turtle.Turtle;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public static int decode32bit(int color) {
* @param alpha 0-255
* @return RGB color
*/
protected static int encode32bit(int red,int green,int blue,int alpha) {
public static int encode32bit(int red,int green,int blue,int alpha) {
red &= 0xff;
green &= 0xff;
blue &= 0xff;
Expand All @@ -57,7 +57,7 @@ protected static int encode32bit(int red,int green,int blue,int alpha) {
* @param greyscale 0-255
* @return RGB fully opaque
*/
protected static int encode32bit(int greyscale) {
public static int encode32bit(int greyscale) {
greyscale &= 0xff;
return encode32bit(greyscale,greyscale,greyscale,0xff);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.marginallyclever.makelangelo.makeart.turtlegenerator;

import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.tools.CropTurtle;
import com.marginallyclever.makelangelo.makeart.turtletool.CropTurtle;
import com.marginallyclever.makelangelo.makeart.truchet.*;
import com.marginallyclever.makelangelo.select.SelectBoolean;
import com.marginallyclever.makelangelo.select.SelectRandomSeed;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.marginallyclever.makelangelo.makeart.turtlegenerator.fractal;

import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.tools.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.makeart.turtletool.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.makeart.turtlegenerator.TurtleGenerator;
import com.marginallyclever.makelangelo.select.SelectReadOnlyText;
import com.marginallyclever.makelangelo.select.SelectSlider;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.marginallyclever.makelangelo.makeart.turtlegenerator.fractal;

import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.tools.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.makeart.turtletool.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.makeart.turtlegenerator.TurtleGenerator;
import com.marginallyclever.makelangelo.select.SelectReadOnlyText;
import com.marginallyclever.makelangelo.select.SelectSlider;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.marginallyclever.makelangelo.makeart.turtlegenerator.fractal;

import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.tools.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.makeart.turtletool.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.makeart.turtlegenerator.TurtleGenerator;
import com.marginallyclever.makelangelo.select.SelectReadOnlyText;
import com.marginallyclever.makelangelo.select.SelectSlider;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.marginallyclever.makelangelo.makeart.turtlegenerator.fractal;

import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.tools.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.makeart.turtletool.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.makeart.turtlegenerator.TurtleGenerator;
import com.marginallyclever.makelangelo.select.SelectReadOnlyText;
import com.marginallyclever.makelangelo.select.SelectSlider;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.marginallyclever.makelangelo.makeart.turtlegenerator.fractal;

import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.tools.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.makeart.turtletool.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.makeart.turtlegenerator.TurtleGenerator;
import com.marginallyclever.makelangelo.select.SelectRandomSeed;
import com.marginallyclever.makelangelo.select.SelectReadOnlyText;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.marginallyclever.makelangelo.makeart.turtlegenerator.grid;

import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.tools.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.makeart.turtletool.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.makeart.turtlegenerator.TurtleGenerator;
import com.marginallyclever.makelangelo.select.SelectDouble;
import com.marginallyclever.makelangelo.turtle.Turtle;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.marginallyclever.makelangelo.makeart.turtlegenerator.maze;

import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.tools.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.makeart.turtletool.ResizeTurtleToPaperAction;
import com.marginallyclever.makelangelo.select.SelectSlider;
import com.marginallyclever.makelangelo.turtle.Turtle;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.marginallyclever.makelangelo.makeart.tools;
package com.marginallyclever.makelangelo.makeart.turtletool;

import com.marginallyclever.makelangelo.makeart.TurtleModifierAction;
import com.marginallyclever.makelangelo.turtle.Turtle;

import java.awt.geom.Rectangle2D;
Expand All @@ -9,7 +8,7 @@
* Center the input {@link Turtle} to the origin.
* @author Dan Royer
*/
public class CenterTurtleToPaperAction extends TurtleModifierAction {
public class CenterTurtleToPaperAction extends TurtleTool {

public CenterTurtleToPaperAction(String name) {
super(name);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.marginallyclever.makelangelo.makeart.tools;
package com.marginallyclever.makelangelo.makeart.turtletool;

import com.marginallyclever.convenience.Clipper2D;
import com.marginallyclever.convenience.Point2D;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
package com.marginallyclever.makelangelo.makeart.tools;
package com.marginallyclever.makelangelo.makeart.turtletool;

import com.marginallyclever.makelangelo.makeart.TurtleModifierAction;
import com.marginallyclever.makelangelo.turtle.Turtle;

import java.io.Serial;

public class FlipTurtleAction extends TurtleModifierAction {
public class FlipTurtleAction extends TurtleTool {
private final double scaleX,scaleY;

public FlipTurtleAction(double x,double y,String name) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.marginallyclever.makelangelo.makeart.tools;
package com.marginallyclever.makelangelo.makeart.turtletool;

import com.marginallyclever.convenience.LineCollection;
import com.marginallyclever.convenience.LineSegment2D;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package com.marginallyclever.makelangelo.makeart.tools;
package com.marginallyclever.makelangelo.makeart.turtletool;

import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.TurtleModifierAction;
import com.marginallyclever.makelangelo.turtle.Turtle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class InfillTurtleAction extends TurtleModifierAction {
public class InfillTurtleAction extends TurtleTool {
private static final Logger logger = LoggerFactory.getLogger(InfillTurtleAction.class);

public InfillTurtleAction() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.marginallyclever.makelangelo.makeart.tools;
package com.marginallyclever.makelangelo.makeart.turtletool;

import com.marginallyclever.makelangelo.turtle.MovementType;
import com.marginallyclever.makelangelo.turtle.Turtle;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package com.marginallyclever.makelangelo.makeart.tools;
package com.marginallyclever.makelangelo.makeart.turtletool;

import com.marginallyclever.convenience.LineCollection;
import com.marginallyclever.convenience.LineSegment2D;
import com.marginallyclever.convenience.Point2D;
import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.TurtleModifierAction;
import com.marginallyclever.makelangelo.turtle.Turtle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -21,7 +20,7 @@
* @author Dan Royer
*
*/
public class ReorderTurtleAction extends TurtleModifierAction {
public class ReorderTurtleAction extends TurtleTool {
private static final Logger logger = LoggerFactory.getLogger(ReorderTurtleAction.class);

public ReorderTurtleAction() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.marginallyclever.makelangelo.makeart.tools;
package com.marginallyclever.makelangelo.makeart.turtletool;

import com.marginallyclever.makelangelo.makeart.TurtleModifierAction;
import com.marginallyclever.makelangelo.paper.Paper;
import com.marginallyclever.makelangelo.turtle.Turtle;

Expand All @@ -10,7 +9,7 @@
* Scale the input {@link Turtle} to fit the margins of the {@link Paper} provided.
* @author Dan Royer
*/
public class ResizeTurtleToPaperAction extends TurtleModifierAction {
public class ResizeTurtleToPaperAction extends TurtleTool {
private final Paper myPaper;
private final boolean fillPage;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.marginallyclever.makelangelo.makeart.tools;
package com.marginallyclever.makelangelo.makeart.turtletool;

import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.turtle.Turtle;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.marginallyclever.makelangelo.makeart.tools;
package com.marginallyclever.makelangelo.makeart.turtletool;

import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.turtle.Turtle;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package com.marginallyclever.makelangelo.makeart.tools;
package com.marginallyclever.makelangelo.makeart.turtletool;

import com.marginallyclever.convenience.LineCollection;
import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.TurtleModifierAction;
import com.marginallyclever.makelangelo.turtle.Turtle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -15,7 +14,7 @@
* @author Dan Royer
* @since 7.31.0
*/
public class SimplifyTurtleAction extends TurtleModifierAction {
public class SimplifyTurtleAction extends TurtleTool {
private static final Logger logger = LoggerFactory.getLogger(SimplifyTurtleAction.class);
private static double distanceTolerance = 1.6;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.marginallyclever.makelangelo.makeart.tools;
package com.marginallyclever.makelangelo.makeart.turtletool;

import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.turtle.Turtle;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,28 @@
package com.marginallyclever.makelangelo.makeart;
package com.marginallyclever.makelangelo.makeart.turtletool;

import com.marginallyclever.makelangelo.Makelangelo;
import com.marginallyclever.makelangelo.makeart.TurtleModifierListener;
import com.marginallyclever.makelangelo.turtle.Turtle;

import javax.swing.*;
import javax.swing.event.EventListenerList;
import java.awt.event.ActionEvent;

/**
* {@link TurtleModifierAction} is the base class for all Actions which modify a {@link Turtle}.
* {@link TurtleTool} is the base class for all Actions which modify a {@link Turtle}.
* Some examples might be scale, flip, rotate, reorder, etc.
* @author Dan Royer
* @since 7.31.0
*/
public abstract class TurtleModifierAction extends AbstractAction {
public abstract class TurtleTool extends AbstractAction {
private final EventListenerList listeners = new EventListenerList();
private Makelangelo myMakelangelo;

public TurtleModifierAction(String string) {
public TurtleTool(String string) {
super(string);
}

public TurtleModifierAction(String string,Icon icon) {
public TurtleTool(String string, Icon icon) {
super(string,icon);
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
exports com.marginallyclever.makelangelo;
exports com.marginallyclever.makelangelo.makeart;
exports com.marginallyclever.makelangelo.makeart.imagefilter;
exports com.marginallyclever.makelangelo.makeart.tools;
exports com.marginallyclever.makelangelo.makeart.turtletool;
exports com.marginallyclever.makelangelo.paper;
exports com.marginallyclever.makelangelo.plotter.plottersettings;
exports com.marginallyclever.makelangelo.turtle;
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.marginallyclever.makelangelo.makeart.io;

import com.marginallyclever.makelangelo.Translator;
import com.marginallyclever.makelangelo.makeart.tools.ReorderTurtleAction;
import com.marginallyclever.makelangelo.makeart.tools.SimplifyTurtleAction;
import com.marginallyclever.makelangelo.makeart.turtletool.ReorderTurtleAction;
import com.marginallyclever.makelangelo.makeart.turtletool.SimplifyTurtleAction;
import com.marginallyclever.makelangelo.makeart.turtlegenerator.Generator_TruchetTiles;
import com.marginallyclever.makelangelo.paper.Paper;
import com.marginallyclever.makelangelo.plotter.plottersettings.PlotterSettingsManager;
Expand Down
Loading

0 comments on commit ed1cd17

Please sign in to comment.