Search in sources :

Example 1 with RectangleFigure

use of org.eclipse.draw2d.RectangleFigure in project cogtool by cogtool.

the class FrameEditorMouseState method clearRectFigures.

// mousePressed
protected void clearRectFigures() {
    for (int i = 0; i < duplicatingDynamic.size(); i++) {
        RectangleFigure rf = duplicatingDynamic.get(i);
        ui.getViewEditor().removeInteractionFigure(rf);
    }
    duplicatingDynamic.clear();
}
Also used : RectangleFigure(org.eclipse.draw2d.RectangleFigure) Point(org.eclipse.draw2d.geometry.Point) DoublePoint(edu.cmu.cs.hcii.cogtool.model.DoublePoint)

Example 2 with RectangleFigure

use of org.eclipse.draw2d.RectangleFigure in project cogtool by cogtool.

the class DesignEditorMouseState method dealWithMouseDragged.

@Override
protected boolean dealWithMouseDragged(IFigure figure, int button, int eventX, int eventY, int state) {
    boolean goForward = super.dealWithMouseDragged(figure, button, eventX, eventY, state);
    if (goForward && mouseDown) {
        StandardDrawingEditor editor = ui.getViewEditor();
        // Update VIEW to ensure ME point is visible.
        // If outside of the visible canvas, up-click should cancel!
        stopMouseDragTimer = true;
        stopDynamic = editor.movePointNearEdge(eventX, eventY, updateDelta);
        switch(getMouseState()) {
            case PotentialMovingFrame:
            case PotentialMovingSelection:
                {
                    if (withinHysteresis(eventX, eventY)) {
                        break;
                    }
                    setMouseState(MovingFrames);
                // fall through!
                }
            case MovingFrames:
                {
                    updateDynamicMove(eventX, eventY, false);
                    break;
                }
            case PotentialTogglingSelection:
                {
                    if (withinHysteresis(eventX, eventY)) {
                        break;
                    }
                    setMouseState(TogglingSelection);
                // fall through!
                }
            case TogglingSelection:
                {
                    updateDynamicSelectionArea(eventX, eventY);
                    break;
                }
            case PotentialSelectingFrames:
                {
                    if (withinHysteresis(eventX, eventY)) {
                        break;
                    }
                    setMouseState(SelectingFrames);
                // fall through!
                }
            case SelectingFrames:
                {
                    updateDynamicSelectionArea(eventX, eventY);
                    break;
                }
            case PotentialCreatingTransition:
                {
                    if (withinHysteresis(eventX, eventY)) {
                        break;
                    }
                    // Do not allow transitions from menu headers or submenus
                    IFigure target = ui.structureView.getFigureAtXY(mouseDownX, mouseDownY, StructureViewUIModel.SOURCE_ONLY);
                    if ((target instanceof GraphicalParentWidget<?, ?>) && (((GraphicalParentWidget<?, ?>) target).canHaveChildren())) {
                        break;
                    }
                    setMouseState(CreatingTransition);
                    // Ensures proper default action
                    selection.deselectAll();
                // fall through!
                }
            case CreatingTransition:
                {
                    dynamicTransition(eventX, eventY);
                    DesignEditorFrame targetFigure = ui.structureView.getFrameAtXY(eventX, eventY);
                    if (targetFigure != potentialTarget) {
                        if (potentialTarget != null) {
                            potentialTarget.dynamicHighlight(false);
                        }
                        potentialTarget = targetFigure;
                        if (potentialTarget != null) {
                            potentialTarget.dynamicHighlight(true);
                        }
                    }
                    break;
                }
            case PotentialSelectTransition:
                {
                    if (withinHysteresis(eventX, eventY)) {
                        break;
                    }
                    handleMousePressed(StructureViewUIModel.NO_TRANSITION);
                    switch(getMouseState()) {
                        case PotentialMovingFrame:
                            {
                                setMouseState(MovingFrames);
                                updateDynamicMove(eventX, eventY, false);
                                break;
                            }
                        case PotentialSelectingFrames:
                            {
                                setMouseState(SelectingFrames);
                                updateDynamicSelectionArea(eventX, eventY);
                                break;
                            }
                        case PotentialCreatingTransition:
                            {
                                setMouseState(CreatingTransition);
                                dynamicTransition(eventX, eventY);
                                break;
                            }
                    }
                    break;
                }
            case PotentialToggleTransition:
                {
                    if (withinHysteresis(eventX, eventY)) {
                        break;
                    }
                    handleMousePressed(StructureViewUIModel.NO_TRANSITION);
                    setMouseState(TogglingSelection);
                    updateDynamicSelectionArea(eventX, eventY);
                    break;
                }
            case PotentialChangeTarget:
                {
                    if (withinHysteresis(eventX, eventY)) {
                        break;
                    }
                    setMouseState(ChangingTarget);
                    Point start = hitTransition.getStart();
                    hitTransition.setVisible(false);
                    double zoom = ui.getZoom();
                    double startX = start.x * zoom;
                    double startY = start.y * zoom;
                    ensureDynamicTransition(PrecisionUtilities.round(startX), PrecisionUtilities.round(startY));
                // fall through!
                }
            case ChangingTarget:
                {
                    dynamicTransitionTarget(eventX, eventY);
                    DesignEditorFrame targetFigure = ui.structureView.getFrameAtXY(eventX, eventY);
                    if (targetFigure != potentialTarget) {
                        if (potentialTarget != null) {
                            potentialTarget.dynamicHighlight(false);
                        }
                        potentialTarget = targetFigure;
                        if (potentialTarget != null) {
                            potentialTarget.dynamicHighlight(true);
                        }
                    }
                    break;
                }
            case PotentialChangeSource:
                {
                    if (withinHysteresis(eventX, eventY)) {
                        break;
                    }
                    setMouseState(ChangingSource);
                    hitTransition.setVisible(false);
                    ensureDynamicTransition(mouseDownX, mouseDownY);
                    Point endPt = hitTransition.getEnd();
                    double zoom = ui.getZoom();
                    double endX = endPt.x * zoom;
                    double endY = endPt.y * zoom;
                    dynamicTransitionTarget(PrecisionUtilities.round(endX), PrecisionUtilities.round(endY));
                    break;
                }
            case ChangingSource:
                {
                    dynamicTransitionSource(eventX, eventY);
                    GraphicalSource<?> sourceFigure = ui.structureView.getSourceAtXY(eventX, eventY);
                    InteractionFigure drawLayer = ui.getViewEditor().getInteractionFigure();
                    if (sourceFigure != null) {
                        drawLayer.setCursor(WindowUtil.getCursor(WindowUtil.DRAW_CURSOR));
                    } else {
                        drawLayer.setCursor(WindowUtil.getCursor(WindowUtil.SELECT_CURSOR));
                    }
                    break;
                }
            case PotentialDuplicatingFrame:
                {
                    if (withinHysteresis(eventX, eventY)) {
                        break;
                    }
                    duplicatingDynamic = new ArrayList<RectangleFigure>();
                    //populate this from selection state
                    double zoom = ui.getZoom();
                    Iterator<DesignEditorFrame> selectedFrames = selection.getSelectedFrameFigures();
                    while (selectedFrames.hasNext()) {
                        RectangleFigure rect = new RectangleFigure();
                        DesignEditorFrame currFrame = selectedFrames.next();
                        //set size of new rectangle object
                        Rectangle frameSize = currFrame.getBounds();
                        frameSize.height = PrecisionUtilities.round(frameSize.height / zoom);
                        frameSize.width = PrecisionUtilities.round(frameSize.width / zoom);
                        frameSize.x = PrecisionUtilities.round(frameSize.x * zoom);
                        frameSize.y = PrecisionUtilities.round(frameSize.y * zoom);
                        rect.setBounds(frameSize);
                        //add new rectangle object to the array list
                        duplicatingDynamic.add(rect);
                        //display the new rectangle object
                        showSelectionArea(rect);
                    }
                    setMouseState(DuplicatingFrames);
                // fall through!
                }
            case DuplicatingFrames:
                {
                    updateDynamicDuplicate(eventX, eventY);
                    break;
                }
        }
        // Repeating timer for causing events to repeat.
        if ((updateDelta.x != 0) || (updateDelta.y != 0)) {
            if (rootFigure == null) {
                rootFigure = ui.getViewEditor().getInteractionFigure();
            }
            stopMouseDragTimer = false;
            // Determine the new point the mouse "moved" too.
            mouseDragTask.setNextMousePosition(eventX + updateDelta.x, eventY + updateDelta.y, button, state);
            // Queue the event for 0.1 sec.
            WindowUtil.GLOBAL_DISPLAY.timerExec(100, mouseDragTask);
        }
    }
    lastX = eventX;
    lastY = eventY;
    cleanup();
    return goForward;
}
Also used : RectangleFigure(org.eclipse.draw2d.RectangleFigure) StandardDrawingEditor(edu.cmu.cs.hcii.cogtool.view.StandardDrawingEditor) DesignEditorFrame(edu.cmu.cs.hcii.cogtool.uimodel.DesignEditorFrame) ArrayList(java.util.ArrayList) Iterator(java.util.Iterator) Rectangle(org.eclipse.draw2d.geometry.Rectangle) Point(org.eclipse.draw2d.geometry.Point) DoublePoint(edu.cmu.cs.hcii.cogtool.model.DoublePoint) GraphicalSource(edu.cmu.cs.hcii.cogtool.uimodel.GraphicalSource) InteractionFigure(edu.cmu.cs.hcii.cogtool.view.InteractionFigure) IFigure(org.eclipse.draw2d.IFigure)

