示例#1
0
        /// <summary>
        /// Creates files chooser window.
        /// </summary>
        /// <param name="desktop">desktop it belongs to.</param>
        public FileChooser(Desktop desktop) : base(desktop, CreationFlag.FlagsNone, "")
        {
            this.filesListListBox      = CreateControl <ListBox>();
            this.filtersComboBox       = CreateControl <ComboBox>();
            this.fileNameTextBox       = CreateControl <TextBox>();
            this.desktopItem           = CreateControl <ListItem>();
            this.myDocumentsItem       = CreateControl <ListItem>();
            this.myComputerItem        = CreateControl <ListItem>();
            this.NetworkItem           = CreateControl <ListItem>();
            this.virtualFileSystemItem = CreateControl <ListItem>();
            this.drivesComboBox        = CreateControl <ComboBox>();
            this.upButton         = CreateControl <Button>();
            this.selectButton     = CreateControl <Button>();
            this.filesScrollPanel = CreateControl <ScrollPanel>();

            this.BackColor = this.Desktop.Theme.Colors.Control;
            this.MinSize   = new Size2d(563, 412);
            this.Text      = "Select File";
            this.Opacity   = 1.0f;
            this.Modal     = true;
            this.Bounds    = new Rectangle((desktop.Width - this.MinSize.Width) / 2, (desktop.Height - this.MinSize.Height) / 2, this.MinSize.Width, this.MinSize.Height);
            this.HasShadow = true;

            this.selectButton.Anchor       = AnchorStyle.AnchorBottom | AnchorStyle.AnchorRight;
            this.selectButton.Text         = "Open";
            this.selectButton.Bounds       = new Rectangle(477, 330, 75, 23);
            this.selectButton.DialogResult = DialogResult.DialogResultOK;
            AddControl(this.selectButton);

            Button cancelButton = CreateControl <Button>();

            cancelButton.Anchor       = AnchorStyle.AnchorBottom | AnchorStyle.AnchorRight;
            cancelButton.Text         = "Cancel";
            cancelButton.Bounds       = new Rectangle(477, 357, 75, 23);
            cancelButton.DialogResult = DialogResult.DialogResultCancel;
            AddControl(cancelButton);

            Label lookInLabel = CreateControl <Label>();

            lookInLabel.Anchor = AnchorStyle.AnchorLeft | AnchorStyle.AnchorTop;
            lookInLabel.Text   = "Look in:";
            lookInLabel.Bounds = new Rectangle(10, 10, 87, 23);
            AddControl(lookInLabel);

            Label fileNameLabel = CreateControl <Label>();

            fileNameLabel.Anchor = AnchorStyle.AnchorLeft | AnchorStyle.AnchorBottom;
            fileNameLabel.Text   = "File name:";
            fileNameLabel.Bounds = new Rectangle(103, 331, 97, 23);
            AddControl(fileNameLabel);

            Label filterLabel = CreateControl <Label>();

            filterLabel.Anchor = AnchorStyle.AnchorLeft | AnchorStyle.AnchorBottom;
            filterLabel.Text   = "Files of type:";
            filterLabel.Bounds = new Rectangle(103, 359, 97, 23);
            AddControl(filterLabel);

            ListBox sideListBox = CreateControl <ListBox>();

            sideListBox.Opacity   = 0.5f;
            sideListBox.Border    = BorderStyle.BorderLoweredDouble;
            sideListBox.BackColor = this.Desktop.Theme.Colors.ControlDark;
            sideListBox.AutoSize  = false;
            sideListBox.Anchor    = AnchorStyle.AnchorLeft | AnchorStyle.AnchorTop | AnchorStyle.AnchorBottom;
            sideListBox.Bounds    = new Rectangle(10, 39, 87, 338);
            AddControl(sideListBox);

            this.desktopItem.Bounds   = new Rectangle(2, 2, 82, 60);
            this.desktopItem.Text     = "Desktop";
            this.desktopItem.Clicked += (sender, args) => { FillList(this.desktopFolder); };
            sideListBox.AddControl(this.desktopItem);

            this.myDocumentsItem.Bounds   = new Rectangle(2, 2, 62, 60);
            this.myDocumentsItem.Text     = "My Documents";
            this.myDocumentsItem.Clicked += (sender, args) => { FillList(GetFile(this.desktopFolder, FileTypes.MyDocuments)); };
            sideListBox.AddControl(this.myDocumentsItem);

            this.myComputerItem.Bounds   = new Rectangle(2, 2, 122, 60);
            this.myComputerItem.Text     = "My Computer";
            this.myComputerItem.Clicked += (sender, args) => { FillList(GetFile(this.desktopFolder, FileTypes.MyComputer)); };
            sideListBox.AddControl(this.myComputerItem);

            this.NetworkItem.Bounds   = new Rectangle(2, 2, 182, 60);
            this.NetworkItem.Text     = "Network";
            this.NetworkItem.Clicked += (sender, args) => { FillList(GetFile(this.desktopFolder, FileTypes.Network)); };
            sideListBox.AddControl(this.NetworkItem);

            this.virtualFileSystemItem.Bounds   = new Rectangle(2, 2, 242, 60);
            this.virtualFileSystemItem.Text     = "Virtual FS";
            this.virtualFileSystemItem.Clicked += this.VirtualFileSystemClicked;
            sideListBox.AddControl(this.virtualFileSystemItem);

            this.filesScrollPanel.Border    = BorderStyle.BorderLoweredDouble;
            this.filesScrollPanel.BackColor = this.Window.Desktop.Theme.Colors.Window;
            this.filesScrollPanel.Anchor    = AnchorStyle.AnchorBottom | AnchorStyle.AnchorLeft | AnchorStyle.AnchorTop | AnchorStyle.AnchorRight;
            this.filesScrollPanel.Opacity   = 0.5f;
            this.filesScrollPanel.Bounds    = new Rectangle(103, 39, 450, 283);
            AddControl(this.filesScrollPanel);

            this.filesListListBox.Border    = BorderStyle.None;
            this.filesListListBox.BackColor = Colors.None;
            this.filesListListBox.Anchor    = AnchorStyle.AnchorLeft | AnchorStyle.AnchorTop;
            this.filesListListBox.Bounds    = new Rectangle(0, 0, 430, 0);
            this.filesListListBox.ListStyle = ListStyle.Details;
            this.filesListListBox.AutoSize  = true;
            this.filesScrollPanel.AddControl(this.filesListListBox);

            this.fileNameTextBox.Anchor = AnchorStyle.AnchorLeft | AnchorStyle.AnchorRight | AnchorStyle.AnchorBottom;
            this.fileNameTextBox.Bounds = new Rectangle(199, 332, 266, 22);
            AddControl(this.fileNameTextBox);

            this.drivesComboBox.Anchor = AnchorStyle.AnchorLeft | AnchorStyle.AnchorRight | AnchorStyle.AnchorTop;
            this.drivesComboBox.Bounds = new Rectangle(103, 10, 421, 22);
            this.drivesComboBox.SelectedItemChanged += new UIEventHandler <ComboBox>(DrivesSelectedItemChanged);
            this.drivesComboBox.NeedTranslation      = false;
            AddControl(this.drivesComboBox);

            this.filtersComboBox.Anchor = AnchorStyle.AnchorLeft | AnchorStyle.AnchorRight | AnchorStyle.AnchorBottom;
            this.filtersComboBox.Bounds = new Rectangle(199, 359, 266, 22);
            this.filtersComboBox.SelectedItemChanged += (sender, args) => { FillList(this.activeVirtualFolder); };
            AddControl(this.filtersComboBox);

            this.upButton.Anchor   = AnchorStyle.AnchorRight | AnchorStyle.AnchorTop;
            this.upButton.Bounds   = new Rectangle(528, 10, 23, 23);
            this.upButton.Icon     = (this.Window.Desktop.Theme.ThemeFolder + "icons/button_up");
            this.upButton.Clicked += this.UpButtonClicked;
            AddControl(this.upButton);

            IVirtualFile myComputer = GetFile(this.desktopFolder, FileTypes.MyComputer);

            if (null != myComputer)
            {
                foreach (IVirtualFile file in myComputer.ChildFiles)
                {
                    ComboBoxItem item = this.drivesComboBox.AddItem(file.Name, file.Name, "", file);

                    item.SetIcon(FileUtils.Platform.GetFileIcon(file.Name, false, this.Engine, this.Window.Desktop.Theme));
                }
            }

            this.desktopItem.icon           = new ImageObject(FileUtils.Platform.GetDesktopIcon(true, this.Engine, this.Window.Desktop.Theme), this.Engine, null);
            this.myDocumentsItem.icon       = new ImageObject(FileUtils.Platform.GetMyDocumentsIcon(true, this.Engine, this.Window.Desktop.Theme), this.Engine, null);
            this.myComputerItem.icon        = new ImageObject(FileUtils.Platform.GetMyComputerIcon(true, this.Engine, this.Window.Desktop.Theme), this.Engine, null);
            this.NetworkItem.icon           = new ImageObject(FileUtils.Platform.GetNetworkIcon(true, this.Engine, this.Window.Desktop.Theme), this.Engine, null);
            this.virtualFileSystemItem.icon = new ImageObject(FileUtils.Platform.GetIcon(4, true, this.Engine, this.Window.Desktop.Theme), this.Engine, null);

            List <String> extensions = new List <String>();

            extensions.Add("");
            AddFilter("All files (*.*)", extensions);

            extensions = new List <String>();
            extensions.Add(".avi");
            extensions.Add(".omg");
            extensions.Add(".mpg");
            AddFilter("Video files (*.avi; *.omg; *.mpg)", extensions);

            extensions = new List <String>();
            extensions.Add(".mp3");
            extensions.Add(".ogg");
            extensions.Add(".wav");
            AddFilter("Audio files (*.mp3; *.ogg; *.wav)", extensions);

            extensions = new List <String>();
            extensions.Add(".txt");
            extensions.Add(".doc");
            extensions.Add(".pdf");
            AddFilter("Documents (*.txt; *.doc; *.pdf)", extensions);

            extensions = new List <String>();
            extensions.Add(".png");
            extensions.Add(".jpg");
            extensions.Add(".tga");
            AddFilter("Images (*.png; *.jpg; *.tga)", extensions);

            FillList(this.desktopFolder);
        }