The Tags tab of ContainerPropertiesView.xaml now works in a similar way to FileProper...
authorpkanavos <pkanavos@gmail.com>
Fri, 11 May 2012 17:25:07 +0000 (20:25 +0300)
committerpkanavos <pkanavos@gmail.com>
Fri, 11 May 2012 17:30:27 +0000 (20:30 +0300)
trunk/Pithos.Client.WPF/FileProperties/ContainerPropertiesView.xaml
trunk/Pithos.Client.WPF/FileProperties/ContainerPropertiesViewModel.cs
trunk/Pithos.Client.WPF/FileProperties/FilePropertiesView.xaml

index ffcd300..5698b39 100644 (file)
@@ -2,7 +2,7 @@
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:cal="http://www.caliburnproject.org"
         xmlns:extToolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended"
-        Title="ContainerPropertiesView" Height="500" Width="300"
+        Title="ContainerPropertiesView" Height="507" Width="400"
         Icon="/PithosPlus;component/Images/PithosTaskbar.png"
         Background="{StaticResource {x:Static SystemColors.ControlBrushKey}}">
     <Window.Resources>
             </Grid>
         
             </TabItem>
-            <TabItem Header="Metadata">            
-                <DataGrid ItemsSource="{Binding Tags}" x:Name="Tags"
-                    AutoGenerateColumns="False" CanUserAddRows="True" >
-                    <DataGrid.Columns>
-                        <DataGridTemplateColumn >
-                            <DataGridTemplateColumn.CellTemplate>
-                                <DataTemplate>
-                                    <Button Content=" - " Command="DataGrid.DeleteCommand"/>
-                                </DataTemplate>
-                            </DataGridTemplateColumn.CellTemplate>
-                        </DataGridTemplateColumn>
-                        <DataGridTextColumn Binding="{Binding Name}" Header="Key" />
-                        <DataGridTextColumn Binding="{Binding Value}" Header="Value"  />
-                    </DataGrid.Columns>
-                </DataGrid>
-            </TabItem>
+            <TabItem Header="Metadata">
+                    <StackPanel>
+                        <StackPanel Orientation="Horizontal">
+                            <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  x:Name="Tags" AutoGenerateColumns="False" GridLinesVisibility="None" 
+                                  IsReadOnly="False"
+                                  CanUserDeleteRows="True"
+                                  CanUserAddRows="False">
+                            <DataGrid.Columns>
+                                <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="Policies">
 
 
index 1424a16..9eeb56b 100644 (file)
@@ -283,12 +283,42 @@ namespace Pithos.Client.WPF.FileProperties
             items.Apply(collection.Add);
         }
 
+        private MetaValue _currentTag;
+        public MetaValue CurrentTag
+        {
+            get { return _currentTag; }
+            set
+            {
+                _currentTag = (value == null) ? new MetaValue() : value.Clone();
+                _currentTag.PropertyChanged += (o, e) => NotifyOfPropertyChange(() => CanAddTag);
+
+                NotifyOfPropertyChange(() => CurrentTag);
+                NotifyOfPropertyChange(() => CanAddTag);
+            }
+        }
+
         private readonly ObservableCollection<MetaValue> _tags;
         public ObservableCollection<MetaValue> Tags
         {
             get { return _tags; }
         }
 
+        public bool CanAddTag
+        {
+            get { return !String.IsNullOrWhiteSpace(CurrentTag.Name); }
+        }
+
+        public void AddTag()
+        {
+            var existingTag = Tags.FirstOrDefault(tag => tag.Name == CurrentTag.Name);
+            if (existingTag == null)
+                Tags.Add(CurrentTag.Clone());
+            else
+            {
+                existingTag.Value = CurrentTag.Value;
+            }
+        }
+
        /* private readonly ObservableCollection<MetaValue> _policies;
         public ObservableCollection<MetaValue> Policies
         {
@@ -333,6 +363,7 @@ namespace Pithos.Client.WPF.FileProperties
             _tags = new ObservableCollection<MetaValue>();
             _tags.CollectionChanged += (sender, evt) => { TagsChanged = true; };
 
+            CurrentTag=new MetaValue();
             /*_policies = new ObservableCollection<MetaValue>();
             _policies.CollectionChanged += (sender, evt) => { PoliciesChanged = true; };
 */
index d19aeb3..c5c265f 100644 (file)
@@ -94,8 +94,7 @@
                             <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" 
+                        <DataGrid  x:Name="Tags" AutoGenerateColumns="False" GridLinesVisibility="None" 
                                   IsReadOnly="False"
                                   CanUserDeleteRows="True"
                                   CanUserAddRows="False">