looking for files...
analyzing file: Undo.aj
package CH.ifa.draw.undo;
import CH.ifa.draw.applet.*;
import CH.ifa.draw.application.*;
import CH.ifa.draw.contrib.*;
import CH.ifa.draw.framework.*;
import CH.ifa.draw.figures.*;
import CH.ifa.draw.standard.*;
import CH.ifa.draw.util.*;
import CH.ifa.draw.samples.javadraw.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import javax.swing.JMenu;
import javax.swing.JToolBar;
import java.util.List;
privileged aspect Undo {
    private transient UndoManager JavaDrawViewer.myUndoManager;
    public void JavaDrawViewer.setUndoManager(UndoManager newUndoManager) {
        myUndoManager = newUndoManager;
    }
    public UndoManager JavaDrawViewer.getUndoManager() {
        return myUndoManager;
    }
    public Undoable SendToBackCommand.createUndoActivity() {
        return new SendToBackCommand_UndoActivity(view());
    }
    public Undoable SelectAllCommand.createUndoActivity() {
        return new SelectAllCommand_UndoActivity(view());
    }
    public Undoable PasteCommand.createUndoActivity() {
        return new PasteCommand_UndoActivity(view());
    }
    public Undoable DuplicateCommand.createUndoActivity() {
        return new PasteCommand_UndoActivity(view());
    }
    public Undoable DragTracker.createUndoActivity() {
        return new DragTracker_UndoActivity(getActiveView(), new Point(fLastX,
                fLastY));
    }
    public Undoable DeleteCommand.createUndoActivity() {
        return new DeleteCommand_UndoActivity(this);
    }
    public Undoable CutCommand.createUndoActivity() {
        return new CutCommand_UndoActivity(this);
    }
    public Undoable CreationTool.createUndoActivity() {
        return new PasteCommand_UndoActivity(view());
    }
    public Undoable ConnectionTool.createUndoActivity() {
        return new ConnectionTool_UndoActivity(view(), getConnection());
    }
    public Undoable ChangeConnectionStartHandle.createUndoActivity(
            DrawingView newView) {
        return new ChangeConnectionStartHandle_UndoActivity(newView);
    }
    public abstract Undoable ChangeConnectionHandle.createUndoActivity(
            DrawingView newView);
    public Undoable ChangeConnectionEndHandle.createUndoActivity(
            DrawingView newView) {
        return new ChangeConnectionEndHandle_UndoActivity(newView);
    }
    public Undoable ChangeAttributeCommand.createUndoActivity() {
        return new ChangeAttributeCommand_UndoActivity(view(), fAttribute,
                fValue);
    }
    public Undoable BringToFrontCommand.createUndoActivity() {
        return new BringToFrontCommand_UndoActivity(view());
    }
    public Undoable ResizeHandle.createUndoActivity(DrawingView view) {
        return new ResizeHandle_UndoActivity(view);
    }
    public Undoable AlignCommand.createUndoActivity() {
        return new AlignCommand_UndoActivity(view(), getAlignment());
    }
    private Undoable AbstractTool.myUndoActivity;
    public Undoable AbstractTool.getUndoActivity() {
        return myUndoActivity;
    }
    public void AbstractTool.setUndoActivity(Undoable newUndoActivity) {
        myUndoActivity = newUndoActivity;
    }
    private Undoable AbstractHandle.myUndoableActivity;
    public Undoable AbstractHandle.getUndoActivity() {
        return myUndoableActivity;
    }
    public void AbstractHandle.setUndoActivity(Undoable newUndoableActivity) {
        myUndoableActivity = newUndoableActivity;
    }
    private Undoable AbstractCommand.myUndoableActivity;
    public Undoable AbstractCommand.getUndoActivity() {
        return myUndoableActivity;
    }
    public void AbstractCommand.setUndoActivity(Undoable newUndoableActivity) {
        myUndoableActivity = newUndoableActivity;
    }
    declare parents: Command extends HasUndoActivity;
    declare parents: Tool extends HasUndoActivity;
    declare parents: Handle extends HasUndoActivity;
    declare parents: DrawingEditor extends HasUndoManager;
    public Undoable UngroupCommand.createUndoActivity() {
        return new UngroupCommand_UndoActivity(view());
    }
    public Undoable TextTool.createDeleteUndoActivity() {
        FigureTransferCommand cmd = new DeleteCommand("Delete", editor());
        return new DeleteCommand_UndoActivity(cmd);
    }
    public Undoable TextTool.createPasteUndoActivity() {
        return new PasteCommand_UndoActivity(view());
    }
    public Undoable TextTool.createUndoActivity() {
        return new TextTool_UndoActivity(view(), getTypingTarget().getText());
    }
    public Undoable ScribbleTool.createUndoActivity() {
        return new PasteCommand_UndoActivity(view());
    }
    public Undoable RadiusHandle.createUndoActivity(DrawingView newView) {
        return new RadiusHandle_UndoActivity(newView);
    }
    public Undoable PolyLineHandle.createUndoActivity(DrawingView newView,
            int newPointIndex) {
        return new PolyLineHandle_UndoActivity(newView, newPointIndex);
    }
    public Undoable InsertImageCommand.createUndoActivity() {
        return new InsertImageCommand_UndoActivity(view(), myImageName);
    }
    public Undoable GroupCommand.createUndoActivity() {
        return new GroupCommand_UndoActivity(view());
    }
    public Undoable FontSizeHandle.createUndoActivity(DrawingView newView) {
        TextFigure textOwner = (TextFigure) owner();
        return new FontSizeHandle_UndoActivity(newView, textOwner.getFont());
    }
    public Undoable ConnectedTextTool.createDeleteUndoActivity() {
        FigureTransferCommand cmd = new DeleteCommand("Delete", editor());
        return new ConnectedTextTool_DeleteUndoActivity(cmd,
                getConnectedFigure());
    }
    public Undoable ConnectedTextTool.createUndoActivity() {
        return new ConnectedTextTool_UndoActivity(view(), getTypingTarget()
                .getText());
    }
    public Undoable BorderTool.createUndoActivity() {
        return new BorderTool_UndoActivity(view());
    }
    public Undoable TriangleRotationHandle.createUndoActivity(
            DrawingView newView) {
        return new TriangleRotationHandle_UndoActivity(newView);
    }
    public Undoable TextAreaTool.createUndoActivity() {
        return new TextAreaTool_UndoActivity(view(), getTypingTarget()
                .getText());
    }
    public Undoable PolygonTool.createUndoActivity() {
        return new PasteCommand_UndoActivity(view());
    }
    public Undoable PolygonScaleHandle.createUndoActivity(DrawingView newView) {
        return new PolygonScaleHandle_UndoActivity(newView);
    }
    public Undoable PolygonHandle.createUndoActivity(DrawingView newView,
            int newPointIndex) {
        return new PolygonHandle_UndoActivity(newView, newPointIndex);
    }
    private UndoManager DrawApplication.myUndoManager;
    public void DrawApplication.setUndoManager(UndoManager newUndoManager) {
        myUndoManager = newUndoManager;
    }
    public UndoManager DrawApplication.getUndoManager() {
        return myUndoManager;
    }
    private transient UndoManager DrawApplet.myUndoManager;
    public void DrawApplet.setUndoManager(UndoManager newUndoManager) {
        myUndoManager = newUndoManager;
    }
    public UndoManager DrawApplet.getUndoManager() {
        return myUndoManager;
    }
	pointcut p_0(DrawApplet _this, VersionControlStrategy _target ):
		this(_this)
		&&   withincode(void DrawApplet.init( ) )
		&& target(_target)
		&&  ( call(void VersionControlStrategy.assertCompatibleVersion( ) )
			&& args() ) ;
	after(DrawApplet _this, VersionControlStrategy _target) returning: p_0(_this, _target ){
		UndoManager __tmp_1 = new UndoManager ();
		_this.setUndoManager (__tmp_1);
		}
	pointcut p_1(AlignCommand _this, AbstractCommand _target ):
		this(_this)
		&& cflow(execution(void AlignCommand.execute( ) ) )
		&& target(_target)
		&&  ( execution(void AbstractCommand.execute( ) )
			&& args() );
	after(AlignCommand _this, AbstractCommand _target) returning: p_1(_this, _target ){
		_this.setUndoActivity (_this.createUndoActivity ());
		}
	pointcut p_2(BorderTool _this, Figure figure ):
		this(_this)
		&& execution(void BorderTool.action(Figure ) )
		&& args(figure);
	before(BorderTool _this, Figure figure): p_2(_this, figure ){
		_this.setUndoActivity (_this.createUndoActivity ());
		}
	pointcut p_3(BorderTool _this, Figure figure ):
		this(_this)
		&& execution(void BorderTool.reverseAction(Figure ) )
		&& args(figure);
	before(BorderTool _this, Figure figure): p_3(_this, figure ){
		_this.setUndoActivity (_this.createUndoActivity ());
		}
	pointcut p_4(BringToFrontCommand _this, AbstractCommand _target ):
		this(_this)
		&& cflow(execution(void BringToFrontCommand.execute( ) ))
		&& target(_target)
		&&  ( execution(void AbstractCommand.execute( ) )
			&& args() ) ;
	after(BringToFrontCommand _this, AbstractCommand _target) returning: p_4(_this, _target ){
		_this.setUndoActivity (_this.createUndoActivity ());
		}
	pointcut p_5(ChangeAttributeCommand _this, AbstractCommand _target ):
		this(_this)
		&&   cflow(execution(void ChangeAttributeCommand.execute( ) ))
		&& target(_target)
		&&  ( execution(void AbstractCommand.execute( ) )
			&& args() ) ;
	after(ChangeAttributeCommand _this, AbstractCommand _target) returning: p_5(_this, _target ){
		_this.setUndoActivity (_this.createUndoActivity ());
		}
	pointcut p_6(ChangeConnectionHandle _this, int x, int y, DrawingView view, ChangeConnectionHandle _target ):
		this(_this)
		&& cflow(execution(void ChangeConnectionHandle.invokeStart(int, int, DrawingView ) )
			&& args(x, y, view) ) 
		&& target(_target)
		&&  ( call(void ChangeConnectionHandle.disconnect( ) )
			&& args() ) ;
	before(ChangeConnectionHandle _this, int x, int y, DrawingView view, ChangeConnectionHandle _target): p_6(_this, x, y, view, _target ){
		_this.setUndoActivity (_this.createUndoActivity (view));
		((ChangeConnectionHandle_UndoActivity) _this.getUndoActivity ()).setOldConnector (_this.target ());
		}
	pointcut p_7(ChangeConnectionHandle _this,  ConnectionFigure _target ):
		this(_this)
		&& withincode(void ChangeConnectionHandle.invokeEnd(int, int, int, int, DrawingView ) )
		&& target(_target)
		&&  ( call(void ConnectionFigure.updateConnection( ) )
			&& args() ) ;
	after(ChangeConnectionHandle _this, ConnectionFigure _target) returning: p_7(_this,  _target ){
		Connector oldConnector = ((ChangeConnectionHandle_UndoActivity) _this.getUndoActivity ()).getOldConnector ();
		if ((oldConnector == null) || (_this.target() == null) || (oldConnector.owner() == _this.target().owner() )) {
			_this.setUndoActivity(null);
        } else {
        	_this.getUndoActivity().setAffectedFigures (new SingleFigureEnumerator( _this.getConnection() ));
        }
		}
	pointcut p_8(ConnectedTextTool _this ):
		this(_this)
		&& execution(void ConnectedTextTool.endEdit( ) )
		&& args();
	after(ConnectedTextTool _this) returning: p_8(_this ){
		if ((_this.getUndoActivity() != null)
				&& (_this.getUndoActivity() instanceof ConnectedTextTool_UndoActivity)) {
			((ConnectedTextTool_UndoActivity) _this.getUndoActivity())
					.setConnectedFigure(_this.getConnectedFigure());
		} else if ((_this.getConnectedFigure() != null) && _this.isDeleteTextFigure()) {
			_this.getConnectedFigure().removeDependendFigure(_this.getAddedFigure());
		}
		}
	pointcut p_9(ConnectionTool _this, ConnectionFigure _target ):
		this(_this)
		&&  withincode(void ConnectionTool.mouseUp(MouseEvent, int, int ) )
		&& target(_target)
		&&  ( call(void ConnectionFigure.updateConnection( ) )
			&& args() ) ;
	after(ConnectionTool _this, ConnectionFigure _target) returning: p_9(_this,  _target ){
		_this.setUndoActivity (_this.createUndoActivity ());
		_this.getUndoActivity ().setAffectedFigures (new SingleFigureEnumerator (_this.getAddedFigure ()));
		}
	pointcut p_10(CreationTool _this, CreationTool _target, Figure actual_0 ):
		this(_this)
		&& withincode(void CreationTool.mouseUp(MouseEvent, int, int ) )
		&& target(_target)
		&&  ( call(void CreationTool.setAddedFigure(Figure ) )
			&& args(actual_0) ) ;
	before(CreationTool _this, CreationTool _target, Figure actual_0): p_10(_this,_target, actual_0 ){
		if (_this.getCreatedFigure ().isEmpty ()) {
			_this.setUndoActivity (null);
            } else {
            	_this.setUndoActivity (_this.createUndoActivity ());
            	_this.getUndoActivity ().setAffectedFigures (new SingleFigureEnumerator (_this.getAddedFigure ()));
            }
		}
	pointcut p_11(CutCommand _this, AbstractCommand _target ):
		this(_this)
		&& cflow(execution(void CutCommand.execute( ) ))
		&& target(_target)
		&&  ( execution(void AbstractCommand.execute( ) )
			&& args() ) ;
	after(CutCommand _this, AbstractCommand _target) returning: p_11(_this, _target ){
		_this.setUndoActivity (_this.createUndoActivity ());
		}
	pointcut p_12(DeleteCommand _this, AbstractCommand _target ):
		this(_this)
		&& cflow(execution(void DeleteCommand.execute( ) ))
		&& target(_target)
		&&  ( execution(void AbstractCommand.execute( ) )
			&& args() ) ;
	after(DeleteCommand _this, AbstractCommand _target) returning: p_12(_this, _target ){
		_this.setUndoActivity (_this.createUndoActivity ());
		}
	pointcut p_13(DragTracker _this, MouseEvent e, int x, int y ):
		this(_this)
		&& execution(void DragTracker.mouseDown(MouseEvent, int, int ) )
		&& args(e, x, y);
	after(DragTracker _this, MouseEvent e, int x, int y) returning: p_13(_this, e, x, y ){
		_this.setUndoActivity (_this.createUndoActivity ());
		_this.getUndoActivity ().setAffectedFigures (_this.getActiveView ().selection ());
		}
	pointcut p_14(DragTracker _this ):
		this(_this)
		&& execution(void DragTracker.deactivate( ) )
		&& args();
	before(DragTracker _this): p_14(_this ){
		if (_this.fMoved) {
            ((DragTracker_UndoActivity) _this.getUndoActivity ()).setBackupPoint (new Point (_this.fLastX, _this.fLastY));
        } else {
        	_this.setUndoActivity (null);
        }
		}
	pointcut p_15(DrawApplication _this, VersionControlStrategy _target ):
		this(_this)
		&& withincode(void DrawApplication.open(DrawingView ) )
		&& target(_target)
		&&  ( call(void VersionControlStrategy.assertCompatibleVersion( ) )
			&& args() ) ;
	after(DrawApplication _this, VersionControlStrategy _target) returning: p_15(_this, _target ){
		UndoManager __tmp_1 = new UndoManager ();
		_this.setUndoManager (__tmp_1);
		}
	pointcut p_16(Command actual_0, MenuShortcut actual_1, DrawApplication _this ):
		  call(void CommandMenu.add(Command, MenuShortcut ) )
			&& args(actual_0, actual_1) 
		&&   withincode(JMenu DrawApplication.createEditMenu( ) )
			&& this(_this)
			 ;
	Object around(Command actual_0, MenuShortcut actual_1, DrawApplication _this): p_16(actual_0, actual_1, _this ){
	    UndoableCommand _wrapped = new UndoableCommand (actual_0);
		return proceed(_wrapped, actual_1, _this);
		}
	pointcut p_20(Command actual_0, DrawApplication _this ):
		  call(void CommandMenu.add(Command) )
			&& args(actual_0) 
		&&   withincode(JMenu DrawApplication.createEditMenu( ) )
			&& this(_this)
			 ;
	Object around(Command actual_0, DrawApplication _this): p_20(actual_0, _this ){
	    UndoableCommand _wrapped = new UndoableCommand (actual_0);
		return proceed(_wrapped, _this);
		}
	pointcut p_25(DrawApplication _this ):
		this(_this)
		&& execution(JMenu DrawApplication.createEditMenu( ) )
		&& args();
	Object around(DrawApplication _this): p_25(_this ){
		CommandMenu menu = (CommandMenu) proceed(_this);
		UndoCommand __tmp_20 = new UndoCommand ("Undo Command", _this);
		menu.add (__tmp_20);
		RedoCommand __tmp_21 = new RedoCommand ("Redo Command", _this);
		menu.add (__tmp_21);
		return menu;
		}
	pointcut p_26(Command actual_0, DrawApplication _this ):
		 ( call(void CommandMenu.add(Command ) )
			&& args(actual_0) ) 
		&&  ( withincode(JMenu DrawApplication.createAlignmentMenu( ) )
			&& this(_this)
			 ) ;
	Object around(Command actual_0, DrawApplication _this): p_26(actual_0, _this ){
		UndoableCommand __tmp_23 = new UndoableCommand ((AlignCommand)actual_0);
		return proceed(__tmp_23, _this);
		}
	pointcut p_27(Command actual_0, DrawApplication _this):
	    call(void CommandMenu.add(Command) )
		&& args(actual_0) 
		&&  withincode(JMenu DrawApplication.createColorMenu(String, FigureAttributeConstant ) )
		&& this(_this) ;
	Object around(Command actual_0, DrawApplication _this): p_27(actual_0, _this ){
	    UndoableCommand _wrapped = new UndoableCommand (actual_0);
		return proceed(_wrapped, _this);
		}
	pointcut p_28(Command actual_0, DrawApplication _this ):
		 ( call(void CommandMenu.add(Command ) )
			&& args(actual_0) ) 
		&&  ( withincode(JMenu DrawApplication.createArrowMenu( ) )
			&& this(_this)
			 ) ;
	Object around(Command actual_0, DrawApplication _this): p_28(actual_0, _this ){
		UndoableCommand __tmp_37 = new UndoableCommand ((ChangeAttributeCommand)actual_0);
		return proceed(__tmp_37, _this);
		}
	pointcut p_29(Command actual_0, DrawApplication _this ):
		 ( call(void CommandMenu.add(Command ) )
			&& args(actual_0) ) 
		&&  ( withincode(JMenu DrawApplication.createFontMenu( ) )
			&& this(_this)
			 ) ;
	Object around(Command actual_0, DrawApplication _this): p_29(actual_0, _this ){
		UndoableCommand __tmp_45 = new UndoableCommand ((ChangeAttributeCommand)actual_0);
		return proceed(__tmp_45, _this);
		}
	pointcut p_30(Command actual_0, DrawApplication _this ):
		 ( call(void CommandMenu.add(Command ) )
			&& args(actual_0) ) 
		&&  ( withincode(JMenu DrawApplication.createFontStyleMenu( ) )
			&& this(_this)
			 ) ;
	Object around(Command actual_0, DrawApplication _this): p_30(actual_0, _this ){
		UndoableCommand __tmp_47 = new UndoableCommand ((ChangeAttributeCommand)actual_0);
		return proceed(__tmp_47, _this);
		}
	pointcut p_31(Command actual_0, DrawApplication _this ):
		 ( call(void CommandMenu.add(Command ) )
			&& args(actual_0) ) 
		&&  ( withincode(JMenu DrawApplication.createFontSizeMenu( ) )
			&& this(_this)
			 ) ;
	Object around(Command actual_0, DrawApplication _this): p_31(actual_0, _this ){
		UndoableCommand __tmp_53 = new UndoableCommand ((ChangeAttributeCommand)actual_0);
		return proceed(__tmp_53, _this);
		}
	pointcut p_32(DrawApplication_DesktopListener _this, DrawApplication _target, DrawingView actual_0 ):
		this(_this)
		&& withincode(void DrawApplication_DesktopListener.drawingViewRemoved(DesktopEvent ) )
		&& target(_target)
		&&  ( call(void DrawApplication.fireViewDestroyingEvent(DrawingView ) )
			&& args(actual_0) ) ;
	before(DrawApplication_DesktopListener _this,  DrawApplication _target, DrawingView actual_0): p_32(_this,  _target, actual_0 ){
		UndoManager __tmp_55 = _this.application.getUndoManager ();
		__tmp_55.clearUndos (actual_0);
		UndoManager __tmp_56 = _this.application.getUndoManager ();
		__tmp_56.clearRedos (actual_0);
		}
	pointcut p_33(DuplicateCommand _this, AbstractCommand _target ):
		this(_this)
		&& cflow(execution(void DuplicateCommand.execute( ) ))
		&& target(_target)
		&&  ( execution(void AbstractCommand.execute( ) )
			&& args() ) ;
	after(DuplicateCommand _this, AbstractCommand _target) returning: p_33(_this, _target ){
		_this.setUndoActivity (_this.createUndoActivity ());
		}
	pointcut p_34(FontSizeHandle _this, int x, int y, DrawingView view ):
		this(_this)
		&& execution(void FontSizeHandle.invokeStart(int, int, DrawingView ) )
		&& args(x, y, view);
	before(FontSizeHandle _this, int x, int y, DrawingView view): p_34(_this, x, y, view ){
		_this.setUndoActivity (_this.createUndoActivity (view));
		}
	pointcut p_35(GroupCommand _this, AbstractCommand _target ):
		this(_this)
		&& cflow(execution(void GroupCommand.execute( ) ))
		&& target(_target)
		&& execution(void AbstractCommand.execute( ) )
		&& args() ;
	after(GroupCommand _this, AbstractCommand _target) returning: p_35(_this, _target ){
		_this.setUndoActivity (_this.createUndoActivity ());
		}
	pointcut p_36(InsertImageCommand _this, AbstractCommand _target ):
		this(_this)
		&& cflow(execution(void InsertImageCommand.execute( ) ))
		&& target(_target)
		&&  ( execution(void AbstractCommand.execute( ) )
			&& args() ) ;
	after(InsertImageCommand _this, AbstractCommand _target) returning: p_36(_this, _target ){
		_this.setUndoActivity (_this.createUndoActivity ());
		}
	pointcut p_37(JavaDrawViewer _this ):
		this(_this)
		&& execution(void JavaDrawViewer.init( ) )
		&& args();
	before(JavaDrawViewer _this): p_37(_this ){
		_this.setUndoManager (new UndoManager ());
		}
	pointcut p_38(JavaDrawApp _this, String actual_0, String actual_1, Tool actual_2 ):
		withincode(void JavaDrawApp.createTools(JToolBar ) )
		&& this(_this)
		&& call(ToolButton DrawApplication.createToolButton(String, String, Tool ) )
		&& args(actual_0, actual_1, actual_2);
	Object around(JavaDrawApp _this, String actual_0, String actual_1, Tool actual_2): p_38(_this, actual_0, actual_1, actual_2 ){
		Tool _wrapped = new UndoableTool (actual_2);
		return proceed(_this, actual_0, actual_1, _wrapped);
		}
	pointcut p_44(JavaDrawApp _this, String actual_0, String actual_1, Tool actual_2):
		withincode(void JavaDrawApp.createTools_extractMethod(JToolBar ) )
		&& this(_this)
		&& call(ToolButton DrawApplication.createToolButton(String, String, Tool ) )
		&& args(actual_0, actual_1, actual_2);
	Object around(JavaDrawApp _this, String actual_0, String actual_1, Tool actual_2): p_44(_this, actual_0, actual_1, actual_2 ){
		Tool _wrapped = new UndoableTool (actual_2);
		return proceed(_this, actual_0, actual_1, _wrapped);
		}
	pointcut p_46(Command actual_0, JavaDrawApp _this ):
		args(actual_0)
		&& this(_this)
		&& withincode(JMenu JavaDrawApp.createImagesMenu( ) )
		&& call(void CommandMenu.add(Command ) );
	Object around(Command actual_0, JavaDrawApp _this): p_46(actual_0, _this ){
		UndoableCommand __tmp_16 = new UndoableCommand ((InsertImageCommand)actual_0);
		return proceed(__tmp_16, _this);
		}
	pointcut p_47(PasteCommand _this, PasteCommand _target, FigureSelection actual_0 ):
		this(_this)
		&& withincode(void PasteCommand.execute( ) )
		&& target(_target)
		&& call(void PasteCommand.clear_view(FigureSelection ) )
		&& args(actual_0);
	before(PasteCommand _this, PasteCommand _target, FigureSelection actual_0): p_47(_this, _target, actual_0 ){
		_this.setUndoActivity (_this.createUndoActivity ());
		_this.getUndoActivity ().setAffectedFigures ((FigureEnumerator) actual_0.getData (StandardFigureSelection.TYPE));
		}
	pointcut p_48(PasteCommand _this, FigureSelection selection ):
		this(_this)
		&& execution(void PasteCommand.clear_view(FigureSelection ) )
		&& args(selection)
		&& if(! _this.getUndoActivity ().getAffectedFigures ().hasNextFigure ());
	void around(PasteCommand _this, FigureSelection selection): p_48(_this, selection ){
		_this.setUndoActivity (null);
		}
	pointcut p_49(PasteCommand _this, DrawingView _target ):
		this(_this)
		&& withincode(void PasteCommand.clear_view(FigureSelection ) )
		&& target(_target)
		&& call(Point DrawingView.lastClick( ) )
		&& args();
	after(PasteCommand _this, DrawingView _target) returning (Point _return): p_49(_this, _target ){
		Rectangle r = _this.getBounds (_this.getUndoActivity ().getAffectedFigures ());
		FigureEnumeration fe = _this.insertFigures (_this.getUndoActivity ().getAffectedFigures (), _return.x - r.x, _return.y - r.y);
		_this.getUndoActivity ().setAffectedFigures (fe);
		}
	pointcut p_50(PolygonHandle _this, int x, int y, DrawingView view ):
		this(_this)
		&& execution(void PolygonHandle.invokeStart(int, int, DrawingView ) )
		&& args(x, y, view);
	before(PolygonHandle _this, int x, int y, DrawingView view): p_50(_this, x, y, view ){
		Undoable __tmp_1 = _this.createUndoActivity (view, _this.fIndex);
		_this.setUndoActivity (__tmp_1);
		Undoable __tmp_2 = _this.getUndoActivity ();
		__tmp_2.setAffectedFigures (new SingleFigureEnumerator (_this.owner ()));
		PolygonHandle_UndoActivity __tmp_3 = (PolygonHandle_UndoActivity) _this.getUndoActivity ();
		__tmp_3.setOldPoint (new Point (x, y));
		}
	pointcut p_51(PolygonHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view ):
		this(_this)
		&& execution(void PolygonHandle.invokeStep(int, int, int, int, DrawingView ) )
		&& args(x, y, anchorX, anchorY, view);
	before(PolygonHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view): p_51(_this, x, y, anchorX, anchorY, view ){
		int index = ((PolyLineHandle_UndoActivity) _this.getUndoActivity ()).getPointIndex ();
		_this.myOwner ().setPointAt (new Point (x, y), index);
		}
	pointcut p_52(PolygonHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view ):
		this(_this)
		&& execution(void PolygonHandle.invokeEnd(int, int, int, int, DrawingView ) )
		&& args(x, y, anchorX, anchorY, view);
	before(PolygonHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view): p_52(_this, x, y, anchorX, anchorY, view ){
		if ((x == anchorX) && (y == anchorY)) {
			_this.setUndoActivity (null);
        }
	}
	pointcut p_53(PolygonTool _this, Drawing _target, Figure actual_0 ):
		this(_this)
		&& withincode(void PolygonTool.deactivate( ) )
		&& target(_target)
		&& call(Figure Drawing.remove(Figure ) )
		&& args(actual_0);
	after(PolygonTool _this, Drawing _target, Figure actual_0) returning: p_53(_this, _target, actual_0 ){
		_this.setUndoActivity (null);
		}
	pointcut p_54(PolygonTool _this, DrawingEditor _target ):
		this(_this)
		&& withincode(void PolygonTool.mouseDown(MouseEvent, int, int ) )
		&& target(_target)
		&& call(void DrawingEditor.toolDone( ) )
		&& args();
	before(PolygonTool _this, DrawingEditor _target): p_54(_this, _target ){
		Undoable __tmp_1 = _this.createUndoActivity ();
		_this.setUndoActivity (__tmp_1);
		SingleFigureEnumerator __tmp_2 = new SingleFigureEnumerator (_this.getAddedFigure ());
		Undoable __tmp_3 = _this.getUndoActivity ();
		__tmp_3.setAffectedFigures (__tmp_2);
		}
	pointcut p_55(RadiusHandle _this, int x, int y, DrawingView view ):
		this(_this)
		&& execution(void RadiusHandle.invokeStart(int, int, DrawingView ) )
		&& args(x, y, view);
	before(RadiusHandle _this, int x, int y, DrawingView view): p_55(_this, x, y, view ){
		_this.setUndoActivity (_this.createUndoActivity (view));
		_this.getUndoActivity ().setAffectedFigures (new SingleFigureEnumerator (_this.owner ()));
		((RadiusHandle_UndoActivity) _this.getUndoActivity ()).setOldRadius (((RoundRectangleFigure) _this.owner ()).getArc ());
		}
	pointcut p_56(RadiusHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view ):
		this(_this)
		&& execution(void RadiusHandle.invokeEnd(int, int, int, int, DrawingView ) )
		&& args(x, y, anchorX, anchorY, view);
	before(RadiusHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view): p_56(_this, x, y, anchorX, anchorY, view ){
		Point currentRadius = ((RoundRectangleFigure) _this.owner ()).getArc ();
		Point originalRadius = ((RadiusHandle_UndoActivity) _this.getUndoActivity ()).getOldRadius ();
		if ((currentRadius.x == originalRadius.x) && (currentRadius.y == originalRadius.y)) {
			_this.setUndoActivity (null);
        }
		}
	pointcut p_57(ScribbleTool _this, Drawing _target, Figure actual_0 ):
		this(_this)
		&& withincode(void ScribbleTool.deactivate( ) )
		&& target(_target)
		&& call(Figure Drawing.remove(Figure ) )
		&& args(actual_0);
	after(ScribbleTool _this, Drawing _target, Figure actual_0) returning: p_57(_this, _target, actual_0 ){
		_this.setUndoActivity (null);
		}
	pointcut p_58(ScribbleTool _this, MouseEvent e ):
		this(_this)
		&& execution(void ScribbleTool.mouseDown_click(MouseEvent ) )
		&& args(e)
		&& if(e.getClickCount () >= 2);
	void around(ScribbleTool _this, MouseEvent e): p_58(_this, e ){
		_this.setUndoActivity (_this.createUndoActivity ());
		_this.getUndoActivity ().setAffectedFigures (new SingleFigureEnumerator (_this.getAddedFigure ()));
		}
	pointcut p_59(SelectAllCommand _this, DrawingView _target, FigureEnumeration actual_0 ):
		this(_this)
		&& withincode(void SelectAllCommand.execute( ) )
		&& target(_target)
		&& call(void DrawingView.addToSelectionAll(FigureEnumeration ) )
		&& args(actual_0);
	before(SelectAllCommand _this, DrawingView _target, FigureEnumeration actual_0): p_59(_this, _target, actual_0 ){
		_this.setUndoActivity (_this.createUndoActivity ());
		_this.getUndoActivity ().setAffectedFigures (_this.view ().selection ());
		}
	pointcut p_60(SelectionTool _this, Figure f ):
		this(_this)
		&& execution(Tool SelectionTool.createDragTracker(Figure ) )
		&& args(f);
	Object around(SelectionTool _this, Figure f): p_60(_this, f ){
		Tool __tmp_2 = (Tool) proceed(_this, f);
		UndoableTool __tmp_3 = new UndoableTool (__tmp_2);
		return __tmp_3;
		}
	pointcut p_61(SendToBackCommand _this, AbstractCommand _target ):
		this(_this)
		&& cflow( execution(void SendToBackCommand.execute( ) ) )
		&& target(_target)
		&& execution(void AbstractCommand.execute( ) )
		&& args();
	after(SendToBackCommand _this, AbstractCommand _target) returning: p_61(_this, _target ){
		_this.setUndoActivity (_this.createUndoActivity ());
		_this.getUndoActivity ().setAffectedFigures (_this.view ().selectionZOrdered ());
		}
	pointcut p_62(SplitConnectionTool _this, ConnectionFigure _target, int actual_0, int actual_1 ):
		this(_this)
		&& withincode(void SplitConnectionTool.mouseDown_notNullFigure(int, int, Figure ) )
		&& target(_target)
		&& call(void ConnectionFigure.endPoint(int, int ) )
		&& args(actual_0, actual_1);
	after(SplitConnectionTool _this, ConnectionFigure _target, int actual_0, int actual_1) returning: p_62(_this, _target, actual_0, actual_1 ){
		_this.setUndoActivity (_this.createUndoActivity ());
		_this.getUndoActivity ().setAffectedFigures (new SingleFigureEnumerator (_this.getAddedFigure ()));
		}
	pointcut p_63(StandardDrawingView.DrawingViewKeyListener _this ):
		this(_this)
		&& execution(Command StandardDrawingView.DrawingViewKeyListener.createDeleteCommand( ) )
		&& args();
	Object around(StandardDrawingView.DrawingViewKeyListener _this): p_63(_this ){
		Command __tmp_1 = (Command) proceed(_this);
		UndoableCommand __tmp_2 = new UndoableCommand (__tmp_1);
		return __tmp_2;
		}
	pointcut p_64(TextAreaTool _this, Drawing _target, Figure actual_0 ):
		this(_this)
		&& withincode(void TextAreaTool.mouseDown(MouseEvent, int, int ) )
		&& target(_target)
		&& call(Figure Drawing.remove(Figure ) )
		&& args(actual_0);
	after(TextAreaTool _this, Drawing _target, Figure actual_0) returning: p_64(_this, _target, actual_0 ){
		_this.setUndoActivity (null);
		}
	pointcut p_65(TextAreaTool _this, TextHolder figure, Figure selectedFigure ):
		this(_this)
		&& execution(void TextAreaTool.beginEdit(TextHolder, Figure ) )
		&& args(figure, selectedFigure);
	after(TextAreaTool _this, TextHolder figure, Figure selectedFigure) returning: p_65(_this, figure, selectedFigure ){
		_this.setUndoActivity (_this.createUndoActivity ());
		}
	pointcut p_66(TextAreaTool _this, TextHolder _target, String actual_0 ):
		this(_this)
		&& withincode(void TextAreaTool.endEdit( ) )
		&& target(_target)
		&& call(void TextHolder.setText(String ) )
		&& args(actual_0);
	after(TextAreaTool _this, TextHolder _target, String actual_0) returning: p_66(_this, _target, actual_0 ){
		_this.getUndoActivity ().setAffectedFigures (new SingleFigureEnumerator (_this.getEditedFigure ()));
		((TextAreaTool_UndoActivity) _this.getUndoActivity ()).setBackupText (_this.getTypingTarget ().getText ());
		}
	pointcut p_67(TextTool _this ):
		this(_this)
		&& execution(void TextTool.endEdit_onTarget( ) )
		&& args()
		&& if(_this.getTypingTarget () == null);
	void around(TextTool _this): p_67(_this ){
		_this.setUndoActivity (null);
		}
	pointcut p_68(TextTool _this, TextHolder _target, String actual_0 ):
		this(_this)
		&& withincode(void TextTool.endEdit_onTarget( ) )
		&& target(_target)
		&& call(void TextHolder.setText(String ) )
		&& args(actual_0);
	before(TextTool _this, TextHolder _target, String actual_0): p_68(_this, _target, actual_0 ){
		_this.setUndoActivity (_this.createPasteUndoActivity ());
		_this.getUndoActivity ().setAffectedFigures (new SingleFigureEnumerator (_this.getAddedFigure ()));
		}
	pointcut p_69(TextTool _this ):
		this(_this)
		&& execution(void TextTool.endEdit_onDeleteTextFigure( ) )
		&& args()
		&& if(_this.isDeleteTextFigure ());
	void around(TextTool _this): p_69(_this ){
		_this.setUndoActivity (_this.createDeleteUndoActivity ());
		_this.getUndoActivity ().setAffectedFigures (new SingleFigureEnumerator (_this.getSelectedFigure ()));
		_this.getUndoActivity ().redo ();
		}
	pointcut p_70(TextTool _this ):
		this(_this)
		&& execution(void TextTool.endEdit_onDeleteTextFigure( ) )
		&& args();
	before(TextTool _this): p_70(_this ){
		_this.setUndoActivity (_this.createUndoActivity ());
		_this.getUndoActivity ().setAffectedFigures (new SingleFigureEnumerator (_this.getTypingTarget ().getRepresentingFigure ())  );
		}
	pointcut p_71(TextTool _this ):
		this(_this)
		&& execution(void TextTool.endEdit_onDeleteTextFigure( ) )
		&& args();
	after(TextTool _this) returning: p_71(_this ){
		((TextTool_UndoActivity) _this.getUndoActivity ()).setBackupText (_this.getTypingTarget ().getText ());
		}
	pointcut p_72(TriangleRotationHandle _this, int x, int y, DrawingView view ):
		this(_this)
		&& execution(void TriangleRotationHandle.invokeStart(int, int, DrawingView ) )
		&& args(x, y, view);
	after(TriangleRotationHandle _this, int x, int y, DrawingView view) returning: p_72(_this, x, y, view ){
		TriangleRotationHandle_UndoActivity activity = (TriangleRotationHandle_UndoActivity) _this.createUndoActivity (view);
		_this.setUndoActivity (activity);
		activity.setAffectedFigures (new SingleFigureEnumerator (_this.owner ()));
		double rotation = ((TriangleFigure) (_this.owner ())).getRotationAngle ();
		activity.setRotationAngle (rotation);
		}
	pointcut p_73(UngroupCommand _this, AbstractCommand _target ):
		this(_this)
		&& cflow( execution(void UngroupCommand.execute( ) ) )
		&& target(_target)
		&& execution(void AbstractCommand.execute( ) )
		&& args();
	after(UngroupCommand _this, AbstractCommand _target) returning: p_73(_this, _target ){
		_this.setUndoActivity (_this.createUndoActivity ());
		_this.getUndoActivity ().setAffectedFigures (_this.view ().selection ());
	}
	pointcut p_74(DuplicateCommand _this, DrawingView _target ):
		this(_this)
		&& withincode(void DuplicateCommand.execute( ) )
		&& target(_target)
		&& call(FigureSelection DrawingView.getFigureSelection( ) )
		&& args();
	after(DuplicateCommand _this, DrawingView _target) returning (FigureSelection selection): p_74(_this, _target ){
		FigureEnumeration figures = (FigureEnumeration) selection.getData (StandardFigureSelection.TYPE);
		_this.getUndoActivity ().setAffectedFigures (figures);
	}
	pointcut p_75(DuplicateCommand _this, DrawingView _target ):
		this(_this)
		&& withincode(void DuplicateCommand.execute( ) )
		&& target(_target)
		&& call(void DrawingView.clearSelection( ) )
		&& args();
	after(DuplicateCommand _this, DrawingView _target) returning: p_75(_this, _target ){
		_this.getUndoActivity ().setAffectedFigures (_this.insertFigures (_this.getUndoActivity ().getAffectedFigures (), 10, 10));
	}
	pointcut p_76(PolygonScaleHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view ):
		this(_this)
		&& execution(void PolygonScaleHandle.invokeEnd(int, int, int, int, DrawingView ) )
		&& args(x, y, anchorX, anchorY, view);
	before(PolygonScaleHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view): p_76(_this, x, y, anchorX, anchorY, view ){
		if ((_this.fCurrent.x == anchorX) && (_this.fCurrent.y == anchorY)) {
			_this.setUndoActivity (null);
        }
	}
	pointcut p_77(PolyLineHandle _this, int x, int y, DrawingView view ):
		this(_this)
		&& execution(void PolyLineHandle.invokeStart(int, int, DrawingView ) )
		&& args(x, y, view);
	before(PolyLineHandle _this, int x, int y, DrawingView view): p_77(_this, x, y, view ){
		_this.setUndoActivity (_this.createUndoActivity (view, _this.fIndex));
		_this.getUndoActivity ().setAffectedFigures (new SingleFigureEnumerator (_this.owner ()));
		((PolyLineHandle_UndoActivity) _this.getUndoActivity ()).setOldPoint (new Point (x, y));
	}
	pointcut p_78(PolyLineHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view ):
		this(_this)
		&& execution(void PolyLineHandle.invokeEnd(int, int, int, int, DrawingView ) )
		&& args(x, y, anchorX, anchorY, view);
	before(PolyLineHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view): p_78(_this, x, y, anchorX, anchorY, view ){
		if ((x == anchorX) && (y == anchorY)) {
			_this.setUndoActivity (null);
        }
	}
	pointcut p_79(DrawingView actual_0, Handle actual_1, SelectionTool _this ):
		args(actual_0, actual_1)
		&& this(_this)
		&& withincode(void SelectionTool.mouseDown(MouseEvent, int, int ) )
		&& call(Tool SelectionTool.createHandleTracker(DrawingView, Handle ) );
	Object around(DrawingView actual_0, Handle actual_1, SelectionTool _this): p_79(actual_0, actual_1, _this ){
		Handle __tmp_1 = new UndoableHandle ((Handle)actual_0, _this.view());
		return proceed(actual_0, __tmp_1, _this);
		}
	pointcut p_80(AlignCommand _this, DrawingView _target ):
		this(_this)
		&& withincode(void AlignCommand.execute( ) )
		&& target(_target)
		&& call(void DrawingView.checkDamage( ) )
		&& args();
	before(AlignCommand _this, DrawingView _target): p_80(_this, _target ){
		_this.getUndoActivity ().setAffectedFigures (_this.view ().selection ());
		((AlignCommand_UndoActivity) _this.getUndoActivity ()).alignAffectedFigures (_this.getAlignment ());
		}
	pointcut p_81(BorderTool _this, BorderTool _target, Figure actual_0 ):
		this(_this)
		&& withincode(void BorderTool.action(Figure ) )
		&& target(_target)
		&& call(List BorderTool.action_initalizeList(Figure ) )
		&& args(actual_0);
	after(BorderTool _this, BorderTool _target, Figure actual_0) returning(List _return): p_81(_this, _target, actual_0 ){
		_this.getUndoActivity ().setAffectedFigures (new FigureEnumerator (_return));
		((BorderTool_UndoActivity) _this.getUndoActivity ()).replaceAffectedFigures ();
		}
	pointcut p_82(BorderTool _this, BorderTool _target, Figure actual_0 ):
		this(_this)
		&& withincode(void BorderTool.reverseAction(Figure ) )
		&& target(_target)
		&& call(List BorderTool.reverseAction_inializeList(Figure ) )
		&& args(actual_0);
	after(BorderTool _this, BorderTool _target, Figure actual_0) returning(List _return): p_82(_this, _target, actual_0 ){
		_this.getUndoActivity ().setAffectedFigures (new FigureEnumerator (_return));
		((BorderTool_UndoActivity) _this.getUndoActivity ()).replaceAffectedFigures ();
		}
	pointcut p_83(BringToFrontCommand _this, DrawingView _target ):
		this(_this)
		&& withincode(void BringToFrontCommand.execute( ) )
		&& target(_target)
		&& call(void DrawingView.checkDamage( ) )
		&& args();
	before(BringToFrontCommand _this, DrawingView _target): p_83(_this, _target ){
		_this.getUndoActivity ().setAffectedFigures (_this.view ().selection ());
		FigureEnumeration fe = _this.getUndoActivity ().getAffectedFigures ();
		while (fe.hasNextFigure ()) {
			_this.view ().drawing ().bringToFront (fe.nextFigure ());
        }
		}
	pointcut p_84(ChangeAttributeCommand _this, DrawingView _target ):
		this(_this)
		&& withincode(void ChangeAttributeCommand.execute( ) )
		&& target(_target)
		&& call(void DrawingView.checkDamage( ) )
		&& args();
	before(ChangeAttributeCommand _this, DrawingView _target): p_84(_this, _target ){
		_this.getUndoActivity ().setAffectedFigures (_this.view ().selection ());
		FigureEnumeration fe = _this.getUndoActivity ().getAffectedFigures ();
		while (fe.hasNextFigure ()) {
            fe.nextFigure ().setAttribute (_this.fAttribute, _this.fValue);
        }
	}
	pointcut p_85(CutCommand _this, DrawingView _target ):
		this(_this)
		&& withincode(void CutCommand.execute( ) )
		&& target(_target)
		&& call(void DrawingView.checkDamage( ) )
		&& args();
	before(CutCommand _this, DrawingView _target): p_85(_this, _target ){
		_this.getUndoActivity ().setAffectedFigures (_this.view ().selection ());
		_this.copyFigures (_this.getUndoActivity ().getAffectedFigures (), _this.view ().selectionCount ());
		_this.deleteFigures (_this.getUndoActivity ().getAffectedFigures ());
		}
	pointcut p_86(DeleteCommand _this, DrawingView _target ):
		this(_this)
		&& withincode(void DeleteCommand.execute( ) )
		&& target(_target)
		&& call(void DrawingView.checkDamage( ) )
		&& args();
	before(DeleteCommand _this, DrawingView _target): p_86(_this, _target ){
		_this.getUndoActivity ().setAffectedFigures (_this.view ().selection ());
		_this.deleteFigures (_this.getUndoActivity ().getAffectedFigures ());
		}
	pointcut p_87(DragTracker _this, AbstractTool _target, MouseEvent actual_0, int actual_1, int actual_2 ):
		this(_this)
		&& cflow( execution(void DragTracker.mouseDrag(MouseEvent, int, int ) ) )
		&& target(_target)
		&& execution(void AbstractTool.mouseDrag(MouseEvent, int, int ) )
		&& args(actual_0, actual_1, actual_2);
	after(DragTracker _this, AbstractTool _target, MouseEvent actual_0, int actual_1, int actual_2) returning: p_87(_this, _target, actual_0, actual_1, actual_2 ){
		if (_this.fMoved) {
            FigureEnumeration figures = _this.getUndoActivity ().getAffectedFigures ();
            while (figures.hasNextFigure ()) {
                figures.nextFigure ().moveBy (actual_1 - _this.fLastX, actual_2 - _this.fLastY);
            }
        }
		}
	pointcut p_88(GroupCommand _this, DrawingView _target ):
		this(_this)
		&& withincode(void GroupCommand.execute( ) )
		&& target(_target)
		&& call(void DrawingView.checkDamage( ) )
		&& args();
	before(GroupCommand _this, DrawingView _target): p_88(_this, _target ){
		_this.getUndoActivity ().setAffectedFigures (_this.view ().selection ());
		((GroupCommand_UndoActivity) _this.getUndoActivity ()).groupFigures ();
		}
	pointcut p_89(InsertImageCommand _this, DrawingView _target ):
		this(_this)
		&& withincode(void InsertImageCommand.execute( ) )
		&& target(_target)
		&& call(void DrawingView.checkDamage( ) )
		&& args();
	before(InsertImageCommand _this, DrawingView _target): p_89(_this, _target ){
		((InsertImageCommand_UndoActivity) _this.getUndoActivity ()).insertImage ();
		}
	pointcut p_90(UngroupCommand _this, DrawingView _target ):
		this(_this)
		&& withincode(void UngroupCommand.execute( ) )
		&& target(_target)
		&& call(void DrawingView.clearSelection( ) )
		&& args();
	after(UngroupCommand _this, DrawingView _target) returning: p_90(_this, _target ){
		((UngroupCommand_UndoActivity) _this.getUndoActivity ()).ungroupFigures ();
		}
	pointcut p_91(SendToBackCommand _this, DrawingView _target ):
		this(_this)
		&& withincode(void SendToBackCommand.execute( ) )
		&& target(_target)
		&& call(void DrawingView.checkDamage( ) )
		&& args();
	before(SendToBackCommand _this, DrawingView _target): p_91(_this, _target ){
		FigureEnumeration fe = _this.getUndoActivity ().getAffectedFigures ();
		while (fe.hasNextFigure ()) {
			_this.view ().drawing ().sendToBack (fe.nextFigure ());
        }
		}
	pointcut p_92(PolyLineHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view ):
		this(_this)
		&& execution(void PolyLineHandle.invokeStep(int, int, int, int, DrawingView ) )
		&& args(x, y, anchorX, anchorY, view);
	before(PolyLineHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view): p_92(_this, x, y, anchorX, anchorY, view ){
		int fIndex = ((PolyLineHandle_UndoActivity) _this.getUndoActivity ()).getPointIndex ();
		_this.myOwner ().setPointAt (new Point (x, y), _this.fIndex);
		}
	pointcut p_93(RadiusHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view ):
		this(_this)
		&& execution(void RadiusHandle.invokeStep(int, int, int, int, DrawingView ) )
		&& args(x, y, anchorX, anchorY, view);
	before(RadiusHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view): p_93(_this, x, y, anchorX, anchorY, view ){
		int dx = x - anchorX;
		int dy = y - anchorY;
		RoundRectangleFigure owner = (RoundRectangleFigure) _this.owner ();
		Rectangle r = owner.displayBox ();
		Point originalRadius = ((RadiusHandle_UndoActivity) _this.getUndoActivity ()).getOldRadius ();
		int rx = Geom.range (0, r.width, 2 * (originalRadius.x / 2 + dx));
		int ry = Geom.range (0, r.height, 2 * (originalRadius.y / 2 + dy));
		owner.setArc (rx, ry);
		}
	pointcut p_94(PolygonScaleHandle _this, int x, int y, DrawingView view ):
		this(_this)
		&& execution(void PolygonScaleHandle.invokeStart(int, int, DrawingView ) )
		&& args(x, y, view);
	after(PolygonScaleHandle _this, int x, int y, DrawingView view) returning: p_94(_this, x, y, view ){
		PolygonScaleHandle_UndoActivity activity = (PolygonScaleHandle_UndoActivity) _this.createUndoActivity (view);
		_this.setUndoActivity (activity);
		activity.setAffectedFigures (new SingleFigureEnumerator (_this.owner ()));
		activity.setPolygon (((PolygonFigure) (_this.owner ())).getPolygon ());
		}
	pointcut p_95(PolygonScaleHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view ):
		this(_this)
		&& execution(void PolygonScaleHandle.invokeStep(int, int, int, int, DrawingView ) )
		&& args(x, y, anchorX, anchorY, view);
	after(PolygonScaleHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view) returning: p_95(_this, x, y, anchorX, anchorY, view ){
		Polygon polygon = ((PolygonScaleHandle_UndoActivity) _this.getUndoActivity ()).getPolygon ();
		((PolygonFigure) (_this.owner ())).scaleRotate (new Point (anchorX, anchorY), polygon, _this.fCurrent);
		}
	pointcut p_96(FontSizeHandle _this, int x, int y, DrawingView view ):
		this(_this)
		&& execution(void FontSizeHandle.invokeStart(int, int, DrawingView ) )
		&& args(x, y, view);
	before(FontSizeHandle _this, int x, int y, DrawingView view): p_96(_this, x, y, view ){
		_this.getUndoActivity ().setAffectedFigures (new SingleFigureEnumerator (_this.owner ()));
		}
	pointcut p_97(FontSizeHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view ):
		this(_this)
		&& execution(void FontSizeHandle.invokeStep(int, int, int, int, DrawingView ) )
		&& args(x, y, anchorX, anchorY, view);
	before(FontSizeHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view): p_97(_this, x, y, anchorX, anchorY, view ){
		TextFigure textOwner = (TextFigure) _this.owner ();
		FontSizeHandle_UndoActivity activity = (FontSizeHandle_UndoActivity) _this.getUndoActivity ();
		int newSize = activity.getFont ().getSize () + y - anchorY;
		textOwner.setFont (new Font (activity.getFont ().getName (), activity.getFont ().getStyle (), newSize));
		}
	pointcut p_98(FontSizeHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view ):
		this(_this)
		&& execution(void FontSizeHandle.invokeEnd(int, int, int, int, DrawingView ) )
		&& args(x, y, anchorX, anchorY, view);
	before(FontSizeHandle _this, int x, int y, int anchorX, int anchorY, DrawingView view): p_98(_this, x, y, anchorX, anchorY, view ){
		TextFigure textOwner = (TextFigure) _this.owner ();
		FontSizeHandle_UndoActivity activity = (FontSizeHandle_UndoActivity) _this.getUndoActivity ();
		if (textOwner.getFont ().getSize () == activity.getOldFontSize ()) {
			_this.setUndoActivity (null);
        } else {
            activity.setFont (textOwner.getFont ());
        }
		}
	}
