2 // PithosObjectNodeInfoController.m
5 // Copyright 2011-2012 GRNET S.A. All rights reserved.
7 // Redistribution and use in source and binary forms, with or
8 // without modification, are permitted provided that the following
11 // 1. Redistributions of source code must retain the above
12 // copyright notice, this list of conditions and the following
15 // 2. Redistributions in binary form must reproduce the above
16 // copyright notice, this list of conditions and the following
17 // disclaimer in the documentation and/or other materials
18 // provided with the distribution.
20 // THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
21 // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
24 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27 // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28 // AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30 // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 // POSSIBILITY OF SUCH DAMAGE.
33 // The views and conclusions contained in the software and
34 // documentation are those of the authors and should not be
35 // interpreted as representing official policies, either expressed
36 // or implied, of GRNET S.A.
38 #import "PithosObjectNodeInfoController.h"
39 #import "ASIPithosObject.h"
40 #import "pithos_macosAppDelegate.h"
41 #import "PithosBrowserController.h"
43 @interface InspectorPane (PrivateMadePublic)
44 - (void)toggleCollapsedWithAnimation:(BOOL)animates;
47 @implementation PithosObjectNodeInfoController
48 @synthesize isObjectNode;
51 #pragma mark Object Lifecycle
53 - (id)initWithPithosNode:(PithosNode *)aNode {
54 if ((self = [super initWithWindowNibName:@"PithosObjectNodeInfoController"])) {
56 if ([node class] == [PithosObjectNode class])
62 - (void)windowDidLoad {
63 [super windowDidLoad];
65 [metadataDictionaryController setInitialKey:@"key"];
66 [metadataDictionaryController setInitialValue:@"value"];
67 [sharingDictionaryController setInitialKey:@"user or user:group"];
68 [sharingDictionaryController setInitialValue:@"read only"];
70 [[self window] setDelegate:self];
72 [versionsInspectorPane toggleCollapsedWithAnimation:NO];
73 [metadataInspectorPane toggleCollapsedWithAnimation:NO];
74 [otherMetadataInspectorPane toggleCollapsedWithAnimation:NO];
80 - (IBAction)downloadVersion:(id)sender {
81 NSSavePanel *save = [NSSavePanel savePanel];
82 [save setNameFieldStringValue:node.displayName];
83 NSInteger result = [save runModal];
84 if (result == NSOKButton) {
85 NSString *destinationPath = [[save URL] path];
86 NSString *directoryPath = [destinationPath stringByDeletingLastPathComponent];
87 NSString *newFileName = [destinationPath lastPathComponent];
88 if ([destinationPath hasSuffix:@"/"])
89 newFileName = [newFileName stringByAppendingString:@"/"];
90 if ([node.displayName isEqualToString:newFileName])
92 NSString *version = [(ASIPithosObject *)[[versionsArrayController selectedObjects] objectAtIndex:0] version];
93 [[(pithos_macosAppDelegate *)[[NSApplication sharedApplication] delegate] pithosBrowserController] downloadNode:node
94 toDirectory:directoryPath
95 withNewFileName:newFileName