Search in sources :

Example 1 with Entity

use of com.willwinder.ugs.nbp.designer.entities.Entity in project Universal-G-Code-Sender by winder.

the class MoveControl method addUndoAction.

private void addUndoAction(Point2D deltaMovement, Entity target) {
    UndoManager undoManager = CentralLookup.getDefault().lookup(UndoManager.class);
    if (undoManager != null) {
        List<Entity> entityList = new ArrayList<>();
        if (target instanceof SelectionManager) {
            entityList.addAll(((SelectionManager) target).getSelection());
        } else {
            entityList.add(target);
        }
        undoManager.addAction(new MoveAction(entityList, deltaMovement));
    }
}
Also used : MoveAction(com.willwinder.ugs.nbp.designer.actions.MoveAction) Entity(com.willwinder.ugs.nbp.designer.entities.Entity) SelectionManager(com.willwinder.ugs.nbp.designer.entities.selection.SelectionManager) UndoManager(com.willwinder.ugs.nbp.designer.actions.UndoManager) ArrayList(java.util.ArrayList)

Example 2 with Entity

use of com.willwinder.ugs.nbp.designer.entities.Entity in project Universal-G-Code-Sender by winder.

the class EntityTreeUtils method getSelectedPaths.

public static List<TreePath> getSelectedPaths(Controller controller, Entity entity, List<Entity> currentTreePath) {
    ArrayList<TreePath> result = new ArrayList<>();
    if (controller.getSelectionManager().isSelected(entity)) {
        List<Entity> entities = new ArrayList<>(currentTreePath);
        entities.add(entity);
        result.add(new TreePath(entities.toArray(new Entity[0])));
    }
    if (entity instanceof EntityGroup) {
        List<Entity> newCurrentTreePath = new ArrayList<>(currentTreePath);
        newCurrentTreePath.add(entity);
        result.addAll(((EntityGroup) entity).getChildren().stream().flatMap(e -> getSelectedPaths(controller, e, newCurrentTreePath).stream()).collect(Collectors.toList()));
    }
    return result;
}
Also used : Entity(com.willwinder.ugs.nbp.designer.entities.Entity) TreePath(javax.swing.tree.TreePath) EntityGroup(com.willwinder.ugs.nbp.designer.entities.EntityGroup) ArrayList(java.util.ArrayList)

Example 3 with Entity

use of com.willwinder.ugs.nbp.designer.entities.Entity in project Universal-G-Code-Sender by winder.

the class DesignV1 method toInternal.

public Design toInternal() {
    Design design = new Design();
    if (entities != null) {
        List<Entity> entities = getEntities().stream().filter(Objects::nonNull).map(EntityV1::toInternal).collect(Collectors.toList());
        design.setEntities(entities);
    }
    design.setSettings(settings.toInternal());
    return design;
}
Also used : UgsDesign(com.willwinder.ugs.nbp.designer.io.ugsd.common.UgsDesign) Design(com.willwinder.ugs.nbp.designer.model.Design) Entity(com.willwinder.ugs.nbp.designer.entities.Entity) Objects(java.util.Objects)

Example 4 with Entity

use of com.willwinder.ugs.nbp.designer.entities.Entity in project Universal-G-Code-Sender by winder.

the class MultiplyDialog method stateChanged.

@Override
public void stateChanged(ChangeEvent e) {
    entityGroup.removeAll();
    EntityGroup selection = new EntityGroup();
    selection.addAll(controller.getSelectionManager().getSelection().stream().map(Entity::copy).collect(Collectors.toList()));
    for (int x = 0; x < (int) xCountSpinner.getValue(); x++) {
        for (int y = 0; y < (int) yCountSpinner.getValue(); y++) {
            if (x >= 1 || y >= 1) {
                EntityGroup clone = (EntityGroup) selection.copy();
                Point2D position = clone.getPosition();
                double newX = position.getX() + (x * clone.getSize().getWidth()) + (x * (int) xSpacingSpinner.getValue());
                double newY = position.getY() + (y * clone.getSize().getHeight()) + (y * (int) ySpacingSpinner.getValue());
                clone.setPosition(new Point2D.Double(newX, newY));
                entityGroup.addAll(clone.getChildren());
            }
        }
    }
    controller.getDrawing().repaint();
}
Also used : Entity(com.willwinder.ugs.nbp.designer.entities.Entity) Point2D(java.awt.geom.Point2D) EntityGroup(com.willwinder.ugs.nbp.designer.entities.EntityGroup)

Example 5 with Entity

