using System; using System.Collections.Generic; using System.Text; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Documents; using System.Windows.Media; using System.Windows.Media.Imaging; namespace NT2chView { class NTResPopupMenu1 : Popup { // static NTResPopupMenu1 mPopupMenu = null; /* public static void closePopupMenu() { if (mPopupMenu != null) { mPopupMenu.IsOpen = false; mPopupMenu = null; } }*/ NTRes mRes; MainWindow mMainWnd; static NTResPopupMenu1 mMe = null; public static void Hide() { if (mMe != null) { mMe.IsOpen = false; mMe = null; } } public NTResPopupMenu1(MainWindow main, NTRes res) : base() { mRes = res; mMainWnd = main; //closePopupMenu(); //mPopupMenu = this; //this.StaysOpen = false; //this.MouseLeave += NTResPopupMenu1_MouseLeave; //this.LostFocus += NTResPopupMenu1_LostFocus; //item1.Content = new Run("TEST"); // item1.Content = new TextBlock(new Run("TEST")); //TextBlock tb = new TextBlock(new Run("TEST")); //Button btn = new Button(); //Bitmap bmp = new Bitmap(); //try // { //Image img = new Image(); // Image. //img.FindResource("/NT2chView;component/images/tag.png"); // BitmapImage bimg = new BitmapImage(new Uri(@"/images/tag.png", UriKind.Relative)); // img.Source = bimg; // ImageSource. // sp.Children.Add(img); // } // catch (Exception e) // { // NTDebug.l(e.Message); // } //ListBox lBox = new ListBox(); StackPanel sp = new StackPanel(); sp.Orientation = Orientation.Horizontal; StackPanel panel = new StackPanel(); Border border = new Border(); border.BorderThickness = new System.Windows.Thickness(1); border.BorderBrush = new SolidColorBrush(Colors.DarkGray); //border. if(!res.mBookmark) sp.Children.Add(new TextBlock(new Run("ブックマークを追加"))); else sp.Children.Add(new TextBlock(new Run("ブックマークを削除"))); sp.MouseLeftButtonDown += addBookmark_MouseLeftButtonDown; ListBoxItem item1 = new ListBoxItem(); item1.Content = sp; item1.Padding = new System.Windows.Thickness(10, 2, 10, 2); item1.MouseEnter += item1_MouseEnter; item1.MouseLeave += item1_MouseLeave; item1.MouseLeftButtonDown += addBookmark_MouseLeftButtonDown; item1.MouseLeftButtonUp += addBookmark_MouseLeftButtonUp; panel.Background = new SolidColorBrush(Colors.White); panel.Children.Add(item1); sp = new StackPanel(); sp.MouseLeftButtonDown += reply_with_no_MouseLeftButtonDown; sp.Children.Add(new TextBlock(new Run("このレスに返信"))); item1 = new ListBoxItem(); item1.Content = sp; item1.Padding = new System.Windows.Thickness(10, 2, 10, 2); item1.MouseEnter += item1_MouseEnter; item1.MouseLeave += item1_MouseLeave; //item1.MouseLeftButtonDown += item1_MouseLeftButtonDown; //item1.MouseLeftButtonUp += item1_MouseLeftButtonUp; panel.Children.Add(item1); sp = new StackPanel(); sp.MouseLeftButtonDown += reply_with_site_MouseLeftButtonDown; sp.Children.Add(new TextBlock(new Run("このレスに引用して返信"))); item1 = new ListBoxItem(); item1.Padding = new System.Windows.Thickness(10, 2, 10, 2); item1.Content = sp; item1.MouseEnter += item1_MouseEnter; item1.MouseLeave += item1_MouseLeave; //item1.MouseLeftButtonDown += item1_MouseLeftButtonDown; //item1.MouseLeftButtonUp += item1_MouseLeftButtonUp; panel.Children.Add(item1); sp = new StackPanel(); sp.Children.Add(new TextBlock(new Run("このレスからNGを抽出"))); sp.MouseLeftButtonDown += item1_MouseLeftButtonDown; item1 = new ListBoxItem(); item1.Padding = new System.Windows.Thickness(10, 2, 10, 2); item1.Content = sp; item1.MouseEnter += item1_MouseEnter; item1.MouseLeave += item1_MouseLeave; item1.MouseLeftButtonDown += item1_MouseLeftButtonDown; item1.MouseLeftButtonUp += item1_MouseLeftButtonUp; panel.Children.Add(item1); //this.Child = panel; border.Child = panel; this.Child = border; } void addBookmark_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { Hide(); //IsOpen = false; //throw new NotImplementedException(); } void reply_with_no_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { string siteMsg = ">"+mRes.mSeqNo.ToString(); mMainWnd.WriteRes_Invoke(mRes.mThread, siteMsg); } void reply_with_site_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { StringBuilder sb = new StringBuilder(); sb.Append('>').Append(mRes.mSeqNo.ToString()).Append("\r\n"); string msg = NTTextFormat.removeTag(mRes.mMsg); string [] lines = NTTextUtiles.splitLine(msg); foreach (string line in lines) { sb.Append('>').Append(line).Append("\r\n"); } string siteMsg = sb.ToString(); mMainWnd.WriteRes_Invoke(mRes.mThread, siteMsg); } void addBookmark_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { //IsOpen = false; Hide(); /*if (mRes == null) return; if (!mRes.mBookmark) mRes.addBookmark(); else mRes.removeBookmark();*/ } void item1_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { Hide(); //IsOpen = false; //throw new NotImplementedException(); } void item1_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { Hide(); //IsOpen = false; //mMainWnd.NgEdit_setResSection(mRes); } void item1_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e) { ListBoxItem item = sender as ListBoxItem; if (item == null) return; item.Background = new SolidColorBrush(Colors.White); } void item1_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) { ListBoxItem item = sender as ListBoxItem; if (item == null) return; item.Background = new SolidColorBrush(Colors.MistyRose); } void NTResPopupMenu1_LostFocus(object sender, System.Windows.RoutedEventArgs e) { Hide(); //IsOpen = false; //mPopupMenu = null; } void NTResPopupMenu1_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e) { Hide(); //IsOpen = false; // mPopupMenu = null; } public void show() { Hide(); mMe = this; IsOpen = true; Placement = PlacementMode.Mouse; Focus(); } } }