public SimpleNotification(string header, string text, WindowConfig marking, int timeout, int animDuration) : base(timeout, animDuration)
        {
            Header = header;
            Text   = text;

            InitComponents(marking);
        }
예제 #2
0
        public override void BeginInit()
        {
            if (!InitChecked)
            {
                Name = GetType().Name;
                var hasConfig = WindowSettings.Windows.Any(c => { return(c.Name == Name); });

                if (!hasConfig)
                {
                    Config = new WindowConfig(Name);
                    WindowSettings.Windows.Add(Config);
                }
                else
                {
                    Config = GetConfig();
                }

                LoadConfig();
                if (DebugStartUp && !IsInitialized)
                {
                    Debug.WriteLine(Name + " initializing");
                }
            }

            base.BeginInit();
        }
예제 #3
0
        public static void PopToOpenWindowStack(string winName)
        {
            if (Instance._curOpenWindow == winName)
            {
                return;
            }

            var win = Instance._openWindowStack.Find((a) =>
            {
                return(a.winname == winName);
            });

            if (win == null)
            {
                return;
            }

            WindowConfig winCfg = null;

            if (Instance._windowCache.ContainsKey(winName))
            {
                winCfg = Instance._windowCache[winName].ConfigData;
            }
            else
            {
                winCfg = DataManager.Instance.windowConfigDatas.GetUnit(winName);
            }

            if (winCfg != null && !winCfg.IsHover)
            {
                OpenWindow("EmptyWindow");
                bool find = UpdateOpenList(winName);
                Instance._openWindowStack.Add(win);
            }
        }
예제 #4
0
        /// <summary>
        /// Loads the window configuration from the file.
        /// </summary>
        private void Load()
        {
            // Check, the storage file exists already.
            bool fileDoesnotExist;
            var  fullPath = FileUtil.GetWindowConfigFileName(out fileDoesnotExist);

            if (fileDoesnotExist)
            {
                WindowConfig = new WindowConfig
                {
                    Version = "1.0"
                };
                Save();
            }

            // Create serializer.
            var serializer = new DataContractSerializer(typeof(WindowConfig));

            // Create reader.
            using (var streamReader = new StreamReader(fullPath))
            {
                using (var xmlReader = XmlReader.Create(streamReader))
                {
                    // Deserialize.
                    WindowConfig = (WindowConfig)serializer.ReadObject(xmlReader);
                }
            }
        }
예제 #5
0
        public void OpenWindow(UIWindows windowType, WindowConfig config = null)
        {
            if (!IsWindowExists(windowType))
            {
                Debug.Log($" # -UI- # Window not defined for window type: `{windowType}`");
                return;
            }

            if (IsWindowOpened(windowType))
            {
                Debug.Log($" # -UI- # Window `{windowType}` already opened!");
                return;
            }

            var newWindow = uiWindows[windowType];

            if (newWindow.CloseOthers)
            {
                CloseAllWindows();
            }

            if (config != null)
            {
                newWindow.SetConfig(config);
            }

            newWindow.Open();
            newWindow.transform.SetAsLastSibling();
            currentWindows.Add(newWindow);
        }
예제 #6
0
        protected override void OnPreInit(EventArgs e)
        {
            base.OnPreInit(e);
            _viewPort          = new Viewport();
            _grid              = new GridPanelEx();
            _grid.ItemType     = typeof(UserManagerModel);
            _grid.ReadData    += _grid_ReadData;
            _grid.Delete      += _grid_Delete;
            _grid.EnableAdd    = EnableAddUser;
            _grid.EnableEdit   = EnableEditUser;
            _grid.EnableRemove = EnableRemoveUser;
            _grid.Region       = Region.Center;
            _grid.ID           = "gridUsers";
            _grid.EditorConfig = new GridPanelEditorConfig();
            var _addWindowConfig = new WindowConfig();

            _addWindowConfig.Height      = 400;
            _addWindowConfig.Width       = 800;
            _addWindowConfig.Url         = AddUrl;
            _addWindowConfig.Title       = "添加用户";
            _grid.EditorConfig.AddWindow = _addWindowConfig;
            var _editWindowConfig = new WindowConfig();

            _editWindowConfig.Height = 400;
            _editWindowConfig.Width  = 800;
            _editWindowConfig.Url    = EditUrl;
            _editWindowConfig.Title  = "编辑用户";
            _editWindowConfig.ExtraParams.Add(new Parameter("id", "record.data.Id", ParameterMode.Raw));
            _grid.EditorConfig.EditWindow = _editWindowConfig;
            _viewPort.Add(_grid);
            _viewPort.Layout = "border";
            Controls.Add(_viewPort);
        }
