added mirror

This commit is contained in:
bancika
2017-01-04 15:24:10 +01:00
parent e8b1258f09
commit ac93a97e85
14 changed files with 171 additions and 50 deletions
Binary file not shown.
Binary file not shown.
@@ -36,7 +36,8 @@ public enum IconLoader {
"cloud_edit.png"), CloudUpload("cloud_upload.png"), NavLeftBlue("nav_left_blue.png"), NavRightBlue(
"nav_right_blue.png"), MissingImage("missing_image.png"), CloudBg("cloud_bg.png"), CloudBig("cloud_big.png"), CloudWait(
"cloud_wait.png"), Spinning("spinning.gif"), Megaphone("megaphone.png"), Download("download.png"), Eye("eye.png"), Messages(
"messages.png"), SearchBox("search-box.png"), Screwdriver("screwdriver.png"), Hammer("hammer.png");
"messages.png"), SearchBox("search-box.png"), Screwdriver("screwdriver.png"), Hammer("hammer.png"), FlipHorizontal("flip_horizontal.png"),
FlipVertical("flip_vertical.png");
protected String name;
Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B

@@ -7,6 +7,7 @@ import java.awt.event.KeyEvent;
import java.awt.print.PrinterException;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
@@ -17,6 +18,7 @@ import javax.swing.KeyStroke;
import org.apache.log4j.Logger;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ISelectionProcessor;
import org.diylc.common.ITask;
import org.diylc.common.PropertyWrapper;
import org.diylc.core.ExpansionMode;
@@ -142,6 +144,10 @@ public class ActionFactory {
public RotateSelectionAction createRotateSelectionAction(IPlugInPort plugInPort, int direction) {
return new RotateSelectionAction(plugInPort, direction);
}
public MirrorSelectionAction createMirrorSelectionAction(IPlugInPort plugInPort, int direction) {
return new MirrorSelectionAction(plugInPort, direction);
}
public SendToBackAction createSendToBackAction(IPlugInPort plugInPort) {
return new SendToBackAction(plugInPort);
@@ -681,7 +687,7 @@ public class ActionFactory {
}
}
private static List<IDIYComponent<?>> cloneComponents(List<IDIYComponent<?>> components) {
private static List<IDIYComponent<?>> cloneComponents(Collection<IDIYComponent<?>> components) {
List<IDIYComponent<?>> result = new ArrayList<IDIYComponent<?>>(components.size());
for (IDIYComponent<?> component : components) {
try {
@@ -920,6 +926,33 @@ public class ActionFactory {
plugInPort.rotateSelection(direction);
}
}
public static class MirrorSelectionAction extends AbstractAction {
private static final long serialVersionUID = 1L;
private IPlugInPort plugInPort;
private int direction;
public MirrorSelectionAction(IPlugInPort plugInPort, int direction) {
super();
this.plugInPort = plugInPort;
this.direction = direction;
if (direction == ISelectionProcessor.HORIZONTAL) {
putValue(AbstractAction.NAME, "Mirror Horizontally");
putValue(AbstractAction.SMALL_ICON, IconLoader.FlipHorizontal.getIcon());
} else {
putValue(AbstractAction.NAME, "Mirror Vertically");
putValue(AbstractAction.SMALL_ICON, IconLoader.FlipVertical.getIcon());
}
}
@Override
public void actionPerformed(ActionEvent e) {
LOG.info("Mirror Selection triggered: " + direction);
plugInPort.mirrorSelection(direction);
}
}
public static class SendToBackAction extends AbstractAction {
@@ -32,6 +32,7 @@ import org.diylc.common.BadPositionException;
import org.diylc.common.EventType;
import org.diylc.common.IPlugIn;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ISelectionProcessor;
import org.diylc.core.ExpansionMode;
import org.diylc.core.IDIYComponent;
import org.diylc.core.Template;
@@ -55,6 +56,7 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
private JPopupMenu popupMenu;
private JMenu selectionMenu;
private JMenu expandMenu;
private JMenu transformMenu;
private JMenu applyTemplateMenu;
private ActionFactory.CutAction cutAction;
@@ -72,6 +74,8 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
private ActionFactory.ExpandSelectionAction expandSelectionSameTypeAction;
private ActionFactory.RotateSelectionAction rotateClockwiseAction;
private ActionFactory.RotateSelectionAction rotateCounterclockwiseAction;
private ActionFactory.MirrorSelectionAction mirrorHorizontallyAction;
private ActionFactory.MirrorSelectionAction mirrorVerticallyAction;
private IPlugInPort plugInPort;
private ISwingUI swingUI;
@@ -244,12 +248,7 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
popupMenu.addSeparator();
popupMenu.add(getEditSelectionAction());
popupMenu.add(getDeleteSelectionAction());
popupMenu.add(getRotateClockwiseAction());
popupMenu.add(getRotateCounterclockwiseAction());
popupMenu.add(getGroupAction());
popupMenu.add(getUngroupAction());
popupMenu.add(getSendToBackAction());
popupMenu.add(getBringToFrontAction());
popupMenu.add(getTransformMenu());
popupMenu.add(getSaveAsTemplateAction());
popupMenu.add(getApplyTemplateMenu());
popupMenu.add(getExpandMenu());
@@ -278,6 +277,21 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
return expandMenu;
}
public JMenu getTransformMenu() {
if (transformMenu == null) {
transformMenu = new JMenu("Transform Selection");
transformMenu.add(getRotateClockwiseAction());
transformMenu.add(getRotateCounterclockwiseAction());
transformMenu.add(getMirrorHorizontallyAction());
transformMenu.add(getMirrorVerticallyAction());
transformMenu.add(getGroupAction());
transformMenu.add(getUngroupAction());
transformMenu.add(getSendToBackAction());
transformMenu.add(getBringToFrontAction());
}
return transformMenu;
}
public JMenu getApplyTemplateMenu() {
if (applyTemplateMenu == null) {
applyTemplateMenu = new JMenu("Apply Template");
@@ -384,6 +398,22 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
return rotateCounterclockwiseAction;
}
public ActionFactory.MirrorSelectionAction getMirrorHorizontallyAction() {
if (mirrorHorizontallyAction == null) {
mirrorHorizontallyAction =
ActionFactory.getInstance().createMirrorSelectionAction(plugInPort, ISelectionProcessor.HORIZONTAL);
}
return mirrorHorizontallyAction;
}
public ActionFactory.MirrorSelectionAction getMirrorVerticallyAction() {
if (mirrorVerticallyAction == null) {
mirrorVerticallyAction =
ActionFactory.getInstance().createMirrorSelectionAction(plugInPort, ISelectionProcessor.VERTICAL);
}
return mirrorVerticallyAction;
}
public ActionFactory.SaveAsTemplateAction getSaveAsTemplateAction() {
if (saveAsTemplateAction == null) {
saveAsTemplateAction = ActionFactory.getInstance().createSaveAsTemplateAction(plugInPort);
@@ -296,7 +296,7 @@ public class StatusBar extends JPanel implements IPlugIn {
}
break;
case SELECTION_CHANGED:
List<IDIYComponent<?>> selection = (List<IDIYComponent<?>>) params[0];
Collection<IDIYComponent<?>> selection = (Collection<IDIYComponent<?>>) params[0];
Collection<IDIYComponent<?>> stuckComponents = (Collection<IDIYComponent<?>>) params[1];
Collection<String> componentNames = new HashSet<String>();
for (IDIYComponent<?> component : selection) {