public DocumentEquipmentsViewModel(Document document)
        {
            CompositionInitializer.SatisfyImports(this);
            mDocument = document;

            CmsWebServiceClient cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);

            cmsWebServiceClient.GetDocumentEquipmentsCompleted +=
                (s1, e1) =>
                    {
                        mDocument.ModifiedObjects.EquipmentsModified = true; //mark as modified if opened.

                        cmsWebServiceClient.GetEquipmentTypesCompleted += (sender2, e2) =>
                            {
                                mEquipmentTypes = e2.Result;

                                DatabaseLoader.GetBuildEquipmentModelList(mEquipmentTypes, e1.Result).ContinueWith(getBuildEquipmentModelListTask =>
                                {
                                    CMS.UiFactory.StartNew(() =>
                                    {
                                        ModelEquipments = new ObservableCollection<CommonDocumentEquipmentModel>(getBuildEquipmentModelListTask.Result);

                                        RaisePropertyChanged("ModelEquipments");
                                        mDocument.DocumentEquipments = DocumentEquipments;

                                        TryFireLoadedEvent();
                                    });
                                });
                            };

                        cmsWebServiceClient.GetEquipmentTypesAsync();
                    };

            cmsWebServiceClient.GetDocumentEquipmentsAsync(document.Id);

            LinkCommand = new DelegateCommand<object>(LinkButtonHandler, CanLinkHandler);
            DeleteCommand = new DelegateCommand<object>(DeleteButtonHandler, CanDelete);
            OpenEquipmentCommand = new DelegateCommand<object>(OpenEquipmentHandler, CanOpenEquipment);
        }
        private void LoadDisciplines()
        {
            CmsWebServiceClient cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);

            cmsWebServiceClient.GetEquipmentTypesCompleted += (sender, e) =>
                {
                    if (e != null && e.Result.Count > 0)
                    {
                        EquipmentType all = new EquipmentType {Name = ALL, Code = ALL};
                        e.Result.Insert(0, all);

                        Disciplines = new ObservableCollection<EquipmentType>(e.Result);

                        SelectedDiscipline = all;

                        RaisePropertyChanged("Disciplines");
                        RaisePropertyChanged("SelectedDiscipline");

                        //now safe to load other cached data...
                        SetEquipmentsCache();
                    }
                };
            cmsWebServiceClient.GetEquipmentTypesAsync();
        }