Search in sources :

Example 1 with IGroup

use of net.sf.latexdraw.models.interfaces.shape.IGroup in project latexdraw by arnobl.

the class TestShapeGrouper method testUnGroup.

@Test
public void testUnGroup() {
    selectOneGroup.execute();
    IGroup group = (IGroup) drawing.getShapeAt(0);
    clickSep.execute();
    assertEquals(2, drawing.size());
    assertEquals(group.getShapeAt(0), drawing.getShapeAt(0));
    assertEquals(group.getShapeAt(1), drawing.getShapeAt(1));
}
Also used : IGroup(net.sf.latexdraw.models.interfaces.shape.IGroup) Test(org.junit.Test)

Example 2 with IGroup

use of net.sf.latexdraw.models.interfaces.shape.IGroup in project latexdraw by arnobl.

the class Border method configureMovePointBinding.

private void configureMovePointBinding() {
    nodeBinder(MovePointShape.class, new DnD()).on(mvPtHandlers).first((c, i) -> i.getSrcObject().filter(o -> o instanceof MovePtHandler).map(o -> (MovePtHandler) o).ifPresent(handler -> {
        final IGroup group = canvas.getDrawing().getSelection();
        if (group.size() == 1 && group.getShapeAt(0) instanceof IModifiablePointsShape) {
            c.setPoint(handler.getPoint());
            c.setShape((IModifiablePointsShape) group.getShapeAt(0));
        }
    })).then((c, i) -> i.getSrcObject().ifPresent(node -> {
        final Point3D startPt = node.localToParent(i.getSrcLocalPoint());
        final Point3D endPt = node.localToParent(i.getEndLocalPt());
        final IPoint ptToMove = ((MovePtHandler) node).getPoint();
        final double x = ptToMove.getX() + endPt.getX() - startPt.getX();
        final double y = ptToMove.getY() + endPt.getY() - startPt.getY();
        c.setNewCoord(grid.getTransformedPointToGrid(new Point3D(x, y, 0d)));
    })).exec().when(i -> i.getSrcLocalPoint() != null && i.getEndLocalPt() != null && i.getSrcObject().orElse(null) instanceof MovePtHandler).bind();
}
Also used : Arrays(java.util.Arrays) Initializable(javafx.fxml.Initializable) Command(org.malai.command.Command) MovePtHandler(net.sf.latexdraw.handlers.MovePtHandler) Point3D(javafx.geometry.Point3D) URL(java.net.URL) ShapeFactory(net.sf.latexdraw.models.ShapeFactory) ScaleHandler(net.sf.latexdraw.handlers.ScaleHandler) FXCollections(javafx.collections.FXCollections) MathUtils(net.sf.latexdraw.models.MathUtils) MovePointShape(net.sf.latexdraw.commands.shape.MovePointShape) JfXWidgetBinding(org.malai.javafx.binding.JfXWidgetBinding) Function(java.util.function.Function) IArc(net.sf.latexdraw.models.interfaces.shape.IArc) Position(net.sf.latexdraw.models.interfaces.shape.Position) Inject(net.sf.latexdraw.util.Inject) IShape(net.sf.latexdraw.models.interfaces.shape.IShape) ResourceBundle(java.util.ResourceBundle) ListChangeListener(javafx.collections.ListChangeListener) IDrawing(net.sf.latexdraw.models.interfaces.shape.IDrawing) IPoint(net.sf.latexdraw.models.interfaces.shape.IPoint) ScaleShapes(net.sf.latexdraw.commands.shape.ScaleShapes) DnD(org.malai.javafx.interaction.library.DnD) ArcAngleHandler(net.sf.latexdraw.handlers.ArcAngleHandler) IControlPointShape(net.sf.latexdraw.models.interfaces.shape.IControlPointShape) Node(javafx.scene.Node) ShapeProperties(net.sf.latexdraw.commands.shape.ShapeProperties) ModifyShapeProperty(net.sf.latexdraw.commands.shape.ModifyShapeProperty) RotationHandler(net.sf.latexdraw.handlers.RotationHandler) IGroup(net.sf.latexdraw.models.interfaces.shape.IGroup) IBezierCurve(net.sf.latexdraw.models.interfaces.shape.IBezierCurve) Collectors(java.util.stream.Collectors) MoveCtrlPoint(net.sf.latexdraw.commands.shape.MoveCtrlPoint) Cursor(javafx.scene.Cursor) List(java.util.List) IModifiablePointsShape(net.sf.latexdraw.models.interfaces.shape.IModifiablePointsShape) CtrlPointHandler(net.sf.latexdraw.handlers.CtrlPointHandler) ObservableList(javafx.collections.ObservableList) Handler(net.sf.latexdraw.handlers.Handler) RotateShapes(net.sf.latexdraw.commands.shape.RotateShapes) IModifiablePointsShape(net.sf.latexdraw.models.interfaces.shape.IModifiablePointsShape) Point3D(javafx.geometry.Point3D) MovePtHandler(net.sf.latexdraw.handlers.MovePtHandler) IGroup(net.sf.latexdraw.models.interfaces.shape.IGroup) IPoint(net.sf.latexdraw.models.interfaces.shape.IPoint) DnD(org.malai.javafx.interaction.library.DnD)

