Java 类javax.swing.undo.AbstractUndoableEdit 实例源码

项目:SweetHome3D    文件:HomeController.java   
/**
 * Deletes items and post a cut operation to undo support.
 */
public void cut(List<? extends Selectable> items)
{
    // Start a compound edit that deletes items and changes presentation name
    UndoableEditSupport undoSupport = getUndoableEditSupport();
    undoSupport.beginUpdate();
    getPlanController().deleteItems(items);
    // Add a undoable edit to change presentation name
    undoSupport.postEdit(new AbstractUndoableEdit()
    {
        @Override
        public String getPresentationName()
        {
            return preferences.getLocalizedString(HomeController.class, "undoCutName");
        }
    });
    // End compound edit
    undoSupport.endUpdate();
}
项目:SweetHome3D    文件:HomeController.java   
/**
 * Paste the furniture in clipboard to the selected group in home.
 * @since 5.0
 */
public void pasteToGroup()
{
    // Start a compound edit that adds furniture
    UndoableEditSupport undoSupport = getUndoableEditSupport();
    undoSupport.beginUpdate();
    List<HomePieceOfFurniture> addedFurniture = Home.getFurnitureSubList(getView().getClipboardItems());
    adjustFurnitureSizeAndElevation(addedFurniture, true);
    getFurnitureController().addFurnitureToGroup(addedFurniture,
            (HomeFurnitureGroup) this.home.getSelectedItems().get(0));
    undoSupport.postEdit(new AbstractUndoableEdit()
    {
        @Override
        public String getPresentationName()
        {
            return preferences.getLocalizedString(HomeController.class, "undoPasteToGroupName");
        }
    });

    // End compound edit
    undoSupport.endUpdate();
}
项目:opensim-gui    文件:ExplorerTopComponent.java   
public static void addUndoableEdit(AbstractUndoableEdit aUndoableEdit)
{
    getDefault().getUndoRedoManager().addEdit(aUndoableEdit);
    TopComponent tc = ViewDB.getCurrentModelWindow();
    if (tc==null){ // No gfx window
        tc = getDefault();
    } 
    if (tc==null) return;   // No tc to piggyback on
    final TopComponent tcf = tc;
    if (java.awt.EventQueue.isDispatchThread()) {
        tcf.requestActive();
    }
    else {
        SwingUtilities.invokeLater(new Runnable(){

        @Override
        public void run() {
            tcf.requestActive();
        }
    });
    }
 }
