// ======================================================================== // Con- / Destruction #region === Con- / Destruction /// <summary> /// Initializes a new instance of <see cref="NETImport"/>. /// </summary> public NETImport(ClassDiagram diagram, ImportSettings settings) { this.diagram = diagram; this.settings = settings; types = new Dictionary<NRTypeBase, TypeBase>(); }
// ======================================================================== // Methods #region === Methods /// <summary> /// Starts the functionality of the plugin. /// </summary> protected void Launch() { if(Workspace.HasActiveProject) { string fileName; using (OpenFileDialog dialog = new OpenFileDialog()) { dialog.Filter = Strings.OpenFileDialog_Filter; if (dialog.ShowDialog() == DialogResult.Cancel) return; fileName = dialog.FileName; } ImportSettings settings = new ImportSettings(); using(ImportSettingsForm settingsForm = new ImportSettingsForm(settings)) { if(settingsForm.ShowDialog() == DialogResult.OK) { ClassDiagram diagram = new ClassDiagram(CSharpLanguage.Instance); NETImport importer = new NETImport(diagram, settings); if(importer.ImportAssembly(fileName)) { Workspace.ActiveProject.Add(diagram); } } } } }
/// <summary> /// Initializes a new ImportSettingsForm2. /// </summary> /// <param name="settings">The <see cref="ImportSettings"/> which will be used for import. </param> public ImportSettingsForm(ImportSettings settings) { InitializeComponent(); // Add the icons to the realisation check boxes. chkCreateRealizations.Image = DiagramEditor.Properties.Resources.Realization; chkCreateNesting.Image = DiagramEditor.Properties.Resources.Nesting; chkCreateGeneralizations.Image = DiagramEditor.Properties.Resources.Generalization; chkCreateAssociations.Image = DiagramEditor.Properties.Resources.Association; //Localization goes here... colFilterElement.Items.Clear(); colFilterElement.ImageSize = new Size(16, 16); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_Elements, null, FilterElements.AllElements)); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_Class, DiagramEditor.Properties.Resources.Class, FilterElements.Class)); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_Struct, DiagramEditor.Properties.Resources.Structure, FilterElements.Struct)); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_Interface, DiagramEditor.Properties.Resources.Interface32, FilterElements.Interface)); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_Delegate, DiagramEditor.Properties.Resources.Delegate, FilterElements.Delegate)); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_Enum, DiagramEditor.Properties.Resources.Enum, FilterElements.Enum)); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_EnumValue, DiagramEditor.Properties.Resources.EnumItem, FilterElements.EnumValue)); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_Constructor, DiagramEditor.Properties.Resources.Constructor, FilterElements.Constructor)); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_Field, DiagramEditor.Properties.Resources.Field, FilterElements.Field)); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_Constant, DiagramEditor.Properties.Resources.PublicConst, FilterElements.Constant)); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_Property, DiagramEditor.Properties.Resources.Property, FilterElements.Property)); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_Method, DiagramEditor.Properties.Resources.Method, FilterElements.Method)); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_Operator, DiagramEditor.Properties.Resources.PublicOperator, FilterElements.Operator)); colFilterElement.Items.Add(new ImageComboBoxItem(Strings.Element_Event, DiagramEditor.Properties.Resources.Event, FilterElements.Event)); colFilterModifier.Items.Clear(); colFilterModifier.ImageSize = new Size(16, 16); colFilterModifier.Items.Add(new ImageComboBoxItem(Strings.Modifier_All, null, FilterModifiers.AllModifiers)); colFilterModifier.Items.Add(new ImageComboBoxItem(Strings.Modifier_Instance, null, FilterModifiers.Instance)); colFilterModifier.Items.Add(new ImageComboBoxItem(Strings.Modifier_Static, DiagramEditor.Properties.Resources.Static, FilterModifiers.Static)); colFilterModifier.Items.Add(new ImageComboBoxItem(Strings.Modifier_Default, Resources.ModifierDefault, FilterModifiers.Default)); colFilterModifier.Items.Add(new ImageComboBoxItem(Strings.Modifier_Public, null, FilterModifiers.Public)); colFilterModifier.Items.Add(new ImageComboBoxItem(Strings.Modifier_Private, Resources.ModifierPrivate, FilterModifiers.Private)); colFilterModifier.Items.Add(new ImageComboBoxItem(Strings.Modifier_Internal, Resources.ModifierInternal, FilterModifiers.Internal)); colFilterModifier.Items.Add(new ImageComboBoxItem(Strings.Modifier_Protected, Resources.ModifierProtected, FilterModifiers.Protected)); colFilterModifier.Items.Add(new ImageComboBoxItem(Strings.Modifier_ProtectedInternal, Resources.ModifierProtectedInternal, FilterModifiers.ProtectedInternal)); //Build reverse maps for easy access while loading a template. reverseElementNameMap.Clear(); foreach (ImageComboBoxItem comboBoxItem in colFilterElement.Items) { reverseElementNameMap.Add((FilterElements)comboBoxItem.Tag, comboBoxItem); } reverseModifierNameMap.Clear(); foreach (ImageComboBoxItem comboBoxItem in colFilterModifier.Items) { reverseModifierNameMap.Add((FilterModifiers)comboBoxItem.Tag, comboBoxItem); } importSettings = settings; //Templates cboTemplate.Items.Clear(); if (Settings.Default.ImportSettingsTemplates == null) { Settings.Default.ImportSettingsTemplates = new TemplateList(); ImportSettings newSettings = new ImportSettings { Name = Strings.Settings_Template_LastUsed, CreateAssociations = true, CreateGeneralizations = true, CreateNestings = true, CreateRealizations = true, CreateRelationships = true, LabelAggregations = true }; Settings.Default.ImportSettingsTemplates.Add(newSettings); } foreach (object xTemplate in Settings.Default.ImportSettingsTemplates) { cboTemplate.Items.Add(xTemplate); } cboTemplate.SelectedItem = cboTemplate.Items[0]; DisplaySettings((ImportSettings)cboTemplate.Items[0]); LocalizeComponents(); }
/// <summary> /// Stores the displayed settings to <paramref name="settings"/> /// </summary> /// <param name="settings">The destination of the store operation.</param> private void StoreSettings(ImportSettings settings) { settings.UseAsWhiteList = rdoWhiteList.Checked; List<FilterRule> filterRules = new List<FilterRule>(dgvFilter.Rows.Count); foreach (DataGridViewRow row in dgvFilter.Rows) { ImageComboBoxItem modifier = row.Cells[0].Value as ImageComboBoxItem; ImageComboBoxItem element = row.Cells[1].Value as ImageComboBoxItem; if (modifier != null && element != null) { if (modifier.Tag is FilterModifiers && element.Tag is FilterElements) { filterRules.Add(new FilterRule((FilterModifiers)modifier.Tag, (FilterElements)element.Tag)); } } } settings.FilterRules = filterRules; settings.CreateRelationships = chkCreateRelationships.Checked; settings.CreateAssociations = chkCreateAssociations.Checked; settings.LabelAggregations = chkLabelAssociations.Checked; settings.RemoveFields = chkRemoveFields.Checked; settings.CreateGeneralizations = chkCreateGeneralizations.Checked; settings.CreateRealizations = chkCreateRealizations.Checked; settings.CreateNestings = chkCreateNesting.Checked; }
/// <summary> /// Displays the given Settings. /// </summary> /// <param name="settings">The Settings which shall be displayed.</param> private void DisplaySettings(ImportSettings settings) { dgvFilter.Rows.Clear(); rdoWhiteList.Checked = settings.UseAsWhiteList; rdoBlackList.Checked = !settings.UseAsWhiteList; if(settings.FilterRules != null) { foreach(FilterRule filterRule in settings.FilterRules) { dgvFilter.Rows.Add(reverseModifierNameMap[filterRule.Modifier], reverseElementNameMap[filterRule.Element]); } } chkCreateRelationships.Checked = settings.CreateRelationships; chkCreateAssociations.Checked = settings.CreateAssociations; chkLabelAssociations.Checked = settings.LabelAggregations; chkRemoveFields.Checked = settings.RemoveFields; chkCreateGeneralizations.Checked = settings.CreateGeneralizations; chkCreateRealizations.Checked = settings.CreateRealizations; chkCreateNesting.Checked = settings.CreateNestings; }