<TabItem Header="Metadata">
<StackPanel>
<StackPanel Orientation="Horizontal">
- <TextBox x:Name="CurrentTag_Name" Width="150" Margin="5" Grid.Row="6"/>
- <TextBox x:Name="CurrentTag_Value" Width="150" Margin="5" Grid.Row="6"/>
- <Button x:Name="AddTag" Content="Add" Margin="5"/>
+ <TextBox x:Name="CurrentTag_Name" Width="145" Margin="5" Grid.Row="6"/>
+ <TextBox x:Name="CurrentTag_Value" Width="145" Margin="5" Grid.Row="6"/>
+ <Button x:Name="AddTag" Content="Update" Margin="5"/>
</StackPanel>
<DataGrid ItemsSource="{Binding Tags}" x:Name="Tags"
- AutoGenerateColumns="False" GridLinesVisibility="None" IsReadOnly="True" >
+ AutoGenerateColumns="False" GridLinesVisibility="None"
+ IsReadOnly="False"
+ CanUserDeleteRows="True"
+ CanUserAddRows="False">
<DataGrid.Columns>
- <DataGridTextColumn Binding="{Binding Name}" Header="Key" MinWidth="150" />
- <DataGridTextColumn Binding="{Binding Value}" Header="Value" MinWidth="100"/>
+ <DataGridTextColumn Binding="{Binding Name}" Header="Key" MinWidth="150" IsReadOnly="True"/>
+ <DataGridTextColumn Binding="{Binding Value}" Header="Value" MinWidth="100" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
+ <Button x:Name="DeleteTag" Content="Delete"
+ Command="DataGrid.DeleteCommand" CommandTarget="{Binding ElementName=Tags}"
+ Style="{StaticResource ResourceKey=ButtonStyle}" HorizontalAlignment="Left" />
</StackPanel>
</TabItem>
<TabItem Header="Permissions">
<StackPanel>
<CheckBox x:Name="IsPublic" Content="Public" Margin="5"/>
<StackPanel Orientation="Horizontal">
- <TextBox x:Name="PermissionName" Width="200" Margin="5" Grid.Row="6"/>
- <RadioButton x:Name="PermissionRead" Content="Read" Margin="5" Grid.Row="7"/>
- <RadioButton x:Name="PermissionWrite" Content="Write" Margin="5" Grid.Row="8"/>
- <Button x:Name="AddPermission" Content="Add" Margin="5"/>
+ <TextBox x:Name="CurrentPermission_UserName" Width="195" Margin="5" Grid.Row="6"/>
+ <RadioButton x:Name="CurrentPermission_Read" Content="Read" Margin="5" Grid.Row="7"/>
+ <RadioButton x:Name="CurrentPermission_Write" Content="Write" Margin="5" Grid.Row="8"/>
+ <Button x:Name="AddPermission" Content="Update" Margin="5"/>
</StackPanel>
<TextBlock Margin="5" Visibility="{Binding Path=IsPublic,FallbackValue=Collapsed, Converter={StaticResource BoolToVisible}}">
<Run Text="Public URL:" />
<Run Text="{Binding PublicUrl,FallbackValue='http://someurl'}" />
</TextBlock>
- <DataGrid x:Name="Permissions" AutoGenerateColumns="False" GridLinesVisibility="None" IsReadOnly="True" >
+ <DataGrid x:Name="Permissions" AutoGenerateColumns="False" GridLinesVisibility="None"
+ IsReadOnly="False"
+ CanUserDeleteRows="True"
+ CanUserAddRows="False"
+ >
<DataGrid.Columns>
- <DataGridTextColumn Binding="{Binding UserName}" Header="Name" MinWidth="150" />
- <DataGridTextColumn Binding="{Binding Value}" Header="Permission"/>
+ <DataGridTextColumn Binding="{Binding UserName}" Header="Name" MinWidth="150" IsReadOnly="True" />
+ <DataGridTextColumn Binding="{Binding Value}" Header="Permission" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
+ <Button x:Name="DeletePermission" Content="Delete"
+ Command="DataGrid.DeleteCommand" CommandTarget="{Binding ElementName=Permissions}"
+ Style="{StaticResource ResourceKey=ButtonStyle}" HorizontalAlignment="Left" />
</StackPanel>
</TabItem>
<!--<TabItem Header="Other">
* -----------------------------------------------------------------------
*/
#endregion
-using System.Collections;
-using System.Collections.Concurrent;
+
using System.Collections.ObjectModel;
-using System.Collections.Specialized;
using System.ComponentModel.Composition;
-using System.Diagnostics;
using System.Diagnostics.Contracts;
using System.Drawing;
using System.IO;
using System.Windows.Media.Imaging;
using Caliburn.Micro;
using Pithos.Client.WPF.FileProperties;
-using Pithos.Client.WPF.Properties;
using Pithos.Core;
using Pithos.Interfaces;
using Pithos.Network;
namespace Pithos.Client.WPF
{
using System;
- using System.Collections.Generic;
using System.Linq;
- using System.Text;
/// <summary>
/// TODO: Update summary.
NotifyOfPropertyChange(()=>SynchStatus);
}
}
-
- private string _permissionName;
- public string PermissionName
- {
- get { return _permissionName; }
- set
- {
- _permissionName = value;
- NotifyOfPropertyChange(()=>PermissionName);
- NotifyOfPropertyChange(() => CanAddPermission);
- }
- }
-
+
private Permission _currentPermission;
public Permission CurrentPermission
{
get { return _currentPermission; }
set
- {
- _currentPermission = value;
- PermissionName = CurrentPermission.UserName;
- PermissionRead = CurrentPermission.Read;
+ {
+ _currentPermission = (value==null)?new Permission() : value.Clone();
+ _currentPermission.PropertyChanged += (o, e) => NotifyOfPropertyChange(() => CanAddPermission);
NotifyOfPropertyChange(()=>CurrentPermission);
- NotifyOfPropertyChange(() => PermissionName);
- }
- }
-
-
- private bool _permissionRead=true;
- public bool PermissionRead
- {
- get { return _permissionRead; }
- set
- {
- _permissionRead = value;
- NotifyOfPropertyChange(()=>PermissionRead);
- NotifyOfPropertyChange(() => PermissionWrite);
- }
- }
-
- public bool PermissionWrite
- {
- get
- {
- return !PermissionRead;
- }
- set
- {
- _permissionRead = !value;
- NotifyOfPropertyChange(() => PermissionRead);
- NotifyOfPropertyChange(()=>PermissionWrite);
+ NotifyOfPropertyChange(() => CanAddPermission);
}
}
public bool CanAddPermission
{
- get { return !String.IsNullOrWhiteSpace(PermissionName); }
+ get { return !String.IsNullOrWhiteSpace(CurrentPermission.UserName); }
}
public void AddPermission()
{
- Permissions.Add(new Permission{Read=PermissionRead,UserName=PermissionName,Write=!PermissionRead});
+ var existingPermission = Permissions.FirstOrDefault(perm => perm.UserName == CurrentPermission.UserName);
+ if (existingPermission==null)
+ Permissions.Add(CurrentPermission.Clone());
+ else
+ {
+ existingPermission.Read = CurrentPermission.Read;
+ }
}
public bool CanAddTag
{
- get { return CurrentTag!=null && !String.IsNullOrWhiteSpace(CurrentTag.Name); }
+ get { return !String.IsNullOrWhiteSpace(CurrentTag.Name); }
}
public void AddTag()
{
- Tags.Add(CurrentTag);
+ var existingTag = Tags.FirstOrDefault(tag => tag.Name == CurrentTag.Name);
+ if (existingTag == null)
+ Tags.Add(CurrentTag.Clone());
+ else
+ {
+ existingTag.Value = CurrentTag.Value;
+ }
}
_permissions = new ObservableCollection<Permission>();
_permissions.CollectionChanged += (sender, evt) => { PermissionsChanged = true; };
+
+ CurrentPermission=new Permission();
+ CurrentTag=new MetaValue();
+
+
Shell = shell;
LocalFileName = localFileName;
pithosFile.ContinueWith(t =>
private void ShowError(AggregateException exception)
{
- MessageView view = null;
+ MessageView view;
if (exception.InnerException is RetryException)
view = new MessageView(exception.InnerException as RetryException);
else if (exception.InnerException is WebException)
get { return _currentTag; }
set
{
- _currentTag = value;
+ _currentTag = (value==null)?new MetaValue() : value.Clone();
+ _currentTag.PropertyChanged += (o, e) => NotifyOfPropertyChange(() => CanAddTag);
+
NotifyOfPropertyChange(()=>CurrentTag);
+ NotifyOfPropertyChange(() => CanAddTag);
}
}