//-------------------------------------------------------------------------------------------------- // Constructor //-------------------------------------------------------------------------------------------------- #region Constructor /// <summary> /// Basic constructor, assigns visualization methods to dictionaries for event and activity types /// </summary> /// <param name="drawingSystem">Drawing system used for visualization</param> /// <param name="position">Position of control unit visualization on drawing system</param> /// <param name="size">Size of control unit visualization on drawing system</param> /// <param name="personSize">Size in which persons are visualized</param> public WPFVisualizationEngineHealthCareDepartmentControlUnit(DrawingOnCoordinateSystem drawingSystem, Point position, Size size, double personSize) : base(drawingSystem) { _personSize = personSize; EntityVisualizationObjectCreatingMethodsPerType.Add(typeof(EntityPatient), CreatePatient); EntityVisualizationObjectCreatingMethodsPerType.Add(typeof(EntityDoctor), CreateDoctor); EntityVisualizationObjectCreatingMethodsPerType.Add(typeof(EntityNurse), CreateNurse); EntityVisualizationObjectCreatingMethodsPerType.Add(typeof(EntityTreatmentFacility), CreateTreatmentFacility); EntityVisualizationObjectCreatingMethodsPerType.Add(typeof(EntityMultiplePatientTreatmentFacility), CreateMultiplePatientTreatmentFacility); EntityVisualizationObjectCreatingMethodsPerType.Add(typeof(EntityWaitingArea), CreateWaitingRoom); HoldingEntitiesVisualizationMethods.Add(typeof(EntityWaitingArea), DrawHoldingEntity); HoldingEntitiesVisualizationMethods.Add(typeof(EntityMultiplePatientTreatmentFacility), DrawHoldingEntity); ActivityEndEventVisualizationMethods.Add(typeof(ActivityHealthCareAction <T>), HealthCareActionEnd); ActivityStartEventVisualizationMethods.Add(typeof(ActivityHealthCareAction <T>), HealthCareActionStart); ActivityEndEventVisualizationMethods.Add(typeof(ActivityWaitInFacility), WaitInFacilityEnd); ActivityStartEventVisualizationMethods.Add(typeof(ActivityWaitInFacility), WaitInFacilityStart); EventStandaloneDrawingMethods.Add(typeof(EventEmergencyPatientLeave), EventPatientLeave); EventStandaloneDrawingMethods.Add(typeof(EventOutpatientPatientLeave), EventPatientLeave); EventStandaloneDrawingMethods.Add(typeof(EventStaffLeave), EventLeavingStaff); _position = position; _size = size; } // end of BaseWPFControlUnitVisualizationEngine
//-------------------------------------------------------------------------------------------------- // Constructor //-------------------------------------------------------------------------------------------------- #region Constructor /// <summary> /// Basic constructor, initializes a dictionary of BaseWPFControlUnitVisualizationEngine per control unit /// </summary> /// <param name="simulationModel">The simulation model to visualize</param> /// <param name="drawingSystem">The drawing system the model is visualized in</param> public BaseWPFModelVisualization(SimulationModel simulationModel, DrawingOnCoordinateSystem drawingSystem) { _simulationModel = simulationModel; _visualizationPerControlUnit = new Dictionary <ControlUnit, BaseWPFControlUnitVisualizationEngine>(); _drawingSystem = drawingSystem; } // end of BaseWPFModelVisualization
//-------------------------------------------------------------------------------------------------- // Constructor //-------------------------------------------------------------------------------------------------- #region Constructor /// <summary> /// Basic constructor, sets entity drawing object methods and event and activity visualization methods /// </summary> /// <param name="drawingSystem"></param> public QueueControlVisualizationEngine(DrawingOnCoordinateSystem drawingSystem) : base(drawingSystem) { EntityVisualizationObjectCreatingMethodsPerType.Add(typeof(EntityClient), CreateClient); EntityVisualizationObjectCreatingMethodsPerType.Add(typeof(EntityQueue), CreateQueue); EntityVisualizationObjectCreatingMethodsPerType.Add(typeof(EntityServer), CreateServer); ActivityEndEventVisualizationMethods.Add(typeof(ActivityGetServed), GetServedEnd); ActivityStartEventVisualizationMethods.Add(typeof(ActivityGetServed), GetServedStart); HoldingEntitiesVisualizationMethods.Add(typeof(EntityQueue), DrawHoldingEntity); } // end of BaseWPFControlUnitVisualizationEngine
//-------------------------------------------------------------------------------------------------- // Constructor //-------------------------------------------------------------------------------------------------- #region Constructor /// <summary> /// Basic constructors, dictionaries for handling methods per type are initialized /// </summary> /// <param name="drawingSystem">The drawing system used for visualization</param> public BaseWPFControlUnitVisualizationEngine(DrawingOnCoordinateSystem drawingSystem) { _drawingSystem = drawingSystem; _drawingObjectPerEntity = new Dictionary <Entity, DrawingObject>(); _entityVisualizationObjectCreatingMethodPerType = new Dictionary <Type, CreateEntityDrawingObject>(); _activityStartEventVisualizationMethods = new Dictionary <Type, ActivityVisualizationMethod>(); _activityEndEventVisualizationMethods = new Dictionary <Type, ActivityVisualizationMethod>(); _activityIntermediateVisualizationMethods = new Dictionary <Type, ActivityVisualizationMethod>(); _holdingEntitiesVisualizationMethods = new Dictionary <Type, HoldingEntitiesVisualizationMethod>(); _eventStandaloneDrawingMehtods = new Dictionary <Type, EventVisualizationMethod>(); } // end of BaseWPFControlUnitVisualizationEngine
//-------------------------------------------------------------------------------------------------- // Constructor //-------------------------------------------------------------------------------------------------- #region Constructor /// <summary> /// Basic constructor, assigns visualization methods to dictionaries for event and activity types /// </summary> /// <param name="drawingSystem">Drawing system used for visualization</param> /// <param name="position">Position of control unit visualization on drawing system</param> /// <param name="size">Size of control unit visualization on drawing system</param> /// <param name="personSize">Size in which persons are visualized</param> public WPFVisualizationHealthCareOrganizationalUnit(DrawingOnCoordinateSystem drawingSystem, double personSize, WPFVisualizationEngineHealthCareDepartmentControlUnit <T> parentDepartmentVisualization) : base(drawingSystem) { _personSize = personSize; EntityVisualizationObjectCreatingMethodsPerType.Add(typeof(EntityPatient), CreatePatient); EntityVisualizationObjectCreatingMethodsPerType.Add(typeof(EntityDoctor), CreateDoctor); EntityVisualizationObjectCreatingMethodsPerType.Add(typeof(EntityNurse), CreateNurse); HoldingEntitiesVisualizationMethods.Add(typeof(EntityMultiplePatientTreatmentFacility), DrawHoldingEntity); ActivityEndEventVisualizationMethods.Add(typeof(ActivityHealthCareAction <T>), HealthCareActionEnd); ActivityStartEventVisualizationMethods.Add(typeof(ActivityHealthCareAction <T>), HealthCareActionStart); ActivityEndEventVisualizationMethods.Add(typeof(ActivityWaitInFacility), WaitInFacilityEnd); ActivityStartEventVisualizationMethods.Add(typeof(ActivityWaitInFacility), WaitInFacilityStart); EventStandaloneDrawingMethods.Add(typeof(EventStaffLeave), EventLeavingStaff); _parentDepartmentVisaulization = parentDepartmentVisualization; } // end of BaseWPFControlUnitVisualizationEngine
//-------------------------------------------------------------------------------------------------- // Constructor //-------------------------------------------------------------------------------------------------- #region MainWindow public MainWindow() { Loaded += WainWindowOnLoad; InitializeComponent(); #region InitalizeStartEndDate DatePickerStartDate.SelectedDate = DateTime.Now; DatePickerEndDate.SelectedDate = DateTime.Now.AddMonths(1); #endregion #region InitiaizeDrawingSystem _drawingSystem = new DrawingOnCoordinateSystem(0, 300); DrawingSystem.VerticalAlignment = VerticalAlignment.Stretch; DrawingSystem.HorizontalAlignment = HorizontalAlignment.Stretch; DrawingSystem.SetValue(Grid.RowProperty, 1); DrawingSystem.SetValue(Grid.ColumnProperty, 1); DrawingSystem.SetValue(Grid.ColumnSpanProperty, 2); MainGrid.Children.Add(DrawingSystem); #endregion #region IntiliazeBackgroundWorker _backGroundWorkerNonVisualization = new BackgroundWorker(); _backGroundWorkerNonVisualization.WorkerReportsProgress = true; _backGroundWorkerNonVisualization.WorkerSupportsCancellation = true; _backGroundWorkerNonVisualization.DoWork += new System.ComponentModel.DoWorkEventHandler(BackGroundWorkerNonVisualizationDoWork); _backGroundWorkerNonVisualization.ProgressChanged += new ProgressChangedEventHandler(BackGroundWorkerNonVisualizationProgressChanged); _backGroundWorkerNonVisualization.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BackGroundWorkerNonVisualizationRunWorkerCompleted); #endregion ComboBoxTimeBase.SelectedIndex = 0; _simulationRunning = false; _simulationInitialized = false; _simulationTimer = new DispatcherTimer(); SimulationTimer.Tick += PlaySimulationTick; TextBoxSimSpeed.Text = SimulationSpeed.ToString(); CreateModel(); #region InitializeClock _simulationDisplayClock = new DrawAnalogClockWithDate(Colors.Black, 0, 0); SimulationDisplayClock.VerticalAlignment = VerticalAlignment.Stretch; SimulationDisplayClock.HorizontalAlignment = HorizontalAlignment.Stretch; SimulationDisplayClock.SetValue(Grid.RowProperty, 0); SimulationDisplayClock.SetValue(Grid.ColumnProperty, 2); MainGrid.Children.Add(SimulationDisplayClock); Loaded += delegate { SimulationDisplayClock.Initialize(SimulationModel.StartTime); }; #endregion } // end of MainWindow
//-------------------------------------------------------------------------------------------------- // Constructor //-------------------------------------------------------------------------------------------------- #region Constructor /// <summary> /// Basic constructor, just calls base constructor /// </summary> /// <param name="drawingSystem">Drawing system used for visualization</param> /// <param name="position">Position of control unit visualization on drawing system</param> /// <param name="size">Size of control unit visualization on drawing system</param> /// <param name="personSize">Size in which persons are visualized</param> public WPFVisualizationEngineOutpatientDepartment(DrawingOnCoordinateSystem drawingSystem, Point position, Size size, double personSize) : base(drawingSystem, position, size, personSize) { } // end of BaseWPFControlUnitVisualizationEngine