public Interop.HRESULT OnFileOk(CrystalLib.Toolset.Dialogs.Interop.IFileDialog pfd)
 {
     if( _dialog.DoFileOk(pfd) )
         return CrystalLib.Toolset.Dialogs.Interop.HRESULT.S_OK;
     else
         return CrystalLib.Toolset.Dialogs.Interop.HRESULT.S_FALSE;
 }
 public void OnSelectionChange(CrystalLib.Toolset.Dialogs.Interop.IFileDialog pfd)
 {
 }
 public void OnOverwrite(CrystalLib.Toolset.Dialogs.Interop.IFileDialog pfd, CrystalLib.Toolset.Dialogs.Interop.IShellItem psi, out NativeMethods.FDE_OVERWRITE_RESPONSE pResponse)
 {
     pResponse = NativeMethods.FDE_OVERWRITE_RESPONSE.FDEOR_DEFAULT;
 }
 public void OnItemSelected(CrystalLib.Toolset.Dialogs.Interop.IFileDialogCustomize pfdc, int dwIDCtl, int dwIDItem)
 {
 }
 public Interop.HRESULT OnFolderChanging(CrystalLib.Toolset.Dialogs.Interop.IFileDialog pfd, CrystalLib.Toolset.Dialogs.Interop.IShellItem psiFolder)
 {
     return CrystalLib.Toolset.Dialogs.Interop.HRESULT.S_OK;
 }
 public void OnControlActivating(CrystalLib.Toolset.Dialogs.Interop.IFileDialogCustomize pfdc, int dwIDCtl)
 {
 }
 public void OnButtonClicked(CrystalLib.Toolset.Dialogs.Interop.IFileDialogCustomize pfdc, int dwIDCtl)
 {
     if( dwIDCtl == VistaFileDialog.HelpButtonId )
         _dialog.DoHelpRequest();
 }
 internal virtual void GetResult(CrystalLib.Toolset.Dialogs.Interop.IFileDialog dialog)
 {
     if( !GetOption(NativeMethods.FOS.FOS_ALLOWMULTISELECT) )
     {
         _fileNames = new string[1];
         CrystalLib.Toolset.Dialogs.Interop.IShellItem result;
         dialog.GetResult(out result);
         result.GetDisplayName(NativeMethods.SIGDN.SIGDN_FILESYSPATH, out _fileNames[0]);
     }
 }
 private void GetResult(CrystalLib.Toolset.Dialogs.Interop.IFileDialog dialog)
 {
     CrystalLib.Toolset.Dialogs.Interop.IShellItem item;
     dialog.GetResult(out item);
     item.GetDisplayName(NativeMethods.SIGDN.SIGDN_FILESYSPATH, out _selectedPath);
 }
        private void SetDialogProperties(CrystalLib.Toolset.Dialogs.Interop.IFileDialog dialog)
        {
            // Description
            if( !string.IsNullOrEmpty(_description) )
            {
                if( _useDescriptionForTitle )
                {
                    dialog.SetTitle(_description);
                }
                else
                {
                    CrystalLib.Toolset.Dialogs.Interop.IFileDialogCustomize customize = (CrystalLib.Toolset.Dialogs.Interop.IFileDialogCustomize)dialog;
                    customize.AddText(0, _description);
                }
            }

            dialog.SetOptions(NativeMethods.FOS.FOS_PICKFOLDERS | NativeMethods.FOS.FOS_FORCEFILESYSTEM | NativeMethods.FOS.FOS_FILEMUSTEXIST);

            if( !string.IsNullOrEmpty(_selectedPath) )
            {
                string parent = Path.GetDirectoryName(_selectedPath);
                if( parent == null || !Directory.Exists(parent) )
                {
                    dialog.SetFileName(_selectedPath);
                }
                else
                {
                    string folder = Path.GetFileName(_selectedPath);
                    dialog.SetFolder(NativeMethods.CreateItemFromParsingName(parent));
                    dialog.SetFileName(folder);
                }
            }
        }
 internal override void SetDialogProperties(CrystalLib.Toolset.Dialogs.Interop.IFileDialog dialog)
 {
     base.SetDialogProperties(dialog);
     if( _showReadOnly )
     {
         CrystalLib.Toolset.Dialogs.Interop.IFileDialogCustomize customize = (CrystalLib.Toolset.Dialogs.Interop.IFileDialogCustomize)dialog;
         customize.EnableOpenDropDown(_openDropDownId);
         customize.AddControlItem(_openDropDownId, _openItemId, ComDlgResources.LoadString(ComDlgResources.ComDlgResourceId.OpenButton));
         customize.AddControlItem(_openDropDownId, _readOnlyItemId, ComDlgResources.LoadString(ComDlgResources.ComDlgResourceId.ReadOnly));
     }
 }
        internal override void GetResult(CrystalLib.Toolset.Dialogs.Interop.IFileDialog dialog)
        {
            if( Multiselect )
            {
                CrystalLib.Toolset.Dialogs.Interop.IShellItemArray results;
                ((CrystalLib.Toolset.Dialogs.Interop.IFileOpenDialog)dialog).GetResults(out results);
                uint count;
                results.GetCount(out count);
                string[] fileNames = new string[count];
                for( uint x = 0; x < count; ++x )
                {
                    CrystalLib.Toolset.Dialogs.Interop.IShellItem item;
                    results.GetItemAt(x, out item);
                    string name;
                    item.GetDisplayName(NativeMethods.SIGDN.SIGDN_FILESYSPATH, out name);
                    fileNames[x] = name;
                }
                FileNamesInternal = fileNames;

            }
            else
                FileNamesInternal = null;

            if( ShowReadOnly )
            {
                Interop.IFileDialogCustomize customize = (Interop.IFileDialogCustomize)dialog;
                int selected;
                customize.GetSelectedControlItem(_openDropDownId, out selected);
                _readOnlyChecked = (selected == _readOnlyItemId);
            }

            base.GetResult(dialog);
        }
        internal virtual void SetDialogProperties(CrystalLib.Toolset.Dialogs.Interop.IFileDialog dialog)
        {
            uint cookie;
            dialog.Advise(new VistaFileDialogEvents(this), out cookie);

            // Set the default file name
            if( !(_fileNames == null || _fileNames.Length == 0 || string.IsNullOrEmpty(_fileNames[0])) )
            {
                string parent = Path.GetDirectoryName(_fileNames[0]);
                if( parent == null || !Directory.Exists(parent) )
                {
                    dialog.SetFileName(_fileNames[0]);
                }
                else
                {
                    string folder = Path.GetFileName(_fileNames[0]);
                    dialog.SetFolder(NativeMethods.CreateItemFromParsingName(parent));
                    dialog.SetFileName(folder);
                }
            }

            // Set the filter
            if( !string.IsNullOrEmpty(_filter) )
            {
                string[] filterElements = _filter.Split(new char[] { '|' });
                NativeMethods.COMDLG_FILTERSPEC[] filter = new NativeMethods.COMDLG_FILTERSPEC[filterElements.Length / 2];
                for( int x = 0; x < filterElements.Length; x += 2 )
                {
                    filter[x / 2].pszName = filterElements[x];
                    filter[x / 2].pszSpec = filterElements[x + 1];
                }
                dialog.SetFileTypes((uint)filter.Length, filter);

                if( _filterIndex > 0 && _filterIndex <= filter.Length )
                    dialog.SetFileTypeIndex((uint)_filterIndex);
            }

            // Default extension
            if( _addExtension && !string.IsNullOrEmpty(_defaultExt) )
            {
                dialog.SetDefaultExtension(_defaultExt);
            }

            // Initial directory
            if( !string.IsNullOrEmpty(_initialDirectory) )
            {
                Interop.IShellItem item = NativeMethods.CreateItemFromParsingName(_initialDirectory);
                dialog.SetDefaultFolder(item);
            }

            // ShowHelp
            if( _showHelp )
            {
                CrystalLib.Toolset.Dialogs.Interop.IFileDialogCustomize customize = (CrystalLib.Toolset.Dialogs.Interop.IFileDialogCustomize)dialog;
                customize.AddPushButton(HelpButtonId, Properties.Resources.Help);
            }

            if( !string.IsNullOrEmpty(_title) )
            {
                dialog.SetTitle(_title);
            }

            dialog.SetOptions((_options | NativeMethods.FOS.FOS_FORCEFILESYSTEM));
        }
 public void OnShareViolation(CrystalLib.Toolset.Dialogs.Interop.IFileDialog pfd, CrystalLib.Toolset.Dialogs.Interop.IShellItem psi, out NativeMethods.FDE_SHAREVIOLATION_RESPONSE pResponse)
 {
     pResponse = NativeMethods.FDE_SHAREVIOLATION_RESPONSE.FDESVR_DEFAULT;
 }
 public void OnCheckButtonToggled(CrystalLib.Toolset.Dialogs.Interop.IFileDialogCustomize pfdc, int dwIDCtl, bool bChecked)
 {
 }
 public void OnTypeChange(CrystalLib.Toolset.Dialogs.Interop.IFileDialog pfd)
 {
 }
        internal bool DoFileOk(CrystalLib.Toolset.Dialogs.Interop.IFileDialog dialog)
        {
            GetResult(dialog);

            System.ComponentModel.CancelEventArgs e = new System.ComponentModel.CancelEventArgs();
            OnFileOk(e);
            return !e.Cancel;
        }