Browse Source

compdfkit(win) - 测量Demo 右键菜单

liyuxuan 1 year ago
parent
commit
b67837ee84

+ 51 - 2
Demo/Examples/Compdfkit_Tools/Measure/MeasureControl.xaml.cs

@@ -1,6 +1,7 @@
 using ComPDFKit.Measure;
 using Compdfkit_Tools.Helper;
 using Compdfkit_Tools.PDFControl;
+using ComPDFKitViewer;
 using ComPDFKitViewer.AnnotEvent;
 using ComPDFKitViewer.PdfViewer;
 using System;
@@ -35,6 +36,8 @@ namespace Compdfkit_Tools.Measure
 
         private PanelState panelState = PanelState.GetInstance();
 
+        public event EventHandler ExpandEvent;
+
         public MeasureControl()
         {
             InitializeComponent();
@@ -59,8 +62,53 @@ namespace Compdfkit_Tools.Measure
             panelState.PropertyChanged += PanelState_PropertyChanged;
             pdfViewControl.PDFView.AnnotActiveHandler -= PDFView_AnnotActiveHandler;
             pdfViewControl.PDFView.AnnotActiveHandler += PDFView_AnnotActiveHandler;
+            pdfViewControl.PDFView.AnnotCommandHandler -= PDFView_AnnotCommandHandler;
+            pdfViewControl.PDFView.AnnotCommandHandler += PDFView_AnnotCommandHandler;
         }
 
+        private void PDFView_AnnotCommandHandler(object sender, AnnotCommandArgs e)
+        {
+            switch (e.CommandType)
+            {
+                case CommandType.Context:
+                    e.Handle = true;
+                    if (e.CommandTarget == TargetType.Annot)
+                    {
+                        e.Handle = true;
+                        e.PopupMenu = new ContextMenu();
+                        if (e.PressOnAnnot)
+                        {
+                            e.PopupMenu.Items.Add(new MenuItem() { Header = "Delete", Command = ApplicationCommands.Delete, CommandTarget = (UIElement)sender });
+                            MenuItem menuItem = new MenuItem();
+                            menuItem.Header = "Measure Setting";
+                            menuItem.Click += (item, param) =>
+                            {
+                                SettingPanel.BindMeasureSetting();
+                                SetInfoPanelVisble(false, true);
+                            };
+
+                            MenuItem propertyItem = new MenuItem();
+                            propertyItem.Header = "Property Setting";
+                            propertyItem.Click += (item, param) =>
+                            {
+                                ExpandEvent?.Invoke(this, new EventArgs());
+                            };
+                            e.PopupMenu.Items.Add(menuItem);
+                            e.PopupMenu.Items.Add(propertyItem);
+                        }
+                    }
+                    break;
+             
+                case CommandType.Delete:
+                    e.DoCommand();
+                    break;
+                default:
+                    break;
+            }
+        }
+
+
+
         private void PDFView_AnnotActiveHandler(object sender, AnnotAttribEvent e)
         {
             if (e == null || e.IsAnnotCreateReset)
@@ -188,18 +236,19 @@ namespace Compdfkit_Tools.Measure
 
         private void MeasureInfoPanel_SettingClick(object sender, EventArgs e)
         {
+            SettingPanel.ReturnToInfoPanel = true;
             SetInfoPanelVisble(false, true);
             SettingPanel.BindMeasureSetting();
         }
 
         private void SettingPanel_CancelEvent(object sender, EventArgs e)
         {
-            SetInfoPanelVisble(true, false);
+            SetInfoPanelVisble(SettingPanel.ReturnToInfoPanel, false);
         }
 
         private void SettingPanel_DoneEvent(object sender, EventArgs e)
         {
-            SetInfoPanelVisble(true, false);
+            SetInfoPanelVisble(SettingPanel.ReturnToInfoPanel, false);
         }
 
         public void SetInfoPanelVisble(bool measureInfo, bool measureSetting)

+ 4 - 0
Demo/Examples/Compdfkit_Tools/Measure/MeasureSettingPanel.xaml.cs

@@ -24,6 +24,8 @@ namespace Compdfkit_Tools.Measure
     {
         public event EventHandler CancelEvent;
         public event EventHandler DoneEvent;
+
+        public bool ReturnToInfoPanel { get; set; }
         public MeasureSettingPanel()
         {
             InitializeComponent();
@@ -32,12 +34,14 @@ namespace Compdfkit_Tools.Measure
         private void ButtonCancel_Click(object sender, RoutedEventArgs e)
         {
             CancelEvent?.Invoke(this, e);
+            ReturnToInfoPanel = false;
         }
 
         private void ButtonDone_Click(object sender, RoutedEventArgs e)
         {
             SaveMeasureSetting();
             DoneEvent?.Invoke(this, e);
+            ReturnToInfoPanel = false;
         }
 
         private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)

+ 8 - 0
Demo/Examples/Measure/MainWindow.xaml.cs

@@ -847,6 +847,14 @@ namespace Measure
             displayPanel.InitWithPDFViewer(pdfViewControl.PDFView);
             measureControl.InitWithPDFViewer(pdfViewControl, pdfViewControl.PDFView);
             measureControl.SetSettingsControl(displayPanel);
+            measureControl.ExpandEvent -= MeasureControl_ExpandEvent;
+            measureControl.ExpandEvent += MeasureControl_ExpandEvent;
+        }
+
+        private void MeasureControl_ExpandEvent(object sender, EventArgs e)
+        {
+            RightPanelButton.IsChecked = true;
+            ControlRightPanel();
         }
 
         private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)