예제 #7
0
        public override void SetConfig(WindowConfig config)
        {
            base.SetConfig(config);

            var windowConfig = (ItemReceivedWindowConfig)config;

            currentItem = windowConfig.Item;
        }
 protected override void OnDockWindowSaving(DockWindow window, DockPageSavingEventArgs e)
 {
     //TODO: make BaseWindowConfig, use fabric method for WindowConfig creation and move this logic to base class.
     if (window is DocumentWindow docWindow)
     {
         WindowConfig.FromDocumentWindow(docWindow).Save(e.XmlWriter);
     }
     //window.OnSaving( e.XmlWriter );
 }
예제 #9
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base. Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            base.Initialize();
            WindowConfig winConfig = new WindowConfig();

            winConfig.ConfigureMainWindow(this);

            Universal.Default.GameHasRunBefore = true;
        }
예제 #10
0
        // CONSTRUCTORS
        public MainForm()
        {
            InitializeComponent();
            amount = 4;

            // drawing initialize
            animation    = new DrawBase[amount];
            animation[0] = new HeartBeat(window1.GraphicPanel.Width, window1.GraphicPanel.Height);
            animation[1] = new PurpleRain(window2.GraphicPanel.Width, window2.GraphicPanel.Height);
            animation[2] = new Radar(window3.GraphicPanel.Width, window3.GraphicPanel.Height);
            animation[3] = new Shuffle(window4.GraphicPanel.Width, window4.GraphicPanel.Height);
            // configuration initialize
            windowConfiguration    = new WindowConfig[amount];
            windowConfiguration[0] = new WindowConfig()
            {
                Drawing = animation[0], Window = window1, Delay = 10
            };
            windowConfiguration[1] = new WindowConfig()
            {
                Drawing = animation[1], Window = window2, Delay = 100
            };
            windowConfiguration[2] = new WindowConfig()
            {
                Drawing = animation[2], Window = window3, Delay = 25
            };
            windowConfiguration[3] = new WindowConfig()
            {
                Drawing = animation[3], Window = window4, Delay = 250
            };

            // create threads
            threads = new Thread[amount];
            for (int i = 0; i < amount; ++i)
            {
                threads[i] = new Thread(RunWindow);
                threads[i].Start(windowConfiguration[i]);
            }
            // sign up for events
            int index = 0;

            foreach (Window window in scaleTbl.Controls.OfType <Window>())
            {
                int localIndex = index;

                // resizing
                window.PanelResized += animation[localIndex].PanelSizeChange;
                // painting
                window.PanelPaint += (o, e) => e.Graphics.DrawImage(animation[localIndex].Show(), 0, 0);

                // threads controling
                window.SuspendButtonClick += (o, e) => threads[localIndex].Suspend();
                window.ResumeButtonClick  += (o, e) => threads[localIndex].Resume();

                ++index;
            }
        }
예제 #11
0
    /// <summary>
    /// 获取数据表行。
    /// </summary>
    /// <param name="id">数据表行的编号。</param>
    /// <returns>数据表行。</returns>
    public WindowConfig GetConfig(int id)
    {
        WindowConfig config = null;

        if (m_ConfigDic.TryGetValue(id, out config))
        {
            return(config);
        }
        return(null);
    }
예제 #12
0
        public WindowConfig GetInfo()
        {
            WindowConfig info = new WindowConfig();

            info.WinPos_X    = (int)(this.Left);
            info.WinPos_Y    = (int)(this.Top);
            info.Win_Height  = (int)this.Height;
            info.Win_Width   = (int)this.Width;
            info.WindowState = this.WindowState;
            return(info);
        }
예제 #13
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here

            base.Initialize();
            WindowConfig winConfig = new WindowConfig();

            winConfig.ConfigureMainWindow(this);

            Universal.Default.GameHasRunBefore = true;
        }
