Esempio n. 1
0
        /// <summary>
        /// Sets the column kind of the first selected column to the specified column kind
        /// </summary>
        public static void SetSelectedColumnAsKind(IWorksheetController ctrl, Altaxo.Data.ColumnKind kind)
        {
            bool bChanged = false;

            if (ctrl.SelectedDataColumns.Count > 0)
            {
                for (int i = 0; i < ctrl.SelectedDataColumns.Count; i++)
                {
                    ctrl.DataTable.DataColumns.SetColumnKind(ctrl.SelectedDataColumns[i], kind);
                }
                bChanged = true;
            }
            if (ctrl.SelectedPropertyColumns.Count > 0)
            {
                for (int i = 0; i < ctrl.SelectedPropertyColumns.Count; i++)
                {
                    ctrl.DataTable.PropertyColumns.SetColumnKind(ctrl.SelectedPropertyColumns[i], kind);
                }
                bChanged = true;
            }
            if (bChanged)
            {
                ctrl.TableAreaInvalidate(); // draw new because
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Moves the selected columns to a new position <code>nPosition</code>.
        /// </summary>
        /// <param name="ctrl">The worksheet controller.</param>
        /// <param name="nPosition">The new position for the selected columns.</param>
        public static void SetSelectedColumnPosition(IWorksheetController ctrl, int nPosition)
        {
            if (ctrl.SelectedDataColumns.Count > 0)
            {
                if (ctrl.SelectedDataColumns.Count + nPosition > ctrl.DataTable.DataColumnCount)
                {
                    nPosition = Math.Max(0, ctrl.DataTable.DataColumnCount - ctrl.SelectedDataColumns.Count);
                }

                ctrl.DataTable.ChangeColumnPosition(ctrl.SelectedDataColumns, nPosition);
            }

            if (ctrl.SelectedPropertyColumns.Count > 0)
            {
                if (ctrl.SelectedPropertyColumns.Count + nPosition > ctrl.DataTable.PropertyColumnCount)
                {
                    nPosition = Math.Max(0, ctrl.DataTable.PropertyColumnCount - ctrl.SelectedDataColumns.Count);
                }

                ctrl.DataTable.PropertyColumns.ChangeColumnPosition(ctrl.SelectedPropertyColumns, nPosition);
            }

            ctrl.ClearAllSelections();

            ctrl.TableAreaInvalidate();
        }
Esempio n. 3
0
		/// <summary>
		/// Sets the group number of the selected column
		/// </summary>
		/// <param name="ctrl">The worksheet controller for the table.</param>
		public static void ShowSetColumnGroupNumberDialog(IWorksheetController ctrl)
		{
			if (ctrl.DataTable.ShowSetColumnGroupNumberDialog(ctrl.SelectedDataColumns, ctrl.SelectedPropertyColumns))
			{
				ctrl.ClearAllSelections();
				ctrl.TableAreaInvalidate();
			}
		}
Esempio n. 4
0
 /// <summary>
 /// Sets the group number of the selected column
 /// </summary>
 /// <param name="ctrl">The worksheet controller for the table.</param>
 public static void ShowSetColumnGroupNumberDialog(IWorksheetController ctrl)
 {
     if (ctrl.DataTable.ShowSetColumnGroupNumberDialog(ctrl.SelectedDataColumns, ctrl.SelectedPropertyColumns))
     {
         ctrl.ClearAllSelections();
         ctrl.TableAreaInvalidate();
     }
 }
Esempio n. 5
0
        /// <summary>
        /// Insert a number of data rows into the controlled table.
        /// </summary>
        /// <param name="ctrl">The worksheet controller.</param>
        /// <param name="rowBeforeToInsert">Number of the row before which to insert the additional rows.</param>
        /// <param name="numberOfRows">Number of rows to insert.</param>
        public static void InsertDataRows(IWorksheetController ctrl, int rowBeforeToInsert, int numberOfRows)
        {
            if (numberOfRows <= 0 || rowBeforeToInsert < 0)
            {
                return;
            }

            ctrl.DataTable.DataColumns.InsertRows(rowBeforeToInsert, numberOfRows);
            ctrl.ClearAllSelections();
            ctrl.TableAreaInvalidate();
        }
Esempio n. 6
0
        /// <summary>
        /// Moves the selected rows to a new position <code>nPosition</code>.
        /// </summary>
        /// <param name="ctrl">The worksheet controller.</param>
        /// <param name="nPosition">The new position for the selected rows.</param>
        public static void SetSelectedRowPosition(IWorksheetController ctrl, int nPosition)
        {
            if (ctrl.SelectedDataRows.Count > 0)
            {
                ctrl.DataTable.DataColumns.ChangeRowPosition(ctrl.SelectedDataRows, nPosition);
            }

            ctrl.ClearAllSelections();

            ctrl.TableAreaInvalidate();
        }
Esempio n. 7
0
		/// <summary>
		/// Moves the selected rows to a new position <code>nPosition</code>.
		/// </summary>
		/// <param name="ctrl">The worksheet controller.</param>
		/// <param name="nPosition">The new position for the selected rows.</param>
		public static void SetSelectedRowPosition(IWorksheetController ctrl, int nPosition)
		{
			if (ctrl.SelectedDataRows.Count > 0)
			{
				ctrl.DataTable.DataColumns.ChangeRowPosition(ctrl.SelectedDataRows, nPosition);
			}

			ctrl.ClearAllSelections();

			ctrl.TableAreaInvalidate();
		}
Esempio n. 8
0
        /// <summary>
        /// Remove all but the selected columns, rows or property columns.
        /// </summary>
        public static void RemoveAllButSelected(IWorksheetController ctrl)
        {
            using (var suspendToken = ctrl.DataTable.SuspendGetToken())
            {
                // Property columns are only deleted, if selected alone or in conjunction with data row selection
                if (ctrl.SelectedPropertyColumns.Count > 0 && ctrl.SelectedPropertyRows.Count == 0 && ctrl.SelectedDataColumns.Count == 0)
                {
                    for (int i = ctrl.DataTable.PropertyColumnCount - 1; i >= 0; i--)
                    {
                        if (!ctrl.SelectedPropertyColumns.Contains(i))
                        {
                            ctrl.DataTable.PropertyColumns.RemoveColumn(i);
                        }
                    }

                    ctrl.SelectedPropertyColumns.Clear();
                    ctrl.SelectedPropertyRows.Clear();
                }
                // note here: Property rows are only removed indirect by removing data columns

                // delete the selected columns if there are _only selected columns
                if (ctrl.SelectedDataColumns.Count > 0)
                {
                    for (int i = ctrl.DataTable.DataColumnCount - 1; i >= 0; i--)
                    {
                        if (!ctrl.SelectedDataColumns.Contains(i))
                        {
                            ctrl.DataTable.RemoveColumns(i, 1);
                        }
                    }
                    ctrl.SelectedDataColumns.Clear(); // now the columns are deleted, so they cannot be selected
                }

                // if rows are selected, remove them in all selected columns or in all columns (if no column selection=
                if (ctrl.SelectedDataRows.Count > 0)
                {
                    for (int i = ctrl.DataTable.DataRowCount - 1; i >= 0; i--)
                    {
                        if (!ctrl.SelectedDataRows.Contains(i))
                        {
                            ctrl.DataTable.DataColumns.RemoveRow(i);
                        }
                    }

                    ctrl.SelectedDataColumns.Clear();
                    ctrl.SelectedDataRows.Clear();
                }

                // end code for the selected rows
                suspendToken.Dispose();
            }
            ctrl.TableAreaInvalidate(); // necessary because we changed the selections
        }
Esempio n. 9
0
        /// <summary>
        /// Sets the column kind of the first selected column or property column to a X column.
        /// </summary>
        public static void SetSelectedColumnAsY(IWorksheetController ctrl)
        {
            bool bChanged = false;

            if (ctrl.SelectedDataColumns.Count > 0)
            {
                ctrl.DataTable.DataColumns.SetColumnKind(ctrl.SelectedDataColumns[0], Altaxo.Data.ColumnKind.Y);
                bChanged = true;
            }
            if (ctrl.SelectedPropertyColumns.Count > 0)
            {
                ctrl.DataTable.PropertyColumns.SetColumnKind(ctrl.SelectedPropertyColumns[0], Altaxo.Data.ColumnKind.Y);
                bChanged = true;
            }
            if (bChanged)
            {
                ctrl.TableAreaInvalidate(); // draw new because
            }
        }
Esempio n. 10
0
        /// <summary>
        /// Remove the selected columns, rows or property columns.
        /// </summary>
        public static void RemoveSelected(IWorksheetController ctrl)
        {
            using (var suspendToken = ctrl.DataTable.SuspendGetToken())
            {
                // Property columns are only deleted, if selected alone or in conjunction with data row selection
                if (ctrl.SelectedPropertyColumns.Count > 0 && ctrl.SelectedPropertyRows.Count == 0 && ctrl.SelectedDataColumns.Count == 0)
                {
                    ctrl.DataTable.PropCols.RemoveColumns(ctrl.SelectedPropertyColumns);
                    ctrl.SelectedPropertyColumns.Clear();
                    ctrl.SelectedPropertyRows.Clear();
                }
                // note here: Property rows are only removed indirect by removing data columns

                // delete the selected columns if there are _only selected columns
                if (ctrl.SelectedDataColumns.Count > 0 && ctrl.SelectedDataRows.Count == 0)
                {
                    ctrl.DataTable.RemoveColumns(ctrl.SelectedDataColumns);
                    ctrl.SelectedDataColumns.Clear(); // now the columns are deleted, so they cannot be selected
                }

                // if rows are selected, remove them in all selected columns or in all columns (if no column selection=
                if (ctrl.SelectedDataRows.Count > 0)
                {
                    ctrl.DataTable.DataColumns.RemoveRowsInColumns(
                        ctrl.SelectedDataColumns.Count > 0 ? (IAscendingIntegerCollection)ctrl.SelectedDataColumns : ContiguousIntegerRange.FromStartAndCount(0, ctrl.DataTable.DataColumns.ColumnCount),
                        ctrl.SelectedDataRows);

                    ctrl.SelectedDataColumns.Clear();
                    ctrl.SelectedDataRows.Clear();
                }

                // end code for the selected rows
                suspendToken.Dispose();
            }

            ctrl.TableAreaInvalidate(); // necessary because we changed the selections
        }
Esempio n. 11
0
		/// <summary>
		/// Remove all but the selected columns, rows or property columns.
		/// </summary>
		public static void RemoveAllButSelected(IWorksheetController ctrl)
		{
			using (var suspendToken = ctrl.DataTable.SuspendGetToken())
			{
				// Property columns are only deleted, if selected alone or in conjunction with data row selection
				if (ctrl.SelectedPropertyColumns.Count > 0 && ctrl.SelectedPropertyRows.Count == 0 && ctrl.SelectedDataColumns.Count == 0)
				{
					for (int i = ctrl.DataTable.PropertyColumnCount - 1; i >= 0; i--)
					{
						if (!ctrl.SelectedPropertyColumns.Contains(i))
							ctrl.DataTable.PropertyColumns.RemoveColumn(i);
					}

					ctrl.SelectedPropertyColumns.Clear();
					ctrl.SelectedPropertyRows.Clear();
				}
				// note here: Property rows are only removed indirect by removing data columns

				// delete the selected columns if there are _only selected columns
				if (ctrl.SelectedDataColumns.Count > 0)
				{
					for (int i = ctrl.DataTable.DataColumnCount - 1; i >= 0; i--)
					{
						if (!ctrl.SelectedDataColumns.Contains(i))
							ctrl.DataTable.RemoveColumns(i, 1);
					}
					ctrl.SelectedDataColumns.Clear(); // now the columns are deleted, so they cannot be selected
				}

				// if rows are selected, remove them in all selected columns or in all columns (if no column selection=
				if (ctrl.SelectedDataRows.Count > 0)
				{
					for (int i = ctrl.DataTable.DataRowCount - 1; i >= 0; i--)
					{
						if (!ctrl.SelectedDataRows.Contains(i))
							ctrl.DataTable.DataColumns.RemoveRow(i);
					}

					ctrl.SelectedDataColumns.Clear();
					ctrl.SelectedDataRows.Clear();
				}

				// end code for the selected rows
				suspendToken.Dispose();
			}
			ctrl.TableAreaInvalidate(); // necessary because we changed the selections
		}
Esempio n. 12
0
		/// <summary>
		/// Insert a number of data rows into the controlled table.
		/// </summary>
		/// <param name="ctrl">The worksheet controller.</param>
		/// <param name="rowBeforeToInsert">Number of the row before which to insert the additional rows.</param>
		/// <param name="numberOfRows">Number of rows to insert.</param>
		public static void InsertDataRows(IWorksheetController ctrl, int rowBeforeToInsert, int numberOfRows)
		{
			if (numberOfRows <= 0 || rowBeforeToInsert < 0)
				return;

			ctrl.DataTable.DataColumns.InsertRows(rowBeforeToInsert, numberOfRows);
			ctrl.ClearAllSelections();
			ctrl.TableAreaInvalidate();
		}
Esempio n. 13
0
		/// <summary>
		/// Sets the column kind of the first selected column to the specified column kind
		/// </summary>
		public static void SetSelectedColumnAsKind(IWorksheetController ctrl, Altaxo.Data.ColumnKind kind)
		{
			bool bChanged = false;
			if (ctrl.SelectedDataColumns.Count > 0)
			{
				for (int i = 0; i < ctrl.SelectedDataColumns.Count; i++)
					ctrl.DataTable.DataColumns.SetColumnKind(ctrl.SelectedDataColumns[i], kind);
				bChanged = true;
			}
			if (ctrl.SelectedPropertyColumns.Count > 0)
			{
				for (int i = 0; i < ctrl.SelectedPropertyColumns.Count; i++)
					ctrl.DataTable.PropertyColumns.SetColumnKind(ctrl.SelectedPropertyColumns[i], kind);
				bChanged = true;
			}
			if (bChanged)
				ctrl.TableAreaInvalidate(); // draw new because
		}
Esempio n. 14
0
		/// <summary>
		/// Sets the column kind of the first selected column or property column to a X column.
		/// </summary>
		public static void SetSelectedColumnAsY(IWorksheetController ctrl)
		{
			bool bChanged = false;
			if (ctrl.SelectedDataColumns.Count > 0)
			{
				ctrl.DataTable.DataColumns.SetColumnKind(ctrl.SelectedDataColumns[0], Altaxo.Data.ColumnKind.Y);
				bChanged = true;
			}
			if (ctrl.SelectedPropertyColumns.Count > 0)
			{
				ctrl.DataTable.PropertyColumns.SetColumnKind(ctrl.SelectedPropertyColumns[0], Altaxo.Data.ColumnKind.Y);
				bChanged = true;
			}
			if (bChanged)
				ctrl.TableAreaInvalidate(); // draw new because
		}
Esempio n. 15
0
		/// <summary>
		/// Moves the selected columns to a new position <code>nPosition</code>.
		/// </summary>
		/// <param name="ctrl">The worksheet controller.</param>
		/// <param name="nPosition">The new position for the selected columns.</param>
		public static void SetSelectedColumnPosition(IWorksheetController ctrl, int nPosition)
		{
			if (ctrl.SelectedDataColumns.Count > 0)
			{
				if (ctrl.SelectedDataColumns.Count + nPosition > ctrl.DataTable.DataColumnCount)
					nPosition = Math.Max(0, ctrl.DataTable.DataColumnCount - ctrl.SelectedDataColumns.Count);

				ctrl.DataTable.ChangeColumnPosition(ctrl.SelectedDataColumns, nPosition);
			}

			if (ctrl.SelectedPropertyColumns.Count > 0)
			{
				if (ctrl.SelectedPropertyColumns.Count + nPosition > ctrl.DataTable.PropertyColumnCount)
					nPosition = Math.Max(0, ctrl.DataTable.PropertyColumnCount - ctrl.SelectedDataColumns.Count);

				ctrl.DataTable.PropertyColumns.ChangeColumnPosition(ctrl.SelectedPropertyColumns, nPosition);
			}

			ctrl.ClearAllSelections();

			ctrl.TableAreaInvalidate();
		}
Esempio n. 16
0
		/// <summary>
		/// This commands clean all selected cells.
		/// </summary>
		/// <param name="ctrl">The worksheet controller.</param>
		public static void CleanSelected(IWorksheetController ctrl)
		{
			using (var suspendToken = ctrl.DataTable.SuspendGetToken())
			{
				// clear whole columns when no specific
				if (ctrl.SelectedPropertyColumns.Count > 0)
				{
					if (ctrl.SelectedPropertyRows.Count == 0) // if only data columns but not rows selected, we can clean the data columns complete
					{
						foreach (int colidx in ctrl.SelectedPropertyColumns)
							ctrl.DataTable.PropertyColumns[colidx].Clear();
					}
					else // if property columns and also rows are selected, we have to clean the cells individually
					{
						foreach (int colidx in ctrl.SelectedPropertyColumns)
						{
							DataColumn col = ctrl.DataTable.PropertyColumns[colidx];
							foreach (int rowidx in ctrl.SelectedPropertyRows)
								col.SetElementEmpty(rowidx);
						}
					}
				}
				else if (ctrl.SelectedPropertyRows.Count > 0) // if only rows are selected, clean them complete
				{
					for (int colidx = ctrl.DataTable.PropertyColumnCount - 1; colidx >= 0; colidx--)
					{
						DataColumn col = ctrl.DataTable.PropertyColumns[colidx];
						foreach (int rowidx in ctrl.SelectedPropertyRows)
							col.SetElementEmpty(rowidx);
					}
				}

				// clear whole columns when no specific
				if (ctrl.SelectedDataColumns.Count > 0)
				{
					if (ctrl.SelectedDataRows.Count == 0) // if only data columns but not rows selected, we can clean the data columns complete
					{
						foreach (int colidx in ctrl.SelectedDataColumns)
							ctrl.DataTable.DataColumns[colidx].Clear();
					}
					else // if data columns and also rows are selected, we have to clean the cells individually
					{
						foreach (int colidx in ctrl.SelectedDataColumns)
						{
							DataColumn col = ctrl.DataTable.DataColumns[colidx];
							foreach (int rowidx in ctrl.SelectedDataRows)
								col.SetElementEmpty(rowidx);
						}
					}
				}
				else if (ctrl.SelectedDataRows.Count > 0) // if only rows are selected, clean them complete
				{
					for (int colidx = ctrl.DataTable.DataColumnCount - 1; colidx >= 0; colidx--)
					{
						DataColumn col = ctrl.DataTable.DataColumns[colidx];
						foreach (int rowidx in ctrl.SelectedDataRows)
							col.SetElementEmpty(rowidx);
					}
				}

				// end code for the selected rows
				suspendToken.Dispose();
			}
			ctrl.TableAreaInvalidate(); // necessary because we changed the selections
		}
Esempio n. 17
0
        /// <summary>
        /// This commands clean all selected cells.
        /// </summary>
        /// <param name="ctrl">The worksheet controller.</param>
        public static void CleanSelected(IWorksheetController ctrl)
        {
            using (var suspendToken = ctrl.DataTable.SuspendGetToken())
            {
                // clear whole columns when no specific
                if (ctrl.SelectedPropertyColumns.Count > 0)
                {
                    if (ctrl.SelectedPropertyRows.Count == 0) // if only data columns but not rows selected, we can clean the data columns complete
                    {
                        foreach (int colidx in ctrl.SelectedPropertyColumns)
                        {
                            ctrl.DataTable.PropertyColumns[colidx].Clear();
                        }
                    }
                    else // if property columns and also rows are selected, we have to clean the cells individually
                    {
                        foreach (int colidx in ctrl.SelectedPropertyColumns)
                        {
                            DataColumn col = ctrl.DataTable.PropertyColumns[colidx];
                            foreach (int rowidx in ctrl.SelectedPropertyRows)
                            {
                                col.SetElementEmpty(rowidx);
                            }
                        }
                    }
                }
                else if (ctrl.SelectedPropertyRows.Count > 0) // if only rows are selected, clean them complete
                {
                    for (int colidx = ctrl.DataTable.PropertyColumnCount - 1; colidx >= 0; colidx--)
                    {
                        DataColumn col = ctrl.DataTable.PropertyColumns[colidx];
                        foreach (int rowidx in ctrl.SelectedPropertyRows)
                        {
                            col.SetElementEmpty(rowidx);
                        }
                    }
                }

                // clear whole columns when no specific
                if (ctrl.SelectedDataColumns.Count > 0)
                {
                    if (ctrl.SelectedDataRows.Count == 0) // if only data columns but not rows selected, we can clean the data columns complete
                    {
                        foreach (int colidx in ctrl.SelectedDataColumns)
                        {
                            ctrl.DataTable.DataColumns[colidx].Clear();
                        }
                    }
                    else // if data columns and also rows are selected, we have to clean the cells individually
                    {
                        foreach (int colidx in ctrl.SelectedDataColumns)
                        {
                            DataColumn col = ctrl.DataTable.DataColumns[colidx];
                            foreach (int rowidx in ctrl.SelectedDataRows)
                            {
                                col.SetElementEmpty(rowidx);
                            }
                        }
                    }
                }
                else if (ctrl.SelectedDataRows.Count > 0) // if only rows are selected, clean them complete
                {
                    for (int colidx = ctrl.DataTable.DataColumnCount - 1; colidx >= 0; colidx--)
                    {
                        DataColumn col = ctrl.DataTable.DataColumns[colidx];
                        foreach (int rowidx in ctrl.SelectedDataRows)
                        {
                            col.SetElementEmpty(rowidx);
                        }
                    }
                }

                // end code for the selected rows
                suspendToken.Dispose();
            }
            ctrl.TableAreaInvalidate(); // necessary because we changed the selections
        }
Esempio n. 18
0
		/// <summary>
		/// Remove the selected columns, rows or property columns.
		/// </summary>
		public static void RemoveSelected(IWorksheetController ctrl)
		{
			using (var suspendToken = ctrl.DataTable.SuspendGetToken())
			{
				// Property columns are only deleted, if selected alone or in conjunction with data row selection
				if (ctrl.SelectedPropertyColumns.Count > 0 && ctrl.SelectedPropertyRows.Count == 0 && ctrl.SelectedDataColumns.Count == 0)
				{
					ctrl.DataTable.PropCols.RemoveColumns(ctrl.SelectedPropertyColumns);
					ctrl.SelectedPropertyColumns.Clear();
					ctrl.SelectedPropertyRows.Clear();
				}
				// note here: Property rows are only removed indirect by removing data columns

				// delete the selected columns if there are _only selected columns
				if (ctrl.SelectedDataColumns.Count > 0 && ctrl.SelectedDataRows.Count == 0)
				{
					ctrl.DataTable.RemoveColumns(ctrl.SelectedDataColumns);
					ctrl.SelectedDataColumns.Clear(); // now the columns are deleted, so they cannot be selected
				}

				// if rows are selected, remove them in all selected columns or in all columns (if no column selection=
				if (ctrl.SelectedDataRows.Count > 0)
				{
					ctrl.DataTable.DataColumns.RemoveRowsInColumns(
						ctrl.SelectedDataColumns.Count > 0 ? (IAscendingIntegerCollection)ctrl.SelectedDataColumns : ContiguousIntegerRange.FromStartAndCount(0, ctrl.DataTable.DataColumns.ColumnCount),
						ctrl.SelectedDataRows);

					ctrl.SelectedDataColumns.Clear();
					ctrl.SelectedDataRows.Clear();
				}

				// end code for the selected rows
				suspendToken.Dispose();
			}

			ctrl.TableAreaInvalidate(); // necessary because we changed the selections
		}