项目:opensim-gui    文件:ExperimentalForceSetNode.java   
void setColorUI(final Color color, boolean allowUndo) {
    final Color oldColor = getColor();
    if (allowUndo){
        AbstractUndoableEdit auEdit = new AbstractUndoableEdit(){
            @Override
           public void undo() throws CannotUndoException {
               super.undo();
               setColorUI(oldColor, false);
           }
            @Override
           public void redo() throws CannotRedoException {
               super.redo();
               setColorUI(color, true);
           }
        };
        ExplorerTopComponent.addUndoableEdit(auEdit);
    }
    motionDisplayer.setDefaultForceColor(color);
    ViewDB.repaintAll();
    refreshNode();
}
项目:opensim-gui    文件:ExperimentalForceSetNode.java   
void setForceScaleFactorUI(final double newFactor, boolean allowUndo)
{
    final double oldForceScaleFactor = getForceScaleFactor();
    if (allowUndo){
        AbstractUndoableEdit auEdit = new AbstractUndoableEdit(){
           @Override
           public void undo() throws CannotUndoException {
               super.undo();
               setForceScaleFactorUI(oldForceScaleFactor, false);
           }
           @Override
           public void redo() throws CannotRedoException {
               super.redo();
               setForceScaleFactorUI(newFactor, true);
           }
        };
        ExplorerTopComponent.addUndoableEdit(auEdit);
    }       
    ///motionDisplayer.setScaleFactor(newFactor);
    ViewDB.repaintAll();
    refreshNode();
}
项目:opensim-gui    文件:ExperimentalMarkerSetNode.java   
void setColorUI(final Color color, boolean allowUndo) {
    final Color oldColor = getColor();
    if (allowUndo){
        AbstractUndoableEdit auEdit = new AbstractUndoableEdit(){
            @Override
           public void undo() throws CannotUndoException {
               super.undo();
               setColorUI(oldColor, false);
           }
            @Override
           public void redo() throws CannotRedoException {
               super.redo();
               setColorUI(color, true);
           }
        };
        ExplorerTopComponent.addUndoableEdit(auEdit);
    }
    motionDisplayer.setDefaultExperimentalMarkerColor(color);
    ViewDB.repaintAll();
    refreshNode();
}
项目:opensim-gui    文件:ExperimentalMarkerSetNode.java   
void setMarkerScaleFactorUI(final double newFactor, boolean allowUndo)
{
    final double oldMarkerScaleFactor = getMarkerScaleFactor();
    if (allowUndo){
        AbstractUndoableEdit auEdit = new AbstractUndoableEdit(){
           @Override
           public void undo() throws CannotUndoException {
               super.undo();
               setMarkerScaleFactorUI(oldMarkerScaleFactor, false);
           }
           @Override
           public void redo() throws CannotRedoException {
               super.redo();
               setMarkerScaleFactorUI(newFactor, true);
           }
        };
        ExplorerTopComponent.addUndoableEdit(auEdit);
    }       
    motionDisplayer.setExperimentalMarkerScaleFactor(newFactor);
    ViewDB.repaintAll();
    refreshNode();
}
项目:opensim-gui    文件:MarkerAdapter.java   
private void setBodyName(final String bodyName, boolean enableUndo) {
    final String oldName = getBodyName();
    if (bodyName.equals(oldName)) return; // Nothing to do
    //marker.setParentFrameName(bodyName); 
    // The following line calls setParentFrame
    context.setBody(marker, model.getBodySet().get(bodyName), true);
    updateDisplay();
    if (enableUndo){
        AbstractUndoableEdit auEdit = new AbstractUndoableEdit(){
           public void undo() throws CannotUndoException {
               super.undo();
               setBodyName(oldName, false);
           }
           public void redo() throws CannotRedoException {
               super.redo();
               setBodyName(bodyName, true);
           }
        };
        ExplorerTopComponent.addUndoableEdit(auEdit);
    }
}
项目:opensim-gui    文件:MarkerAdapter.java   
private void setOffset(final ArrayDouble newOffset, boolean enableUndo) {
    Vec3 rOffest = marker.get_location();
    final ArrayDouble oldOffset = new ArrayDouble(3);
    for(int i=0; i<3; i++) oldOffset.set(i, rOffest.get(i));
     marker.set_location(newOffset.getAsVec3());
    updateDisplay(); 
    if (enableUndo){
         AbstractUndoableEdit auEdit = new AbstractUndoableEdit(){
           public void undo() throws CannotUndoException {
               super.undo();
               setOffset(oldOffset, false);
           }
           public void redo() throws CannotRedoException {
               super.redo();
               setOffset(newOffset, true);
           }
        };
        ExplorerTopComponent.addUndoableEdit(auEdit);            
    }
}
项目:SweetHome3D    文件:HomeController.java   
/**
 * Adds items to home.
 */
