// // Copyright 2014 Perforce Software Inc. // using Perforce.Helper; using Perforce.Model; using Perforce.ViewModel; using System; using System.Windows; using System.Windows.Controls; namespace Perforce.View { /// /// Interaction logic for ListingItemInfo.xaml /// public partial class ListingItemInfo : UserControl, Refreshable { private ListingItemInfoViewModel _model; public ListingItemInfo(ListingItem item) { InitializeComponent(); _model = new ListingItemInfoViewModel(item); this.DataContext = _model; } public ListingItemInfoViewModel Model { get { return _model; } set { _model = value; } } public void Refresh(bool sync = false) { _model.RefreshMetadata(); var infoSelector = ListingInfo.ContentTemplateSelector; ListingInfo.ContentTemplateSelector = null; ListingInfo.ContentTemplateSelector = infoSelector; var actionsSelector = ListingActions.ContentTemplateSelector; ListingActions.ContentTemplateSelector = null; ListingActions.ContentTemplateSelector = actionsSelector; this.UpdateLayout(); UIHelper.ScrollToRight(); } private void ListingItemInfo_Loaded(object sender, System.Windows.RoutedEventArgs e) { UIHelper.ScrollToRight(); } private void EditButton_Click(object sender, System.Windows.RoutedEventArgs e) { CommandHelper.CheckoutFiles(items: Model.Item); Refresh(); } private void OpenButton_Click(object sender, System.Windows.RoutedEventArgs e) { CommandHelper.CheckoutAndOpenFile(Model.Item); Refresh(); } private void ViewButton_Click(object sender, System.Windows.RoutedEventArgs e) { CommandHelper.OpenLocalFile(Model.Item.ClientPath); } private void OpenFromServer_Click(object sender, System.Windows.RoutedEventArgs e) { CommandHelper.OpenFileFromServer(Model.Item.DepotPath); } private void AddToServer_Click(object sender, System.Windows.RoutedEventArgs e) { CommandHelper.AddFiles(Model.Item); } private void Submit_Click(object sender, System.Windows.RoutedEventArgs e) { CommandHelper.SubmitFile(Model.Item); } private void ViewInExplorer_Click(object sender, System.Windows.RoutedEventArgs e) { CommandHelper.ShowFileInExplorer(Model.Item.ClientPath); } private void CopyButton_Click(object sender, System.Windows.RoutedEventArgs e) { Clipboard.SetText(string.Format("p4:{0}", Utility.EncodePath(_model.MetaData.DepotPath.Path))); UIHelper.ShowTimedMessage("URL copied to clipboard", timeout: 1d); } private void Revert_Click(object sender, System.Windows.RoutedEventArgs e) { CommandHelper.RevertFiles(Model.Item); Refresh(); } private void Trash_Click(object sender, System.Windows.RoutedEventArgs e) { CommandHelper.DeleteFiles(Model.Item); Refresh(); } private void ShowVersions_Click(object sender, System.Windows.RoutedEventArgs e) { MainWindow main = App.Current.MainWindow as MainWindow; main.DisplayCurrentItemVersionInfo(); } private void ShelveFile_Click(object sender, System.Windows.RoutedEventArgs e) { CommandHelper.ShelveFiles(Model.Item); Refresh(); } private void OpenShelvedFile_Click(object sender, System.Windows.RoutedEventArgs e) { CommandHelper.OpenFileFromShelf(Model.Item.DepotPath); } private void UnshelveButton_Click(object sender, RoutedEventArgs e) { var main = App.Current.MainWindow as MainWindow; var dialog = main.DialogManager.CreateMessageDialog("Are you sure you want to unshelve the file? Any changes you have made to the document will be lost", Technewlogic.WpfDialogManagement.DialogMode.OkCancel); dialog.VerticalDialogAlignment = System.Windows.VerticalAlignment.Top; dialog.OkText = "Unshelve"; dialog.Ok = () => { CommandHelper.RevertFiles(Model.Item); CommandHelper.UnshelveFiles(Model.Item); }; dialog.Show(); } private void DeleteShelvedFile_Click(object sender, System.Windows.RoutedEventArgs e) { CommandHelper.DeleteShelvedFiles(Model.Item); Refresh(); } private void LockedUser_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { Console.WriteLine((sender as Label).Content); } private void EmailButton_Click(object sender, RoutedEventArgs e) { var others = _model.MetaData.OtherUsers; if (others != null && others.Count > 0) { foreach (var k in others.Keys) { var otherUser = others[k]; // send email to users locking the file CommandHelper.SendEmail(otherUser.UserName, _model.MetaData.DepotPath.Path); } } } } }