public override void MouseLeftButtonUp(Point point) { if (selectedAtLeastOne) { return; } if (Figure != null) { ObservableFigure tmp = Figure as ObservableFigure; // aby moc wywolac np. ObservableFigure.Attach() // po puszczeniu myszki sprawdzamy jakie figury są zaznaczone // pobranie listy figur z MainWindow List <Figure> figures = ((MainWindow)Application.Current.MainWindow).GetFigureList(); // przechodzimy po wszystkich figurach foreach (Figure figure in figures) { if (tmp.Contains(figure)) // jezeli obserwowany obejmuje dana figure { tmp.Attach(figure); // dodajemy dana figure do listy obserwatorow if (selectedAtLeastOne == false) { selectedAtLeastOne = true; } } } } }
public override void MouseLeftButtonDown(Point point) { if (Figure != null) // jesli nie mamy zadnej figury to wiadomo, ze musimy dodac nowa { // jezeli myszka jest nad obserwowanym to chcemy przesuwac if (Figure.adaptedPath.IsMouseOver) { ToMove = true; widthShift = 0; lengthShift = 0; return; } } // w przeciwnym wypadku tworzymy nowego obserwowanego if (selectedAtLeastOne == true) //Odpinamy wszystkich { ObservableFigure tmp = Figure as ObservableFigure; tmp.DetachAll(); selectedAtLeastOne = false; } Figure = new ObservableFigure(new Path()); StartPoint = point; ((MainWindow)Application.Current.MainWindow).AddObservable(Figure); ToMove = false; }
private void RestoreCanvas(int index) { if (SelectedFigure != null) { SelectedFigure = null; } if (ObservableFigure != null) { ObservableFigure = null; } string oldCanvasFile = this.originator.RestoreFromMemento(this.caretaker.GetMemento(index)); //Odczyt z listy Memento string CanvasString; try { using (var sr = new StreamReader(this.canvasPath + oldCanvasFile)) { CanvasString = sr.ReadToEnd(); } Canvas oldCanvas = XamlReader.Parse(CanvasString) as Canvas; MainGrid.Children.Remove(canvas); canvas = null; canvas = oldCanvas; SetCanvas(); FigureList = RestoreFigureList(canvas.Children); } catch (IOException e) { MessageBox.Show("Nie można odczytać pliku: " + e.Message); } }
private void ResetObservableFigure() { if (ObservableFigure != null) { ObservableFigure.DetachAll(); canvas.Children.Remove(ObservableFigure.adaptedPath); ObservableFigure = null; } }
public void AddObservable(Figure figure) { // musimy usunac starego obserwowanego z canvasa if (ObservableFigure != null) { canvas.Children.Remove(ObservableFigure.adaptedPath); } ObservableFigure = figure as ObservableFigure; // dodanie go do canvasa, zeby byl widoczny canvas.Children.Add(figure.adaptedPath); }