private void addPastedItems(final List<? extends Selectable> items, float dx, float dy,
        final boolean isDropInPlanView, final String presentationNameKey)
{
    if (items.size() > 1 || (items.size() == 1 && !(items.get(0) instanceof Compass)))
    {
        // Always use selection mode after a drop or a paste operation
        getPlanController().setMode(PlanController.Mode.SELECTION);
        // Start a compound edit that adds walls, furniture, rooms, dimension lines, polylines and labels to home
        UndoableEditSupport undoSupport = getUndoableEditSupport();
        undoSupport.beginUpdate();
        List<HomePieceOfFurniture> addedFurniture = Home.getFurnitureSubList(items);
        adjustFurnitureSizeAndElevation(addedFurniture, dx == 0 && dy == 0);
        getPlanController().moveItems(items, dx, dy);
        if (isDropInPlanView && this.preferences.isMagnetismEnabled() && items.size() == 1
                && addedFurniture.size() == 1)
        {
            // Adjust piece when it's dropped in plan view  
            getPlanController().adjustMagnetizedPieceOfFurniture((HomePieceOfFurniture) items.get(0), dx, dy);
        }
        getPlanController().addItems(items);
        undoSupport.postEdit(new AbstractUndoableEdit()
        {
            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(HomeController.class, presentationNameKey);
            }
        });

        // End compound edit
        undoSupport.endUpdate();
    }
}
项目:SweetHome3D    文件:HomeController.java   
/**
 * Toggles visibility of the background image and posts an undoable operation.
 */
