private SplitContainerControl createColumnMetaDataControl(ImportDataColumn col, bool swapPanels) { if (col.MetaData == null) { return(null); } if (string.IsNullOrEmpty(col.Source)) { return(null); } var colMetaDataControl = new MetaDataEditControl(col.MetaData) { Tag = col, AutoAcceptChanges = true }; Controls.Add(colMetaDataControl); colMetaDataControl.OnCopyMetaData += onCopyMetaDataColumnControlPanel; colMetaDataControl.OnIsDataValidChanged += onIsValidChangedColumnControlPanel; colMetaDataControl.OnMetaDataChanged += onMetaDataChangedColumnControlPanel; if (col.MetaData.Rows.Count > 0) { col.SetColumnUnitDependingOnMetaData(); reflectMetaDataChangesForColumn(col); } var newSplitter = new SplitContainerControl(); Controls.Add(newSplitter); newSplitter.BeginInit(); newSplitter.Horizontal = false; newSplitter.FixedPanel = SplitFixedPanel.Panel1; newSplitter.AlwaysScrollActiveControlIntoView = true; newSplitter.Panel2.Controls.Add(colMetaDataControl); colMetaDataControl.Dock = DockStyle.Fill; newSplitter.Panel2.Name = col.ColumnName; newSplitter.Panel2.Text = col.GetCaptionForColumn(); newSplitter.Panel2.ShowCaption = true; newSplitter.Panel2.BorderStyle = BorderStyles.Simple; newSplitter.Panel2.MinSize = PANEL_MIN_SIZE; newSplitter.Panel2.Height = (col.MetaData.Columns.Count + 2) * PANEL_ROW_HEIGHT; newSplitter.CollapsePanel = SplitCollapsePanel.Panel2; if (swapPanels) { newSplitter.SwapPanels(); } newSplitter.SplitterPosition = PANEL_ROW_HEIGHT; newSplitter.EndInit(); return(newSplitter); }
private void cleanMemory() { _gridPresenter.CopyMetaDataColumnControlEvent -= onCopyMetaDataColumnControl; _gridPresenter.SetUnitEvent -= onSetUnitClick; if (_metaDataControl != null) { _metaDataControl.OnCopyMetaData -= onCopyMetaDataTableControl; _metaDataControl.OnBroadCastMetaData -= onBroadCastMetaDataTableControl; _metaDataControl.OnIsDataValidChanged -= metaDataControlOnIsDataValidChanged; } _gridPresenter.MetaDataChangedEvent -= rePlot; _gridPresenter?.Clear(); _metaDataControl?.Dispose(); _metaDataControl = null; CleanUpHelper.ReleaseControls(Controls); Controls.Clear(); }
public EditMetaDataView(MetaDataTable data) { InitializeComponent(); Text = Captions.Importer.PleaseEnterMetaDataInformation; btnOK.Click += onOkClick; btnCopy.Click += onCopyClick; int rowIndex = data.Rows.Count > 0 ? 0 : -1; _metaDataControl = new MetaDataEditControl(data, rowIndex, false); panelControl.Controls.Add(_metaDataControl); _metaDataControl.Dock = DockStyle.Fill; _metaDataControl.OnIsDataValidChanged += onIsDataValidChanged; enableButtons(); if (ParentForm != null) { Icon = ParentForm.Icon; } }
private void buildControl() { var cursor = Cursor.Current; Cursor.Current = Cursors.WaitCursor; try { Controls.Clear(); _gridPresenter.Edit(Table); if (Table.MetaData != null) { var splitter = new SplitContainerControl(); Controls.Add(splitter); splitter.Dock = DockStyle.Fill; splitter.AlwaysScrollActiveControlIntoView = true; var panel = splitter.Panel1; SplitContainerControl newSplitter = null; for (var i = Table.Columns.Count - 1; i >= 0; i--) { var col = Table.Columns.ItemByIndex(i); if (col.MetaData == null) { continue; } newSplitter = createColumnMetaDataControl(col, false); if (newSplitter == null) { continue; } panel.Controls.Add(newSplitter); newSplitter.Dock = DockStyle.Fill; panel = newSplitter.Panel1; } if (newSplitter != null) { panel = newSplitter.Panel1; } _metaDataControl = new MetaDataEditControl(Table.MetaData) { AutoAcceptChanges = true }; Controls.Add(_metaDataControl); panel.Name = "Meta Data"; panel.Text = Captions.Importer.MetaData; panel.ShowCaption = false; panel.MinSize = PANEL_MIN_SIZE; panel.Width = PANEL_MIN_WIDTH; panel.Height = (Table.MetaData.Columns.Count + 2) * PANEL_ROW_HEIGHT; panel.Controls.Add(_metaDataControl); _metaDataControl.Dock = DockStyle.Fill; _metaDataControl.OnCopyMetaData += onCopyMetaDataTableControl; _metaDataControl.OnBroadCastMetaData += onBroadCastMetaDataTableControl; _metaDataControl.OnIsDataValidChanged += metaDataControlOnIsDataValidChanged; splitter.SplitterPosition = PANEL_MIN_WIDTH; splitter.Panel2.Name = "Data"; splitter.Panel2.Text = Captions.Importer.Data; splitter.Panel2.MinSize = PANEL_MIN_SIZE; var datasplitter = new SplitContainerControl { Dock = DockStyle.Fill, Horizontal = false }; datasplitter.Panel1.FillWith(_gridPresenter.View); datasplitter.Panel1.Padding = new Padding(10, 12, 10, 10); datasplitter.Panel2.FillWith(_presenter.View); datasplitter.Panel2.Padding = new Padding(10); datasplitter.CollapsePanel = SplitCollapsePanel.Panel2; rePlot(); UnitChanged += (sender, args) => rePlot(); _gridPresenter.MetaDataChangedEvent += rePlot; splitter.Panel2.Controls.Add(datasplitter); } else { var metaDataExists = false; foreach (ImportDataColumn col in Table.Columns) { metaDataExists = (col.MetaData != null && !string.IsNullOrEmpty(col.Source)); if (metaDataExists) { break; } } if (metaDataExists) { var splitter = new SplitContainerControl(); Controls.Add(splitter); splitter.Dock = DockStyle.Fill; splitter.Horizontal = true; splitter.CollapsePanel = SplitCollapsePanel.Panel1; splitter.Panel2.FillWith(_gridPresenter.View); splitter.Panel2.MinSize = PANEL_MIN_SIZE; var panel = splitter.Panel1; panel.Width = PANEL_MIN_WIDTH; splitter.SplitterPosition = panel.Width; SplitContainerControl newSplitter = null; foreach (ImportDataColumn col in Table.Columns) { if (col.MetaData == null) { continue; } newSplitter = createColumnMetaDataControl(col, true); if (newSplitter == null) { continue; } panel.Controls.Add(newSplitter); newSplitter.Dock = DockStyle.Fill; panel = newSplitter.Panel2; } if (newSplitter != null) { newSplitter.Collapsed = true; } } else { this.FillWith(_gridPresenter.View); } } PerformLayout(); } finally { Cursor.Current = cursor; } }