Example 3 with IGroup

use of net.sf.latexdraw.models.interfaces.shape.IGroup in project latexdraw by arnobl.

the class Border method configureBindings.

@Override
protected void configureBindings() {
    addBinding(new DnD2Scale(this));
    configureMovePointBinding();
    nodeBinder(MoveCtrlPoint.class, new DnD()).on(ctrlPt1Handlers).on(ctrlPt2Handlers).first((c, i) -> {
        final IGroup group = canvas.getDrawing().getSelection();
        if (group.size() == 1 && group.getShapeAt(0) instanceof IControlPointShape) {
            c.setPoint(i.getSrcObject().map(h -> ((CtrlPointHandler) h).getPoint()).orElse(null));
            c.setShape((IControlPointShape) group.getShapeAt(0));
            c.setIsFirstCtrlPt(ctrlPt1Handlers.contains(i.getSrcObject().orElse(null)));
        }
    }).then((c, i) -> {
        final Point3D startPt = i.getSrcObject().map(n -> n.localToParent(i.getSrcLocalPoint())).orElse(new Point3D(0d, 0d, 0d));
        final Point3D endPt = i.getSrcObject().map(n -> n.localToParent(i.getEndLocalPt())).orElse(new Point3D(0d, 0d, 0d));
        final IPoint ptToMove = i.getSrcObject().map(n -> ((CtrlPointHandler) n).getPoint()).orElse(ShapeFactory.INST.createPoint());
        final double x = ptToMove.getX() + endPt.getX() - startPt.getX();
        final double y = ptToMove.getY() + endPt.getY() - startPt.getY();
        c.setNewCoord(grid.getTransformedPointToGrid(new Point3D(x, y, 0d)));
    }).exec().bind();
    nodeBinder(RotateShapes.class, new DnD()).on(rotHandler).first((c, i) -> {
        final IDrawing drawing = canvas.getDrawing();
        c.setGravityCentre(drawing.getSelection().getGravityCentre());
        c.getGc().translate(canvas.getOrigin().getX(), canvas.getOrigin().getY());
        c.setShape(drawing.getSelection().duplicateDeep(false));
    }).then((c, i) -> c.setRotationAngle(c.getGc().computeRotationAngle(ShapeFactory.INST.createPoint(canvas.sceneToLocal(i.getSrcScenePoint())), ShapeFactory.INST.createPoint(canvas.sceneToLocal(i.getEndScenePt()))))).exec().bind();
    addBinding(new DnD2ArcAngle(this));
}
Also used : Arrays(java.util.Arrays) Initializable(javafx.fxml.Initializable) Command(org.malai.command.Command) MovePtHandler(net.sf.latexdraw.handlers.MovePtHandler) Point3D(javafx.geometry.Point3D) URL(java.net.URL) ShapeFactory(net.sf.latexdraw.models.ShapeFactory) ScaleHandler(net.sf.latexdraw.handlers.ScaleHandler) FXCollections(javafx.collections.FXCollections) MathUtils(net.sf.latexdraw.models.MathUtils) MovePointShape(net.sf.latexdraw.commands.shape.MovePointShape) JfXWidgetBinding(org.malai.javafx.binding.JfXWidgetBinding) Function(java.util.function.Function) IArc(net.sf.latexdraw.models.interfaces.shape.IArc) Position(net.sf.latexdraw.models.interfaces.shape.Position) Inject(net.sf.latexdraw.util.Inject) IShape(net.sf.latexdraw.models.interfaces.shape.IShape) ResourceBundle(java.util.ResourceBundle) ListChangeListener(javafx.collections.ListChangeListener) IDrawing(net.sf.latexdraw.models.interfaces.shape.IDrawing) IPoint(net.sf.latexdraw.models.interfaces.shape.IPoint) ScaleShapes(net.sf.latexdraw.commands.shape.ScaleShapes) DnD(org.malai.javafx.interaction.library.DnD) ArcAngleHandler(net.sf.latexdraw.handlers.ArcAngleHandler) IControlPointShape(net.sf.latexdraw.models.interfaces.shape.IControlPointShape) Node(javafx.scene.Node) ShapeProperties(net.sf.latexdraw.commands.shape.ShapeProperties) ModifyShapeProperty(net.sf.latexdraw.commands.shape.ModifyShapeProperty) RotationHandler(net.sf.latexdraw.handlers.RotationHandler) IGroup(net.sf.latexdraw.models.interfaces.shape.IGroup) IBezierCurve(net.sf.latexdraw.models.interfaces.shape.IBezierCurve) Collectors(java.util.stream.Collectors) MoveCtrlPoint(net.sf.latexdraw.commands.shape.MoveCtrlPoint) Cursor(javafx.scene.Cursor) List(java.util.List) IModifiablePointsShape(net.sf.latexdraw.models.interfaces.shape.IModifiablePointsShape) CtrlPointHandler(net.sf.latexdraw.handlers.CtrlPointHandler) ObservableList(javafx.collections.ObservableList) Handler(net.sf.latexdraw.handlers.Handler) RotateShapes(net.sf.latexdraw.commands.shape.RotateShapes) RotateShapes(net.sf.latexdraw.commands.shape.RotateShapes) CtrlPointHandler(net.sf.latexdraw.handlers.CtrlPointHandler) IDrawing(net.sf.latexdraw.models.interfaces.shape.IDrawing) Point3D(javafx.geometry.Point3D) IGroup(net.sf.latexdraw.models.interfaces.shape.IGroup) IControlPointShape(net.sf.latexdraw.models.interfaces.shape.IControlPointShape) IPoint(net.sf.latexdraw.models.interfaces.shape.IPoint) DnD(org.malai.javafx.interaction.library.DnD)

