aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2017-12-14 16:28:42 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2017-12-14 16:28:42 +0200
commit7887ca0ad2433c4adbb65d96bf926561405ab290 (patch)
treed02f2b60ee855b3f7c2b1cfe687a0135b8528f87 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB
parentac34ffe211bfa0d811f33a9e6141c0da97c55abe (diff)
downloadTango-7887ca0ad2433c4adbb65d96bf926561405ab290.tar.gz
Tango-7887ca0ad2433c4adbb65d96bf926561405ab290.zip
Implemented Roles in DB Module.
Added Permission enum generation.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Converters/RolesPermissionsToStringConverter.cs37
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Converters/UsersRolesToStringConverter.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ExtensionMethods/INotificationProviderExtensions.cs4
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Tango.MachineStudio.DB.csproj16
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModelLocator.cs10
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/AddressesViewVM.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DbTableViewModel.cs11
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DialogOpenMode.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MachinesViewVM.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MultiComboVM.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/OrganizationsViewVM.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/RolesViewVM.cs77
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/UsersViewVM.cs5
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RoleView.xaml44
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RoleView.xaml.cs34
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RolesView.xaml30
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RolesView.xaml.cs31
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/UserView.xaml2
18 files changed, 295 insertions, 18 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Converters/RolesPermissionsToStringConverter.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Converters/RolesPermissionsToStringConverter.cs
new file mode 100644
index 000000000..7a301bd12
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Converters/RolesPermissionsToStringConverter.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Data;
+using Tango.DAL.Observables;
+using Tango.MachineStudio.DB.ViewModels;
+
+namespace Tango.MachineStudio.DB.Converters
+{
+ public class RolesPermissionsToStringConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ if (value == null) return "";
+
+ if (value is IEnumerable<RolesPermission>)
+ {
+ IEnumerable<RolesPermission> rolesPermissions = value as IEnumerable<RolesPermission>;
+ return String.Join(", ", rolesPermissions.Where(x => !x.Deleted).Select(x => x.Permission.Name));
+ }
+ else
+ {
+ IEnumerable<MultiComboVM<Permission>> rolesPermissions = value as IEnumerable<MultiComboVM<Permission>>;
+ return String.Join(", ", rolesPermissions.Where(x => x.IsSelected).Select(x => x.Entity.Name));
+ }
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Converters/UsersRolesToStringConverter.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Converters/UsersRolesToStringConverter.cs
index 220572db4..5f820d41d 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Converters/UsersRolesToStringConverter.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Converters/UsersRolesToStringConverter.cs
@@ -7,7 +7,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using Tango.DAL.Observables;
-using Tango.MachineStudio.DB.ViewModels.DBViewModels;
+using Tango.MachineStudio.DB.ViewModels;
namespace Tango.MachineStudio.DB.Converters
{
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ExtensionMethods/INotificationProviderExtensions.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ExtensionMethods/INotificationProviderExtensions.cs
index c38cb8d04..2da59724c 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ExtensionMethods/INotificationProviderExtensions.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ExtensionMethods/INotificationProviderExtensions.cs
@@ -7,14 +7,14 @@ using System.Threading.Tasks;
using System.Windows;
using Tango.DAL.Observables;
using Tango.MachineStudio.Common.Notifications;
-using Tango.MachineStudio.DB.ViewModels.DBViewModels;
+using Tango.MachineStudio.DB.ViewModels;
using Tango.MachineStudio.DB.Views.DBViews;
namespace Tango.MachineStudio.DB.ExtensionMethods
{
public static class INotificationProviderExtensions
{
- public static bool ShowDialog<T>(this INotificationProvider provider, DialogOpenMode mode, DbTableViewModel<T> context) where T : IObservableEntity
+ public static bool ShowDialog<T>(this INotificationProvider provider, DialogOpenMode mode, DbTableViewModel<T> context) where T : class, IObservableEntity
{
Type viewType = typeof(INotificationProviderExtensions).Assembly.GetType(typeof(OrganizationView).Namespace + "." + typeof(T).Name + "View");
return provider.ShowDialog(
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Tango.MachineStudio.DB.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Tango.MachineStudio.DB.csproj
index 0d6304c44..4831e838f 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Tango.MachineStudio.DB.csproj
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Tango.MachineStudio.DB.csproj
@@ -78,6 +78,7 @@
<Reference Include="PresentationFramework" />
</ItemGroup>
<ItemGroup>
+ <Compile Include="Converters\RolesPermissionsToStringConverter.cs" />
<Compile Include="DBModule.cs" />
<Compile Include="ExtensionMethods\INotificationProviderExtensions.cs" />
<Compile Include="ViewModels\AddressesViewVM.cs" />
@@ -86,10 +87,17 @@
<Compile Include="ViewModels\MachinesViewVM.cs" />
<Compile Include="ViewModels\MultiComboVM.cs" />
<Compile Include="ViewModels\OrganizationsViewVM.cs" />
+ <Compile Include="ViewModels\RolesViewVM.cs" />
<Compile Include="ViewModels\UsersViewVM.cs" />
<Compile Include="ViewModels\EntityViewModel.cs" />
<Compile Include="ViewModels\MainViewVM.cs" />
<Compile Include="ViewModelLocator.cs" />
+ <Compile Include="Views\DBViews\RoleView.xaml.cs">
+ <DependentUpon>RoleView.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="Views\DBViews\RolesView.xaml.cs">
+ <DependentUpon>RolesView.xaml</DependentUpon>
+ </Compile>
<Compile Include="Views\DBViews\AddressesView.xaml.cs">
<DependentUpon>AddressesView.xaml</DependentUpon>
</Compile>
@@ -132,6 +140,14 @@
<Compile Include="CustomAttributes\DBViewAttribute.cs" />
<Compile Include="Managers\RegisteredView.cs" />
<Compile Include="Managers\ViewsManager.cs" />
+ <Page Include="Views\DBViews\RoleView.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ <Page Include="Views\DBViews\RolesView.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
<Page Include="Views\DBViews\AddressesView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModelLocator.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModelLocator.cs
index 0f9666137..70e9d672f 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModelLocator.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModelLocator.cs
@@ -2,7 +2,6 @@ using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Ioc;
using Microsoft.Practices.ServiceLocation;
using Tango.MachineStudio.DB.ViewModels;
-using Tango.MachineStudio.DB.ViewModels.DBViewModels;
namespace Tango.MachineStudio.DB
{
@@ -23,6 +22,7 @@ namespace Tango.MachineStudio.DB
SimpleIoc.Default.Register<OrganizationsViewVM>();
SimpleIoc.Default.Register<AddressesViewVM>();
SimpleIoc.Default.Register<UsersViewVM>();
+ SimpleIoc.Default.Register<RolesViewVM>();
}
public static MainViewVM MainViewVM
@@ -64,5 +64,13 @@ namespace Tango.MachineStudio.DB
return ServiceLocator.Current.GetInstance<UsersViewVM>();
}
}
+
+ public static RolesViewVM RolesViewVM
+ {
+ get
+ {
+ return ServiceLocator.Current.GetInstance<RolesViewVM>();
+ }
+ }
}
} \ No newline at end of file
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/AddressesViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/AddressesViewVM.cs
index c5f95c803..41eab1c37 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/AddressesViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/AddressesViewVM.cs
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
using Tango.DAL.Observables;
using Tango.MachineStudio.Common.Notifications;
-namespace Tango.MachineStudio.DB.ViewModels.DBViewModels
+namespace Tango.MachineStudio.DB.ViewModels
{
public class AddressesViewVM : DbTableViewModel<Address>
{
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DbTableViewModel.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DbTableViewModel.cs
index db72055df..7f6dd8d5f 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DbTableViewModel.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DbTableViewModel.cs
@@ -10,9 +10,9 @@ using Tango.MachineStudio.DB.Managers;
using Tango.SharedUI;
using Tango.MachineStudio.DB.ExtensionMethods;
-namespace Tango.MachineStudio.DB.ViewModels.DBViewModels
+namespace Tango.MachineStudio.DB.ViewModels
{
- public abstract class DbTableViewModel<T> : ViewModel where T : IObservableEntity
+ public abstract class DbTableViewModel<T> : ViewModel where T : class, IObservableEntity
{
private INotificationProvider _notification;
@@ -25,8 +25,8 @@ namespace Tango.MachineStudio.DB.ViewModels.DBViewModels
Adapter = ObservablesEntitiesAdapter.Instance;
AddCommand = new RelayCommand(OnAdd);
- EditCommand = new RelayCommand(OnEdit);
- DeleteCommand = new RelayCommand(OnDelete);
+ EditCommand = new RelayCommand(OnEdit,(x) => SelectedEntity != null);
+ DeleteCommand = new RelayCommand(OnDelete, (x) => SelectedEntity != null);
DialogOKCommand = new RelayCommand(() => OnDialogOKPressed(DialogOpenMode, EditEntity));
DialogCancelCommand = new RelayCommand(() => OnDialogCancelPressed(DialogOpenMode, EditEntity));
@@ -80,7 +80,7 @@ namespace Tango.MachineStudio.DB.ViewModels.DBViewModels
public T SelectedEntity
{
get { return _selectedEntity; }
- set { _selectedEntity = value; RaisePropertyChangedAuto(); }
+ set { _selectedEntity = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
}
private String _filter;
@@ -166,6 +166,7 @@ namespace Tango.MachineStudio.DB.ViewModels.DBViewModels
entity.Save();
IsDialogOpen = false;
SelectedEntity = EditEntity;
+ SelectedEntity = null;
}
/// <summary>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DialogOpenMode.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DialogOpenMode.cs
index 7a7e9bd41..0d46a9734 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DialogOpenMode.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DialogOpenMode.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.MachineStudio.DB.ViewModels.DBViewModels
+namespace Tango.MachineStudio.DB.ViewModels
{
public enum DialogOpenMode
{
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MachinesViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MachinesViewVM.cs
index fd2f88c2f..fbec464bd 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MachinesViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MachinesViewVM.cs
@@ -9,7 +9,7 @@ using Tango.DAL.Observables;
using Tango.MachineStudio.Common.Notifications;
using Tango.SharedUI;
-namespace Tango.MachineStudio.DB.ViewModels.DBViewModels
+namespace Tango.MachineStudio.DB.ViewModels
{
public class MachinesViewVM : DbTableViewModel<Machine>
{
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MultiComboVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MultiComboVM.cs
index 4a3709050..d15ac6e11 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MultiComboVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MultiComboVM.cs
@@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Tango.SharedUI;
-namespace Tango.MachineStudio.DB.ViewModels.DBViewModels
+namespace Tango.MachineStudio.DB.ViewModels
{
public class MultiComboVM<T> : EntityViewModel<T>
{
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/OrganizationsViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/OrganizationsViewVM.cs
index ff0ec3b77..a394f9faa 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/OrganizationsViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/OrganizationsViewVM.cs
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
using Tango.DAL.Observables;
using Tango.MachineStudio.Common.Notifications;
-namespace Tango.MachineStudio.DB.ViewModels.DBViewModels
+namespace Tango.MachineStudio.DB.ViewModels
{
public class OrganizationsViewVM : DbTableViewModel<Organization>
{
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/RolesViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/RolesViewVM.cs
new file mode 100644
index 000000000..d09722ec9
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/RolesViewVM.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.DAL.Observables;
+using Tango.MachineStudio.Common.Notifications;
+using Tango.MachineStudio.DB.ViewModels;
+
+namespace Tango.MachineStudio.DB.ViewModels
+{
+ public class RolesViewVM : DbTableViewModel<Role>
+ {
+ public RolesViewVM(INotificationProvider notification) : base(notification)
+ {
+ SelectedPermissions = new ObservableCollection<MultiComboVM<Permission>>();
+ }
+
+ private ObservableCollection<MultiComboVM<Permission>> _selectedPermissions;
+ public ObservableCollection<MultiComboVM<Permission>> SelectedPermissions
+ {
+ get { return _selectedPermissions; }
+ set { _selectedPermissions = value; RaisePropertyChangedAuto(); }
+ }
+
+ protected override void OnEdit()
+ {
+ SelectedPermissions = Adapter.Permissions.Select(x => new MultiComboVM<Permission>(x, () => RaisePropertyChanged(nameof(SelectedPermissions)))).ToObservableCollection();
+
+ foreach (var permission in SelectedPermissions)
+ {
+ if (SelectedEntity.RolesPermissions.ToList().Exists(x => x.Permission == permission.Entity && !x.Deleted))
+ {
+ permission.IsSelected = true;
+ }
+ }
+
+ base.OnEdit();
+ }
+
+ protected override void OnAdd()
+ {
+ SelectedPermissions = Adapter.Permissions.Select(x => new MultiComboVM<Permission>(x, () => RaisePropertyChanged(nameof(SelectedPermissions)))).ToObservableCollection();
+
+ base.OnAdd();
+ }
+
+ protected override void OnBeforeEntitySave(DialogOpenMode mode, Role role)
+ {
+ base.OnBeforeEntitySave(mode, role);
+
+ foreach (var permission in SelectedPermissions)
+ {
+ var rolePermission = role.RolesPermissions.SingleOrDefault(x => x.Permission == permission.Entity);
+
+ if (rolePermission != null)
+ {
+ rolePermission.Deleted = !permission.IsSelected;
+ }
+ else
+ {
+ if (permission.IsSelected)
+ {
+ role.RolesPermissions.Add(new RolesPermission()
+ {
+ Permission = permission.Entity,
+ Role = role,
+ PermissionGuid = permission.Entity.Guid,
+ RoleGuid = role.Guid
+ });
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/UsersViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/UsersViewVM.cs
index 1dde969d6..0b65d48ab 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/UsersViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/UsersViewVM.cs
@@ -7,17 +7,16 @@ using System.Threading.Tasks;
using Tango.DAL.Observables;
using Tango.MachineStudio.Common.Notifications;
-namespace Tango.MachineStudio.DB.ViewModels.DBViewModels
+namespace Tango.MachineStudio.DB.ViewModels
{
public class UsersViewVM : DbTableViewModel<User>
{
- private ObservableCollection<MultiComboVM<Role>> _selectedRoles;
-
public UsersViewVM(INotificationProvider notification) : base(notification)
{
SelectedRoles = new ObservableCollection<MultiComboVM<Role>>();
}
+ private ObservableCollection<MultiComboVM<Role>> _selectedRoles;
public ObservableCollection<MultiComboVM<Role>> SelectedRoles
{
get { return _selectedRoles; }
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RoleView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RoleView.xaml
new file mode 100644
index 000000000..d23e9c7b2
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RoleView.xaml
@@ -0,0 +1,44 @@
+<UserControl x:Class="Tango.MachineStudio.DB.Views.DBViews.RoleView"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
+ xmlns:controls="clr-namespace:Tango.MachineStudio.DB.Controls"
+ xmlns:converters="clr-namespace:Tango.MachineStudio.DB.Converters"
+ xmlns:local="clr-namespace:Tango.MachineStudio.DB.Views.DBViews"
+ mc:Ignorable="d"
+ d:DesignHeight="300" d:DesignWidth="300">
+
+ <UserControl.Resources>
+ <converters:RolesPermissionsToStringConverter x:Key="RolesPermissionsToStringConverter"></converters:RolesPermissionsToStringConverter>
+ </UserControl.Resources>
+
+ <Grid>
+ <controls:TableGrid>
+ <TextBlock Text="ID:" FontWeight="Bold"></TextBlock>
+ <TextBox Text="{Binding EditEntity.ID}" IsReadOnly="True"></TextBox>
+ <TextBlock Text="GUID:" FontWeight="Bold"></TextBlock>
+ <TextBox Text="{Binding EditEntity.Guid}" IsReadOnly="True"></TextBox>
+ <TextBlock Text="Last Updated:" FontWeight="Bold"></TextBlock>
+ <TextBox Text="{Binding EditEntity.LastUpdated}" IsReadOnly="True"></TextBox>
+ <TextBlock Text="Code:" FontWeight="Bold"></TextBlock>
+ <TextBox Text="{Binding EditEntity.Code,Mode=TwoWay}"></TextBox>
+ <TextBlock Text="Name:" FontWeight="Bold"></TextBlock>
+ <TextBox Text="{Binding EditEntity.Name,Mode=TwoWay}"></TextBox>
+ <TextBlock Text="Description:" FontWeight="Bold"></TextBlock>
+ <TextBox Text="{Binding EditEntity.Description,Mode=TwoWay}"></TextBox>
+ <TextBlock Text="Permissions:" FontWeight="Bold"></TextBlock>
+ <ComboBox x:Name="comboRoles" SelectionChanged="comboRoles_SelectionChanged" ItemsSource="{Binding SelectedPermissions}" materialDesign:HintAssist.Hint="{Binding SelectedPermissions,Converter={StaticResource RolesPermissionsToStringConverter},UpdateSourceTrigger=PropertyChanged}">
+ <ComboBox.ItemTemplate>
+ <DataTemplate>
+ <StackPanel Orientation="Horizontal">
+ <CheckBox IsChecked="{Binding IsSelected}" Width="20"/>
+ <TextBlock Text="{Binding Entity.Name}" MinWidth="100" ToolTip="{Binding Entity.Description}" />
+ </StackPanel>
+ </DataTemplate>
+ </ComboBox.ItemTemplate>
+ </ComboBox>
+ </controls:TableGrid>
+ </Grid>
+</UserControl>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RoleView.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RoleView.xaml.cs
new file mode 100644
index 000000000..d49ab14e9
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RoleView.xaml.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Tango.MachineStudio.DB.Views.DBViews
+{
+ /// <summary>
+ /// Interaction logic for AddressView.xaml
+ /// </summary>
+ public partial class RoleView : UserControl
+ {
+ public RoleView()
+ {
+ InitializeComponent();
+ }
+
+ private void comboRoles_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ comboRoles.SelectedItem = null;
+ comboRoles.Text = "Press to select";
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RolesView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RolesView.xaml
new file mode 100644
index 000000000..dcb61eacb
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RolesView.xaml
@@ -0,0 +1,30 @@
+<UserControl x:Class="Tango.MachineStudio.DB.Views.DBViews.RolesView"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:global="clr-namespace:Tango.MachineStudio.DB"
+ xmlns:converters="clr-namespace:Tango.MachineStudio.DB.Converters"
+ xmlns:controls="clr-namespace:Tango.MachineStudio.DB.Controls"
+ mc:Ignorable="d"
+ d:DesignHeight="720" d:DesignWidth="1280" Background="White" DataContext="{x:Static global:ViewModelLocator.RolesViewVM}">
+
+ <UserControl.Resources>
+ <converters:RolesPermissionsToStringConverter x:Key="RolesPermissionsToStringConverter"></converters:RolesPermissionsToStringConverter>
+ </UserControl.Resources>
+
+ <Grid>
+ <controls:DbTableView>
+ <DataGrid Background="Transparent" ItemsSource="{Binding Adapter.Roles}" SelectedItem="{Binding SelectedEntity}" AutoGenerateColumns="False" IsReadOnly="True">
+ <DataGrid.Columns>
+ <DataGridTextColumn Header="ID" Binding="{Binding ID}"></DataGridTextColumn>
+ <DataGridTextColumn Header="GUID" Binding="{Binding Guid}"></DataGridTextColumn>
+ <DataGridTextColumn Header="Code" Binding="{Binding Code}"></DataGridTextColumn>
+ <DataGridTextColumn Header="Name" Binding="{Binding Name}"></DataGridTextColumn>
+ <DataGridTextColumn Header="Description" Binding="{Binding Description}"></DataGridTextColumn>
+ <DataGridTextColumn Header="Permissions" Binding="{Binding RolesPermissions,Converter={StaticResource RolesPermissionsToStringConverter}}" MaxWidth="300"></DataGridTextColumn>
+ </DataGrid.Columns>
+ </DataGrid>
+ </controls:DbTableView>
+ </Grid>
+</UserControl>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RolesView.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RolesView.xaml.cs
new file mode 100644
index 000000000..b1e39c417
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/RolesView.xaml.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using Tango.MachineStudio.DB.CustomAttributes;
+using Tango.SharedUI.Controls;
+
+namespace Tango.MachineStudio.DB.Views.DBViews
+{
+ /// <summary>
+ /// Interaction logic for MachinesView.xaml
+ /// </summary>
+ [DBView]
+ public partial class RolesView : UserControl
+ {
+ public RolesView() : base()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/UserView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/UserView.xaml
index bb5f08f4a..e63c1c131 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/UserView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/Views/DBViews/UserView.xaml
@@ -32,7 +32,7 @@
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsSelected}" Width="20"/>
- <TextBlock Text="{Binding Entity.Name}" Width="100" />
+ <TextBlock Text="{Binding Entity.Name}" MinWidth="100" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>