Example 3 with RectangleFigure

use of org.eclipse.draw2d.RectangleFigure in project cogtool by cogtool.

the class DesignEditorMouseState method clearRectFigures.

// dealWithMousePressed
protected void clearRectFigures() {
    for (int i = 0; i < duplicatingDynamic.size(); i++) {
        RectangleFigure rf = duplicatingDynamic.get(i);
        ui.getViewEditor().removeInteractionFigure(rf);
    }
    duplicatingDynamic.clear();
}
Also used : RectangleFigure(org.eclipse.draw2d.RectangleFigure) Point(org.eclipse.draw2d.geometry.Point) DoublePoint(edu.cmu.cs.hcii.cogtool.model.DoublePoint)

Example 4 with RectangleFigure

use of org.eclipse.draw2d.RectangleFigure in project cogtool by cogtool.

the class FrameEditorMouseState method dealWithMouseDragged.

/**
     * Parameterized mouse drags so they can be scaled programatically.
     *
     * Handles mouse drags: moves the viewable area as needed
     *
     * @param figure ignored
     * @param mouseX the location the mouse is pointing to
     * @param mouseY the location the mouse is pointing to
     * @param button the buttons pressed
     * @param state the modifiers being held down
     */
@Override
protected boolean dealWithMouseDragged(IFigure figure, int button, int mouseX, int mouseY, int state) {
    boolean goForward = super.dealWithMouseDragged(figure, button, mouseX, mouseY, state);
    if (goForward && isMouseDownValid) {
        // Get the StandardEditor for handling visuals & scrolling
        StandardDrawingEditor editor = ui.getViewEditor();
        // Update VIEW to ensure mouse point is visible.
        // If outside of the visible canvas, up-click should cancel!
        stopMouseDragTimer = true;
        stopDynamic = editor.movePointNearEdge(mouseX, mouseY, updateDelta);
        double zoom = ui.getZoom();
        // The current mouse down position (scaled)
        double currentScaledX = mouseX / zoom;
        double currentScaledY = mouseY / zoom;
        Iterator<FrameEltSelnFig<?>> selectedEltFigs = selection.getSelectedFigures();
        InteractionFigure drawLayer = ui.getViewEditor().getInteractionFigure();
        // Else this is a new widget
        switch(getMouseState()) {
            // Perform move-related states
            case PotentialMovingWidget:
            case PotentialMovingSelection:
                {
                    if (withinHysteresis(mouseX, mouseY)) {
                        return true;
                    }
                    ui.hideNondynamicSupport(false);
                    prevCursor = drawLayer.getCursor();
                    drawLayer.setCursor(SELECT_CURSOR);
                    setMouseState(MovingWidgets);
                // fall through!
                }
            case MovingWidgets:
                {
                    dynamicMoveWidgets(selectedEltFigs, currentScaledX, currentScaledY);
                    ui.repaintEditor();
                    break;
                }
            case PotentialReorderWidget:
                {
                    if (withinHysteresis(mouseX, mouseY)) {
                        return true;
                    }
                    prevCursor = drawLayer.getCursor();
                    ui.hideNondynamicSupport(false, false);
                    setUpReorderFigures();
                    prevCursor = drawLayer.getCursor();
                    drawLayer.setCursor(SELECT_CURSOR);
                    setMouseState(ReorderWidget);
                // fall through!
                }
            case ReorderWidget:
                {
                    dynamicReorderWidget(mouseX, mouseY, false);
                    break;
                }
            case PotentialResizingWidget:
                {
                    if (withinHysteresis(mouseX, mouseY)) {
                        return true;
                    }
                    ui.hideNondynamicSupport(true);
                    // Iterate through selected widgets XYZZY openChildren in a loop???
                    while (selectedEltFigs.hasNext()) {
                        FrameEltSelnFig<?> gw = selectedEltFigs.next();
                        if (gw instanceof GraphicalTraversableWidget<?>) {
                            if (gw instanceof GraphicalChildWidget<?, ?>) {
                                ((GraphicalChildWidget<?, ?>) gw).getParentFigure().openChildren();
                            }
                        }
                    }
                    setMouseState(ResizingWidget);
                // fall through!
                }
            // Perform a drag resize of selected widget
            case ResizingWidget:
                {
                    dynamicResizeWidgets(selectedEltFigs, currentScaledX, currentScaledY);
                    ui.repaintEditor();
                    break;
                }
            // Create a new widget
            case PotentialCreatingWidget:
                {
                    if (withinHysteresis(mouseX, mouseY)) {
                        return true;
                    }
                    setMouseState(CreatingWidget);
                // fall through!
                }
            case CreatingWidget:
                {
                    redrawTemporaryWidget(currentScaledX, currentScaledY, false);
                    break;
                }
            // Sweeping a region for toggling selection
            case PotentialTogglingSelection:
                {
                    if (withinHysteresis(mouseX, mouseY)) {
                        return true;
                    }
                    setMouseState(TogglingSelection);
                // fall through!
                }
            case TogglingSelection:
                {
                    redrawTemporaryWidget(currentScaledX, currentScaledY, true);
                    break;
                }
            case PotentialDuplicatingWidget:
                {
                    if (withinHysteresis(mouseX, mouseY)) {
                        return true;
                    }
                    ui.hideNondynamicSupport(false, false);
                    duplicatingDynamic = new ArrayList<RectangleFigure>();
                    Iterator<FrameEltSelnFig<?>> selectedFigs = selection.getSelectedFigures();
                    while (selectedFigs.hasNext()) {
                        FrameEltSelnFig<?> currFig = selectedFigs.next();
                        if (currFig instanceof FrameEltGroupHalo) {
                            showSelectionArea(new RectangleFigure(), currFig.getBounds());
                        } else if (!(currFig instanceof GraphicalChildWidget<?, ?>)) {
                            Rectangle widgetBds = new Rectangle(currFig.getBounds());
                            // Must scale widget figure's bounds to zoom factor
                            widgetBds.height = PrecisionUtilities.round(widgetBds.height * zoom);
                            widgetBds.width = PrecisionUtilities.round(widgetBds.width * zoom);
                            widgetBds.x = PrecisionUtilities.round(widgetBds.x * zoom);
                            widgetBds.y = PrecisionUtilities.round(widgetBds.y * zoom);
                            //display the new rectangle object
                            showSelectionArea(new RectangleFigure(), widgetBds);
                        }
                    }
                    setMouseState(DuplicatingWidgets);
                // fall through!
                }
            case DuplicatingWidgets:
                {
                    updateDynamicDuplicate(mouseX, mouseY);
                    break;
                }
            case PotentialInsertDuplicateWidget:
                {
                    if (withinHysteresis(mouseX, mouseY)) {
                        return true;
                    }
                    ui.hideNondynamicSupport(false, false);
                    prevCursor = drawLayer.getCursor();
                    setUpReorderFigures();
                    prevCursor = drawLayer.getCursor();
                    drawLayer.setCursor(DRAW_CURSOR);
                    setMouseState(InsertDuplicateWidget);
                // fall through!
                }
            case InsertDuplicateWidget:
                {
                    dynamicReorderWidget(mouseX, mouseY, true);
                    break;
                }
            case PotentialMovingGridButtons:
                {
                    if (withinHysteresis(mouseX, mouseY)) {
                        return true;
                    }
                    GraphicalWidget<?> gw = ui.getPotentialFigureOwner();
                    GridButton owner = (GridButton) gw.getModel();
                    DoublePoint start = owner.getShape().getOrigin();
                    GridButtonGroup gbg = (GridButtonGroup) owner.getParentGroup();
                    movedGridButtons = gbg.getMovedButtons(moveIsVertical, start.x, start.y);
                    minX = start.x - owner.getHorizSpace();
                    minY = start.y - owner.getVertSpace();
                    prevCursor = drawLayer.getCursor();
                    if (moveIsVertical) {
                        drawLayer.setCursor(MOVE_VERT_CURSOR);
                    } else {
                        drawLayer.setCursor(MOVE_HORIZ_CURSOR);
                    }
                    setMouseState(MovingGridButtons);
                // fall through!
                }
            case MovingGridButtons:
                {
                    dynamicMoveGridButtons(currentScaledX, currentScaledY);
                    break;
                }
        }
        // Repeating timer for causing events to repeat.
        if ((updateDelta.x != 0) || (updateDelta.y != 0)) {
            if (rootFigure == null) {
                rootFigure = ui.getViewEditor().getInteractionFigure();
            }
            stopMouseDragTimer = false;
            // Determine the new point the mouse "moved" too.
            mouseDragTask.setNextMousePosition(mouseX + updateDelta.x, mouseY + updateDelta.y, button, state);
            // Queue the event for 0.1 sec.
            WindowUtil.GLOBAL_DISPLAY.timerExec(100, mouseDragTask);
        }
    }
    lastX = mouseX;
    lastY = mouseY;
    updateDynamic();
    return goForward;
}
Also used : RectangleFigure(org.eclipse.draw2d.RectangleFigure) ArrayList(java.util.ArrayList) DoubleRectangle(edu.cmu.cs.hcii.cogtool.model.DoubleRectangle) Rectangle(org.eclipse.draw2d.geometry.Rectangle) FrameEltSelnFig(edu.cmu.cs.hcii.cogtool.uimodel.FrameEltSelnFig) FrameEltGroupHalo(edu.cmu.cs.hcii.cogtool.uimodel.FrameEltGroupHalo) GraphicalWidget(edu.cmu.cs.hcii.cogtool.uimodel.GraphicalWidget) InteractionFigure(edu.cmu.cs.hcii.cogtool.view.InteractionFigure) GridButton(edu.cmu.cs.hcii.cogtool.model.GridButton) StandardDrawingEditor(edu.cmu.cs.hcii.cogtool.view.StandardDrawingEditor) Iterator(java.util.Iterator) DoublePoint(edu.cmu.cs.hcii.cogtool.model.DoublePoint) GraphicalChildWidget(edu.cmu.cs.hcii.cogtool.uimodel.GraphicalChildWidget) GridButtonGroup(edu.cmu.cs.hcii.cogtool.model.GridButtonGroup)

