|
@@ -30,6 +30,8 @@ namespace compdfkit_tools.Annotation.PDFAnnotationControl
|
|
|
{
|
|
|
private CPDFViewer pdfViewer;
|
|
|
private UIElement annotationPanel = null;
|
|
|
+ private UIElement tempAnnotationPanel = null;
|
|
|
+
|
|
|
private AnnotationType currentAnnotationType = AnnotationType.None;
|
|
|
|
|
|
private CPDFMarkupUI pdfHighlightUI;
|
|
@@ -116,6 +118,10 @@ namespace compdfkit_tools.Annotation.PDFAnnotationControl
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 参数解析
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="pdfAnnotationData"></param>
|
|
|
private void SetAnnotationProperty(CPDFAnnotationData pdfAnnotationData = null)
|
|
|
{
|
|
|
AnnotationType annotationType = pdfAnnotationData.AnnotationType;
|
|
@@ -291,11 +297,15 @@ namespace compdfkit_tools.Annotation.PDFAnnotationControl
|
|
|
{
|
|
|
SetAnnotationProperty(e);
|
|
|
}
|
|
|
-
|
|
|
- public void LoadAnnotationPanel(AnnotationType annotationType)
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 选择对应注释面板
|
|
|
+ /// 若未创建则创建
|
|
|
+ /// 已创建则使用已有项
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="annotationType"></param>
|
|
|
+ public void InitAnnotationPanel(AnnotationType annotationType)
|
|
|
{
|
|
|
- currentAnnotationType = annotationType;
|
|
|
- annotationPanel = GetAnnotationPanel();
|
|
|
switch (annotationType)
|
|
|
{
|
|
|
case AnnotationType.Highlight:
|
|
@@ -377,7 +387,7 @@ namespace compdfkit_tools.Annotation.PDFAnnotationControl
|
|
|
annotationPanel = pdfFreeTextUI;
|
|
|
break;
|
|
|
case AnnotationType.Note:
|
|
|
- if(pdfNoteUI == null)
|
|
|
+ if (pdfNoteUI == null)
|
|
|
{
|
|
|
pdfNoteUI = new CPDFNoteUI();
|
|
|
}
|
|
@@ -390,21 +400,96 @@ namespace compdfkit_tools.Annotation.PDFAnnotationControl
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 创建临时注释面板
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="annotArgsType"></param>
|
|
|
+ public void CreatTempAnnotationPanel(AnnotAttribEvent annotAttribEvent)
|
|
|
+ {
|
|
|
+ AnnotArgsType annotArgsType = annotAttribEvent.GetAnnotTypes();
|
|
|
+ switch (annotArgsType)
|
|
|
+ {
|
|
|
+ case AnnotArgsType.AnnotHighlight:
|
|
|
+ case AnnotArgsType.AnnotUnderline:
|
|
|
+ case AnnotArgsType.AnnotStrikeout:
|
|
|
+ case AnnotArgsType.AnnotSquiggly:
|
|
|
+ tempAnnotationPanel = new CPDFMarkupUI();
|
|
|
+ (tempAnnotationPanel as CPDFMarkupUI).InitWithAnnotationType(CPDFAnnotationDictionary.GetAnnotArgsTypeFromAnnotationType[annotArgsType]);
|
|
|
+ (tempAnnotationPanel as CPDFMarkupUI).SetPresentAnnotAttrib(annotAttribEvent);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case AnnotArgsType.AnnotSquare:
|
|
|
+ case AnnotArgsType.AnnotCircle:
|
|
|
+ case AnnotArgsType.AnnotLine:
|
|
|
+ tempAnnotationPanel = new CPDFShapeUI();
|
|
|
+ (tempAnnotationPanel as CPDFShapeUI).InitWithAnnotationType(CPDFAnnotationDictionary.GetAnnotArgsTypeFromAnnotationType[annotArgsType]);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case AnnotArgsType.AnnotFreehand:
|
|
|
+ tempAnnotationPanel = new CPDFFreehandUI();
|
|
|
+ break;
|
|
|
+ case AnnotArgsType.AnnotFreeText:
|
|
|
+ tempAnnotationPanel = new CPDFFreeTextUI();
|
|
|
+ break;
|
|
|
+ case AnnotArgsType.AnnotSticky:
|
|
|
+ tempAnnotationPanel = new CPDFNoteUI();
|
|
|
+ break;
|
|
|
+ case AnnotArgsType.AnnotStamp:
|
|
|
+ tempAnnotationPanel = new CPDFStampUI();
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 根据注释类型显示注释面板
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="annotationType"></param>
|
|
|
+ public void LoadAnnotationPanel(AnnotationType annotationType)
|
|
|
+ {
|
|
|
+ currentAnnotationType = annotationType;
|
|
|
+ annotationPanel = GetAnnotationPanel();
|
|
|
+ InitAnnotationPanel(annotationType);
|
|
|
+ ShowCurrentAnnotPanel();
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 展示正在使用的属性面板
|
|
|
+ /// </summary>
|
|
|
+ private void ShowCurrentAnnotPanel()
|
|
|
+ {
|
|
|
SetAnnotationPanel(annotationPanel);
|
|
|
ExpandPanel();
|
|
|
ChangeAnnotationData();
|
|
|
}
|
|
|
|
|
|
- public void SetSelectAnnotList(Dictionary<int, List<int>> selectAnnotDicts)
|
|
|
+ /// <summary>
|
|
|
+ /// 根据参数展开指定临时面板
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="annotArgsType"></param>
|
|
|
+ private void ShowTempAnnotPanel(AnnotAttribEvent annotAttribEvent)
|
|
|
{
|
|
|
-
|
|
|
+ CreatTempAnnotationPanel(annotAttribEvent);
|
|
|
+ SetAnnotationPanel(tempAnnotationPanel);
|
|
|
+ ExpandPanel();
|
|
|
}
|
|
|
|
|
|
private void PDFViewer_AnnotActiveHandler(object sender, AnnotAttribEvent e)
|
|
|
{
|
|
|
if (e != null)
|
|
|
{
|
|
|
- AnnotArgsType annotArgsType = e.GetAnnotTypes();
|
|
|
+ if (e.IsAnnotCreateReset)
|
|
|
+ {
|
|
|
+ ShowCurrentAnnotPanel();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ AnnotArgsType annotArgsType = e.GetAnnotTypes();
|
|
|
+ ShowTempAnnotPanel(e);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|