public virtual void Init()
 {
     if (!IsReady)
     {
         SimpleWaitCursor wc = new SimpleWaitCursor();
         try
         {
             _form.SetStatusText(String.Format("Loading {0} ...", _name));
             Initializing = true;
             InitControls();
             InitAssemblyPath();
         }
         catch
         {
             _form.TabControl.SelectedTab = _form.DetailsTabPage;
             throw;
         }
         finally
         {
             wc.Dispose();
             Initializing = false;
             _form.SetStatusText(null);
         }
     }
 }
        void CheckBuiltInContextMenu()
        {
            if (this._contextMenuStrip == null)
            {
                ContextMenuStrip cms = new ContextMenuStrip();

                _cutToolStripMenuItem = new ToolStripMenuItem("Cut", null, new EventHandler(CutMenuItem_Click));
                cms.Items.Add(_cutToolStripMenuItem);

                _copyToolStripMenuItem = new ToolStripMenuItem("Copy", null, new EventHandler(CopyMenuItem_Click));
                cms.Items.Add(_copyToolStripMenuItem);

                _pasteToolStripMenuItem = new ToolStripMenuItem("Paste", null, new EventHandler(PasteMenuItem_Click));
                cms.Items.Add(_pasteToolStripMenuItem);

                cms.Items.Add(new ToolStripSeparator());

                _selectAllToolStripMenuItem = new ToolStripMenuItem("Select All", null, new EventHandler(SelectAllMenuItem_Click));
                cms.Items.Add(_selectAllToolStripMenuItem);

                cms.Items.Add(new ToolStripSeparator());

                _commitToolStripMenuItem = new ToolStripMenuItem("Commit", null, new EventHandler(CommitMenuItem_Click), Keys.Control | Keys.S);
                cms.Items.Add(_commitToolStripMenuItem);

                _rollbackToolStripMenuItem = new ToolStripMenuItem("Rollback", null, new EventHandler(RollbackMenuItem_Click), Keys.Control | Keys.R);
                cms.Items.Add(_rollbackToolStripMenuItem);

                cms.Opening += new CancelEventHandler(ClassEditBinaryViewContextMenu_Opening);

                _contextMenuStrip = cms;
            }

            this._hexBox.ReadOnly = true;
            if (this._hexBox.ByteProvider == null)
            {
                this._hexBox.ContextMenuStrip = null;
            }
            else
            {
                this._hexBox.ContextMenuStrip = _contextMenuStrip;
                this._hexBox.ReadOnly         = false;
            }

            if (!_hexBox.ReadOnly)
            {
                _form.SetStatusText("CTRL+S to commit, CTRL+R to rollback.");
            }
        }
        void Commit()
        {
            var n = _form.TreeViewHandler.SelectedNode;
            var r = (Resource)n.Tag;

            if (r is EmbeddedResource)
            {
                var er         = (EmbeddedResource)r;
                var detailType = (SimpleAssemblyExplorer.ClassEditResourceHandler.DetailTypes)_form.DetailsTabPage.Tag;
                var data       = Encoding.Unicode.GetBytes(_textbox.Text);

                if (detailType == ClassEditResourceHandler.DetailTypes.TextResource)
                {
                    var newEr = new EmbeddedResource(er.Name, er.Attributes, data);
                    var ad    = _form.TreeViewHandler.GetCurrentAssembly();
                    ad.MainModule.Resources.Remove(er);
                    ad.MainModule.Resources.Add(newEr);
                    n.Tag = newEr;
                }
                else if (detailType == ClassEditResourceHandler.DetailTypes.ResourcesRowAsText)
                {
                    var    row   = _form.ResourceDataGrid.CurrentRow;
                    string key   = _form.ResourceHandler.GetNameCellValue(row);
                    var    newEr = _form.ResourceHandler.ReplaceResource(er, key, data);

                    var ad = _form.TreeViewHandler.GetCurrentAssembly();
                    ad.MainModule.Resources.Remove(er);
                    ad.MainModule.Resources.Add(newEr);
                    n.Tag = newEr;

                    var rowIndex = row.Index;
                    _form.ResourceHandler.InitResource(newEr);

                    row = _form.ResourceDataGrid.Rows[rowIndex];
                    _form.ResourceDataGrid.CurrentCell = row.Cells[0];
                    row.Selected = true;
                    _form.ResourceDataGrid.FirstDisplayedScrollingRowIndex = rowIndex > 10 ? rowIndex - 10 : 0;
                }
                else
                {
                    throw new NotImplementedException();
                }
            }
            _form.SetStatusText("Changes committed.");
        }