private void DataGridCollectionViewSource_CommittingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCommittingNewItemEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);

            if (CommittingNewObject != null)
            {
                CommittingNewObject(this, args);
            }

            e.Handled = true;

            if (!args.Cancel)
            {
                ICollection <Zone> source = e.CollectionView.SourceCollection as ICollection <Zone>;

                Project project = App.Current.Project;
                Zone    current = e.Item as Zone;
                project.Zones.Add(current);

                e.Index    = source.Count;
                e.NewCount = source.Count + 1;

                project.Save();

                e.Handled = true;
                _regionsPage.OnNewItemCommitted(e);

                _SetSelectionStatus();
                IsEditingInProgress = false;
            }
            else
            {
                e.Cancel = true;
            }
        }
示例#2
0
        /// <summary>
        /// Handler commits editing (calls CommitItem method of appropriate ContextHandler).
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceCommittingEdit(object sender,
                                                                 DataGridItemCancelEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((AppData.DataObject)e.Item);

            if (CommittingEdit != null)
            {
                CommittingEdit(this, args);
            }

            e.Handled = true;

            if (!args.Cancel)
            {
                _regionsPage.OnCommittingEdit(e);

                App.Current.Project.Save();

                _SetSelectionStatus(((ICollection <Barrier>)e.CollectionView.SourceCollection).Count);
                IsEditingInProgress = false;
            }
            else
            {
                e.Cancel = true;
            }
        }
        private void DataGridCollectionViewSource_CommittingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCommittingNewItemEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);

            if (CommittingNewObject != null)
            {
                CommittingNewObject(this, args);
            }

            e.Handled = true;

            if (!args.Cancel)
            {
                ICollection <Driver> source = e.CollectionView.SourceCollection as ICollection <Driver>;

                Driver currentDriver = e.Item as Driver;
                source.Add(currentDriver);

                e.Index    = source.Count - 1;
                e.NewCount = source.Count;

                App.Current.Project.Save();

                _SetSelectionStatus();
                IsEditingInProgress = false;
            }
            else
            {
                e.Cancel = true;
            }
        }
        /// <summary>
        /// Handler begin creating new item.
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceCreatingNewItem(object sender, DataGridCreatingNewItemEventArgs e)
        {
            e.NewItem = new Order(App.Current.Project.CapacitiesInfo, App.Current.Project.OrderCustomPropertiesInfo);

            // NOTE : workaround - used to show drop-downs cell editors in orders insertion row.
            _ordersInsertionRow.CellEditorDisplayConditions = CellEditorDisplayConditions.CellIsCurrent;

            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.NewItem);

            // Raise event about creating new object was started.
            if (CreatingNewObject != null)
            {
                CreatingNewObject(this, args);
            }
            e.Handled = true;

            if (!args.Cancel) // If action was not cancelled - begin creating new item.
            {
                _handler.CreateNewItem(e);
                _isNewItemCreated = true; // Set flag to true because new object was created.
            }
            else
            {
                _isNewItemCreated = false; // Set flag to false because new object wasn't created.
                e.Cancel          = true;
            }

            // Reset new item if adding of new item was canceled.
            if (e.Cancel)
            {
                e.NewItem = null;
            }
        }
示例#5
0
        /// <summary>
        /// Handler begin creating new item.
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceCreatingNewItem(object sender,
                                                                  DataGridCreatingNewItemEventArgs e)
        {
            // since barrier's start and end dates should be created in code we should also create
            // string fields there too.
            DateTime date    = App.Current.CurrentDate.Date;
            Barrier  barrier = CommonHelpers.CreateBarrier(date);

            e.NewItem = barrier;

            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((AppData.DataObject)e.NewItem);

            if (CreatingNewObject != null)
            {
                CreatingNewObject(this, args);
            }

            e.Handled = true;

            if (!args.Cancel)
            {
                e.Handled = true;
                _regionsPage.OnCreatingNewItem(e);

                _isNewItemCreated = true; // set flag to true because new object was created
                _SetCreatingStatus();
                IsEditingInProgress = true;
            }
            else
            {
                e.Cancel          = true;
                _isNewItemCreated = false; // set flag to false because new object wasn't created
            }
        }
        /// <summary>
        /// Handler begin commiting new item (calls CommitNewItem method of appropriate ContextHandler).
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceCommittingNewItem(object sender, DataGridCommittingNewItemEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);

            // Raise event about new item starts commiting.
            if (CommittingNewObject != null)
            {
                CommittingNewObject(this, args);
            }
            e.Handled = true;

            if (!args.Cancel) // If action was not cancelled - commit new item.
            {
                _handler.CommitNewItem(e);
            }
            else
            {
                e.Cancel = true;
            }

            // NOTE : workaround - hide cell editors when new item's commiting.
            if (_ordersInsertionRow != null)
            {
                _ordersInsertionRow.CellEditorDisplayConditions = CellEditorDisplayConditions.None;
            }
        }