예제 #14
0
        public MainWindow()
        {
            ConsoleLogger.Init();

            AppDomain.CurrentDomain.ProcessExit += new EventHandler(OnProcessExit);

            window = this;

            InitializeComponent();

            WindowConfig.Init();

            //the timer is used to let the window initialize first, then move the screen
            DispatcherTimer timer = new DispatcherTimer();

            timer.Interval = TimeSpan.FromMilliseconds(100);
            timer.Start();
            timer.Tick += new EventHandler(delegate(object s, EventArgs a)
            {
                if (WindowConfig.IsAutoRestart == 1)
                {
                    this.Height      = WindowConfig.WindowHeight;
                    this.Width       = WindowConfig.WindowWidth;
                    this.Top         = WindowConfig.WindowTop;
                    this.Left        = WindowConfig.WindowLeft;
                    this.WindowState = WindowConfig.WindowState;
                }
                //reset the window config
                WindowConfig.IsAutoRestart = 0;
                WindowConfig.Save();

                timer.Stop();
            });



            DataContext = new MainWindowViewModel();

            //set the default selection to 1
            leftControlBar.SelectedIndex = 0;

            Modality.AddDefault();
            RP.AddDefault();
            Doctor.AddDefault();
            Room.AddDefault();

            //Start the timer, restart the program automatically every day
            WindowAutoRestart.Init();

            InjectionsManager.Init();

            NetworkManager.Init(this, WindowConfig.IsAutoRestart == 1, WindowConfig.IsServer == 1);
        }
예제 #15
0
 public void SetUp()
 {
     _windowConfig = new WindowConfig
     {
         Height          = 600,
         Width           = 800,
         Left            = 0,
         Top             = 0,
         StartupLocation = WindowStartupLocation.CenterScreen,
         State           = WindowState.Maximized
     };
 }
        public void WindowConfigTest()
        {
            WindowConfig windowConfig = null;

            Assert.DoesNotThrow(delegate
            {
                windowConfig = new WindowConfig();
            });

            Assert.AreEqual(windowConfig.State, WindowState.Normal);
            Assert.AreEqual(windowConfig.StartupLocation, WindowStartupLocation.CenterScreen);
        }
예제 #17
0
        private void InitializeSplashScreens()
        {
            WindowConfig winConfig = new WindowConfig();

            winConfig.ConfigureMainWindow(this);

            SplashScreens = new List <LogoScreen>()
            {
                new LogoScreen(TextureLoader.LogoMonoGame, 5F),
                new LogoScreen(TextureLoader.LogoFMOD, 5F, "\"FMOD\" and \"FMOD Studio\" are licensed by \"Firelight Technologies Pty Ltd\"")
            };
        }
예제 #18
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RootVisual"/> class.
        /// </summary>
        /// <param name="windowConfig">The window configuration.</param>
        public RootVisual(WindowConfig windowConfig)
        {
            _windowConfig = windowConfig;

            HorizontalAlignment        = HorizontalAlignment.Stretch;
            HorizontalContentAlignment = HorizontalAlignment.Stretch;
            VerticalAlignment          = VerticalAlignment.Stretch;
            VerticalContentAlignment   = VerticalAlignment.Stretch;

            SetLayout();
            Closing += OnClosing;
        }
 /// <summary>
 /// Инициализирует контроллер
 /// </summary>
 /// <param name="useSimpleNoti">true, для использования и настройки <see cref="D35YNC.Notifications.SimpleNotification"/></param>
 /// <param name="customConfig">Кастомные настройки</param>
 public NotificationsController(bool useSimpleNoti, WindowConfig customConfig = null)
 {
     _Notifications = new List <Notification>();
     if (useSimpleNoti)
     {
         Config        = customConfig ?? new WindowConfig();
         _CanUseConfig = true;
     }
     else
     {
         _CanUseConfig = false;
     }
 }
예제 #20
0
        internal void LoadConfig()
        {
            if (Config == null)
            {
                Config          = new WindowConfig();
                Config.Width    = 250;
                Config.Height   = 200;
                Config.Opacity  = 1;
                Config.Top      = 50;
                Config.Left     = 50;
                Config.FontSize = 16;
                return;
            }

            if (Config.Width.Equals(0) && Config.Height.Equals(0))
            {
                double scHeight  = SystemParameters.PrimaryScreenHeight;
                double scWidth   = SystemParameters.PrimaryScreenWidth;
                double newWidth  = scWidth / 1.5;
                double newHeight = newWidth / 1.7;
                Config.Width  = newWidth;
                Config.Height = newHeight;
                Config.Left   = (scWidth - newWidth) / 2;
                Config.Top    = (scHeight - newHeight) / 2;
            }

            if (DisableSavedWindowState)
            {
                return;
            }

            Config.FontSize = Config.FontSize == 0 ? 16 : Config.FontSize;
            Config.Opacity  = Config.Opacity == 0 ? 1 : Config.Opacity;
            FixNan(this);
            if (DebugStartUp)
            {
                Debug.WriteLine("Loading " + Name);
            }
            Height = Config.Height;
            Width  = Config.Width;
            Top    = Config.Top;
            Left   = Config.Left;
            if (Config.WindowState == WindowState.Minimized)
            {
                Config.WindowState = WindowState.Normal;
            }
            WindowState = Config.WindowState;
            Opacity     = Config.Opacity;
            FontSize    = Config.FontSize;
        }