private void toggleBackgroundImageVisibility(final String presentationName)
{
    final Level selectedLevel = this.home.getSelectedLevel();
    doToggleBackgroundImageVisibility();
    UndoableEdit undoableEdit = new AbstractUndoableEdit()
    {
        @Override
        public void undo() throws CannotUndoException
        {
            super.undo();
            home.setSelectedLevel(selectedLevel);
            doToggleBackgroundImageVisibility();
        }

        @Override
        public void redo() throws CannotRedoException
        {
            super.redo();
            home.setSelectedLevel(selectedLevel);
            doToggleBackgroundImageVisibility();
        }

        @Override
        public String getPresentationName()
        {
            return preferences.getLocalizedString(HomeController.class, presentationName);
        }
    };
    getUndoableEditSupport().postEdit(undoableEdit);
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Unlocks home base plan.
 */
public void unlockBasePlan()
{
    if (this.home.isBasePlanLocked())
    {
        final boolean allLevelsSelection = this.home.isAllLevelsSelection();
        List<Selectable> selection = this.home.getSelectedItems();
        final Selectable[] selectedItems = selection.toArray(new Selectable[selection.size()]);

        this.home.setBasePlanLocked(false);
        this.home.setAllLevelsSelection(false);
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                home.setBasePlanLocked(true);
                selectAndShowItems(Arrays.asList(selectedItems), allLevelsSelection);
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                home.setBasePlanLocked(false);
                selectAndShowItems(Arrays.asList(selectedItems), false);
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoUnlockBasePlan");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Posts an undoable reverse wall operation, about <code>walls</code>.
 */
private void postReverseSelectedWallsDirection(final Wall[] walls, List<Selectable> oldSelection)
{
    final boolean allLevelsSelection = home.isAllLevelsSelection();
    final Selectable[] oldSelectedItems = oldSelection.toArray(new Selectable[oldSelection.size()]);
    UndoableEdit undoableEdit = new AbstractUndoableEdit()
    {
        @Override
        public void undo() throws CannotUndoException
        {
            super.undo();
            doReverseWallsDirection(walls);
            selectAndShowItems(Arrays.asList(oldSelectedItems), allLevelsSelection);
        }

        @Override
        public void redo() throws CannotRedoException
        {
            super.redo();
            doReverseWallsDirection(walls);
            selectAndShowItems(Arrays.asList(oldSelectedItems), allLevelsSelection);
        }

        @Override
        public String getPresentationName()
        {
            return preferences.getLocalizedString(PlanController.class, "undoReverseWallsDirectionName");
        }
    };
    this.undoSupport.postEdit(undoableEdit);
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Posts an undoable split wall operation.
 */
private void postSplitSelectedWall(final JoinedWall splitJoinedWall, final JoinedWall firstJoinedWall,
        final JoinedWall secondJoinedWall, List<Selectable> oldSelection, final boolean oldBasePlanLocked,
        final boolean oldAllLevelsSelection)
{
    final Selectable[] oldSelectedItems = oldSelection.toArray(new Selectable[oldSelection.size()]);
    final boolean newBasePlanLocked = this.home.isBasePlanLocked();
    UndoableEdit undoableEdit = new AbstractUndoableEdit()
    {
        @Override
        public void undo() throws CannotUndoException
        {
            super.undo();
            doDeleteWalls(new JoinedWall[] { firstJoinedWall, secondJoinedWall }, oldBasePlanLocked);
            doAddWalls(new JoinedWall[] { splitJoinedWall }, oldBasePlanLocked);
            selectAndShowItems(Arrays.asList(oldSelectedItems), oldAllLevelsSelection);
        }

        @Override
        public void redo() throws CannotRedoException
        {
            super.redo();
            doDeleteWalls(new JoinedWall[] { splitJoinedWall }, newBasePlanLocked);
            doAddWalls(new JoinedWall[] { firstJoinedWall, secondJoinedWall }, newBasePlanLocked);
            selectAndShowItems(Arrays.asList(new Wall[] { firstJoinedWall.getWall() }), false);
        }

        @Override
        public String getPresentationName()
        {
            return preferences.getLocalizedString(PlanController.class, "undoSplitWallName");
        }
    };
    this.undoSupport.postEdit(undoableEdit);
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Changes the style of items and posts an undoable change style operation.
 */
private void modifyTextStyle(final Selectable[] items, final TextStyle[] oldStyles, final TextStyle[] styles)
{
    final boolean allLevelsSelection = home.isAllLevelsSelection();
    List<Selectable> oldSelection = this.home.getSelectedItems();
    final Selectable[] oldSelectedItems = oldSelection.toArray(new Selectable[oldSelection.size()]);

    doModifyTextStyle(items, styles);
    UndoableEdit undoableEdit = new AbstractUndoableEdit()
    {
        @Override
        public void undo() throws CannotUndoException
        {
            super.undo();
            doModifyTextStyle(items, oldStyles);
            selectAndShowItems(Arrays.asList(oldSelectedItems), allLevelsSelection);
        }

        @Override
        public void redo() throws CannotRedoException
        {
            super.redo();
            doModifyTextStyle(items, styles);
            selectAndShowItems(Arrays.asList(oldSelectedItems), allLevelsSelection);
        }

        @Override
        public String getPresentationName()
        {
            return preferences.getLocalizedString(PlanController.class, "undoModifyTextStyleName");
        }
    };
    this.undoSupport.postEdit(undoableEdit);
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Toggles the viewability of the selected level.
 * @since 5.0
 */
public void toggleSelectedLevelViewability()
{
    final Level selectedLevel = this.home.getSelectedLevel();
    selectedLevel.setViewable(!selectedLevel.isViewable());
    undoSupport.postEdit(new AbstractUndoableEdit()
    {
        @Override
        public void undo() throws CannotUndoException
        {
            super.undo();
            setSelectedLevel(selectedLevel);
            selectedLevel.setViewable(!selectedLevel.isViewable());
        }

        @Override
        public void redo() throws CannotRedoException
        {
            super.redo();
            setSelectedLevel(selectedLevel);
            selectedLevel.setViewable(!selectedLevel.isViewable());
        }

        @Override
        public String getPresentationName()
        {
            return preferences.getLocalizedString(PlanController.class, "undoModifyLevelName");
        }
    });
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Adds <code>items</code> to home and post an undoable operation.
 */
public void addItems(final List<? extends Selectable> items)
{
    // Start a compound edit that adds walls, furniture, rooms, dimension lines and labels to home
    this.undoSupport.beginUpdate();
    addFurniture(Home.getFurnitureSubList(items));
    addWalls(Home.getWallsSubList(items));
    addRooms(Home.getRoomsSubList(items));
    addPolylines(Home.getPolylinesSubList(items));
    addDimensionLines(Home.getDimensionLinesSubList(items));
    addLabels(Home.getLabelsSubList(items));
    this.home.setSelectedItems(items);

    // Add a undoable edit that will select all the items at redo
    undoSupport.postEdit(new AbstractUndoableEdit()
    {
        @Override
        public void redo() throws CannotRedoException
        {
            super.redo();
            home.setSelectedItems(items);
        }

        @Override
        public String getPresentationName()
        {
            return preferences.getLocalizedString(PlanController.class, "undoAddItemsName");
        }
    });
    // End compound edit
    undoSupport.endUpdate();
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Posts an undoable operation about <code>label</code> angle change.
 */
private void postLabelRotation(final Label label, final float oldAngle)
{
    final float newAngle = label.getAngle();
    if (newAngle != oldAngle)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                label.setAngle(oldAngle);
                selectAndShowItems(Arrays.asList(new Label[] { label }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                label.setAngle(newAngle);
                selectAndShowItems(Arrays.asList(new Label[] { label }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoLabelRotationName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Post to undo support an elevation change on <code>label</code>. 
 */
private void postLabelElevation(final Label label, final float oldElevation)
{
    final float newElevation = label.getElevation();
    if (newElevation != oldElevation)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                label.setElevation(oldElevation);
                selectAndShowItems(Arrays.asList(new Label[] { label }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                label.setElevation(newElevation);
                selectAndShowItems(Arrays.asList(new Label[] { label }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class,
                        oldElevation < newElevation ? "undoLabelRaiseName" : "undoLabelLowerName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Posts an undoable operation of a (<code>dx</code>, <code>dy</code>) move 
 * of <code>movedItems</code>.
 */
private void postItemsMove(List<? extends Selectable> movedItems, List<? extends Selectable> oldSelection,
        final float dx, final float dy)
{
    if (dx != 0 || dy != 0)
    {
        // Store the moved items in an array
        final Selectable[] itemsArray = movedItems.toArray(new Selectable[movedItems.size()]);
        final boolean allLevelsSelection = home.isAllLevelsSelection();
        final Selectable[] oldSelectedItems = oldSelection.toArray(new Selectable[oldSelection.size()]);
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                doMoveAndShowItems(itemsArray, oldSelectedItems, -dx, -dy, allLevelsSelection);
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                doMoveAndShowItems(itemsArray, itemsArray, dx, dy, allLevelsSelection);
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoMoveSelectionName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Posts an undoable operation about <code>room</code> resizing.
 */
private void postRoomResize(final Room room, final float oldX, final float oldY, final int pointIndex)
{
    float[] roomPoint = room.getPoints()[pointIndex];
    final float newX = roomPoint[0];
    final float newY = roomPoint[1];
    if (newX != oldX || newY != oldY)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                moveRoomPoint(room, oldX, oldY, pointIndex);
                selectAndShowItems(Arrays.asList(new Room[] { room }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                moveRoomPoint(room, newX, newY, pointIndex);
                selectAndShowItems(Arrays.asList(new Room[] { room }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoRoomResizeName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Posts an undoable operation about <code>room</code> name offset change.
 */
private void postRoomNameOffset(final Room room, final float oldNameXOffset, final float oldNameYOffset)
{
    final float newNameXOffset = room.getNameXOffset();
    final float newNameYOffset = room.getNameYOffset();
    if (newNameXOffset != oldNameXOffset || newNameYOffset != oldNameYOffset)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                room.setNameXOffset(oldNameXOffset);
                room.setNameYOffset(oldNameYOffset);
                selectAndShowItems(Arrays.asList(new Room[] { room }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                room.setNameXOffset(newNameXOffset);
                room.setNameYOffset(newNameYOffset);
                selectAndShowItems(Arrays.asList(new Room[] { room }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoRoomNameOffsetName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Posts an undoable operation about <code>room</code> name angle change.
 */
private void postRoomNameRotation(final Room room, final float oldNameAngle)
{
    final float newNameAngle = room.getNameAngle();
    if (newNameAngle != oldNameAngle)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                room.setNameAngle(oldNameAngle);
                selectAndShowItems(Arrays.asList(new Room[] { room }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                room.setNameAngle(newNameAngle);
                selectAndShowItems(Arrays.asList(new Room[] { room }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoRoomNameRotationName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Posts an undoable operation about <code>room</code> area offset change.
 */
private void postRoomAreaOffset(final Room room, final float oldAreaXOffset, final float oldAreaYOffset)
{
    final float newAreaXOffset = room.getAreaXOffset();
    final float newAreaYOffset = room.getAreaYOffset();
    if (newAreaXOffset != oldAreaXOffset || newAreaYOffset != oldAreaYOffset)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                room.setAreaXOffset(oldAreaXOffset);
                room.setAreaYOffset(oldAreaYOffset);
                selectAndShowItems(Arrays.asList(new Room[] { room }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                room.setAreaXOffset(newAreaXOffset);
                room.setAreaYOffset(newAreaYOffset);
                selectAndShowItems(Arrays.asList(new Room[] { room }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoRoomAreaOffsetName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Posts an undoable operation about <code>room</code> area angle change.
 */
private void postRoomAreaRotation(final Room room, final float oldAreaAngle)
{
    final float newAreaAngle = room.getAreaAngle();
    if (newAreaAngle != oldAreaAngle)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                room.setAreaAngle(oldAreaAngle);
                selectAndShowItems(Arrays.asList(new Room[] { room }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                room.setAreaAngle(newAreaAngle);
                selectAndShowItems(Arrays.asList(new Room[] { room }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoRoomAreaRotationName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Post to undo support an angle change on <code>piece</code>. 
 */
private void postPieceOfFurnitureRotation(final HomePieceOfFurniture piece, final float oldAngle,
        final boolean oldDoorOrWindowBoundToWall)
{
    final float newAngle = piece.getAngle();
    if (newAngle != oldAngle)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                piece.setAngle(oldAngle);
                if (piece instanceof HomeDoorOrWindow)
                {
                    ((HomeDoorOrWindow) piece).setBoundToWall(oldDoorOrWindowBoundToWall);
                }
                selectAndShowItems(Arrays.asList(new HomePieceOfFurniture[] { piece }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                piece.setAngle(newAngle);
                selectAndShowItems(Arrays.asList(new HomePieceOfFurniture[] { piece }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoPieceOfFurnitureRotationName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Post to undo support an elevation change on <code>piece</code>. 
 */
private void postPieceOfFurnitureElevation(final HomePieceOfFurniture piece, final float oldElevation)
{
    final float newElevation = piece.getElevation();
    if (newElevation != oldElevation)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                piece.setElevation(oldElevation);
                selectAndShowItems(Arrays.asList(new HomePieceOfFurniture[] { piece }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                piece.setElevation(newElevation);
                selectAndShowItems(Arrays.asList(new HomePieceOfFurniture[] { piece }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, oldElevation < newElevation
                        ? "undoPieceOfFurnitureRaiseName" : "undoPieceOfFurnitureLowerName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Post to undo support a power modification on <code>light</code>. 
 */
private void postLightPowerModification(final HomeLight light, final float oldPower)
{
    final float newPower = light.getPower();
    if (newPower != oldPower)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                light.setPower(oldPower);
                selectAndShowItems(Arrays.asList(new HomePieceOfFurniture[] { light }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                light.setPower(newPower);
                selectAndShowItems(Arrays.asList(new HomePieceOfFurniture[] { light }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoLightPowerModificationName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Posts an undoable operation about <code>piece</code> name offset change.
 */
private void postPieceOfFurnitureNameOffset(final HomePieceOfFurniture piece, final float oldNameXOffset,
        final float oldNameYOffset)
{
    final float newNameXOffset = piece.getNameXOffset();
    final float newNameYOffset = piece.getNameYOffset();
    if (newNameXOffset != oldNameXOffset || newNameYOffset != oldNameYOffset)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                piece.setNameXOffset(oldNameXOffset);
                piece.setNameYOffset(oldNameYOffset);
                selectAndShowItems(Arrays.asList(new HomePieceOfFurniture[] { piece }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                piece.setNameXOffset(newNameXOffset);
                piece.setNameYOffset(newNameYOffset);
                selectAndShowItems(Arrays.asList(new HomePieceOfFurniture[] { piece }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoPieceOfFurnitureNameOffsetName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Posts an undoable operation about <code>piece</code> name angle change.
 */
private void postPieceOfFurnitureNameRotation(final HomePieceOfFurniture piece, final float oldNameAngle)
{
    final float newNameAngle = piece.getNameAngle();
    if (newNameAngle != oldNameAngle)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                piece.setNameAngle(oldNameAngle);
                selectAndShowItems(Arrays.asList(new HomePieceOfFurniture[] { piece }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                piece.setNameAngle(newNameAngle);
                selectAndShowItems(Arrays.asList(new HomePieceOfFurniture[] { piece }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoPieceOfFurnitureNameRotationName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Posts an undoable operation about <code>dimensionLine</code> offset change.
 */
private void postDimensionLineOffset(final DimensionLine dimensionLine, final float oldOffset)
{
    final float newOffset = dimensionLine.getOffset();
    if (newOffset != oldOffset)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                dimensionLine.setOffset(oldOffset);
                selectAndShowItems(Arrays.asList(new DimensionLine[] { dimensionLine }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                dimensionLine.setOffset(newOffset);
                selectAndShowItems(Arrays.asList(new DimensionLine[] { dimensionLine }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoDimensionLineOffsetName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Posts an undoable operation about <code>polyline</code> resizing.
 */
private void postPolylineResize(final Polyline polyline, final float oldX, final float oldY, final int pointIndex)
{
    float[] polylinePoint = polyline.getPoints()[pointIndex];
    final float newX = polylinePoint[0];
    final float newY = polylinePoint[1];
    if (newX != oldX || newY != oldY)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                polyline.setPoint(oldX, oldY, pointIndex);
                selectAndShowItems(Arrays.asList(new Polyline[] { polyline }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                polyline.setPoint(newX, newY, pointIndex);
                selectAndShowItems(Arrays.asList(new Polyline[] { polyline }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoPolylineResizeName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Post to undo support a north direction change on <code>compass</code>. 
 */
private void postCompassRotation(final Compass compass, final float oldNorthDirection)
{
    final float newNorthDirection = compass.getNorthDirection();
    if (newNorthDirection != oldNorthDirection)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                compass.setNorthDirection(oldNorthDirection);
                selectAndShowItems(Arrays.asList(new Compass[] { compass }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                compass.setNorthDirection(newNorthDirection);
                selectAndShowItems(Arrays.asList(new Compass[] { compass }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoCompassRotationName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:SweetHome3D    文件:PlanController.java   
/**
 * Post to undo support a size change on <code>compass</code>. 
 */
private void postCompassResize(final Compass compass, final float oldDiameter)
{
    final float newDiameter = compass.getDiameter();
    if (newDiameter != oldDiameter)
    {
        UndoableEdit undoableEdit = new AbstractUndoableEdit()
        {
            @Override
            public void undo() throws CannotUndoException
            {
                super.undo();
                compass.setDiameter(oldDiameter);
                selectAndShowItems(Arrays.asList(new Compass[] { compass }));
            }

            @Override
            public void redo() throws CannotRedoException
            {
                super.redo();
                compass.setDiameter(newDiameter);
                selectAndShowItems(Arrays.asList(new Compass[] { compass }));
            }

            @Override
            public String getPresentationName()
            {
                return preferences.getLocalizedString(PlanController.class, "undoCompassResizeName");
            }
        };
        this.undoSupport.postEdit(undoableEdit);
    }
}
项目:MPL    文件:AbstractUndoableBnEdit.java   
public AbstractUndoableBnEdit(UndoableBnStyledDocument doc) {
  this.doc = checkNotNull(doc, "doc == null!");
  try {
    Field hasBeenDone = AbstractUndoableEdit.class.getDeclaredField("hasBeenDone");
    hasBeenDone.setAccessible(true);
    hasBeenDone.setBoolean(this, false);
  } catch (NoSuchFieldException | SecurityException | IllegalAccessException ex) {
    throw new UndeclaredThrowableException(ex);
  }
}
项目:sqlpower-library    文件:TestUndoManager.java   
public void testAllowCompoundEdit()
{
    UndoableEdit stubEdit1 = new AbstractUndoableEdit(); 
    UndoableEdit stubEdit2 = new AbstractUndoableEdit(); 
    UndoableEdit stubEdit3 = new AbstractUndoableEdit(); 
    CompoundEdit ce = new CompoundEdit();
    ce.addEdit(stubEdit1);
    ce.addEdit(stubEdit2);
    ce.addEdit(stubEdit3);
    ce.end();
    undoManager.addEdit(ce);
    assertTrue(undoManager.canUndo());
}
项目:tellervo    文件:Clean.java   
public static AbstractUndoableEdit clean(Sample s) {
    Clean c = new Clean(s);
    c.cleanSample();

    // return undo
    return c;
}
项目:tellervo    文件:Reverse.java   
public static AbstractUndoableEdit reverse(Sample s) {
Reverse r = new Reverse(s);

// can't just call redo(), because that calls super.redo() -- hmm...
reverseSample(s);
s.setModified();
s.fireSampleMetadataChanged();

return r; // return the undo
   }
项目:opensim-gui    文件:ViewDB.java   
public void dragSelectedObjects(final OpenSimObject clickedObject, final double dragVector[], boolean supportUndo) {
   DragObjectsEvent evnt = new DragObjectsEvent(clickedObject, dragVector);
   //System.out.println("drg vec"+dragVector[0]+" "+dragVector[1]+" "+dragVector[2]);
   // undo is a drag in the opposite direction!
   AbstractUndoableEdit auEdit = new AbstractUndoableEdit(){
        public boolean canUndo() {
            return true;
        }
        public boolean canRedo() {
            return true;
        }
        public void undo() throws CannotUndoException {
            super.undo();
            final double[] negativeDrag=new double[3];
            for(int i=0;i<3;i++) negativeDrag[i]=-dragVector[i];
            dragSelectedObjects(clickedObject, negativeDrag, false);
        }
        public void redo() throws CannotRedoException {
            super.redo();
            dragSelectedObjects(clickedObject, dragVector, true);
        }

        @Override
        public String getRedoPresentationName() {
            return "Redo Drag object(s)";
         }

        @Override
        public String getUndoPresentationName() {
            return "Undo Drag object(s)";
        }

    };
   if (supportUndo)
     ExplorerTopComponent.addUndoableEdit(auEdit);
   setChanged();  
   notifyObservers(evnt);
}
项目:opensim-gui    文件:DisplayGeometryDisplayer.java   
public void setDisplayPreferenceGUI(final DecorativeGeometry.Representation newPref, boolean allowUndo) {
    if (allowUndo){
        final DecorativeGeometry.Representation oldPref = displayGeometry.getRepresentation();
        AbstractUndoableEdit auEdit = new AbstractUndoableEdit(){
           public boolean canUndo() {
               return true;
           }
           public boolean canRedo() {
               return true;
           }
           public void undo() throws CannotUndoException {
               super.undo();
               // Change display
               setDisplayPreferenceGUI(oldPref, false);
               // Change model
           }
           public void redo() throws CannotRedoException {
               super.redo();
               // Change display
               setDisplayPreferenceGUI(newPref, false);
               // Change model
           }
            public String getPresentationName() {
                return "Display Preference Change";
            }

       };
        ExplorerTopComponent.addUndoableEdit(auEdit);
    }
    displayGeometry.setRepresentation(newPref);
    applyDisplayPreferenceToActor();
    Modified();
    ViewDB.getInstance().renderAll();
}