示例#7
0
        private void DataGridCollectionViewSource_CommittingEdit(object sender, DataGridItemCancelEventArgs e)
        {
            if (CommonHelpers.IgnoreVirtualLocations(e.Item))
            {
                var args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);
                if (CommittingEdit != null)
                {
                    CommittingEdit(this, args);
                }

                e.Handled = true;

                if (args.Cancel)
                {
                    e.Cancel = true;
                }
                else
                {
                    var project = App.Current.Project;
                    if (project != null)
                    {
                        project.Save();
                    }

                    _SetSelectionStatus();
                    IsEditingInProgress = false;
                }
            }
            else
            {
                e.Handled = true;
                e.Cancel  = true;
            }
        }
示例#8
0
        private void DataGridCollectionViewSource_CreatingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCreatingNewItemEventArgs e)
        {
            e.NewItem = new Location();
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.NewItem);

            if (CreatingNewObject != null)
            {
                CreatingNewObject(this, args);
            }

            e.Handled = true;

            if (!args.Cancel)
            {
                if (!_geocodablePage.IsGeocodingInProcess)
                {
                    _geocodablePage.OnCreatingNewItem(e);
                    _isNewItemCreated = true; // set flag to true because new object was created
                }
                else
                {
                    e.Cancel          = true;
                    _isNewItemCreated = false;  // set flag to false because new object wasn't created
                }

                _isNewItemCreated = true; //
                _SetCreatingStatus();
                IsEditingInProgress = true;
            }
            else
            {
                e.Cancel          = true;
                _isNewItemCreated = false; // set flag to false because new object wasn't created
            }
        }
示例#9
0
        private void DataGridCollectionViewSource_CreatingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCreatingNewItemEventArgs e)
        {
            e.NewItem = _CreateRouteWithDefaultValues();
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.NewItem);

            if (CreatingNewObject != null)
            {
                CreatingNewObject(this, args);
            }

            e.Handled = true;

            if (!args.Cancel)
            {
                _isNewItemCreated = true; // set flag to true because new object was created
                _SetCreatingStatus();
                IsEditingInProgress = true;

                if (_InsertionRow.Cells["HardZones"] != null)
                {
                    _InsertionRow.Cells["HardZones"].Visibility = Visibility.Visible;
                }
            }
            else
            {
                e.Cancel          = true;
                _isNewItemCreated = false; // set flag to false because new object wasn't created

                if (_InsertionRow.Cells["HardZones"] != null)
                {
                    _InsertionRow.Cells["HardZones"].Visibility = Visibility.Hidden;
                }
            }
        }
        private void DataGridCollectionViewSource_CommittingEdit(object sender, DataGridItemCancelEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);

            if (CommittingEdit != null)
            {
                CommittingEdit(this, args);
            }

            e.Handled = true;

            if (!args.Cancel)
            {
                if (App.Current.Project != null)
                {
                    App.Current.Project.Save();
                }

                _SetSelectionStatus();
                IsEditingInProgress = false;
            }
            else
            {
                e.Cancel = true;
            }
        }
        /// <summary>
        /// Handler begins edit item (calls BeginEditItem method of appropriate ContextHandler).
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceBeginningEdit(object sender, DataGridItemCancelEventArgs e)
        {
            e.Handled = true;

            ESRI.ArcLogistics.Data.DataObject dataObject = e.Item as ESRI.ArcLogistics.Data.DataObject;
            if (dataObject != null)
            {
                // Define event args from editinf Item.
                DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs(dataObject);

                // Raise BeginningEdit event.
                if (BeginningEdit != null)
                {
                    BeginningEdit(this, args);
                }

                if (!args.Cancel)
                {
                    _handler.BeginEditItem(e); // If action wasn't cancelled - begin editing in appropriate handler.
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }
示例#12
0
 /// <summary>
 /// Handler raises event about edit is commiting.
 /// </summary>
 /// <param name="sender">View sender.</param>
 /// <param name="e">Event args e.</param>
 private void _ViewCommittingEdit(object sender, DataObjectCanceledEventArgs e)
 {
     // Raise event to OptimizeAndEdit page about commiting is starting.
     if (CommittingEdit != null)
     {
         CommittingEdit(this, e);
     }
 }
示例#13
0
        /// <summary>
        /// Handler cancels editing in all views, starts editing in current and raises event about editing is beginning.
        /// </summary>
        /// <param name="sender">View sender.</param>
        /// <param name="e">Event args.</param>
        private void _ViewBeginningEdit(object sender, DataObjectCanceledEventArgs e)
        {
            _CancelEditingInOtherViews(sender);

            EditedObject = e.Object;

            // Raise event to OptimizeAndEdit page about editing is starting.
            if (BeginningEdit != null)
            {
                BeginningEdit(this, e);
            }
        }
示例#14
0
        private void DataGridCollectionViewSource_CommittingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCommittingNewItemEventArgs e)
        {
            if (CommonHelpers.IgnoreVirtualLocations(e.Item))
            {
                DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);
                if (CommittingNewObject != null)
                {
                    CommittingNewObject(this, args);
                }

                e.Handled = true;

                if (!args.Cancel)
                {
                    ICollection <Route> source = e.CollectionView.SourceCollection as ICollection <Route>;

                    Route currentRoute = e.Item as Route;
                    source.Add(currentRoute);

                    e.Index    = source.Count - 1;
                    e.NewCount = source.Count;

                    App.Current.Project.Save();

                    _SetSelectionStatus();
                    IsEditingInProgress = false;

                    if (_InsertionRow.Cells["HardZones"] != null)
                    {
                        _InsertionRow.Cells["HardZones"].Visibility = Visibility.Hidden;
                    }
                }
                else
                {
                    e.Cancel = true;

                    if (_InsertionRow.Cells["HardZones"] != null)
                    {
                        _InsertionRow.Cells["HardZones"].Visibility = Visibility.Visible;
                    }
                }
            }
            else
            {
                e.Handled = true;
                e.Cancel  = true;

                if (_InsertionRow.Cells["HardZones"] != null)
                {
                    _InsertionRow.Cells["HardZones"].Visibility = Visibility.Visible;
                }
            }
        }
