public ObjectSaveAsDialog(IStorageManager storageManager)
        {
            m_StorageManager = storageManager;
            m_Dlg            = new ModalDialog();

            m_Dlg.MinHeight     = 200;
            m_Dlg.MinWidth      = 300;
            m_Dlg.Height        = 400;
            m_Dlg.Width         = 500;
            m_Dlg.Caption       = Localization.SaveAsDialog_Caption;
            m_Dlg.DialogOk     += new EventHandler <DialogResultArgs>(Dlg_DialogOk);
            m_Dlg.DialogClosed += new EventHandler <DialogResultArgs>(m_Dlg_DialogClosed);

            Grid LayoutRoot = new Grid();

            LayoutRoot.ColumnDefinitions.Add(new ColumnDefinition());
            LayoutRoot.ColumnDefinitions.Add(new ColumnDefinition());

            m_List                       = new ObjectDescriptionListControl();
            m_List.Margin                = new Thickness(0, 0, 5, 0);
            m_List.SelectionChanged     += new EventHandler <SelectionChangedEventArgs <ObjectStorageFileDescription> >(m_List_SelectionChanged);
            m_List.ObjectSelected       += new EventHandler <CustomEventArgs <ObjectStorageFileDescription> >(m_List_ObjectSelected);
            m_List.DeleteButtonClick    += new EventHandler <CustomEventArgs <ObjectStorageFileDescription> >(m_List_DeleteButtonClick);
            m_List.DeleteAllButtonClick += new EventHandler <CustomEventArgs <ObjectStorageFileDescription> >(m_List_DeleteAllButtonClick);
            LayoutRoot.Children.Add(m_List);

            RanetGridSplitter splitter_Vert = new RanetGridSplitter();

            splitter_Vert.IsTabStop = false;
            LayoutRoot.Children.Add(splitter_Vert);
            Grid.SetColumn(splitter_Vert, 0);
            splitter_Vert.Background          = new SolidColorBrush(Colors.Transparent);
            splitter_Vert.HorizontalAlignment = HorizontalAlignment.Right;
            splitter_Vert.VerticalAlignment   = VerticalAlignment.Stretch;

            m_Description = new ObjectDescriptionControl()
            {
                Margin = new Thickness(1, 0, 0, 0)
            };
            m_Description.EndEdit += new EventHandler(m_Description_EndEdit);
            LayoutRoot.Children.Add(m_Description);
            Grid.SetColumn(m_Description, 1);

            m_Dlg.Content = LayoutRoot;

            if (m_StorageManager != null)
            {
                m_StorageManager.InvokeCompleted -= new EventHandler <DataLoaderEventArgs>(m_StorageManager_ActionCompleted);
                m_StorageManager.InvokeCompleted += new EventHandler <DataLoaderEventArgs>(m_StorageManager_ActionCompleted);
            }
        }
        public ObjectLoadDialog(IStorageManager storageManager)
        {
            m_StorageManager = storageManager;
            m_Dlg = new ModalDialog();

            m_Dlg.MinHeight = 200;
            m_Dlg.MinWidth = 300;
            m_Dlg.Height = 400;
            m_Dlg.Width = 500;
            m_Dlg.Caption = Localization.LoadDialog_Caption;
            m_Dlg.DialogOk += new EventHandler<DialogResultArgs>(Dlg_DialogOk);

            Grid LayoutRoot = new Grid();
            LayoutRoot.ColumnDefinitions.Add(new ColumnDefinition());
            LayoutRoot.ColumnDefinitions.Add(new ColumnDefinition());

            m_List = new ObjectDescriptionListControl();
            m_List.Margin = new Thickness(0, 0, 5, 0);
            m_List.SelectionChanged += new EventHandler<SelectionChangedEventArgs<ObjectStorageFileDescription>>(m_List_SelectionChanged);
            m_List.ObjectSelected += new EventHandler<CustomEventArgs<ObjectStorageFileDescription>>(m_List_ObjectSelected);
            m_List.DeleteButtonClick += new EventHandler<CustomEventArgs<ObjectStorageFileDescription>>(m_List_DeleteButtonClick);
            m_List.DeleteAllButtonClick += new EventHandler<CustomEventArgs<ObjectStorageFileDescription>>(m_List_DeleteAllButtonClick);
            LayoutRoot.Children.Add(m_List);

            RanetGridSplitter splitter_Vert = new RanetGridSplitter();
            splitter_Vert.IsTabStop = false;
            LayoutRoot.Children.Add(splitter_Vert);
            Grid.SetColumn(splitter_Vert, 0);
            splitter_Vert.Background = new SolidColorBrush(Colors.Transparent);
            splitter_Vert.HorizontalAlignment = HorizontalAlignment.Right;
            splitter_Vert.VerticalAlignment = VerticalAlignment.Stretch;

            m_Description = new ObjectDescriptionControl() { Margin = new Thickness(1, 0, 0, 0) };
            m_Description.IsReadonly = true;
            LayoutRoot.Children.Add(m_Description);
            Grid.SetColumn(m_Description, 1);

            m_Dlg.Content = LayoutRoot;

            if (m_StorageManager != null)
            {
                m_StorageManager.InvokeCompleted -= new EventHandler<DataLoaderEventArgs>(m_StorageManager_ActionCompleted);
                m_StorageManager.InvokeCompleted += new EventHandler<DataLoaderEventArgs>(m_StorageManager_ActionCompleted);
            }
        }
		public PivotMdxDesignerControl()
		{
			ScrollViewer Scroll = new ScrollViewer();
			Scroll.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
			Scroll.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;

			LayoutRoot = new Grid();
			LayoutRoot.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
			LayoutRoot.RowDefinitions.Add(new RowDefinition());
			m_Input_Column = new ColumnDefinition() { Width = new GridLength(m_InputColumnWidth) };
			LayoutRoot.ColumnDefinitions.Add(m_Input_Column);
			LayoutRoot.ColumnDefinitions.Add(new ColumnDefinition() { /*Width = new GridLength(2, GridUnitType.Star)*/ });

			// ТУЛБАР 
			m_ToolBar = new RanetToolBar();
			m_ToolBar.Margin = new Thickness(0, 0, 0, 4);
			LayoutRoot.Children.Add(m_ToolBar);
			Grid.SetColumnSpan(m_ToolBar, 2);

			m_ShowMetadataArea = new RanetToggleButton();
			m_ShowMetadataArea.ClickMode = ClickMode.Press;
			m_ShowMetadataArea.Click += new RoutedEventHandler(m_ShowMetadataArea_Click);
			m_ShowMetadataArea.IsChecked = new bool?(true);
			m_ShowMetadataArea.Content = UiHelper.CreateIcon(UriResources.Images.Menu16);
			ToolTipService.SetToolTip(m_ShowMetadataArea, Localization.MdxDesigner_ShowQueryDesigner_ToolTip);
			m_ToolBar.AddItem(m_ShowMetadataArea);

			m_ShowMDXQuery = new RanetToggleButton();
			m_ShowMDXQuery.ClickMode = ClickMode.Press;
			m_ShowMDXQuery.Click += new RoutedEventHandler(m_ShowMDXQuery_Click);
			m_ShowMDXQuery.IsChecked = new bool?(false);
			m_ShowMDXQuery.Content = UiHelper.CreateIcon(UriResources.Images.Mdx16);
			ToolTipService.SetToolTip(m_ShowMDXQuery, Localization.MdxDesigner_ShowQuery_ToolTip);
			m_ToolBar.AddItem(m_ShowMDXQuery);

			m_EditMDXQuery = new RanetToggleButton();
			m_EditMDXQuery.ClickMode = ClickMode.Press;
			m_EditMDXQuery.Click += new RoutedEventHandler(m_EditMDXQuery_Click);
			m_EditMDXQuery.IsChecked = new bool?(false);
			m_EditMDXQuery.Content = UiHelper.CreateIcon(UriResources.Images.Edit16);
			ToolTipService.SetToolTip(m_EditMDXQuery, Localization.MdxDesigner_EditQuery_ToolTip);
			m_ToolBar.AddItem(m_EditMDXQuery);

			m_RunAreaSplitter = new RanetToolBarSplitter();
			m_ToolBar.AddItem(m_RunAreaSplitter);

			m_CalculatedMemberEditor = new RanetToolBarButton();
			m_CalculatedMemberEditor.Content = UiHelper.CreateIcon(UriResources.Images.CustomCalculations16);
			m_CalculatedMemberEditor.Click += new RoutedEventHandler(m_CalculatedMemberEditor_Click);
			ToolTipService.SetToolTip(m_CalculatedMemberEditor, Localization.MdxDesigner_CalculatedMemberEditor);
			m_ToolBar.AddItem(m_CalculatedMemberEditor);

			m_RunQueryAutomatic = new RanetToggleButton();
			m_RunQueryAutomatic.ClickMode = ClickMode.Press;
			m_RunQueryAutomatic.IsChecked = new bool?(true);
			m_RunQueryAutomatic.Content = UiHelper.CreateIcon(UriResources.Images.AutoRun16);
			ToolTipService.SetToolTip(m_RunQueryAutomatic, Localization.MdxDesigner_RunQueryAutomatic);
			m_ToolBar.AddItem(m_RunQueryAutomatic);

			m_ExecuteQuery = new RanetToolBarButton();
			m_ExecuteQuery.Content = UiHelper.CreateIcon(UriResources.Images.Run16);
			m_ExecuteQuery.Click += new RoutedEventHandler(m_ExecuteQuery_Click);
			ToolTipService.SetToolTip(m_ExecuteQuery, Localization.MdxDesigner_ExecuteQuery);
			m_ToolBar.AddItem(m_ExecuteQuery);

			m_StorageAreaSplitter = new RanetToolBarSplitter();
			m_ToolBar.AddItem(m_StorageAreaSplitter);

			m_ImportLayout = new RanetToolBarButton();
			m_ImportLayout.Content = UiHelper.CreateIcon(UriResources.Images.FileImport16);
			m_ImportLayout.Click += new RoutedEventHandler(m_ImportLayout_Click);
			ToolTipService.SetToolTip(m_ImportLayout, Localization.MdxDesigner_ImportLayout_ToolTip);
			m_ToolBar.AddItem(m_ImportLayout);

			m_ExportLayout = new RanetToolBarButton();
			m_ExportLayout.Content = UiHelper.CreateIcon(UriResources.Images.FileExport16);
			m_ExportLayout.Click += new RoutedEventHandler(m_ExportLayout_Click);
			ToolTipService.SetToolTip(m_ExportLayout, Localization.MdxDesigner_ExportLayout_ToolTip);
			m_ToolBar.AddItem(m_ExportLayout);

			Grid Input_LayoutRoot = new Grid();
			Input_LayoutRoot.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(2, GridUnitType.Star) });
			Input_LayoutRoot.Margin = new Thickness(0, 0, 0, 0);
			Input_LayoutRoot.RowDefinitions.Add(new RowDefinition());

			Input_Border = new Border() { Padding = new Thickness(3), BorderBrush = new SolidColorBrush(Colors.DarkGray), BorderThickness = new Thickness(1) };
			Input_Border.Margin = new Thickness(0, 0, 5, 0);
			Input_Border.Child = Input_LayoutRoot;

			Grid Ouput_LayoutRoot = new Grid();
			Ouput_LayoutRoot.Margin = new Thickness(0, 0, 0, 0);
			// По умолчанию высота 0
			m_MDX_Row = new RowDefinition() { Height = new GridLength(0.0) };
			Ouput_LayoutRoot.RowDefinitions.Add(m_MDX_Row);
			Ouput_LayoutRoot.RowDefinitions.Add(new RowDefinition() /*{ Height = new GridLength(2, GridUnitType.Star) }*/);

			LayoutRoot.Children.Add(Input_Border);
			Grid.SetRow(Input_Border, 1);
			LayoutRoot.Children.Add(Ouput_LayoutRoot);
			Grid.SetRow(Ouput_LayoutRoot, 1);
			Grid.SetColumn(Ouput_LayoutRoot, 1);

			LayoutRoot_VertSplitter = new RanetGridSplitter();
			LayoutRoot_VertSplitter.VerticalAlignment = VerticalAlignment.Stretch;
			LayoutRoot_VertSplitter.HorizontalAlignment = HorizontalAlignment.Right;
			LayoutRoot_VertSplitter.IsTabStop = false;
			LayoutRoot_VertSplitter.Background = new SolidColorBrush(Colors.Transparent);
			LayoutRoot.Children.Add(LayoutRoot_VertSplitter);
			Grid.SetRow(LayoutRoot_VertSplitter, 1);
			Grid.SetColumn(LayoutRoot_VertSplitter, 0);

			// Информация о кубе
			// Просмотрщик куба
			m_ServerExplorer = new ServerExplorerCtrl();
			m_ServerExplorer.Margin = new Thickness(0, 0, 0, 5);   // Для RanetGridSplitter
			m_ServerExplorer.CubeBrowser.DragNodes = true;
			m_ServerExplorer.CubeBrowser.DragStarted += new EventHandler<DragNodeArgs<DragStartedEventArgs>>(m_CubeBrowser_DragStarted);
			m_ServerExplorer.CubeBrowser.DragDelta += new EventHandler<DragNodeArgs<DragDeltaEventArgs>>(m_CubeBrowser_DragDelta);
			m_ServerExplorer.CubeBrowser.DragCompleted += new EventHandler<DragNodeArgs<DragCompletedEventArgs>>(m_CubeBrowser_DragCompleted);
			m_ServerExplorer.CubeSelected += new EventHandler<CustomEventArgs<string>>(m_ServerExplorer_CubeSelected);

			Input_LayoutRoot.Children.Add(m_ServerExplorer);
			Grid.SetRow(m_ServerExplorer, 0);

			Areas_LayoutRoot = new Grid();
			Areas_LayoutRoot.ColumnDefinitions.Add(new ColumnDefinition());
			Areas_LayoutRoot.ColumnDefinitions.Add(new ColumnDefinition());
			Areas_LayoutRoot.RowDefinitions.Add(new RowDefinition());
			Areas_LayoutRoot.RowDefinitions.Add(new RowDefinition());

			m_FilterAreaContainer = new PivotAreaContainer();
			m_FilterAreaContainer.ItemRemoved += new EventHandler<AreaItemArgs>(AreaContainer_ItemRemoved);
			m_FilterAreaContainer.Margin = new Thickness(0, 3, 0, 0);
			m_FilterAreaContainer.Icon = UriResources.Images.FiltersArea16;
			m_FilterAreaContainer.Caption = Localization.MdxDesigner_FilterArea_Caption;
			m_FilterAreaContainer.BeforeShowContextMenu += new EventHandler<AreaItemArgs>(m_FilterAreaContainer_BeforeShowContextMenu);
			m_FilterAreaContainer.ItemsListChanged += new EventHandler(AreaContainer_ItemsListChanged);
			Areas_LayoutRoot.Children.Add(m_FilterAreaContainer);
			Grid.SetRow(m_FilterAreaContainer, 0);
			Grid.SetColumn(m_FilterAreaContainer, 0);

			m_RowsAreaContainer = new PivotAreaContainer();
			m_RowsAreaContainer.ItemRemoved += new EventHandler<AreaItemArgs>(AreaContainer_ItemRemoved);
			m_RowsAreaContainer.Margin = new Thickness(0, 5, 0, 0);
			m_RowsAreaContainer.Icon = UriResources.Images.RowsArea16;
			m_RowsAreaContainer.Caption = Localization.MdxDesigner_RowsArea_Caption;
			m_RowsAreaContainer.BeforeShowContextMenu += new EventHandler<AreaItemArgs>(m_RowsAreaContainer_BeforeShowContextMenu);
			m_RowsAreaContainer.ItemsListChanged += new EventHandler(AreaContainer_ItemsListChanged);
			Areas_LayoutRoot.Children.Add(m_RowsAreaContainer);
			Grid.SetRow(m_RowsAreaContainer, 1);
			Grid.SetColumn(m_RowsAreaContainer, 0);

			m_ColumnsAreaContainer = new PivotAreaContainer();
			m_ColumnsAreaContainer.ItemRemoved += new EventHandler<AreaItemArgs>(AreaContainer_ItemRemoved);
			m_ColumnsAreaContainer.Margin = new Thickness(5, 3, 0, 0);
			m_ColumnsAreaContainer.Icon = UriResources.Images.ColumnsArea16;
			m_ColumnsAreaContainer.Caption = Localization.MdxDesigner_ColumnsArea_Caption;
			m_ColumnsAreaContainer.BeforeShowContextMenu += new EventHandler<AreaItemArgs>(m_ColumnsAreaContainer_BeforeShowContextMenu);
			m_ColumnsAreaContainer.ItemsListChanged += new EventHandler(AreaContainer_ItemsListChanged);
			Areas_LayoutRoot.Children.Add(m_ColumnsAreaContainer);
			Grid.SetRow(m_ColumnsAreaContainer, 0);
			Grid.SetColumn(m_ColumnsAreaContainer, 1);

			m_DataAreaContainer = new PivotAreaContainer();
			m_DataAreaContainer.ItemRemoved += new EventHandler<AreaItemArgs>(AreaContainer_ItemRemoved);
			m_DataAreaContainer.Margin = new Thickness(5, 5, 0, 0);
			m_DataAreaContainer.Icon = UriResources.Images.DataArea16;
			m_DataAreaContainer.Caption = Localization.MdxDesigner_DataArea_Caption;
			m_DataAreaContainer.ItemsListChanged += new EventHandler(AreaContainer_ItemsListChanged);
			Areas_LayoutRoot.Children.Add(m_DataAreaContainer);
			Grid.SetRow(m_DataAreaContainer, 1);
			Grid.SetColumn(m_DataAreaContainer, 1);

			Input_LayoutRoot.Children.Add(Areas_LayoutRoot);
			Grid.SetRow(Areas_LayoutRoot, 1);

			GridSplitter Input_HorzSplitter = new RanetGridSplitter();
			Input_HorzSplitter.VerticalAlignment = VerticalAlignment.Bottom;
			Input_HorzSplitter.HorizontalAlignment = HorizontalAlignment.Stretch;
			Input_HorzSplitter.IsTabStop = false;
			Input_HorzSplitter.Background = new SolidColorBrush(Colors.Transparent);
			Input_LayoutRoot.Children.Add(Input_HorzSplitter);
			Grid.SetRow(Input_HorzSplitter, 0);
			Grid.SetColumn(Input_HorzSplitter, 0);

			// Результат выполнения запроса
			Grid Pivot_LayotRoot = new Grid();
			Pivot_LayotRoot.Margin = new Thickness(0, 3, 0, 0);
			Pivot_LayotRoot.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
			Pivot_LayotRoot.RowDefinitions.Add(new RowDefinition());

			// Заголовок
			HeaderControl pivot_Header = new HeaderControl(UriResources.Images.PivotGrid16, Localization.MdxDesigner_QueryResult) { Margin = new Thickness(0, 0, 0, 3) };
			Pivot_LayotRoot.Children.Add(pivot_Header);

			// Сводная таблица
			m_PivotGrid = new UpdateablePivotGridControl();
			m_PivotGrid.Margin = new Thickness(0, 0, 0, 0);
			m_PivotGrid.AutoWidthColumns = true;
			m_PivotGrid.DataReorganizationType = DataReorganizationTypes.LinkToParent;
			m_PivotGrid.DefaultMemberAction = MemberClickBehaviorTypes.DrillDown;
			m_PivotGrid.IsUpdateable = true;
			m_PivotGrid.ColumnsIsInteractive = true;
			m_PivotGrid.RowsIsInteractive = true;
			m_PivotGrid.ShowToolBar = true;
			Pivot_LayotRoot.Children.Add(m_PivotGrid);
			Grid.SetRow(m_PivotGrid, 1);

			Pivot_Border = new Border() { Padding = new Thickness(3), BorderBrush = new SolidColorBrush(Colors.DarkGray), BorderThickness = new Thickness(1) };
			Pivot_Border.Margin = new Thickness(0, 0, 0, 0);
			Pivot_Border.Child = Pivot_LayotRoot;

			Ouput_LayoutRoot.Children.Add(Pivot_Border);
			Grid.SetRow(Pivot_Border, 1);

			Output_HorzSplitter = new RanetGridSplitter();
			Output_HorzSplitter.VerticalAlignment = VerticalAlignment.Bottom;
			Output_HorzSplitter.HorizontalAlignment = HorizontalAlignment.Stretch;
			Output_HorzSplitter.IsTabStop = false;
			Output_HorzSplitter.Background = new SolidColorBrush(Colors.Transparent);
			Ouput_LayoutRoot.Children.Add(Output_HorzSplitter);
			Grid.SetRow(Output_HorzSplitter, 0);
			Grid.SetColumn(Output_HorzSplitter, 0);

			// Информация о MDX запросе
			Grid Mdx_LayotRoot = new Grid();
			Mdx_LayotRoot.Margin = new Thickness(0, 3, 0, 0);
			Mdx_LayotRoot.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
			Mdx_LayotRoot.RowDefinitions.Add(new RowDefinition());

			// Заголовок
			HeaderControl mdx_Header = new HeaderControl(UriResources.Images.Mdx16, Localization.MdxDesigner_MdxQuery) { Margin = new Thickness(0, 0, 0, 3) };
			Mdx_LayotRoot.Children.Add(mdx_Header);

			// Текст запроса
			m_MdxQuery = new RichTextBox();
			m_MdxQuery.AcceptsReturn = true;
			m_MdxQuery.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
			m_MdxQuery.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
			m_MdxQuery.IsReadOnly = true;
			Mdx_LayotRoot.Children.Add(m_MdxQuery);
			Grid.SetRow(m_MdxQuery, 1);

			Mdx_Border = new Border() { Padding = new Thickness(3), BorderBrush = new SolidColorBrush(Colors.DarkGray), BorderThickness = new Thickness(1) };
			Mdx_Border.Margin = new Thickness(0, 0, 0, 5);
			Mdx_Border.Child = Mdx_LayotRoot;

			Ouput_LayoutRoot.Children.Add(Mdx_Border);
			Grid.SetRow(Mdx_Border, 0);

			AllowDragDrop(m_FilterAreaContainer);
			AllowDragDrop(m_ColumnsAreaContainer);
			AllowDragDrop(m_RowsAreaContainer);
			AllowDragDrop(m_DataAreaContainer);

			//Scroll.Content = LayoutRoot;

			m_ServerExplorer.OlapDataLoader = GetOlapDataLoader();
			m_PivotGrid.OlapDataLoader = GetOlapDataLoader();
			m_StorageManager = GetStorageManager();
			m_StorageManager.InvokeCompleted += new EventHandler<DataLoaderEventArgs>(StorageManager_ActionCompleted);

			this.Content = LayoutRoot;
		}