예제 #21
0
        public CharlieWindow(int width, int height, Action <Window, Renderer2D> onDraw)
        {
            _onDrawAction = onDraw;

            Panel           = new Panel();
            Panel.Width     = width;
            Panel.Height    = height;
            Panel.Dock      = DockStyle.Fill;
            Panel.BackColor = System.Drawing.Color.Black;
            Panel.Location  = new System.Drawing.Point(0, 0);
            Panel.Click    += (object o, EventArgs e) => { Panel.Parent.Select(); };

            var screenDimensions = Screen.FromControl(Panel).Bounds;

            WindowConfig config = new WindowConfig(screenDimensions.Width, screenDimensions.Height, "", WindowFlags.Borderless | WindowFlags.PositionOrigin);

            NativeWindow = new Window(config);
            NativeWindow.SetClearColor(0.1f, 0.2f, 0.3f, 1.0f);

            Timer timer = new Timer();

            timer.Interval = 1000 / 120;

            _renderer = new Renderer2D();
            _renderer.Initalize(Matrix4.Orthographic(screenDimensions.Width, 0, 0, screenDimensions.Height, 1, -1));

            Font font = new Font("Assets/WendyOne-Regular.ttf", 38);

            timer.Tick += (object o, EventArgs e) => {
                NativeWindow.PollEvents();
                NativeWindow.Clear();
                _renderer.Begin();
                _onDrawAction(NativeWindow, _renderer);
                _renderer.End();
                _renderer.Present();
                NativeWindow.SwapBuffers();
            };

            Panel.Disposed += (object o, EventArgs e) => { _renderer.Dispose(); };

            timer.Start();

            Win32.SetWindowPos(NativeWindow.GetHWND(), IntPtr.Zero, 0, 0, 0, 0, Win32.SWP_NOSIZE);
            Win32.SetParent(NativeWindow.GetHWND(), Panel.Handle);
            Win32.SetWindowLong(NativeWindow.GetHWND(), Win32.GWL_STYLE, (uint)Win32.WS_CHILD);
        }
예제 #22
0
        internal ProfileConfig(string profilesFolder)
        {
            profileChanged = new DefaultPublicEvent();

            loader = new SettingsLoader(profilesFolder);
            profileName = null;
            settings = new SynchronizedSettings("Profile");
            userSettings = new SettingsFragment(settings, "UserSettings");

            maxJournalLen = new SettingInt32Entry(settings, 500, "MaxJournalLen", "Config");
            overrideSpeechColor = new SettingBoolEntry(settings, false, "OverrideSpeechColor", "Config");

            colors = new ColorsConfig(settings);
            window = new WindowConfig(settings);

            fpsLimit = new SettingInt32Entry(settings, 0, "fps", "Config", "FpsLimiter");
        }
        protected override void OnDockWindowLoading(DockWindow window, DockPageLoadingEventArgs e)
        {
            if (window == null)
            {
                var config = new WindowConfig();
                config.Load(e.XmlReader);

                window = EditorAPI.CreateWindowImpl(WorkspaceWindow.Document, config.ObjectPath, config.OpenAsSettings);
                AddDockWindowInternal(window, false, e.Page);
            }
            else
            {
                //window already created
            }

            //window.OnLoading( e.XmlReader );
        }