Encountered "proceed" at line 361, column 50.
Was expecting one of:
    "instanceof" ...
    ";" ...
    "," ...
    "=" ...
    ">" ...
    "<" ...
    "?" ...
    "==" ...
    "<=" ...
    ">=" ...
    "!=" ...
    "||" ...
    "&&" ...
    "++" ...
    "--" ...
    "+" ...
    "-" ...
    "*" ...
    "/" ...
    "&" ...
    "|" ...
    "^" ...
    "%" ...
    "<<" ...
    ">>" ...
    ">>>" ...
    "+=" ...
    "-=" ...
    "*=" ...
    "/=" ...
    "&=" ...
    "|=" ...
    "^=" ...
    "%=" ...
    "<<=" ...
    ">>=" ...
    ">>>=" ...
    "~" ...
    "!" ...
    "(" ...
    <IDENTIFIER> ...
    "this" ...
    "super" ...
    "new" ...
    <INTEGER_LITERAL> ...
    <FLOATING_POINT_LITERAL> ...
    <CHARACTER_LITERAL> ...
    <STRING_LITERAL> ...
    "true" ...
    "false" ...
    "null" ...
    "." ...
    "[" ...
    
failure parsing ../../Desktop/Undo.aj!
---
files (noc):			0
---
classes (noc):			0
top classes (noc):		0
nested classes (noc):		0
classes (loc):			0
---
interfaces (noc):		0
top interfaces (noc):		0
nested interfaces (noc):	0
interfaces (loc):		0
---
aspects (noc):			0
top aspects (noc):		0
nested aspects (noc):		0
aspects (loc):			0
---
class methods (noc):		0
class methods (loc):		0
---
class constructors (noc):	0
class constructors (loc):	0
---
interface methods (noc):	0
---
aspect methods (noc):		0
aspect methods (loc):		0
---
aspect constructors (noc):	0
aspect constructors (loc):	0
---
class fields (noc):		0
---
interface fields (noc):		0
---
aspect fields (noc):		0
---
advice (noc):			18
advice (loc):			81
---
pointcuts (noc):		19
---
inter-type methods (noc):	45
inter-type methods (loc):	143
---
inter-type constructors (noc):	0
inter-type constructors (loc):	0
---
inter-type fields (noc):	6
---
inter-type declares (noc):	4
===
1 file(s) could not been parsed
