private void _Paste()
        {
            if (!(Selection is LayerData || Selection is GeometricObjectDataBase))
            {
                return;
            }
            if (Clipboard == null)
            {
                return;
            }

            EnableUndoRedoStoring = false;

            GeometricObjectDataBase obj = Clipboard.DeepClone() as GeometricObjectDataBase;
            LayerData target            = SelectedLayer;

            target.GeometricObjects.Add(obj);
            Action       undo   = () => { target.GeometricObjects.Remove(obj); };
            Action       redo   = () => { target.GeometricObjects.Add(obj); };
            UndoRedoPair urPair = new UndoRedoPair(new UndoRedoPairString(CurrentLanguage.StandardFunction.Paste + " : " + obj.Name, ""), undo, redo);

            EnableUndoRedoStoring = true;
            AddUndoRedoPair(urPair);

            ValidateProject(DoesUpdateShapeAuto);
        }
 /// <summary>ジオメトリックオブジェクトを追加する。</summary>
 /// <param name="obj"></param>
 public GeometricObjectDataBase AddGeometricObject(GeometricObjectDataBase obj)
 {
     LogMethodStart();
     _AddGeometricObject(obj);
     LogMethodEnd();
     return(obj);
 }
        private void _AddGeometricObject(GeometricObjectDataBase obj)
        {
            if (OpenedProject == null)
            {
                return;
            }
            if (SelectedLayer == null)
            {
                return;
            }

            SelectedLayer.GeometricObjects.Add(obj);
            ValidateProject(DoesUpdateShapeAuto);
            Selection = obj;
        }
        private void DeleteGeometricObject(GeometricObjectDataBase obj)
        {
            string notice = CurrentLanguage.StandardFunction.Delete_UserNotice.Replace("%s", obj.Name);

            if (MessageBox.Show(notice, "", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) != DialogResult.OK)
            {
                return;
            }

            LayerData parent = obj.ParentLayer;
            int       index  = parent.GeometricObjects.IndexOf(obj);
            Action    undo   = () => { parent.GeometricObjects.Insert(index, obj); };
            Action    redo   = () => { parent.GeometricObjects.Remove(obj); };

            parent.GeometricObjects.Remove(obj);
            Selection = parent;

            UndoRedoPair urPair = new UndoRedoPair(new UndoRedoPairString(CurrentLanguage.StandardFunction.Delete + " : GeometricObject[" + obj.Name + "]", ""), undo, redo);

            AddUndoRedoPair(urPair);
        }
        private void _Cut()
        {
            if (!SelectionIsStockable)
            {
                return;
            }

            Action undo, redo;
            GeometricObjectDataBase target = Selection as GeometricObjectDataBase;
            LayerData parent = target.Parent as LayerData;
            int       index  = parent.GeometricObjects.IndexOf(target);

            undo      = () => { parent.GeometricObjects.Insert(index, target); };
            redo      = () => { parent.GeometricObjects.Remove(target); };
            Clipboard = Selection as GeometricObjectDataBase;
            Clipboard.ParentLayer.GeometricObjects.Remove(Clipboard);
            Selection = parent;

            UndoRedoPair urPair = new UndoRedoPair(new UndoRedoPairString(CurrentLanguage.StandardFunction.Cut + " : " + Clipboard.ToString(), ""), undo, redo);

            AddUndoRedoPair(urPair);

            ValidateProject(DoesUpdateShapeAuto);
        }
 public GeometricObjectInvalidEventArgs(GeometricObjectDataBase obj)
 {
     ErrordObject = obj;
 }
		private void _AddGeometricObject(GeometricObjectDataBase obj)
			{
			if( OpenedProject == null ) return;
			if( SelectedLayer == null ) return;

			SelectedLayer.GeometricObjects.Add( obj );
			ValidateProject( DoesUpdateShapeAuto );
			Selection = obj;
			}
		/// <summary>ジオメトリックオブジェクトを追加する。</summary>
		/// <param name="obj"></param>
		public GeometricObjectDataBase AddGeometricObject(GeometricObjectDataBase obj)
			{
			LogMethodStart();
			_AddGeometricObject( obj );
			LogMethodEnd();
			return obj;
			}
		private void DeleteGeometricObject(GeometricObjectDataBase obj)
			{
			string notice = CurrentLanguage.StandardFunction.Delete_UserNotice.Replace( "%s", obj.Name );
			if( MessageBox.Show( notice, "", MessageBoxButtons.OKCancel, MessageBoxIcon.Information ) != DialogResult.OK ) return;

			LayerData parent = obj.ParentLayer;
			int index = parent.GeometricObjects.IndexOf( obj );
			Action undo = () => { parent.GeometricObjects.Insert( index, obj ); };
			Action redo = () => { parent.GeometricObjects.Remove( obj ); };
			parent.GeometricObjects.Remove( obj );
			Selection = parent;

			UndoRedoPair urPair = new UndoRedoPair( new UndoRedoPairString( CurrentLanguage.StandardFunction.Delete + " : GeometricObject[" + obj.Name + "]", "" ), undo, redo );
			AddUndoRedoPair( urPair );
			}
			public GeometricObjectInvalidEventArgs(GeometricObjectDataBase obj)
				{
				ErrordObject = obj;
				}