Example 4 with IGroup

use of net.sf.latexdraw.models.interfaces.shape.IGroup in project latexdraw by arnobl.

the class TestIDrawing method testSetSelectionList1.

@Test
public void testSetSelectionList1() {
    List<IShape> list = new ArrayList<>();
    IGroup selection = drawing.getSelection();
    IShape sh = ShapeFactory.INST.createRectangle();
    list.add(sh);
    drawing.setSelection(list);
    assertEquals(selection, drawing.getSelection());
    assertEquals(1, drawing.getSelection().size());
    assertEquals(sh, drawing.getSelection().getShapeAt(0));
}
Also used : ArrayList(java.util.ArrayList) IGroup(net.sf.latexdraw.models.interfaces.shape.IGroup) IShape(net.sf.latexdraw.models.interfaces.shape.IShape) Test(org.junit.Test)

Example 5 with IGroup

use of net.sf.latexdraw.models.interfaces.shape.IGroup in project latexdraw by arnobl.

the class TestIDrawing method testSetSelectionList2.

@Test
public void testSetSelectionList2() {
    List<IShape> list = new ArrayList<>();
    IGroup selection = drawing.getSelection();
    IShape sh = ShapeFactory.INST.createRectangle();
    IShape sh2 = ShapeFactory.INST.createRectangle();
    list.add(sh);
    list.add(sh2);
    drawing.setSelection(list);
    assertEquals(selection, drawing.getSelection());
    assertEquals(2, drawing.getSelection().size());
    assertEquals(sh, drawing.getSelection().getShapeAt(0));
    assertEquals(sh2, drawing.getSelection().getShapeAt(1));
}
Also used : ArrayList(java.util.ArrayList) IGroup(net.sf.latexdraw.models.interfaces.shape.IGroup) IShape(net.sf.latexdraw.models.interfaces.shape.IShape) Test(org.junit.Test)

Aggregations

IGroup (net.sf.latexdraw.models.interfaces.shape.IGroup)12 IShape (net.sf.latexdraw.models.interfaces.shape.IShape)7 Test (org.junit.Test)5 URL (java.net.URL)3 ResourceBundle (java.util.ResourceBundle)3 Initializable (javafx.fxml.Initializable)3 ShapeProperties (net.sf.latexdraw.commands.shape.ShapeProperties)3 IPoint (net.sf.latexdraw.models.interfaces.shape.IPoint)3 ArrayList (java.util.ArrayList)2 Arrays (java.util.Arrays)2 List (java.util.List)2 Function (java.util.function.Function)2 Collectors (java.util.stream.Collectors)2 FXCollections (javafx.collections.FXCollections)2 ListChangeListener (javafx.collections.ListChangeListener)2 ObservableList (javafx.collections.ObservableList)2 Point3D (javafx.geometry.Point3D)2 Cursor (javafx.scene.Cursor)2 Node (javafx.scene.Node)2 ModifyShapeProperty (net.sf.latexdraw.commands.shape.ModifyShapeProperty)2