public ActivityDesigner() { _errorsAdorner = new ErrorsAdorner(this); Loaded += OnRoutedEventHandler; AllowDrop = true; PreviewKeyDown += OnPreviewKeyDown; }
private void AssociatedObjectOnMouseLeave(object sender, MouseEventArgs mouseEventArgs) { if (mouseIsDown) { EndDrag(); ViewModelCommunication.SendTo( Constants.ViewModelCollections.AppointmentViewModelCollection, AppointmentModifications.OriginalAppointment.Id, new ShowDisabledOverlay() ); AdornerControl.CreateAdorner(AppointmentModifications.OriginalAppointment.Patient.Name, AppointmentModifications.CurrentAppointmentPixelWidth); DragDrop.DoDragDrop((DependencyObject)sender, AppointmentModifications.OriginalAppointment, DragDropEffects.Link); AdornerControl.DisposeAdorner(); ViewModelCommunication.SendTo( Constants.ViewModelCollections.AppointmentViewModelCollection, AppointmentModifications.OriginalAppointment.Id, new HideDisabledOverlay() ); } }
public MainWindow BuildWindow() { // build modules var adornerControl = new AdornerControl(); // build viewModels var mainViewModelBuilder = new MainViewModelBuilder(medicalPracticeRepository, readModelRepository, patientRepository, therapyPlaceTypeRepository, labelRepository, commandService, localSettingsRepository, viewModelCommunication, session, adornerControl); var loginViewModelBuilder = new LoginViewModelBuilder(session, localSettingsRepository); var notificationServiceContainerViewModel = new NotificationServiceContainerViewModel(viewModelCommunication); var connectionStatusViewModel = new ConnectionStatusViewModel(session); var dialogBuilder = new AboutDialogWindowBuilder(versionNumber, errorCallback); var actionBarViewModel = new ActionBarViewModel(session, connectionStatusViewModel, viewModelCommunication, dialogBuilder); var mainWindowViewModel = new MainWindowViewModel(mainViewModelBuilder, loginViewModelBuilder, notificationServiceContainerViewModel, actionBarViewModel, session, errorCallback); // build mainWindow var mainWindow = new MainWindow { DataContext = mainWindowViewModel }; // set GridContainer as ReferenceElement of AdornerControl adornerControl.ReferenceElement = mainWindow.MainView.OverviewPage.GridContainer; viewModelCommunication.RegisterViewModelMessageHandler <ShowDisabledOverlay>(mainWindowViewModel); viewModelCommunication.RegisterViewModelMessageHandler <HideDisabledOverlay>(mainWindowViewModel); return(mainWindow); }
public ActivityDesigner() { //This line is bad it causes the overall designer to not get focus when clicking on it //Please be very careful about putting this line in. //FocusManager.SetIsFocusScope(this , true); _errorsAdorner = new ErrorsAdorner(this); Loaded += OnRoutedEventHandler; Unloaded += ActivityDesignerUnloaded; AllowDrop = true; }
public TherapyPlaceRowViewModel(IViewModelCommunication viewModelCommunication, IClientTherapyPlaceTypeRepository therapyPlaceTypeRepository, TherapyPlace therapyPlace, Color roomDisplayColor, TherapyPlaceRowIdentifier identifier, AdornerControl adornerControl, Time timeSlotBegin, Time timeSlotEnd, ISharedStateReadOnly <AppointmentModifications> appointmentModificationsVariable, Width initialGridWidth, Action <string> errorCallback) { this.viewModelCommunication = viewModelCommunication; this.therapyPlaceTypeRepository = therapyPlaceTypeRepository; this.therapyPlace = therapyPlace; this.appointmentModificationsVariable = appointmentModificationsVariable; therapyPlaceTypeRepository.UpdatedTherapyPlaceTypeAvailable += OnUpdatedTherapyPlaceTypeAvailable; IsVisible = true; RoomColor = roomDisplayColor; Identifier = identifier; TherapyPlaceName = therapyPlace.Name; AppointmentViewModels = new ObservableCollection <IAppointmentViewModel>(); viewModelCommunication.RegisterViewModelAtCollection <ITherapyPlaceRowViewModel, TherapyPlaceRowIdentifier>( Constants.ViewModelCollections.TherapyPlaceRowViewModelCollection, this ); appointmentModificationsVariable.StateChanged += OnAppointmentModificationsChanged; OnAppointmentModificationsChanged(appointmentModificationsVariable.Value); TimeSlotBegin = timeSlotBegin; TimeSlotEnd = timeSlotEnd; AdornerControl = adornerControl; GridWidth = initialGridWidth; therapyPlaceTypeRepository.RequestTherapyPlaceTypes( placeType => { Application.Current.Dispatcher.Invoke(() => { PlaceTypeIcon = GetIconForTherapyPlaceType(placeType.IconType); }); }, therapyPlace.TypeId, errorCallback ); }
public TherapyPlaceRowViewModelBuilder(IViewModelCommunication viewModelCommunication, IClientMedicalPracticeRepository medicalPracticeRepository, IClientTherapyPlaceTypeRepository therapyPlaceTypeRepository, AdornerControl adornerControl, ISharedStateReadOnly <AppointmentModifications> appointmentModificationsVariable, ISharedStateReadOnly <Size> appointmentGridSizeVariable) { this.viewModelCommunication = viewModelCommunication; this.medicalPracticeRepository = medicalPracticeRepository; this.therapyPlaceTypeRepository = therapyPlaceTypeRepository; this.adornerControl = adornerControl; this.appointmentModificationsVariable = appointmentModificationsVariable; this.appointmentGridSizeVariable = appointmentGridSizeVariable; }
public AppointmentViewModelBuilder(IViewModelCommunication viewModelCommunication, IClientLabelRepository labelRepository, ICommandService commandService, ISharedState <ViewModels.AppointmentView.Helper.AppointmentModifications> appointmentModificationsVariable, ISharedState <Date> selectedDateVariable, AdornerControl adornerControl, IAppointmentModificationsBuilder appointmentModificationsBuilder) { this.viewModelCommunication = viewModelCommunication; this.labelRepository = labelRepository; this.commandService = commandService; this.appointmentModificationsVariable = appointmentModificationsVariable; this.selectedDateVariable = selectedDateVariable; this.adornerControl = adornerControl; this.appointmentModificationsBuilder = appointmentModificationsBuilder; }
public MainViewModelBuilder(IClientMedicalPracticeRepository medicalPracticeRepository, IClientReadModelRepository readModelRepository, IClientPatientRepository patientRepository, IClientTherapyPlaceTypeRepository therapyPlaceTypeRepository, IClientLabelRepository labelRepository, ICommandService commandService, ILocalSettingsRepository localSettingsRepository, IViewModelCommunication viewModelCommunication, ISession session, AdornerControl adornerControl) { this.medicalPracticeRepository = medicalPracticeRepository; this.readModelRepository = readModelRepository; this.patientRepository = patientRepository; this.therapyPlaceTypeRepository = therapyPlaceTypeRepository; this.labelRepository = labelRepository; this.commandService = commandService; this.localSettingsRepository = localSettingsRepository; this.viewModelCommunication = viewModelCommunication; this.session = session; this.adornerControl = adornerControl; }
private void OnDragOver(object sender, DragEventArgs dragEventArgs) { if (dragEventArgs.Data.GetDataPresent(typeof(Appointment))) { if (Appointments != null && AdornerControl != null) { if (slots == null) { ComputeSlots(currentDraggedAppointment.Id); } AdornerControl.NewMousePositionForAdorner(dragEventArgs.GetPosition(AdornerControl.ReferenceElement)); var mousePositionTime = GetTimeForPosition(dragEventArgs.GetPosition(AssociatedObject).X); var currentPointedSlot = GetSlot(mousePositionTime); if (currentPointedSlot != null) { var slotLength = new Duration(currentPointedSlot.Begin, currentPointedSlot.End); var appointmentLength = new Duration(AppointmentModifications.BeginTime, AppointmentModifications.EndTime); if (slotLength >= appointmentLength) { AdornerControl.ShowAdornerLikeDropIsPossible(); dropIsPossible = true; return; } } AdornerControl.ShowAdornerLikeDropIsNotPossible(); dropIsPossible = false; } } }
public AppointmentViewModel(Appointment appointment, ICommandService commandService, IViewModelCommunication viewModelCommunication, TherapyPlaceRowIdentifier initialLocalisation, ISharedState <AppointmentModifications> appointmentModificationsVariable, ISharedState <Date> selectedDateVariable, IAppointmentModificationsBuilder appointmentModificationsBuilder, IWindowBuilder <EditDescription> editDescriptionWindowBuilder, AdornerControl adornerControl, Action <string> errorCallback) { this.appointment = appointment; this.initialLocalisation = initialLocalisation; this.appointmentModificationsVariable = appointmentModificationsVariable; this.selectedDateVariable = selectedDateVariable; ViewModelCommunication = viewModelCommunication; AdornerControl = adornerControl; viewModelCommunication.RegisterViewModelAtCollection <IAppointmentViewModel, Guid>( Constants.ViewModelCollections.AppointmentViewModelCollection, this ); SwitchToEditMode = new ParameterrizedCommand <bool>( isInitalAdjusting => { if (appointmentModificationsVariable.Value == null) { CurrentAppointmentModifications = appointmentModificationsBuilder.Build(appointment, initialLocalisation.PlaceAndDate.MedicalPracticeId, isInitalAdjusting, errorCallback); CurrentAppointmentModifications.PropertyChanged += OnAppointmentModificationsPropertyChanged; appointmentModificationsVariable.Value = CurrentAppointmentModifications; OperatingMode = OperatingMode.Edit; appointmentModificationsVariable.StateChanged += OnCurrentModifiedAppointmentChanged; } } ); DeleteAppointment = new Command( async() => { var dialog = new UserDialogBox("", "Wollen Sie den Termin wirklich löschen?", MessageBoxButton.OKCancel); var result = await dialog.ShowMahAppsDialog(); if (result == MessageDialogResult.Affirmative) { if (appointmentModificationsVariable.Value.IsInitialAdjustment) { viewModelCommunication.SendTo( // Constants.ViewModelCollections.AppointmentViewModelCollection, // do nothing but appointmentModificationsVariable.Value.OriginalAppointment.Id, // deleting the temporarly new Dispose() // created Appointment ); // } else { commandService.TryDeleteAppointment( operationSuccessful => { Application.Current.Dispatcher.Invoke(() => { if (!operationSuccessful) { Process(new RestoreOriginalValues()); viewModelCommunication.Send(new ShowNotification("löschen des Termins fehlgeschlagen; bearbeitung wurde zurückgesetzt", 5)); } }); }, currentLocation.PlaceAndDate, appointment.Patient.Id, appointment.Id, appointment.Description, appointment.StartTime, appointment.EndTime, appointment.TherapyPlace.Id, appointment.Label.Id, ActionTag.RegularAction, errorCallback ); } appointmentModificationsVariable.Value = null; } } ); EditDescription = new Command( () => { viewModelCommunication.Send(new ShowDisabledOverlay()); var dialog = editDescriptionWindowBuilder.BuildWindow(); dialog.ShowDialog(); viewModelCommunication.Send(new HideDisabledOverlay()); } ); ConfirmChanges = new Command(() => viewModelCommunication.Send(new ConfirmChanges())); RejectChanges = new Command(() => viewModelCommunication.Send(new RejectChanges())); BeginTime = appointment.StartTime; EndTime = appointment.EndTime; Description = appointment.Description; LabelColor = appointment.Label.Color; ShowDisabledOverlay = false; SetNewLocation(initialLocalisation, true); }
private void OnDragLeave(object sender, DragEventArgs dragEventArgs) { AdornerControl.ShowAdornerLikeDropIsNotPossible(); }