Exemple #1
0
        private void saveButton_Click(object sender, RoutedEventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();

            Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\SMO");
            saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\SMO";
            saveFileDialog.Filter           = "File (*.dat)|*.dat";
            if (saveFileDialog.ShowDialog() != true)
            {
                return;
            }
            int pointCount = 1;

            foreach (var elem in ElementsList)
            {
                JObject jObject = new JObject();
                if (elem.GetType() == typeof(Source))
                {
                    Source source = (Source)elem;
                    jObject["DelayType"]            = source.DelayType.ToString();
                    jObject["ElementDistributions"] = JsonConvert.SerializeObject(source.ElementDistributions);
                    jObject["TimeDistributions"]    = JsonConvert.SerializeObject(source.TimeDistributions);
                }
                else if (elem.GetType() == typeof(Queue))
                {
                    Queue queue = (Queue)elem;
                    jObject["DelayType"]            = queue.DelayType.ToString();
                    jObject["Distribution"]         = JsonConvert.SerializeObject(queue.TimeLimitDistributions);
                    jObject["Capacity"]             = queue.Capacity;
                    jObject["TimeLimitThrowOut"]    = queue.TimeLimitThrowOut;
                    jObject["ThrowOutWhenOverflow"] = queue.ThrowOutWhenOverflow;
                }
                else if (elem.GetType() == typeof(Delay))
                {
                    Delay delay = (Delay)elem;
                    jObject["DelayType"]          = delay.DelayType.ToString();
                    jObject["DelayDistributions"] = JsonConvert.SerializeObject(delay.DelayDistributions);
                    jObject["Capacity"]           = delay.Capacity;
                }
                else if (elem.GetType() == typeof(SelectOutput))
                {
                    SelectOutput selectOutput = (SelectOutput)elem;
                    jObject["Chance"] = selectOutput.Chance;
                }
                else
                {
                    jObject["Name"] = "Sink";
                }
                ((Image)elem.Image).Tag = jObject.ToString();
            }
            foreach (var connector in MainWindow.Connectors)
            {
                JObject jObject = new JObject();
                jObject["StartElement"]     = ((Image)connector.StartElement.Image).Name;
                jObject["StartPointNumber"] = connector.StartElement.GetPointNumber((Image)connector.StartPoint);
                jObject["EndElement"]       = ((Image)connector.EndElement.Image).Name;
                jObject["EndPointNumber"]   = connector.EndElement.GetPointNumber((Image)connector.EndPoint);
                ((Line)connector.Image).Tag = jObject.ToString();
            }
            string savedCanvas = XamlWriter.Save(canvas);

            File.WriteAllText(saveFileDialog.FileName, savedCanvas);
        }
Exemple #2
0
        public IElement CreateElement(string name, UIElement image)
        {
            canvas.Children.Add(image);
            double   mouseX = Canvas.GetLeft(image);
            double   mouseY = Canvas.GetTop(image);
            InPoint  inPoint;
            OutPoint outPoint;

            switch (name)
            {
            case "Source":
                outPoint = CreateOutPoint();
                outPoint.Image.MouseUp += OutPoint_MouseUp;
                Source source = new Source(image, outPoint);
                ((Image)source.Image).Name = "Source" + _sourceCount;
                _sourceCount++;
                source.Move(mouseX, mouseY);
                return(source);

            case "Sink":
                inPoint = CreateInPoint();
                inPoint.Image.MouseUp += InPoint_MouseUp;
                Sink sink = new Sink(image, inPoint);
                ((Image)sink.Image).Name = "Sink" + _sinkCount;
                _sinkCount++;
                sink.Move(mouseX, mouseY);
                return(sink);

            case "SelectOutput":
                inPoint = CreateInPoint();
                inPoint.Image.MouseUp += InPoint_MouseUp;
                outPoint = CreateOutPoint();
                outPoint.Image.MouseUp += OutPoint_MouseUp;
                OutPoint outPoint2 = CreateOutPoint();
                outPoint2.Image.MouseUp += OutPoint_MouseUp;
                SelectOutput selectOutput = new SelectOutput(image, inPoint, outPoint, outPoint2);
                ((Image)selectOutput.Image).Name = "SelectOutput" + _selectOutputCount;
                _selectOutputCount++;
                selectOutput.Move(mouseX, mouseY);
                return(selectOutput);

            case "Queue":
                inPoint = CreateInPoint();
                inPoint.Image.MouseUp += InPoint_MouseUp;
                outPoint = CreateOutPoint();
                outPoint.Image.MouseUp += OutPoint_MouseUp;
                OutPoint throwPoint1 = CreateOutPoint();
                throwPoint1.Image.MouseUp += OutPoint_MouseUp;
                OutPoint throwPoint2 = CreateOutPoint();
                throwPoint2.Image.MouseUp += OutPoint_MouseUp;
                Queue queue = new Queue(image, inPoint, outPoint, throwPoint1, throwPoint2);
                ((Image)queue.Image).Name = "Queue" + _queueCount;
                _queueCount++;
                queue.Move(mouseX, mouseY);
                return(queue);

            case "Delay":
                inPoint = CreateInPoint();
                inPoint.Image.MouseUp += InPoint_MouseUp;
                outPoint = CreateOutPoint();
                outPoint.Image.MouseUp += OutPoint_MouseUp;
                Delay delay = new Delay(image, inPoint, outPoint);
                ((Image)delay.Image).Name = "Delay" + _delayCount;
                _delayCount++;
                delay.Move(mouseX, mouseY);
                return(delay);
            }
            return(null);
        }
 public SelectOutputParametersWindow(SelectOutput selectOutput)
 {
     InitializeComponent();
     _selectOutput = selectOutput;
     Chance.Text   = _selectOutput.Chance.ToString();
 }