private void comboBoxConstraints_SelectedIndexChanged(object sender, EventArgs e)
        {
            labelInformation.Text = "";
            String selectedText = comboBoxConstraints.Text;

            this.CSPConstraintDataGridView1.clearRows();
            if (comboBoxConstraints.SelectedIndex != -1)
            {
                CSPConstraint selectedConstraint = controller.getConstraints()[comboBoxConstraints.SelectedIndex];
                labelInformation.Text = selectedConstraint.getConstraintInformationSummary();

                CSPConstraintDataGridView1.resetTypedExpressions();

                for (int i = 0; i < selectedConstraint.Signature.Count; i++)
                {
                    this.CSPConstraintDataGridView1.addRow("", selectedConstraint.Signature[i] + " // " + selectedConstraint.SignatureInformation[i]);
                }


                if (selectedConstraint.UserDefined)
                {
                    this.buttonDeleteConstraint.Enabled          = true;
                    this.buttonEditUserDefinedConstraint.Enabled = true;
                }
                else
                {
                    this.buttonDeleteConstraint.Enabled          = false;
                    this.buttonEditUserDefinedConstraint.Enabled = false;
                }
            }
        }
        private void listBoxConstraints_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listBoxConstraints.SelectedIndex != -1)
            {
                if (constraintInstance.createdEntries.Count == listBoxConstraints.Items.Count)
                {
                    CSPInstanceEntry currentEntry = constraintInstance.createdEntries[listBoxConstraints.SelectedIndex];
                    int constraintIndex           = 0;
                    foreach (CSPConstraint constraint in controller.getConstraints())
                    {
                        if (constraint.Name == currentEntry.constraintName)
                        {
                            break;
                        }
                        constraintIndex++;
                    }

                    if (comboBoxConstraints.Items.Count > constraintIndex)
                    {
                        this.comboBoxConstraints.SelectedIndex = constraintIndex;
                        int i = 0;
                        CSPConstraintDataGridView1.resetTypedExpressions();
                        foreach (Expression currentExpression in currentEntry.typedInExpressions)
                        {
                            CSPConstraintDataGridView1.addTypedExpression(currentExpression);
                            CSPConstraintDataGridView1.setCellValue(currentExpression.ToString(), i);
                            i++;
                        }
                    }
                }
            }
        }
        private void buttonModify_Click(object sender, EventArgs e)
        {
            if (listBoxConstraints.SelectedIndex != -1)
            {
                int selectedIndex = listBoxConstraints.SelectedIndex;


                CSPInstanceEntry currentEntry = constraintInstance.createdEntries[selectedIndex];

                currentEntry.constraintName = controller.getConstraints()[comboBoxConstraints.SelectedIndex].Name;
                currentEntry.typedInExpressions.Clear();
                foreach (Expression typedExpression in CSPConstraintDataGridView1.getTypedExpressions())
                {
                    currentEntry.typedInExpressions.Add(typedExpression);
                }

                if (constraintInstance.createdEntries.Count <= selectedIndex)
                {
                    constraintInstance.createdEntries.Insert(selectedIndex, currentEntry);
                }

                constraintInstance.createdEntries[selectedIndex] = currentEntry;

                listBoxConstraints.Items.RemoveAt(selectedIndex);
                listBoxConstraints.Items.Insert(selectedIndex, computeConstraintString(currentEntry));
                listBoxConstraints.SelectedIndex = selectedIndex;
            }
        }
        private void buttonAdd_Click(object sender, EventArgs e)
        {
            if (!this.CSPConstraintDataGridView1.getTypedInValues().Contains(""))
            {
                CSPInstanceEntry currentEntry = new CSPInstanceEntry(repository);
                foreach (Expression expr in CSPConstraintDataGridView1.getTypedExpressions())
                {
                    currentEntry.typedInExpressions.Add(expr);
                }

                currentEntry.constraintName = controller.getConstraints()[comboBoxConstraints.SelectedIndex].Name;
                constraintInstance.createdEntries.Add(currentEntry);

                this.listBoxConstraints.Items.Add(computeConstraintString(currentEntry));
                listBoxConstraints.SelectedIndex = listBoxConstraints.Items.Count - 1;
            }
        }