public void Initialize(ValueCopySettingsWrapper wrapper)
        {
            if (wrapper != null)
            {
                m_Value.Text       = wrapper.Value;
                m_Coefficient.Text = wrapper.Coefficient.ToString();
                if (wrapper.CopyType == ValueCopyTypes.CopyValueFromSource)
                {
                    m_CopyType.Combo.SelectedIndex = 0;
                }
                else
                {
                    m_CopyType.Combo.SelectedIndex = 1;
                }

                m_Coordinates.ShowNotEmpty = wrapper.ShowNotEmptyCoordinates;

                List <CoordinateItem> coordinates = new List <CoordinateItem>();
                foreach (CoordinateItem_Wrapper coord_wrap in wrapper.CoordinatesList)
                {
                    CoordinateItem item = new CoordinateItem(coord_wrap);
                    coordinates.Add(item);
                }

                m_Coordinates.Initialize(coordinates);
            }
        }
        void Dialog_DialogOk(object sender, EventArgs e)
        {
            MemberChoiceDialog dlg = sender as MemberChoiceDialog;

            if (dlg != null && dlg.UserData != null && dlg.UserData is MemberChoiceType)
            {
                CoordinateItem item = dlg.Tag as CoordinateItem;
                if (item != null)
                {
                    List <MemberChoiceSettings> selectedInfo = dlg.ChoiceControl.SelectedInfo;
                    if (selectedInfo != null && selectedInfo.Count == 1)
                    {
                        MemberWrap member = new MemberWrap();
                        member.Caption             = dlg.ChoiceControl.SelectedInfo[0].Caption;
                        member.UniqueName          = dlg.ChoiceControl.SelectedInfo[0].UniqueName;
                        member.HierarchyUniqueName = dlg.ChoiceControl.HierarchyUniqueName;
                        if (((MemberChoiceType)dlg.UserData) == MemberChoiceType.Source)
                        {
                            item.SourceMember = member;
                        }
                        if (((MemberChoiceType)dlg.UserData) == MemberChoiceType.Destination)
                        {
                            item.DestMember = member;
                        }
                    }
                }
                return;
            }

            MeasureChoiceDialog measure_dlg = sender as MeasureChoiceDialog;

            if (measure_dlg != null && measure_dlg.UserData != null && measure_dlg.UserData is MemberChoiceType)
            {
                CoordinateItem item = measure_dlg.Tag as CoordinateItem;
                if (item != null)
                {
                    if (measure_dlg.ChoiceControl.SelectedInfo != null)
                    {
                        MemberWrap member = new MemberWrap();
                        member.Caption             = measure_dlg.ChoiceControl.SelectedInfo.Caption;
                        member.UniqueName          = measure_dlg.ChoiceControl.SelectedInfo.UniqueName;
                        member.HierarchyUniqueName = "[Measures]";
                        if (((MemberChoiceType)measure_dlg.UserData) == MemberChoiceType.Source)
                        {
                            item.SourceMember = member;
                        }
                        if (((MemberChoiceType)measure_dlg.UserData) == MemberChoiceType.Destination)
                        {
                            item.DestMember = member;
                        }
                    }
                }
            }
        }
        public void InitializeMetadata(CubeDefInfo cubeInfo)
        {
            List <CoordinateItem> list = new List <CoordinateItem>();

            if (cubeInfo != null)
            {
                foreach (DimensionInfo dim_Info in cubeInfo.Dimensions)
                {
                    foreach (HierarchyInfo hier_info in dim_Info.Hierarchies)
                    {
                        CoordinateItem item = new CoordinateItem(dim_Info.UniqueName, hier_info.UniqueName);
                        item.Hierarchy_Custom_AllMemberUniqueName = hier_info.Custom_AllMemberUniqueName;
                        item.DimensionCaption = dim_Info.Caption;
                        item.HierarchyCaption = hier_info.Caption;
                        if (m_Slice != null && m_Slice.ContainsKey(hier_info.UniqueName))
                        {
                            MemberWrap wrap = m_Slice[hier_info.UniqueName];
                            item.SourceMember = wrap;

                            item.DestMember = wrap;
                            // Если в приемник попадает элемент типа ALL, то
                            // пытаемся заменить его на DefaultMember. Если же DefaultMember совпадет в итоге с AllMember
                            // то в приемник устанавливаем Unknown элемент
                            if (!String.IsNullOrEmpty(hier_info.Custom_AllMemberUniqueName) &&
                                hier_info.Custom_AllMemberUniqueName == wrap.UniqueName)
                            {
                                if (!String.IsNullOrEmpty(hier_info.DefaultMember) &&
                                    hier_info.DefaultMember == hier_info.Custom_AllMemberUniqueName)
                                {
                                    MemberWrap unk_wrap = new MemberWrap();
                                    unk_wrap.IsUnknownMember = true;
                                    item.DestMember          = unk_wrap;
                                }
                                else
                                {
                                    if (!String.IsNullOrEmpty(hier_info.DefaultMember))
                                    {
                                        MemberWrap def_wrap = new MemberWrap();
                                        def_wrap.IsDefaultMember = true;
                                        item.DestMember          = def_wrap;
                                    }
                                }
                            }
                        }
                        list.Add(item);
                    }
                }
            }
            m_Coordinates.Initialize(list);
        }
        private void DeleteDestination_Button_Click(object sender, RoutedEventArgs e)
        {
            CoordinateItem item = coordinatesGrid.SelectedItem as CoordinateItem;

            if (item != null)
            {
                // Если элемент только для чтения, то при отключенном режиме администрирования редактировать его не даем
                if (!IsAdminMode && item.CoordinateState == CoordinateStateTypes.Readonly)
                {
                    return;
                }

                if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                {
                    item.DestMember = null;
                }
            }
        }
        void OnDelete()
        {
            CoordinateItem item = coordinatesGrid.SelectedItem as CoordinateItem;

            if (item != null)
            {
                // Если элемент только для чтения, то при отключенном режиме администрирования редактировать его не даем
                if (!IsAdminMode && item.CoordinateState == CoordinateStateTypes.Readonly)
                {
                    return;
                }

                if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3])
                {
                    item.SourceMember = null;
                }
                if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                {
                    item.DestMember = null;
                }
            }
        }
        bool BeginEdit(CoordinateItem item)
        {
            if (item != null)
            {
                // Если элемент только для чтения, то при отключенном режиме администрирования редактировать его не даем
                if (!IsAdminMode && item.CoordinateState == CoordinateStateTypes.Readonly)
                {
                    return(false);
                }

                if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[0])
                {
                    return(true);
                }
                if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3] ||
                    (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4]))
                {
                    IChoiceDialog dlg = null;

                    if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3])
                    {
                        if (m_SourceDialogs.ContainsKey(item))
                        {
                            dlg = m_SourceDialogs[item];
                        }
                    }

                    if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                    {
                        if (m_DestDialogs.ContainsKey(item))
                        {
                            dlg = m_DestDialogs[item];
                        }
                    }

                    if (dlg == null)
                    {
                        if (item.DimensionUniqueName == "[Measures]")
                        {
                            // Выбор меры
                            MeasureChoiceDialog dialog = new MeasureChoiceDialog();
                            dialog.ChoiceControl.CubeName   = CubeName;
                            dialog.ChoiceControl.Connection = ConnectionID;
                            dialog.ChoiceControl.LogManager = LogManager;
                            GetIDataLoaderArgs args = new GetIDataLoaderArgs();
                            Raise_GetOlapDataLoader(args);
                            if (args.Handled)
                            {
                                dialog.ChoiceControl.OlapDataLoader = args.Loader;
                            }
                            dialog.Tag           = item;
                            dialog.DialogOk     += new EventHandler(Dialog_DialogOk);
                            dialog.DialogCancel += new EventHandler(dlg_DialogCancel);
                            dialog.Show();
                            if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3])
                            {
                                dialog.UserData = MemberChoiceType.Source;
                            }
                            if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                            {
                                dialog.UserData = MemberChoiceType.Destination;
                            }
                            dlg = dialog;
                        }
                        else
                        {
                            // Выбор элемента измерения
                            MemberChoiceDialog dialog = new MemberChoiceDialog();
                            dialog.ChoiceControl.CubeName            = CubeName;
                            dialog.ChoiceControl.Connection          = ConnectionID;
                            dialog.ChoiceControl.HierarchyUniqueName = item.HierarchyUniqueName;
                            dialog.ChoiceControl.LogManager          = LogManager;

                            GetIDataLoaderArgs args = new GetIDataLoaderArgs();
                            Raise_GetOlapDataLoader(args);
                            if (args.Handled)
                            {
                                dialog.ChoiceControl.OlapDataLoader = args.Loader;
                            }

                            dialog.Tag           = item;
                            dialog.DialogOk     += new EventHandler(Dialog_DialogOk);
                            dialog.DialogCancel += new EventHandler(dlg_DialogCancel);
                            dialog.Show();
                            if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3])
                            {
                                dialog.UserData = MemberChoiceType.Source;
                            }
                            if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                            {
                                dialog.UserData = MemberChoiceType.Destination;
                            }
                            dlg = dialog;
                        }
                        if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3])
                        {
                            m_SourceDialogs[item] = dlg;
                        }
                        if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                        {
                            m_DestDialogs[item] = dlg;
                        }
                    }

                    if (dlg != null)
                    {
                        dlg.Show();
                        return(true);
                    }
                }
            }
            return(false);
        }
        bool BeginEdit(CoordinateItem item)
        {
            if (item != null)
            {
                // Если элемент только для чтения, то при отключенном режиме администрирования редактировать его не даем
                if (!IsAdminMode && item.CoordinateState == CoordinateStateTypes.Readonly)
                    return false;

                if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[0])
                {
                    return true;
                }
                if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3] ||
                    (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4]))
                {
                    IChoiceDialog dlg = null;

                    if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3])
                    {
                        if (m_SourceDialogs.ContainsKey(item))
                        {
                            dlg = m_SourceDialogs[item];
                        }
                    }

                    if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                    {
                        if (m_DestDialogs.ContainsKey(item))
                        {
                            dlg = m_DestDialogs[item];
                        }
                    }

                    if (dlg == null)
                    {
                        if (item.DimensionUniqueName == "[Measures]")
                        {
                            // Выбор меры
                            MeasureChoiceDialog dialog = new MeasureChoiceDialog();
                            dialog.ChoiceControl.CubeName = CubeName;
                            dialog.ChoiceControl.Connection = ConnectionID;
                            dialog.ChoiceControl.LogManager = LogManager;
                            GetIDataLoaderArgs args = new GetIDataLoaderArgs();
                            Raise_GetOlapDataLoader(args);
                            if (args.Handled)
                                dialog.ChoiceControl.OlapDataLoader = args.Loader;
                            dialog.Tag = item;
                            dialog.DialogOk += new EventHandler(Dialog_DialogOk);
                            dialog.DialogCancel += new EventHandler(dlg_DialogCancel);
                            dialog.Show();
                            if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3])
                            {
                                dialog.UserData = MemberChoiceType.Source;
                            }
                            if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                            {
                                dialog.UserData = MemberChoiceType.Destination;
                            }
                            dlg = dialog;
                        }
                        else
                        {
                            // Выбор элемента измерения
                            MemberChoiceDialog dialog = new MemberChoiceDialog();
                            dialog.ChoiceControl.CubeName = CubeName;
                            dialog.ChoiceControl.Connection = ConnectionID;
                            dialog.ChoiceControl.HierarchyUniqueName = item.HierarchyUniqueName;
                            dialog.ChoiceControl.LogManager = LogManager;

                            GetIDataLoaderArgs args = new GetIDataLoaderArgs();
                            Raise_GetOlapDataLoader(args);
                            if (args.Handled)
                                dialog.ChoiceControl.OlapDataLoader = args.Loader;

                            dialog.Tag = item;
                            dialog.DialogOk += new EventHandler(Dialog_DialogOk);
                            dialog.DialogCancel += new EventHandler(dlg_DialogCancel);
                            dialog.Show();
                            if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3])
                            {
                                dialog.UserData = MemberChoiceType.Source;
                            }
                            if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                            {
                                dialog.UserData = MemberChoiceType.Destination;
                            }
                            dlg = dialog;
                        }
                        if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[3])
                        {
                            m_SourceDialogs[item] = dlg;
                        }
                        if (coordinatesGrid.CurrentColumn == coordinatesGrid.Columns[4])
                        {
                            m_DestDialogs[item] = dlg;
                        }

                    }

                    if (dlg != null)
                    {
                        dlg.Show();
                        return true;
                    }
                }
            }
            return false;
        }
        public void InitializeMetadata(CubeDefInfo cubeInfo)
        {
            List<CoordinateItem> list = new List<CoordinateItem>();
            
            if(cubeInfo != null)
            {
                foreach (DimensionInfo dim_Info in cubeInfo.Dimensions)
                {
                    foreach (HierarchyInfo hier_info in dim_Info.Hierarchies)
                    {
                        CoordinateItem item = new CoordinateItem(dim_Info.UniqueName, hier_info.UniqueName);
                        item.Hierarchy_Custom_AllMemberUniqueName = hier_info.Custom_AllMemberUniqueName;
                        item.DimensionCaption = dim_Info.Caption;
                        item.HierarchyCaption = hier_info.Caption;
                        if (m_Slice != null && m_Slice.ContainsKey(hier_info.UniqueName))
                        {
                            MemberWrap wrap = m_Slice[hier_info.UniqueName];
                            item.SourceMember = wrap;

                            item.DestMember = wrap;
                            // Если в приемник попадает элемент типа ALL, то
                            // пытаемся заменить его на DefaultMember. Если же DefaultMember совпадет в итоге с AllMember
                            // то в приемник устанавливаем Unknown элемент
                            if (!String.IsNullOrEmpty(hier_info.Custom_AllMemberUniqueName) &&
                                hier_info.Custom_AllMemberUniqueName == wrap.UniqueName)
                            {
                                if (!String.IsNullOrEmpty(hier_info.DefaultMember) &&
                                    hier_info.DefaultMember == hier_info.Custom_AllMemberUniqueName)
                                {
                                    MemberWrap unk_wrap = new MemberWrap();
                                    unk_wrap.IsUnknownMember = true;
                                    item.DestMember = unk_wrap;
                                }
                                else
                                {
                                    if (!String.IsNullOrEmpty(hier_info.DefaultMember))
                                    {
                                        MemberWrap def_wrap = new MemberWrap();
                                        def_wrap.IsDefaultMember = true;
                                        item.DestMember = def_wrap;
                                    }
                                }
                            }
                        }
                        list.Add(item);
                    }
                }
            }
            m_Coordinates.Initialize(list);
        }
        public void Initialize(ValueCopySettingsWrapper wrapper)
        {
            if (wrapper != null)
            {
                m_Value.Text = wrapper.Value;
                m_Coefficient.Text = wrapper.Coefficient.ToString();
                if (wrapper.CopyType == ValueCopyTypes.CopyValueFromSource)
                {
                    m_CopyType.Combo.SelectedIndex = 0;
                }
                else
                {
                    m_CopyType.Combo.SelectedIndex = 1;
                }

                m_Coordinates.ShowNotEmpty = wrapper.ShowNotEmptyCoordinates;

                List<CoordinateItem> coordinates = new List<CoordinateItem>();
                foreach (CoordinateItem_Wrapper coord_wrap in wrapper.CoordinatesList)
                {
                    CoordinateItem item = new CoordinateItem(coord_wrap);
                    coordinates.Add(item);
                }

                m_Coordinates.Initialize(coordinates);
            }
        }