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;
                }
            }
        }
Example #2
0
        private void loadCSPConstraints(MocaNode actNode)
        {
            MocaNode constraintsNode = actNode.getChildNodeWithName(ConstraintsChildNodeName);

            if (constraintsNode != null)
            {
                Constraints.Clear();
                foreach (MocaNode constraintNode in actNode.getChildNodeWithName(ConstraintsChildNodeName).Children)
                {
                    if (constraintNode.Name == DeclarationsChildNodeName)
                    {
                        foreach (MocaNode constraintNodeReal in constraintNode.Children)
                        {
                            CSPConstraint newConstr = new CSPConstraint();
                            newConstr.deserializeFromMocaTree(constraintNodeReal);
                            this.Constraints.Add(newConstr);
                        }
                    }
                    else if (constraintNode.Name == ConstraintInstancesChildNodeName)
                    {
                    }
                    else
                    {
                        CSPConstraint newConstr = new CSPConstraint();
                        newConstr.deserializeFromMocaTree(constraintNode);
                        this.Constraints.Add(newConstr);
                    }
                }
            }
            CSPUtil.addDefaultConstraints(Constraints);
            this.Constraints.Sort(new CSPConstraintComparer());
            CSPUtil.recomputeConstraintIndizes(Constraints);
        }
        private void moveConstraintPosition(Boolean up)
        {
            int           constraintIndex    = comboBoxConstraints.SelectedIndex;
            int           constraintIndexNew = -1;
            CSPConstraint constraintToMove   = controller.getConstraints()[constraintIndex];


            if (!up)
            {
                if (constraintIndex < controller.getConstraints().Count)
                {
                    constraintIndexNew = constraintIndex + 1;
                }
            }
            else
            {
                if (constraintIndex > 0)
                {
                    constraintIndexNew = constraintIndex - 1;
                }
            }
            if (constraintIndexNew > -1 && constraintIndexNew < controller.getConstraints().Count)
            {
                controller.getConstraints().RemoveAt(constraintIndex);
                controller.getConstraints().Insert(constraintIndexNew, constraintToMove);
                controller.recomputeConstraintIndizes();
                setAppearance();
                comboBoxConstraints.SelectedIndex = constraintIndexNew;
            }
        }
        public NewCSPDefinitionDialog(CSPConstraint existingConstraint)
        {
            InitializeComponent();
            this.CreatedCSPConstraint = existingConstraint;
            this.StartPosition        = FormStartPosition.CenterScreen;
            this.parameterDataGridView.initializeComponent("parameter");
            this.adornmentDataGridView.initializeComponent("adornment");
            this.modelgenAdornmentDataGridView.initializeComponent("adornment");

            initializeDialog(existingConstraint);
        }
        private void buttonEditUserDefinedConstraint_Click(object sender, EventArgs e)
        {
            int selectedIndex = comboBoxConstraints.SelectedIndex;

            CSPConstraint selectedConstraint = controller.getConstraints()[selectedIndex];

            NewCSPDefinitionDialog newConstraintDialog = new NewCSPDefinitionDialog(selectedConstraint);

            if (newConstraintDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                newConstraintDialog.computeNewCSPConstraint();
                controller.saveConstraintContainer();
            }
            setAppearance();
            comboBoxConstraints.SelectedIndex = selectedIndex;
        }
Example #6
0
        private void buttonImportCSP_Click(object sender, EventArgs e)
        {
            checkForFunctions();
            if (activateExportImportCSPButton)
            {
                String pathToWrite = Path.GetDirectoryName(repository.ConnectionString);

                OpenFileDialog dialog = new OpenFileDialog();
                dialog.AddExtension     = true;
                dialog.DefaultExt       = "txt";
                dialog.InitialDirectory = pathToWrite;
                dialog.Filter           = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
                dialog.FileName         = "csptemp.txt";

                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    TGG tggPackage = new TGG(repository, repository.GetTreeSelectedPackage());
                    tggPackage.loadTreeFromTaggedValue();

                    String   fileContent = File.ReadAllText(dialog.FileName);
                    MocaNode dummyParent = MocaTreeUtil.mocaNodeFromXmlString(fileContent);
                    foreach (MocaNode cspNode in dummyParent.Children)
                    {
                        CSPConstraint constraint = new CSPConstraint();
                        constraint.deserializeFromMocaTree(cspNode);
                        Boolean alreadyIn = false;
                        foreach (CSPConstraint existingCSP in tggPackage.Constraints)
                        {
                            if (existingCSP.Name == constraint.Name)
                            {
                                alreadyIn = true;
                                break;
                            }
                        }

                        if (!alreadyIn)
                        {
                            tggPackage.Constraints.Add(constraint);
                        }
                    }

                    tggPackage.saveTreeToEATaggedValue(false);
                }
            }
        }
        private void initializeDialog(CSPConstraint existingConstraint)
        {
            String[] splitted = existingConstraint.getConstraintInformationSummary().Split("\r\n".ToCharArray());
            this.textBoxInformation.Text = splitted[splitted.Length - 1];

            this.textBoxName.Text = existingConstraint.Name;

            foreach (String adornment in existingConstraint.adornments)
            {
                adornmentDataGridView.addValue(adornment);
            }

            foreach (String modelgenAd in existingConstraint.modelgenAdornments)
            {
                modelgenAdornmentDataGridView.addValue(modelgenAd);
            }


            for (int i = 0; i < existingConstraint.Signature.Count; i++)
            {
                parameterDataGridView.addValue(new String[] { existingConstraint.Signature[i], existingConstraint.SignatureInformation[i] });
            }
        }