use of com.willwinder.ugs.nbp.designer.entities.Entity in project Universal-G-Code-Sender by winder.

the class SelectionSettingsPanel method changedUpdate.

@Override
public void changedUpdate(DocumentEvent e) {
    controller.getSelectionManager().removeListener(this);
    if (StringUtils.isNotEmpty(rotation.getText()) && e.getDocument() == rotation.getDocument()) {
        try {
            double angle = Utils.parseDouble(rotation.getText());
            controller.getSelectionManager().setRotation(angle);
            controller.getDrawing().repaint();
        } catch (NumberFormatException ex) {
        // never mind
        }
    }
    if (StringUtils.isNotEmpty(posXTextField.getText()) && StringUtils.isNotEmpty(posYTextField.getText()) && (e.getDocument() == posXTextField.getDocument() || e.getDocument() == posYTextField.getDocument())) {
        double x = Utils.parseDouble(posXTextField.getText());
        double y = Utils.parseDouble(posYTextField.getText());
        Point2D position = controller.getSelectionManager().getPosition(anchor);
        position.setLocation(x - position.getX(), y - position.getY());
        controller.getSelectionManager().move(position);
        controller.getDrawing().repaint();
    }
    if (StringUtils.isNotEmpty(widthTextField.getText()) && StringUtils.isNotEmpty(heightTextField.getText()) && (e.getDocument() == widthTextField.getDocument() || e.getDocument() == heightTextField.getDocument())) {
        try {
            double width = Utils.parseDouble(widthTextField.getText());
            double height = Utils.parseDouble(heightTextField.getText());
            if (width <= 0 || height <= 0) {
                return;
            }
            if (!lockRatioButton.isSelected()) {
                double ratio = controller.getSelectionManager().getSize().getRatio();
                if (e.getDocument() == widthTextField.getDocument()) {
                    height = width / ratio;
                    setFieldValue(heightTextField, Utils.toString(height));
                } else {
                    width = height * ratio;
                    setFieldValue(widthTextField, Utils.toString(width));
                }
            }
            controller.getSelectionManager().setSize(new Size(width, height));
            controller.getDrawing().repaint();
        } catch (NumberFormatException ex) {
        // never mind
        }
    }
    if (!controller.getSelectionManager().isEmpty()) {
        Entity entity = controller.getSelectionManager().getSelection().get(0);
        if (entity instanceof Text) {
            ((Text) entity).setText(textTextField.getText());
            ((Text) entity).setFontFamily((String) fontDropDown.getSelectedItem());
        }
        controller.getDrawing().repaint();
    }
    controller.getSelectionManager().addListener(this);
}
Also used : Entity(com.willwinder.ugs.nbp.designer.entities.Entity) Point2D(java.awt.geom.Point2D) Size(com.willwinder.ugs.nbp.designer.model.Size) Text(com.willwinder.ugs.nbp.designer.entities.cuttable.Text)

Aggregations

Entity (com.willwinder.ugs.nbp.designer.entities.Entity)22 Point2D (java.awt.geom.Point2D)7 SelectionManager (com.willwinder.ugs.nbp.designer.entities.selection.SelectionManager)6 EntityGroup (com.willwinder.ugs.nbp.designer.entities.EntityGroup)4 Design (com.willwinder.ugs.nbp.designer.model.Design)4 ArrayList (java.util.ArrayList)4 Text (com.willwinder.ugs.nbp.designer.entities.cuttable.Text)3 MouseEntityEvent (com.willwinder.ugs.nbp.designer.gui.MouseEntityEvent)3 UndoManager (com.willwinder.ugs.nbp.designer.actions.UndoManager)2 Group (com.willwinder.ugs.nbp.designer.entities.cuttable.Group)2 Size (com.willwinder.ugs.nbp.designer.model.Size)2 Gson (com.google.gson.Gson)1 GsonBuilder (com.google.gson.GsonBuilder)1 JsonSyntaxException (com.google.gson.JsonSyntaxException)1 MoveAction (com.willwinder.ugs.nbp.designer.actions.MoveAction)1 RotateAction (com.willwinder.ugs.nbp.designer.actions.RotateAction)1 Cuttable (com.willwinder.ugs.nbp.designer.entities.cuttable.Cuttable)1 Path (com.willwinder.ugs.nbp.designer.entities.cuttable.Path)1 ImageTracerDialog (com.willwinder.ugs.nbp.designer.gui.imagetracer.ImageTracerDialog)1 C2dFile (com.willwinder.ugs.nbp.designer.io.c2d.model.C2dFile)1