Example 5 with RectangleFigure

use of org.eclipse.draw2d.RectangleFigure in project tdi-studio-se by Talend.

the class SubjobContainerResizableEditPolicy method getCustomFeedbackFigure.

/**
     * This will take the figure of the node and set it as feedback figure.
     * 
     * @param modelPart
     * @return
     */
protected IFigure getCustomFeedbackFigure(Object modelPart) {
    IFigure figure;
    if (modelPart instanceof Node) {
        Node node = (Node) modelPart;
        figure = new NodeFigure(node);
        if (node.isStart()) {
            figure.setBackgroundColor(NodeFigure.START_COLOR);
        } else {
            figure.setOpaque(false);
        }
    } else {
        figure = new RectangleFigure();
        ((RectangleFigure) figure).setXOR(true);
        ((RectangleFigure) figure).setFill(true);
        figure.setBackgroundColor(ColorConstants.darkGreen);
        figure.setForegroundColor(ColorConstants.white);
    }
    return figure;
}
Also used : RectangleFigure(org.eclipse.draw2d.RectangleFigure) NodeFigure(org.talend.designer.core.ui.editor.nodes.NodeFigure) Node(org.talend.designer.core.ui.editor.nodes.Node) IFigure(org.eclipse.draw2d.IFigure)

Aggregations

