// // Copyright 2014 Perforce Software Inc. // using Perforce.Helper; using Perforce.ViewModel; using Perforce.P4; using System.Windows; using System.Windows.Controls; namespace Perforce.View { public class ListingActionTemplateSelector : DataTemplateSelector { public DataTemplate NoActionsDataTemplate { get; set; } public DataTemplate UnmappedServerDataTemplate { get; set; } public DataTemplate UnmappedWorkspaceDataTemplate { get; set; } public DataTemplate AvailableDataTemplate { get; set; } public DataTemplate CheckedOutNotShelvedDataTemplate { get; set; } public DataTemplate CheckedOutShelvedDataTemplate { get; set; } public DataTemplate TrashDataTemplate { get; set; } public override DataTemplate SelectTemplate(object item, DependencyObject container) { var helper = Utility.GetPerforceHelper(); if (item == null) { return NoActionsDataTemplate; } ListingItemInfoViewModel model = item as ListingItemInfoViewModel; var md = model.MetaData; if (model == null || md.IsMapped == false) { var current = UIHelper.GetCurrentSelector(); if (current.SelectorType == SELECTOR_TYPE.SERVER) { return UnmappedServerDataTemplate; } else if (current.SelectorType == SELECTOR_TYPE.WORKSPACE) { return UnmappedWorkspaceDataTemplate; } else { return NoActionsDataTemplate; } } if (!md.Action.Equals(FileAction.None)) { if (md.Action.Equals(FileAction.Delete)) { return TrashDataTemplate; } if(helper.IsFileShelved(md.DepotPath.Path)) { return CheckedOutShelvedDataTemplate; } return CheckedOutNotShelvedDataTemplate; } return AvailableDataTemplate; } } }