示例#15
0
        /// <summary>
        /// Handler cancels editing in all views, starts creating new in current view and raises event about new object is creating.
        /// </summary>
        /// <param name="sender">View sender.</param>
        /// <param name="e">Event args.</param>
        private void _ViewCreatingNewObject(object sender, DataObjectCanceledEventArgs e)
        {
            _CancelEditingInOtherViews(sender);

            EditedObject = e.Object;

            // Raise event to OptimizeAndEdit page about creating new is starting.
            if (CreatingNewObject != null)
            {
                CreatingNewObject(this, e);
            }
        }
示例#16
0
        /// <summary>
        /// Handler begin commiting new item (calls CommitNewItem method of appropriate ContextHandler).
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceCommittingNewItem(object sender,
                                                                    DataGridCommittingNewItemEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((AppData.DataObject)e.Item);

            if (CommittingNewObject != null)
            {
                CommittingNewObject(this, args);
            }

            e.Handled = true;

            if (!args.Cancel)
            {
                var source = e.CollectionView.SourceCollection as ICollection <Barrier>;

                Barrier current = e.Item as Barrier;

                if (null == current.StartDate)
                {
                    current.StartDate = App.Current.CurrentDate.Date;
                }

                if (null == current.FinishDate)
                {
                    DateTime date = current.StartDate;
                    current.FinishDate = date.AddDays(1);
                }

                Project project = App.Current.Project;
                project.Barriers.Add(current);
                project.Save();

                e.Index    = source.Count;
                e.NewCount = source.Count + 1;

                _regionsPage.OnNewItemCommitted(e);

                _SetSelectionStatus(((ICollection <Barrier>)e.CollectionView.SourceCollection).Count);
                IsEditingInProgress = false;
            }
            else
            {
                e.Cancel = true;
            }
        }
示例#17
0
        private void DataGridCollectionViewSource_CommittingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCommittingNewItemEventArgs e)
        {
            e.Handled = true;
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);

            if (CommittingNewObject != null)
            {
                CommittingNewObject(this, args);
            }

            if (!args.Cancel)
            {
                _CommitNewItem(e);
                IsEditingInProgress = false;
                _SetSelectionStatus();
            }
            else
            {
                e.Cancel = true;
            }
        }
        private void DataGridCollectionViewSource_BeginningEdit(object sender, DataGridItemCancelEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);

            if (BeginningEdit != null)
            {
                BeginningEdit(this, args);
            }

            e.Handled = true;

            if (!args.Cancel)
            {
                IsEditingInProgress = true;
                _SetEditingStatus(e.Item.ToString());
            }
            else
            {
                e.Cancel = true;
            }
        }