RectangleFigure (org.eclipse.draw2d.RectangleFigure)14 Point (org.eclipse.draw2d.geometry.Point)7 DoublePoint (edu.cmu.cs.hcii.cogtool.model.DoublePoint)6 IFigure (org.eclipse.draw2d.IFigure)5 Label (org.eclipse.draw2d.Label)4 Node (org.talend.designer.core.ui.editor.nodes.Node)4 Rectangle (org.eclipse.draw2d.geometry.Rectangle)3 NodeFigure (org.talend.designer.core.ui.editor.nodes.NodeFigure)3 InteractionFigure (edu.cmu.cs.hcii.cogtool.view.InteractionFigure)2 StandardDrawingEditor (edu.cmu.cs.hcii.cogtool.view.StandardDrawingEditor)2 ArrayList (java.util.ArrayList)2 Iterator (java.util.Iterator)2 LineBorder (org.eclipse.draw2d.LineBorder)2 WrapLabel (org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel)2 Image (org.eclipse.swt.graphics.Image)2 DoubleRectangle (edu.cmu.cs.hcii.cogtool.model.DoubleRectangle)1 GridButton (edu.cmu.cs.hcii.cogtool.model.GridButton)1 GridButtonGroup (edu.cmu.cs.hcii.cogtool.model.GridButtonGroup)1 DesignEditorFrame (edu.cmu.cs.hcii.cogtool.uimodel.DesignEditorFrame)1 FrameEltGroupHalo (edu.cmu.cs.hcii.cogtool.uimodel.FrameEltGroupHalo)1