merge the formfield patch from ooo-build
[ooovba.git] / fpicker / source / aqua / AquaFilePickerDelegate.mm
blobd73e5d82ff168f0504723d90ae89975b6b866462
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  * 
5  * Copyright 2008 by Sun Microsystems, Inc.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * $RCSfile: AquaFilePickerDelegate.mm,v $
10  * $Revision: 1.3 $
11  *
12  * This file is part of OpenOffice.org.
13  *
14  * OpenOffice.org is free software: you can redistribute it and/or modify
15  * it under the terms of the GNU Lesser General Public License version 3
16  * only, as published by the Free Software Foundation.
17  *
18  * OpenOffice.org is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21  * GNU Lesser General Public License version 3 for more details
22  * (a copy is included in the LICENSE file that accompanied this code).
23  *
24  * You should have received a copy of the GNU Lesser General Public License
25  * version 3 along with OpenOffice.org.  If not, see
26  * <http://www.openoffice.org/license.html>
27  * for a copy of the LGPLv3 License.
28  *
29  ************************************************************************/
30 #include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
31 #include <com/sun/star/uno/Any.hxx>
33 #ifndef _SALAQUAFILEPICKER_HXX_
34 #include "SalAquaFilePicker.hxx"
35 #endif
37 #ifndef _FILTERHELPER_HXX_
38 #include "FilterHelper.hxx"
39 #endif
41 #include "AquaFilePickerDelegate.hxx"
43 @implementation AquaFilePickerDelegate
45 - (id)initWithFilePicker:(SalAquaFilePicker*)fPicker
47     if ((self = [super init])) {
48         filePicker = fPicker;
49         filterHelper = NULL;
50         return self;
51     }
52     return nil;
55 - (void)setFilterHelper:(FilterHelper*)helper
57     filterHelper = helper;
60 #pragma mark NSSavePanel delegate methods
62 - (MacOSBOOL)panel:(id)sender shouldShowFilename:(NSString *)filename
64     if( filterHelper == NULL )
65         return true;
66     if( filename == nil )
67         return false;
68     return filterHelper->filenameMatchesFilter(filename);
71 - (void)panelSelectionDidChange:(id)sender
73     if (filePicker != NULL) {
74         ::com::sun::star::ui::dialogs::FilePickerEvent evt;
75         filePicker->fileSelectionChanged(evt);
76     }
79 - (void)panel:(id)sender directoryDidChange:(NSString *)path
81     if (filePicker != NULL) {
82         ::com::sun::star::ui::dialogs::FilePickerEvent evt;
83         filePicker->directoryChanged(evt);
84     }
88 #pragma mark UIActions
89 - (void)filterSelectedAtIndex:(id)sender
91     if (sender == nil) {
92         return;
93     }
94     
95     if ([sender class] != [NSPopUpButton class]) {
96         return;
97     }
98     
99     if (filterHelper == NULL) {
100         return;
101     }
102     
103     NSPopUpButton *popup = (NSPopUpButton*)sender;
104     unsigned int selectedIndex = [popup indexOfSelectedItem];
105     
106     filterHelper->SetFilterAtIndex(selectedIndex);
107     
108     filePicker->filterControlChanged();
111 - (void)autoextensionChanged:(id)sender 
113     if (sender == nil) {
114         return;
115     }
116     
117     if ([sender class] != [NSButton class]) {
118         return;
119     }
120     uno::Any aValue;
121     aValue <<= ([((NSButton*)sender) state] == NSOnState);
122     
123     filePicker->setValue(::com::sun::star::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, 0, aValue);
126 @end