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 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; }
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] }); } }
/// <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); }