private void New_Executed(object sender, ExecutedRoutedEventArgs e) { StateMachine sm = DataContext as StateMachine; if (e.Parameter is StateMachine) { StringQueryItem sqi = new StringQueryItem("Enter new state's name", "New State"); StringQuery sq = new StringQuery(); sq.DataContext = sqi; bool? result = sq.ShowDialog(); if (result.Value) { State state = new State(sqi.Text); sm.addState(state); } } }
public Transition(State from, State to) { m_from = from; m_to = to; }
public void removeState(State state) { List<Transition> toDelete = new List<Transition>(); foreach (Transition t in state.Transitions) { toDelete.Add(t); //removeTransition(t); } foreach (Transition t in toDelete) { removeTransition(t); } // remove all Transitions to this state toDelete = new List<Transition>(); foreach (Transition t in m_transitions) { if (t.To == state) { toDelete.Add(t); //removeTransition(t); } } foreach (Transition t in toDelete) { removeTransition(t); } m_states.Remove(state); }
public void addState(State state) { m_states.Add(state); }
/// <summary> /// Consutrctor to use! /// </summary> /// <param name="name">Name of the statemachine</param> /// <param name="transitions">A list of transitions betweenn the states</param> /// <param name="states">The states of the statemachine</param> public StateMachine(String name, Parameter transitions, ObservableCollection<Element> states) { m_name = name; m_transitionsParameter = transitions; foreach (Element element in states) { if (element.Semantic == Element.ElementSemantic.STATE) { Parameter id = element.getParameter("id"); if (id != null) { State newState = new State(id.Values); addState(newState); } } } }
private void selectState(StateMachine sm, State state) { if (sm.SelectedState != null) sm.SelectedState.Selected = false; sm.SelectedState = state; if (sm.SelectedState != null) sm.SelectedState.Selected = true; }
private void deleteState(StateMachine sm, State state) { // copy transitions ObservableCollection<Transition> transitions = new ObservableCollection<Transition>(state.Transitions); // delete transitions from this state foreach (Transition t in transitions) { sm.Transitions.Remove(t); state.Transitions.Remove(t); } // delete transitions to this state foreach (State s in sm.States) { // copy transitions ObservableCollection<Transition> transitions2 = new ObservableCollection<Transition>(s.Transitions); foreach (Transition t2 in transitions2) { if (t2.To == state) { s.Transitions.Remove(t2); sm.Transitions.Remove(t2); } } } // delete state sm.States.Remove(state); }