예제 #24
0
        internal ProfileConfig(string profilesFolder)
        {
            profileChanged = new DefaultPublicEvent();

            loader       = new SettingsLoader(profilesFolder);
            profileName  = null;
            settings     = new SynchronizedSettings("Profile");
            userSettings = new SettingsFragment(settings, "UserSettings");

            maxJournalLen       = new SettingInt32Entry(settings, 500, "MaxJournalLen", "Config");
            overrideSpeechColor = new SettingBoolEntry(settings, false, "OverrideSpeechColor", "Config");

            colors = new ColorsConfig(settings);
            window = new WindowConfig(settings);

            fpsLimit = new SettingInt32Entry(settings, 0, "fps", "Config", "FpsLimiter");
        }
예제 #25
0
        private string BuildCommandLine(string nodeId)
        {
            string cmd = "";

            if (exeListBox.SelectedIndex >= 0)
            {
                cmd += exeListBox.Items[exeListBox.SelectedIndex].ToString();
            }
            cmd += " uvr_node=" + nodeId;
            if (configListBox.SelectedIndex >= 0)
            {
                cmd += " uvr_cfg=" + configListBox.Items[configListBox.SelectedIndex].ToString();
            }
            if (windowedCheckBox.Checked)
            {
                cmd += " -windowed";
            }
            if (resXCheckBox.Checked)
            {
                cmd += " -resX=" + resXTextBox.Text;
            }
            if (resYCheckBox.Checked)
            {
                cmd += " -resY=" + resYTextBox.Text;
            }
            if (wcUseCheckBox.Checked)
            {
                if (wcDict.ContainsKey(nodeId))
                {
                    WindowConfig wc = wcDict[nodeId];
                    cmd += " WinX=" + wc.left.ToString() + " WinY=" + wc.top.ToString();
                }
            }
            if (debugCheckBox.Checked)
            {
                cmd += " -uvr_dev_debug";
            }

            if (oglCheckBox.Checked)
            {
                cmd += " -opengl3";
            }

            cmd += " -uvr_cluster -nosplash -nowrite uvr_camera=camera_dynamic";
            return(cmd);
        }
예제 #26
0
        static void Main()
        {
            // This creates a list for the game engine to have access to the custom scenes
            List <string> SceneList = new List <string>();
            // Alternatly you could ignore the config file and manualy type these in to pass to SceneManager
            WindowConfig config = new WindowConfig();

            // Loops through all scenes specified in the config
            for (int i = 0; i < config.Scenes.Length; i++)
            {
                Type type = Type.GetType("Game_Demo." + config.Scenes[i]);
                SceneList.Add(type.AssemblyQualifiedName);
            }
            // Initlises your game with all your specified scenes
            using (var game = new SceneManager(SceneList.ToArray()))
                game.Run();
        }
예제 #27
0
 public static void Init()
 {
     ItemConfig.Init();
     TestConfig.Init();
     WindowConfig.Init();
     EffectConfig.Init();
     EquipConfig.Init();
     IconConfig.Init();
     LanguageConfig.Init();
     WorldBossConfig.Init();
     NpcConfig.Init();
     MapConfig.Init();
     DungeonConfig.Init();
     DamageNumConfig.Init();
     SkillConfig.Init();
     MobAssetConfig.Init();
     //初始化结束
 }
예제 #28
0
 public SceneManager(string[] pNamespace) : base(width, height, new OpenTK.Graphics.GraphicsMode(new OpenTK.Graphics.ColorFormat(8, 8, 8, 8), 16))
 {
     config    = new WindowConfig();
     Namespace = pNamespace;
     //mainAssembly = pAssembly;
     base.Width    = config.Width;
     base.Height   = config.Height;
     CursorVisible = false;
     lockMouse     = true;
     // Iniitlise managers
     systemManager = new SystemManager();
     entityManager = new EntityManager();
     // Set up main camera
     camera = new Camera(config.Width, config.Height);
     // Setup audio listener
     ListenerPos = camera.Position;
     ListenerDir = camera.View.ExtractTranslation();
     ListenerUp  = Vector3.UnitY;
 }