Example #8
0
        /// <summary>
        /// default built-in constraints are defined here
        /// </summary>
        public static void addDefaultConstraints(List <CSPConstraint> constraints)
        {
            CSPConstraint concatConstraint = new CSPConstraint("concat", new String[] { "BBBB", "BBBF", "BBFB", "BFFB", "BFBB" }, new String[] { "EString", "EString", "EString", "EString" });

            concatConstraint.setConstraintInformation("Semantics: a separator b = c");
            concatConstraint.SignatureInformation.Add("separator");
            concatConstraint.SignatureInformation.Add("a");
            concatConstraint.SignatureInformation.Add("b");
            concatConstraint.SignatureInformation.Add("c");
            concatConstraint.modelgenAdornments.AddRange(new String[] { "BBBB", "BBBF", "BBFB", "BFFB", "BFBB", "BFFF", "BFBF", "BBFF" });


            CSPConstraint addPrefixConstraint = new CSPConstraint("addPrefix", new String[] { "BBB", "BBF", "BFB", "FBB" }, new String[] { "EString", "EString", "EString" });

            addPrefixConstraint.setConstraintInformation("Semantics: prefix a = b");
            addPrefixConstraint.SignatureInformation.Add("prefix");
            addPrefixConstraint.SignatureInformation.Add("a");
            addPrefixConstraint.SignatureInformation.Add("b");
            addPrefixConstraint.modelgenAdornments.AddRange(new String[] { "BBB", "BBF", "BFB", "FBB", "BFF", "FBF" });

            CSPConstraint addSuffixConstraint = new CSPConstraint("addSuffix", new String[] { "BBB", "BBF", "BFB", "FBB" }, new String[] { "EString", "EString", "EString" });

            addSuffixConstraint.setConstraintInformation("Semantics: a suffix = b");
            addSuffixConstraint.SignatureInformation.Add("a");
            addSuffixConstraint.SignatureInformation.Add("suffix");
            addSuffixConstraint.SignatureInformation.Add("b");
            addSuffixConstraint.modelgenAdornments.AddRange(new String[] { "BBB", "BBF", "BFB", "FBB", "BFF", "FFF", "FBF" });

            CSPConstraint multiplyConstraint = new CSPConstraint("multiply", new String[] { "BBB", "BBF", "BFB", "FBB" }, new String[] { "Number", "Number", "Number" });

            multiplyConstraint.setConstraintInformation("Semantics: a * b = c");
            multiplyConstraint.SignatureInformation.Add("a");
            multiplyConstraint.SignatureInformation.Add("b");
            multiplyConstraint.SignatureInformation.Add("c");
            multiplyConstraint.modelgenAdornments.AddRange(new String[] { "BBB", "BBF", "BFB", "FBB" });

            CSPConstraint divideConstraint = new CSPConstraint("divide", new String[] { "BBB", "BBF", "BFB", "FBB" }, new String[] { "Number", "Number", "Number" });

            divideConstraint.setConstraintInformation("Semantics: a / b = c");
            divideConstraint.SignatureInformation.Add("a");
            divideConstraint.SignatureInformation.Add("b");
            divideConstraint.SignatureInformation.Add("c");
            divideConstraint.modelgenAdornments.AddRange(new String[] { "BBB", "BBF", "BFB", "FBB" });

            CSPConstraint addConstraint = new CSPConstraint("add", new String[] { "BBB", "BBF", "BFB", "FBB" }, new String[] { "Number", "Number", "Number" });

            addConstraint.setConstraintInformation("Semantics: a + b = c");
            addConstraint.SignatureInformation.Add("a");
            addConstraint.SignatureInformation.Add("b");
            addConstraint.SignatureInformation.Add("c");
            addConstraint.modelgenAdornments.AddRange(new String[] { "BBB", "BBF", "BFB", "FBB", "FFB", "FBF", "BFF" });

            CSPConstraint subConstraint = new CSPConstraint("sub", new String[] { "BBB", "BBF", "BFB", "FBB" }, new String[] { "Number", "Number", "Number" });

            subConstraint.setConstraintInformation("Semantics: a - b = c");
            subConstraint.SignatureInformation.Add("a");
            subConstraint.SignatureInformation.Add("b");
            subConstraint.SignatureInformation.Add("c");
            subConstraint.modelgenAdornments.AddRange(new String[] { "BBB", "BBF", "BFB", "FBB", "FFB", "BFF", "FBF", "FFF" });

            CSPConstraint maxConstraint = new CSPConstraint("max", new String[] { "BBB", "BBF", "BFB", "FBB" }, new String[] { "Number", "Number", "Number" });

            maxConstraint.setConstraintInformation("Semantics: max(a,b) = c");
            maxConstraint.SignatureInformation.Add("a");
            maxConstraint.SignatureInformation.Add("b");
            maxConstraint.SignatureInformation.Add("c");
            maxConstraint.modelgenAdornments.AddRange(new String[] { "BBB", "BBF", "BFB", "FBB" });

            CSPConstraint stringToDoubleConstraint = new CSPConstraint("stringToDouble", new String[] { "BB", "BF", "FB" }, new String[] { "EString", "EDouble" });

            stringToDoubleConstraint.setConstraintInformation("Semantics: string = number.toString()");
            stringToDoubleConstraint.SignatureInformation.Add("string");
            stringToDoubleConstraint.SignatureInformation.Add("double");
            stringToDoubleConstraint.modelgenAdornments.AddRange(new String[] { "BB", "BF", "FB", "FF" });

            CSPConstraint stringToIntConstraint = new CSPConstraint("stringToInt", new String[] { "BB", "BF", "FB" }, new String[] { "EString", "EInt" });

            stringToIntConstraint.setConstraintInformation("Semantics: string = number.toString()");
            stringToIntConstraint.SignatureInformation.Add("string");
            stringToIntConstraint.SignatureInformation.Add("int");
            stringToIntConstraint.modelgenAdornments.AddRange(new String[] { "BB", "BF", "FB", "FF" });

            CSPConstraint smallerOrEqualConstraint = new CSPConstraint("smallerOrEqual", new String[] { "BB", "BF", "FB" }, new String[] { "Number", "Number" });

            smallerOrEqualConstraint.setConstraintInformation("Semantics: a <= b");
            smallerOrEqualConstraint.SignatureInformation.Add("a");
            smallerOrEqualConstraint.SignatureInformation.Add("b");
            smallerOrEqualConstraint.modelgenAdornments.AddRange(new String[] { "BB", "BF", "FB", "FF" });

            CSPConstraint eqConstraint = new CSPConstraint("eq", new String[] { "BB", "BF", "FB" }, new String[] { "", "" });

            eqConstraint.setConstraintInformation("Semantics: a = b");
            eqConstraint.SignatureInformation.Add("a");
            eqConstraint.SignatureInformation.Add("b");
            eqConstraint.modelgenAdornments.AddRange(new String[] { "BB", "BF", "FB", "FF" });

            CSPConstraint setDefaultNumberConstraint = new CSPConstraint("setDefaultNumber", new String[] { "BB", "FB" }, new String[] { "Number", "Number" });

            setDefaultNumberConstraint.setConstraintInformation("Semantics: set number = default only if number is free");
            setDefaultNumberConstraint.SignatureInformation.Add("number");
            setDefaultNumberConstraint.SignatureInformation.Add("default");
            setDefaultNumberConstraint.modelgenAdornments.AddRange(new String[] { "BB", "FB", "FF" });

            CSPConstraint setDefaultStringConstraint = new CSPConstraint("setDefaultString", new String[] { "BB", "FB" }, new String[] { "EString", "EString" });

            setDefaultStringConstraint.setConstraintInformation("Semantics: set string = default only if string is free");
            setDefaultStringConstraint.SignatureInformation.Add("string");
            setDefaultStringConstraint.SignatureInformation.Add("default");
            setDefaultStringConstraint.modelgenAdornments.AddRange(new String[] { "BB", "FB", "FF" });

            constraints.Add(eqConstraint);
            constraints.Add(addPrefixConstraint);
            constraints.Add(addSuffixConstraint);
            constraints.Add(concatConstraint);
            constraints.Add(setDefaultStringConstraint);
            constraints.Add(setDefaultNumberConstraint);
            constraints.Add(stringToDoubleConstraint);
            constraints.Add(stringToIntConstraint);
            constraints.Add(multiplyConstraint);
            constraints.Add(divideConstraint);
            constraints.Add(addConstraint);
            constraints.Add(subConstraint);
            constraints.Add(maxConstraint);
            constraints.Add(smallerOrEqualConstraint);

            CSPUtil.recomputeConstraintIndizes(constraints);
        }