public ResxEditorWidget(ResxEditorView view)
        {
            openDialog   = new OpenFileDialog();
            resxNodeList = new Dictionary <string, ResXDataNode>();
            editorView   = view;

            stringDialog = new EditStringDialog();

            typeMenuAudioItem            = new MenuItem("Audio");
            typeMenuAudioItem.Activated += DropDownEventHandler;

            typeMenuFileItem            = new MenuItem("Files");
            typeMenuFileItem.Activated += DropDownEventHandler;

            typeMenuIconItem            = new MenuItem("Icons");
            typeMenuIconItem.Activated += DropDownEventHandler;

            typeMenuImageItem            = new MenuItem("Images");
            typeMenuImageItem.Activated += DropDownEventHandler;

            typeMenuOtherItem            = new MenuItem("Other");
            typeMenuOtherItem.Activated += DropDownEventHandler;

            typeMenuStringItem            = new MenuItem("Strings");
            typeMenuStringItem.Activated += DropDownEventHandler;

            // Menus
            typeMenu = new Menu()
            {
                typeMenuStringItem,
                typeMenuAudioItem,
                typeMenuFileItem,
                typeMenuIconItem,
                typeMenuImageItem,
                typeMenuOtherItem
            };

            // MenuToolButtons
            typeToolButton = new MenuToolButton(null, "Strings")
            {
                Menu = typeMenu
            };

            addButton          = new ToolButton(null, "Add");
            addButton.Clicked += AddButtonEventHandler;

            editButton          = new ToolButton(null, "Edit");
            editButton.Clicked += EditButtonEventHandler;

            removeButton          = new ToolButton(null, "Remove");
            removeButton.Clicked += RemoveButtonEventHandler;

            // Toolbars
            mainToolbar = new Toolbar()
            {
                addButton, editButton, removeButton, typeToolButton
            };

            // ListStores
            audioListStore  = new ListStore(typeof(string), typeof(string), typeof(string));
            fileListStore   = new ListStore(typeof(string), typeof(string), typeof(string), typeof(string));
            iconListStore   = new ListStore(typeof(Pixbuf), typeof(string), typeof(string));
            imageListStore  = new ListStore(typeof(Pixbuf), typeof(string), typeof(string), typeof(string));
            otherListStore  = new ListStore(typeof(string), typeof(string), typeof(string));
            stringListStore = new ListStore(typeof(string), typeof(string), typeof(string), typeof(string));

            // TreeViews
            audioTreeView = new TreeView(audioListStore);
            audioTreeView.Selection.Mode = SelectionMode.Multiple;
            audioTreeView.AppendColumn("ResourceName", new CellRendererText(), "text", 0).Resizable = true;
            audioTreeView.AppendColumn("FileSize", new CellRendererText(), "text", 1).Resizable     = true;
            audioTreeView.AppendColumn("Comment", new CellRendererText(), "text", 2).Resizable      = true;

            fileTreeView = new TreeView(fileListStore);
            fileTreeView.Selection.Mode = SelectionMode.Multiple;
            fileTreeView.AppendColumn("ResourceName", new CellRendererText(), "text", 0).Resizable  = true;
            fileTreeView.AppendColumn("FileSize", new CellRendererText(), "text", 1).Resizable      = true;
            fileTreeView.AppendColumn("FileName/Path", new CellRendererText(), "text", 2).Resizable = true;
            fileTreeView.AppendColumn("Comment", new CellRendererText(), "text", 3).Resizable       = true;

            iconTreeView = new TreeView(iconListStore);
            iconTreeView.Selection.Mode = SelectionMode.Multiple;
            iconTreeView.AppendColumn("Icon", new CellRendererPixbuf(), "pixbuf", 0).Resizable     = true;
            iconTreeView.AppendColumn("ResourceName", new CellRendererText(), "text", 1).Resizable = true;
            iconTreeView.AppendColumn("Comment", new CellRendererText(), "text", 2).Resizable      = true;

            imageTreeView = new TreeView(imageListStore);
            imageTreeView.Selection.Mode = SelectionMode.Multiple;
            imageTreeView.AppendColumn("Image", new CellRendererPixbuf(), "pixbuf", 0).Resizable    = true;
            imageTreeView.AppendColumn("ResourceName", new CellRendererText(), "text", 1).Resizable = true;
            imageTreeView.AppendColumn("Size", new CellRendererText(), "text", 2).Resizable         = true;
            imageTreeView.AppendColumn("Comment", new CellRendererText(), "text", 3).Resizable      = true;

            otherTreeView = new TreeView(otherListStore);
            otherTreeView.Selection.Mode = SelectionMode.Multiple;
            otherTreeView.AppendColumn("ResourceName", new CellRendererText(), "text", 0).Resizable = true;
            otherTreeView.AppendColumn("Type", new CellRendererText(), "text", 1).Resizable         = true;
            otherTreeView.AppendColumn("Comment", new CellRendererText(), "text", 2).Resizable      = true;

            stringTreeView = new TreeView(stringListStore);
            stringTreeView.Selection.Mode = SelectionMode.Multiple;
            stringTreeView.AppendColumn("ResourceName", new CellRendererText(), "text", 0).Resizable = true;
            stringTreeView.AppendColumn("Length", new CellRendererText(), "text", 1).Resizable       = true;
            stringTreeView.AppendColumn("Value", new CellRendererText(), "text", 2).Resizable        = true;
            stringTreeView.AppendColumn("Comment", new CellRendererText(), "text", 3).Resizable      = true;

            // SetUp
            Build();
            scrolledWindow.Add(stringTreeView);
            verticalBox.Add(mainToolbar);
            Box.BoxChild boxChild = ((Box.BoxChild)verticalBox[mainToolbar]);
            boxChild.Position = 0;
            boxChild.Expand   = false;
            typeMenu.ShowAll();
            ShowAll();
        }