예제 #29
0
    /// <summary>
    /// 打开界面
    /// </summary>
    /// <param name="windowEnum"></param>
    /// <param name="userData"></param>
    public void OpenWindow(WindowEnum windowEnum, object userData = null)
    {
        WindowConfig         config = WindowConfigList.Instance.GetConfig((int)windowEnum);
        WindowGroupComponent windowGroupComponent = m_WindowGroupComponents[config.WindowGroup];

        if (config.Singleton)
        {
            WindowBaseView windowBase = GetWindow(windowEnum);
            if (windowBase != null)
            {
                return;
            }
        }

        windowModel.AddOpenWindowData(windowEnum, userData);

        string assetPath = AssetPathUtil.GetWindowAssetPath(config.AssetName);

        Addressables.InstantiateAsync(assetPath, windowGroupComponent.transform, false).Completed += (aoh) =>
        {
            Debug.LogWarning("111");
            WindowBaseView baseWindow = aoh.Result.GetOrAddComponent <WindowBaseView>();
            baseWindow.config = config;

            if (config.PauseCovered)
            {
                LinkedList <WindowBaseView> allWindows = windowGroupComponent.GetAllWindows();
                foreach (WindowBaseView window in allWindows)
                {
                    if (window.isActiveAndEnabled)
                    {
                        window.gameObject.SetActive(false);
                    }
                }
            }

            windowGroupComponent.AddWindow(baseWindow);
            MobiusMediator mobiusMediator = aoh.Result.GetComponent <MobiusMediator>();
            mobiusMediator.windowEnum = windowEnum;
            Debug.LogWarning("222");
        };
    }
예제 #30
0
        static void Main(string[] args)
        {
            string Version = "1.0.5";
            // This creates a list for the game engine to have access to the custom scenes
            List <string> SceneList = new List <string>();
            // Alternatly you could ignore the config file and manualy type these in to pass to SceneManager
            WindowConfig config = new WindowConfig();

            // Loops through all scenes specified in the config
            for (int i = 0; i < config.Scenes.Length; i++)
            {
                Type type = Type.GetType("Gorillas3D.Scenes." + config.Scenes[i]);
                SceneList.Add(type.AssemblyQualifiedName);
            }
            // Output version
            Console.WriteLine("Gorillas 3D by DH -> Version: " + Version);
            // Initlises your game with all your specified scenes
            using (var game = new SceneManager(SceneList.ToArray()))
                game.Run();
        }
예제 #31
0
        public WindowSpacer(Account acc)
        {
            InitializeComponent();
            lb_charname.Content = acc.Nickname;


            if (acc.Settings.Icon != null)
            {
                img_icon.Source = acc.Settings.Icon.Image;
            }


            WindowConfig winconfig = acc.Settings.WinConfig;

            Left = winconfig.WinPos_X;
            Top  = winconfig.WinPos_Y;

            Width  = winconfig.Win_Width;
            Height = winconfig.Win_Height;
        }
예제 #32
0
 public override void RenderView(System.Web.Mvc.ViewContext viewContext, System.IO.TextWriter writer)
 {
     writer.Write("<!DOCTYPE html>");
     writer.Write("<head>");
     writer.Write("<title>后台管理中心 - " + AppConfig.WebTitle + "</title>");
     writer.Write("</head><body></body>");
     writer.Write(Html.X().ResourceManager().ToHtmlString());
     var _viewPort = new Viewport();
     var _grid = new Xinchen.ExtNetBase.Mvc.GridPanelEx();
     _grid.ItemType = typeof(UserManagerModel);
     _grid.ReadUrl = Url.Action("GetAccounts");
     //_grid.ReadData += _grid_ReadData;
     //_grid.Delete += _grid_Delete;
     //_grid.EnableAdd = EnableAddUser;
     //_grid.EnableEdit = EnableEditUser;
     //_grid.EnableRemove = EnableRemoveUser;
     _grid.Region = Region.Center;
     _grid.ID = "gridUsers";
     _grid.EditorConfig = new GridPanelEditorConfig();
     var _addWindowConfig = new WindowConfig();
     _addWindowConfig.Height = 400;
     _addWindowConfig.Width = 800;
     _addWindowConfig.Url = Url.Action("AddAccount");
     _addWindowConfig.Title = "添加用户";
     _grid.EditorConfig.AddWindow = _addWindowConfig;
     var _editWindowConfig = new WindowConfig();
     _editWindowConfig.Height = 400;
     _editWindowConfig.Width = 800;
     _editWindowConfig.Url = Url.Action("UpdateAccount") + "?id=@id";
     _editWindowConfig.Title = "编辑用户";
     _editWindowConfig.ExtraParams.Add(new Parameter("id", "record.data.Id", ParameterMode.Raw));
     _grid.EditorConfig.EditWindow = _editWindowConfig;
     _viewPort.Add(_grid);
     _viewPort.Layout = "border";
     writer.Write(_viewPort.ToBuilder().ToHtmlString());
 }