示例#19
0
        /// <summary>
        /// Handler begins edit item (calls BeginEditItem method of appropriate ContextHandler).
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceBeginningEdit(object sender,
                                                                DataGridItemCancelEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((AppData.DataObject)e.Item);

            if (BeginningEdit != null)
            {
                BeginningEdit(this, args);
            }

            e.Handled = true;

            if (!args.Cancel)
            {
                _regionsPage.OnBeginningEdit(e);
                IsEditingInProgress = true;
                _SetEditingStatus(e.Item.ToString());
            }
            else
            {
                e.Cancel = true;
            }
        }
        /// <summary>
        /// Handler commits editing (calls CommitItem method of appropriate ContextHandler).
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceCommittingEdit(object sender, DataGridItemCancelEventArgs e)
        {
            // Define event args from commited object.
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);

            // Raise commiting edit event.
            if (CommittingEdit != null)
            {
                CommittingEdit(this, args);
            }

            e.Handled = true;

            if (!args.Cancel) // If action was not cancelled - commit changes.
            {
                _handler.CommitItem(e);
                App.Current.Project.Save();
            }
            else
            {
                e.Cancel = true;
            }
        }
示例#21
0
        private void DataGridCollectionViewSource_CommittingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCommittingNewItemEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);

            if (CommittingNewObject != null)
            {
                CommittingNewObject(this, args);
            }

            e.Handled = true;

            if (args.Cancel)
            {
                e.Cancel = true;

                return;
            }

            ICollection <MobileDevice> source = e.CollectionView.SourceCollection as ICollection <MobileDevice>;

            MobileDevice currentMobileDevice = e.Item as MobileDevice;

            source.Add(currentMobileDevice);

            if (_devicesEditor != null)
            {
                _devicesEditor.AddDevice(currentMobileDevice);
            }

            e.Index    = source.Count - 1;
            e.NewCount = source.Count;

            App.Current.Project.Save();

            _SetSelectionStatus();
            IsEditingInProgress = false;
        }
        private void DataGridCollectionViewSource_CreatingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCreatingNewItemEventArgs e)
        {
            // Create new vehicle with default fuel type.
            var vehicle = new Vehicle(App.Current.Project.CapacitiesInfo);

            if (App.Current.Project.FuelTypes != null && App.Current.Project.FuelTypes.Count > 0)
            {
                vehicle.FuelType = _GetDefaultFuelType();
            }
            e.NewItem = vehicle;

            if (App.Current.Project.FuelTypes.Count == 1)
            {
                ((Vehicle)e.NewItem).FuelType = App.Current.Project.FuelTypes[0];
            }

            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.NewItem);

            if (CreatingNewObject != null)
            {
                CreatingNewObject(this, args);
            }

            e.Handled = true;

            if (!args.Cancel)
            {
                _isNewItemCreated = true; // set flag to true because new object was created
                _SetCreatingStatus();
                IsEditingInProgress = true;
            }
            else
            {
                e.Cancel          = true;
                _isNewItemCreated = false; // set flag to false because new object wasn't created
            }
        }
