public void The_Spec_Has_A_Reference_To_The_Component() { var implComponent = spec.GetImplementationFor(entitySet.GetEntity("User")); Assert.That(implComponent, Is.Not.Null, "Could not find the component"); Assert.That(implComponent.ParentEntity.Name, Is.EqualTo("User")); }
private bool Save() { if (Entity == null) return false; if (ComponentSpecification == null) { MessageBox.Show(this, "No component selected.", "Component missing", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } ArchAngel.Providers.EntityModel.Model.EntityLayer.Component component = ComponentSpecification.GetImplementationFor(Entity); if (component == null) { // Create a new mapping component = ComponentSpecification.CreateImplementedComponentFor(Entity, textBoxComponentName.Text); } component.Name = textBoxComponentName.Text; List<Column> columns = GetColumnsOfType(Entity, "xxx"); int numTables = Entity.MappedTables().Count(); for (int i = 0; i < ComponentSpecification.Properties.Count; i++) { if (ComboBoxes[i].SelectedItem != null) { Column col = null; string selectedName = ComboBoxes[i].SelectedItem.ToString(); if (numTables > 1) { foreach (Column c in columns) { if (string.Format("{0}.{1} [{2}]", c.Parent.Name, c.Name, c.OriginalDataType) == selectedName) { col = c; break; } } } else { foreach (Column c in columns) { if (string.Format("{0} [{1}]", c.Name, c.OriginalDataType) == selectedName) { col = c; break; } } } if (col == null) throw new Exception("Column shouldn't be null"); component.Properties[i].SetMappedColumn(col); } else { component.Properties[i].SetMappedColumn(null); } } return true; }
private void Populate() { foreach (LabelX label in Labels) panelEx1.Controls.Remove(label); foreach (ComboBoxEx combo in ComboBoxes) panelEx1.Controls.Remove(combo); Labels.Clear(); ComboBoxes.Clear(); textBoxComponentName.Text = ""; //labelComponentName.Text = string.Format("{0} fields", ComponentSpecification.Name); labelComponentName.Text = "Component fields"; if (Entity == null) { pictureComponent.Visible = false; labelComponentName.Visible = false; pictureEntity.Visible = false; //labelColumns.Visible = false; labelColumns.Left = Gap; labelColumns.Text = "Select entity:"; comboBoxExEntities.Left = labelColumns.Right + Gap; comboBoxExEntities.Visible = true; comboBoxExEntities.DisplayMember = "Name"; comboBoxExEntities.Items.Clear(); comboBoxExEntities.Items.AddRange(ComponentSpecification.EntitySet.Entities.ToArray()); comboBoxExEntities.Top = Gap;// pictureBox1.Bottom + Gap;// labelColumns.Top; labelColumns.Top = comboBoxExEntities.Top; textBoxComponentName.Text = ""; textBoxComponentName.Visible = false; labelComponentNameInput.Visible = false; int newWidth = comboBoxExEntities.Right + Gap; if (this.Width != newWidth) this.Left = this.Left - (this.Width - newWidth); this.Width = newWidth; } else { textBoxComponentName.Visible = true; labelComponentNameInput.Visible = true; pictureComponent.Visible = true; labelComponentName.Visible = true; pictureEntity.Visible = true; labelColumns.Top = pictureEntity.Top; labelColumns.Visible = true; comboBoxExEntities.Visible = false; labelColumns.Text = "Mapped columns"; //if (string.IsNullOrEmpty(textBoxComponentName.Text)) // textBoxComponentName.Text = "Not set"; } if (ComponentSpecification != null) { comboBoxComponents.Visible = false; labelSelect.Visible = false; textBoxComponentName.Top = Gap; labelComponentNameInput.Top = Gap; ArchAngel.Providers.EntityModel.Model.EntityLayer.Component component = ComponentSpecification.GetImplementationFor(Entity); if (component != null) textBoxComponentName.Text = component.Name; } else { comboBoxComponents.DisplayMember = "Name"; foreach (var comp in Entity.EntitySet.ComponentSpecifications) comboBoxComponents.Items.Add(comp); //if (comboBoxComponents.Items.Count > 0) // comboBoxComponents.SelectedIndex = 0; comboBoxComponents.Top = Gap; labelSelect.Top = Gap; textBoxComponentName.Top = comboBoxComponents.Bottom + Gap * 3; labelComponentNameInput.Top = textBoxComponentName.Top; } int top = labelComponentName.Bottom + Gap * 2; if (Entity != null) { if (ComponentSpecification != null) { foreach (var prop in ComponentSpecification.Properties) Labels.Add(new LabelX() { Text = string.Format("{0} [{1}]", prop.Name, prop.Type) }); ArchAngel.Providers.EntityModel.Model.EntityLayer.Component component = ComponentSpecification.GetImplementationFor(Entity); int numTables = Entity.MappedTables().Count(); if (component != null) { foreach (var prop in component.Properties) { List<Column> columns = GetColumnsOfType(Entity, prop.RepresentedProperty.Type); ComboBoxEx combo = new ComboBoxEx(); combo.Width = 200; foreach (Column column in columns) { if (numTables > 1) combo.Items.Add(string.Format("{0}.{1} [{2}]", column.Parent.Name, column.Name, column.OriginalDataType)); else combo.Items.Add(string.Format("{0} [{1}]", column.Name, column.OriginalDataType)); } combo.DropDownStyle = ComboBoxStyle.DropDownList; IColumn col = prop.MappedColumn(); if (col != null) { if (numTables > 1) combo.SelectedItem = string.Format("{0}.{1} [{2}]", col.Parent.Name, col.Name, col.OriginalDataType); else combo.SelectedItem = string.Format("{0} [{1}]", col.Name, col.OriginalDataType); } ComboBoxes.Add(combo); } } else { // Get the properties of the component specification foreach (var prop in ComponentSpecification.Properties) { List<Column> columns = GetColumnsOfType(Entity, prop.Type); ComboBoxEx combo = new ComboBoxEx(); combo.Width = 200; foreach (Column column in columns) { if (numTables > 1) combo.Items.Add(string.Format("{0}.{1} [{2}]", column.Parent.Name, column.Name, column.OriginalDataType)); else combo.Items.Add(string.Format("{0} [{1}]", column.Name, column.OriginalDataType)); } combo.DropDownStyle = ComboBoxStyle.DropDownList; ComboBoxes.Add(combo); } } } int maxLeftColumnWidth = Math.Max(GetWidestLabel(Labels), Gap + pictureComponent.Width + labelComponentName.Width); int maxRightColumnWidth = Math.Max(GetWidestComboBox(ComboBoxes), pictureEntity.Width + labelColumns.Width + Gap); Graphics labelGraphics = null; if (ComponentSpecification != null) { for (int i = 0; i < ComponentSpecification.Properties.Count; i++) { LabelX label = Labels[i]; panelEx1.Controls.Add(label); //label.BackColor = Color.Transparent; //label.ForeColor = Color.White; if (labelGraphics == null) labelGraphics = Graphics.FromHwnd(label.Handle); SizeF size = Graphics.FromHwnd(label.Handle).MeasureString(label.Text, label.Font); label.Height = Convert.ToInt32(size.Height) + 1; label.Width = Convert.ToInt32(size.Width) + 1; label.Top = top; label.Left = Math.Max(Gap, Gap + maxLeftColumnWidth - label.Width); label.BringToFront(); if (Entity != null) { ComboBoxEx comboBox = ComboBoxes[i]; panelEx1.Controls.Add(comboBox); comboBox.Top = top; comboBox.Left = Gap * 10 + maxLeftColumnWidth + 60; comboBox.Width = maxRightColumnWidth; comboBox.BringToFront(); label.Top = top + comboBox.Height / 2 - label.Height / 2; top += comboBox.Height + 2; } else top += label.Height + 2; } } pictureComponent.Left = Gap; labelComponentName.Left = pictureComponent.Right; pictureEntity.Left = Gap * 10 + maxLeftColumnWidth + 60; labelColumns.Left = pictureEntity.Right; comboBoxExEntities.Left = pictureEntity.Right; comboBoxExEntities.Top = labelColumns.Top; int newWidth = Gap * 10 + maxLeftColumnWidth + 60 + maxRightColumnWidth + Gap * 3; if (this.Width != newWidth) this.Left = this.Left - (this.Width - newWidth); this.Width = newWidth; } this.Height = top + Gap * 15 + buttonOk.Height; }