private void MoveClauseUp(ProposalClause clause)
        {
            // gets the clause Idx
            ObservableCollection<ProposalClause> orderedClauses = Clauses as ObservableCollection<ProposalClause>;
            int clauseIdx = orderedClauses.IndexOf(clause);
            if (clauseIdx == 0)
                return;

            // get next clause, and moves up its order
            ProposalClause previousClause = orderedClauses.ElementAt(clauseIdx - 1);
            previousClause.ClauseOrder++;
            clause.ClauseOrder--;

            // change its order at the list
            orderedClauses.Remove(clause);
            orderedClauses.Insert(clauseIdx - 1, clause);
        }
 private void DeleteClause(ProposalClause clause)
 {
     Clauses.Remove(clause);
     Proposal.Clauses.Remove(clause);
 }
        private void MoveClauseDown(ProposalClause clause)
        {
            // gets the clause Idx
            ObservableCollection<ProposalClause> orderedClauses = Clauses as ObservableCollection<ProposalClause>;
            int clauseIdx = orderedClauses.IndexOf(clause);
            if (clauseIdx + 1 == Clauses.Count)
                return;

            // get next clause, and moves up its order
            ProposalClause nextClause = orderedClauses.ElementAt(clauseIdx + 1);
            nextClause.ClauseOrder--;
            clause.ClauseOrder++;

            // change its order at the list
            orderedClauses.Remove(clause);
            orderedClauses.Insert(clauseIdx + 1, clause);
        }
 private void AddClause()
 {
     ProposalClause clause = new ProposalClause();
     clause.ProposalUId = Proposal.ProposalUId;
     clause.ClauseName = Properties.Resources.New_clause;
     if (Clauses.Count == 0)
         clause.ClauseOrder = 1;
     else
         clause.ClauseOrder = Clauses.Max(c => c.ClauseOrder) + 1;
     Clauses.Add(clause);
     Proposal.Clauses.Add(clause);
 }