示例#23
0
        private void DataGridCollectionViewSource_CommittingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCommittingNewItemEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);

            if (CommittingNewObject != null)
            {
                CommittingNewObject(this, args);
            }

            e.Handled = true;

            if (!args.Cancel)
            {
                if (_geocodablePage.OnCommittingNewItem(e))
                {
                    ICollection <Location> source = e.CollectionView.SourceCollection as ICollection <Location>;

                    Location geocodable = e.Item as Location;
                    source.Add(geocodable);

                    if (App.Current.Project != null)
                    {
                        App.Current.Project.Save();
                    }

                    e.Index    = source.Count - 1;
                    e.NewCount = source.Count;
                    _SetSelectionStatus();
                }
                IsEditingInProgress = false;
            }
            else
            {
                e.Cancel = true;
            }
        }
        /// <summary>
        /// Handler begins edit item (calls BeginEditItem method of appropriate ContextHandler).
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceBeginningEdit(object sender, DataGridItemCancelEventArgs e)
        {
            e.Handled = true;

            ESRI.ArcLogistics.Data.DataObject dataObject = e.Item as ESRI.ArcLogistics.Data.DataObject;
            if (dataObject != null)
            {
                // Define event args from editinf Item.
                DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs(dataObject);

                // Raise BeginningEdit event.
                if (BeginningEdit != null)
                    BeginningEdit(this, args);

                if (!args.Cancel)
                    _handler.BeginEditItem(e); // If action wasn't cancelled - begin editing in appropriate handler.
                else
                    e.Cancel = true;
            }
        }
        private void DataGridCollectionViewSource_CreatingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCreatingNewItemEventArgs e)
        {
            e.NewItem = new Zone();
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.NewItem);
            if (CreatingNewObject != null)
                CreatingNewObject(this, args);

            e.Handled = true;

            if (!args.Cancel)
            {
                _regionsPage.OnCreatingNewItem(e);

                _isNewItemCreated = true; // set flag to true because new object was created
                _SetCreatingStatus();
                IsEditingInProgress = true;
            }
            else
            {
                e.Cancel = true;
                _isNewItemCreated = false; // set flag to false because new object wasn't created
            }
        }
        private void DataGridCollectionViewSource_CommittingEdit(object sender, DataGridItemCancelEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);
            if (CommittingEdit != null)
                CommittingEdit(this, args);

            e.Handled = true;

            if (!args.Cancel)
            {
                _regionsPage.OnCommittingEdit(e);
                if (App.Current.Project != null)
                    App.Current.Project.Save();

                _SetSelectionStatus();
                IsEditingInProgress = false;
            }
            else
                e.Cancel = true;
        }
        /// <summary>
        /// Handler commits editing (calls CommitItem method of appropriate ContextHandler).
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceCommittingEdit(object sender,
                                                                 DataGridItemCancelEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((AppData.DataObject)e.Item);
            if (CommittingEdit != null)
                CommittingEdit(this, args);

            e.Handled = true;

            if (!args.Cancel)
            {
                _regionsPage.OnCommittingEdit(e);

                App.Current.Project.Save();

                _SetSelectionStatus(((ICollection<Barrier>)e.CollectionView.SourceCollection).Count);
                IsEditingInProgress = false;
            }
            else
                e.Cancel = true;
        }
        /// <summary>
        /// Handler begin commiting new item (calls CommitNewItem method of appropriate ContextHandler).
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceCommittingNewItem(object sender, DataGridCommittingNewItemEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);

            // Raise event about new item starts commiting.
            if (CommittingNewObject != null)
                CommittingNewObject(this, args);
            e.Handled = true;

            if (!args.Cancel) // If action was not cancelled - commit new item.
                _handler.CommitNewItem(e);
            else
                e.Cancel = true;

            // NOTE : workaround - hide cell editors when new item's commiting.
            if (_ordersInsertionRow != null)
                _ordersInsertionRow.CellEditorDisplayConditions = CellEditorDisplayConditions.None;
        }
        /// <summary>
        /// Handler cancels editing in all views, starts creating new in current view and raises event about new object is creating.
        /// </summary>
        /// <param name="sender">View sender.</param>
        /// <param name="e">Event args.</param>
        private void _ViewCreatingNewObject(object sender, DataObjectCanceledEventArgs e)
        {
            _CancelEditingInOtherViews(sender);

            EditedObject = e.Object;

            // Raise event to OptimizeAndEdit page about creating new is starting.
            if (CreatingNewObject != null)
                CreatingNewObject(this, e);
        }
        private void DataGridCollectionViewSource_CommittingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCommittingNewItemEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);
            if (CommittingNewObject != null)
                CommittingNewObject(this, args);

            e.Handled = true;

            if (!args.Cancel)
            {
                ICollection<Driver> source = e.CollectionView.SourceCollection as ICollection<Driver>;

                Driver currentDriver = e.Item as Driver;
                source.Add(currentDriver);

                e.Index = source.Count - 1;
                e.NewCount = source.Count;

                App.Current.Project.Save();

                _SetSelectionStatus();
                IsEditingInProgress = false;
            }
            else
                e.Cancel = true;
        }
        private void DataGridCollectionViewSource_CreatingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCreatingNewItemEventArgs e)
        {
            // Create new vehicle with default fuel type.
            var vehicle = new Vehicle(App.Current.Project.CapacitiesInfo);
            if (App.Current.Project.FuelTypes != null && App.Current.Project.FuelTypes.Count > 0)
                vehicle.FuelType = _GetDefaultFuelType();
            e.NewItem = vehicle;

            if (App.Current.Project.FuelTypes.Count == 1)
                ((Vehicle)e.NewItem).FuelType = App.Current.Project.FuelTypes[0];

            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.NewItem);
            if (CreatingNewObject != null)
                CreatingNewObject(this, args);

            e.Handled = true;

            if (!args.Cancel)
            {
                _isNewItemCreated = true; // set flag to true because new object was created
                _SetCreatingStatus();
                IsEditingInProgress = true;
            }
            else
            {
                e.Cancel = true;
                _isNewItemCreated = false; // set flag to false because new object wasn't created
            }
        }
        /// <summary>
        /// Handler cancels editing in all views, starts editing in current and raises event about editing is beginning.
        /// </summary>
        /// <param name="sender">View sender.</param>
        /// <param name="e">Event args.</param>
        private void _ViewBeginningEdit(object sender, DataObjectCanceledEventArgs e)
        {
            _CancelEditingInOtherViews(sender);

            EditedObject = e.Object;

            // Raise event to OptimizeAndEdit page about editing is starting.
            if (BeginningEdit != null)
                BeginningEdit(this, e);
        }
 /// <summary>
 /// Handler raises event about new object is commiting.
 /// </summary>
 /// <param name="sender">View sender.</param>
 /// <param name="e">Event args.</param>
 private void _ViewCommittingNewObject(object sender, DataObjectCanceledEventArgs e)
 {
     // Raise event to OptimizeAndEdit page about new object is commiting.
     if (CommittingNewObject != null)
         CommittingNewObject(this, e);
 }
        /// <summary>
        /// Handler begin creating new item.
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceCreatingNewItem(object sender, DataGridCreatingNewItemEventArgs e)
        {
            e.NewItem = new Order(App.Current.Project.CapacitiesInfo, App.Current.Project.OrderCustomPropertiesInfo);

            // NOTE : workaround - used to show drop-downs cell editors in orders insertion row.
            _ordersInsertionRow.CellEditorDisplayConditions = CellEditorDisplayConditions.CellIsCurrent;

            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.NewItem);

            // Raise event about creating new object was started.
            if (CreatingNewObject != null)
                CreatingNewObject(this, args);
            e.Handled = true;

            if (!args.Cancel) // If action was not cancelled - begin creating new item.
            {
                _handler.CreateNewItem(e);
                _isNewItemCreated = true; // Set flag to true because new object was created.
            }
            else
            {
                _isNewItemCreated = false; // Set flag to false because new object wasn't created.
                e.Cancel = true;
            }

            // Reset new item if adding of new item was canceled.
            if (e.Cancel)
                e.NewItem = null;
        }
        private void DataGridCollectionViewSource_CommittingEdit(object sender, DataGridItemCancelEventArgs e)
        {
            if (CommonHelpers.IgnoreVirtualLocations(e.Item))
            {
                var args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);
                if (CommittingEdit != null)
                    CommittingEdit(this, args);

                e.Handled = true;

                if (args.Cancel)
                    e.Cancel = true;
                else
                {
                    var project = App.Current.Project;
                    if (project != null)
                        project.Save();

                    _SetSelectionStatus();
                    IsEditingInProgress = false;
                }
            }
            else
            {
                e.Handled = true;
                e.Cancel = true;
            }
        }
        /// <summary>
        /// Handler commits editing (calls CommitItem method of appropriate ContextHandler).
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceCommittingEdit(object sender, DataGridItemCancelEventArgs e)
        {
            // Define event args from commited object.
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);

            // Raise commiting edit event.
            if (CommittingEdit != null)
                CommittingEdit(this, args);

            e.Handled = true;

            if (!args.Cancel) // If action was not cancelled - commit changes.
            {
                _handler.CommitItem(e);
                App.Current.Project.Save();
            }
            else
                e.Cancel = true;
        }
        private void DataGridCollectionViewSource_CreatingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCreatingNewItemEventArgs e)
        {
            e.NewItem = _CreateRouteWithDefaultValues();
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.NewItem);
            if (CreatingNewObject != null)
                CreatingNewObject(this, args);

            e.Handled = true;

            if (!args.Cancel)
            {
                _isNewItemCreated = true; // set flag to true because new object was created
                _SetCreatingStatus();
                IsEditingInProgress = true;

                if (_InsertionRow.Cells["HardZones"] != null)
                    _InsertionRow.Cells["HardZones"].Visibility = Visibility.Visible;
            }
            else
            {
                e.Cancel = true;
                _isNewItemCreated = false; // set flag to false because new object wasn't created

                if (_InsertionRow.Cells["HardZones"] != null)
                    _InsertionRow.Cells["HardZones"].Visibility = Visibility.Hidden;
            }
        }
        private void DataGridCollectionViewSource_CommittingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCommittingNewItemEventArgs e)
        {
            e.Handled = true;
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);
            if (CommittingNewObject != null)
                CommittingNewObject(this, args);

            if (!args.Cancel)
            {
                _CommitNewItem(e);
                IsEditingInProgress = false;
                _SetSelectionStatus();
            }
            else
                e.Cancel = true;
        }
        /// <summary>
        /// Handler begin commiting new item (calls CommitNewItem method of appropriate ContextHandler).
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceCommittingNewItem(object sender,
                                                                    DataGridCommittingNewItemEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((AppData.DataObject)e.Item);
            if (CommittingNewObject != null)
                CommittingNewObject(this, args);

            e.Handled = true;

            if (!args.Cancel)
            {
                var source = e.CollectionView.SourceCollection as ICollection<Barrier>;

                Barrier current = e.Item as Barrier;

                if (null == current.StartDate)
                    current.StartDate = App.Current.CurrentDate.Date;

                if (null == current.FinishDate)
                {
                    DateTime date = current.StartDate;
                    current.FinishDate = date.AddDays(1);
                }

                Project project = App.Current.Project;
                project.Barriers.Add(current);
                project.Save();

                e.Index = source.Count;
                e.NewCount = source.Count + 1;

                _regionsPage.OnNewItemCommitted(e);

                _SetSelectionStatus(((ICollection<Barrier>)e.CollectionView.SourceCollection).Count);
                IsEditingInProgress = false;
            }
            else
                e.Cancel = true;
        }
        private void DataGridCollectionViewSource_CommittingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCommittingNewItemEventArgs e)
        {
            if (CommonHelpers.IgnoreVirtualLocations(e.Item))
            {
                DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);
                if (CommittingNewObject != null)
                    CommittingNewObject(this, args);

                e.Handled = true;

                if (!args.Cancel)
                {
                    ICollection<Route> source = e.CollectionView.SourceCollection as ICollection<Route>;

                    Route currentRoute = e.Item as Route;
                    source.Add(currentRoute);

                    e.Index = source.Count - 1;
                    e.NewCount = source.Count;

                    App.Current.Project.Save();

                    _SetSelectionStatus();
                    IsEditingInProgress = false;

                    if (_InsertionRow.Cells["HardZones"] != null)
                        _InsertionRow.Cells["HardZones"].Visibility = Visibility.Hidden;
                }
                else
                {
                    e.Cancel = true;

                    if (_InsertionRow.Cells["HardZones"] != null)
                        _InsertionRow.Cells["HardZones"].Visibility = Visibility.Visible;
                }
            }
            else
            {
                e.Handled = true;
                e.Cancel = true;

                if (_InsertionRow.Cells["HardZones"] != null)
                    _InsertionRow.Cells["HardZones"].Visibility = Visibility.Visible;
            }
        }
        /// <summary>
        /// Creates data object canceled event arguments.
        /// </summary>
        /// <param name="obj">Data objcte (Route).</param>
        /// <returns>Created data object canceled event arguments.</returns>
        private DataObjectCanceledEventArgs _CreateDataObjectCanceledEventArgs(object obj)
        {
            Debug.Assert(null != obj);

            var dataObject = obj as AppData.DataObject;
            Debug.Assert(null != dataObject);

            var args = new DataObjectCanceledEventArgs(dataObject);
            return args;
        }
        private void DataGridCollectionViewSource_BeginningEdit(object sender, DataGridItemCancelEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);
            if (BeginningEdit != null)
                BeginningEdit(this, args);

            e.Handled = true;

            if (!args.Cancel)
            {
                _regionsPage.OnBeginningEdit(e);
                IsEditingInProgress = true;
                _SetEditingStatus(e.Item.ToString());
            }
            else
                e.Cancel = true;
        }
        /// <summary>
        /// Handler begin creating new item.
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceCreatingNewItem(object sender, DataGridCreatingNewItemEventArgs e)
        {
            // If current visible collection is routes.
            e.NewItem = App.Current.Project.CreateRoute();

            // NOTE : workaround - used to show drop-downs cell editors in routes insertion row.
            _routesInsertionRow.CellEditorDisplayConditions = CellEditorDisplayConditions.CellIsCurrent;

            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.NewItem);

            // Raise event about creating new object was started.
            if (CreatingNewObject != null)
                CreatingNewObject(this, args);
            e.Handled = true;

            if (!args.Cancel) // If action was not cancelled - begin creating new item.
            {
                _handler.CreateNewItem(e);
                _isNewItemCreated = true; // Set flag to true because new object was created.

                if (_routesInsertionRow.Cells[HARD_ZONES_PROPERTY_NAME] != null)
                    _routesInsertionRow.Cells[HARD_ZONES_PROPERTY_NAME].Visibility = Visibility.Visible;
            }
            else
            {
                _isNewItemCreated = false; // Set flag to false because new object wasn't created.
                e.Cancel = true;
            }
        }
        private void DataGridCollectionViewSource_CommittingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCommittingNewItemEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);
            if (CommittingNewObject != null)
                CommittingNewObject(this, args);

            e.Handled = true;

            if (!args.Cancel)
            {
                ICollection<Zone> source = e.CollectionView.SourceCollection as ICollection<Zone>;

                Project project = App.Current.Project;
                Zone current = e.Item as Zone;
                project.Zones.Add(current);

                e.Index = source.Count;
                e.NewCount = source.Count + 1;

                project.Save();

                e.Handled = true;
                _regionsPage.OnNewItemCommitted(e);

                _SetSelectionStatus();
                IsEditingInProgress = false;
            }
            else
                e.Cancel = true;
        }
        /// <summary>
        /// Handler raises event about editing is beginning.
        /// </summary>
        /// <param name="sender">View sender.</param>
        /// <param name="e">Event args.</param>
        private void _ScheduleViewsEditingManagerBeginningEdit(object sender, DataObjectCanceledEventArgs e)
        {
            // Raise event about editing is starting.
            if (BeginningEdit != null)
                BeginningEdit(this, e);

            // Stop editing canceled inside StopListViewContextHandler, we dont need to set IsEditingInProgress to true
            if (!(e.Object is Stop))
                IsEditingInProgress = true;
        }
        /// <summary>
        /// Handler raises event about new object is commiting.
        /// </summary>
        /// <param name="sender">View sender.</param>
        /// <param name="e">Event args.</param>
        private void _ScheduleViewsEditingManagerCommittingNewObject(object sender, DataObjectCanceledEventArgs e)
        {
            // Raise event about new object is commiting.
            if (CommittingNewObject != null)
                CommittingNewObject(this, e);

            IsEditingInProgress = false;
        }
        /// <summary>
        /// Handler raises event about new object is creating.
        /// </summary>
        /// <param name="sender">View sender.</param>
        /// <param name="e">Event args.</param>
        private void _ScheduleViewsEditingManagerCreatingNewObject(object sender, DataObjectCanceledEventArgs e)
        {
            // Raise event about creating new is starting.
            if (CreatingNewObject != null)
                CreatingNewObject(this, e);

            IsEditingInProgress = true;
        }
        private void DataGridCollectionViewSource_CommittingNewItem(object sender, Xceed.Wpf.DataGrid.DataGridCommittingNewItemEventArgs e)
        {
            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((ESRI.ArcLogistics.Data.DataObject)e.Item);
            if (CommittingNewObject != null)
                CommittingNewObject(this, args);

            e.Handled = true;

            if (!args.Cancel)
            {
                if (_geocodablePage.OnCommittingNewItem(e))
                {
                    ICollection<Location> source = e.CollectionView.SourceCollection as ICollection<Location>;

                    Location geocodable = e.Item as Location;
                    source.Add(geocodable);

                    if (App.Current.Project != null)
                        App.Current.Project.Save();

                    e.Index = source.Count - 1;
                    e.NewCount = source.Count;
                    _SetSelectionStatus();
                }
                IsEditingInProgress = false;
            }
            else
                e.Cancel = true;
        }
        /// <summary>
        /// Handler begin creating new item.
        /// </summary>
        /// <param name="sender">Data grid control sender.</param>
        /// <param name="e">Item event args.</param>
        private void _DataGridCollectionViewSourceCreatingNewItem(object sender,
                                                                  DataGridCreatingNewItemEventArgs e)
        {
            // since barrier's start and end dates should be created in code we should also create
            // string fields there too.
            DateTime date = App.Current.CurrentDate.Date;
            Barrier barrier = CommonHelpers.CreateBarrier(date);

            e.NewItem = barrier;

            DataObjectCanceledEventArgs args = new DataObjectCanceledEventArgs((AppData.DataObject)e.NewItem);
            if (CreatingNewObject != null)
                CreatingNewObject(this, args);

            e.Handled = true;

            if (!args.Cancel)
            {
                e.Handled = true;
                _regionsPage.OnCreatingNewItem(e);

                _isNewItemCreated = true; // set flag to true because new object was created
                _SetCreatingStatus();
                IsEditingInProgress = true;
            }
            else
            {
                e.Cancel = true;
                _isNewItemCreated = false; // set flag to false because new object wasn't created
            }
        }