diff --git a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/CustomAnnotationToolbarMenu.kt b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/CustomAnnotationToolbarMenu.kt new file mode 100644 index 00000000..43799deb --- /dev/null +++ b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/CustomAnnotationToolbarMenu.kt @@ -0,0 +1,17 @@ +package com.pspdfkit.flutter.pspdfkit + +import android.content.Context +import com.pspdfkit.ui.toolbar.ContextualToolbar +import com.pspdfkit.ui.toolbar.grouping.presets.MenuItem +import com.pspdfkit.ui.toolbar.grouping.presets.PresetMenuItemGroupingRule + +class CustomAnnotationToolbarMenu(context: Context) : PresetMenuItemGroupingRule(context) { + override fun getGroupPreset(capacity: Int, itemsCount: Int): List { + return listOf( + MenuItem(com.pspdfkit.R.id.pspdf__annotation_creation_toolbar_item_highlight), + MenuItem(com.pspdfkit.R.id.pspdf__annotation_creation_toolbar_item_underline), + MenuItem(com.pspdfkit.R.id.pspdf__annotation_creation_toolbar_item_picker), + MenuItem(com.pspdfkit.R.id.pspdf__annotation_creation_toolbar_item_note), + ) + } +} \ No newline at end of file diff --git a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt index f528bffb..55663fcc 100644 --- a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt +++ b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt @@ -1,15 +1,27 @@ package com.pspdfkit.flutter.pspdfkit +import android.os.Bundle +import android.view.View import com.pspdfkit.annotations.measurements.FloatPrecision import com.pspdfkit.annotations.measurements.Scale import com.pspdfkit.document.PdfDocument import com.pspdfkit.ui.PdfUiFragment +import com.pspdfkit.ui.toolbar.AnnotationCreationToolbar +import com.pspdfkit.ui.toolbar.ContextualToolbar +import com.pspdfkit.ui.toolbar.ToolbarCoordinatorLayout +import java.util.EnumSet -class FlutterPdfUiFragment : PdfUiFragment() { +class FlutterPdfUiFragment : PdfUiFragment(), + ToolbarCoordinatorLayout.OnContextualToolbarLifecycleListener { private var scale: Scale? = null private var precision: FloatPrecision? = null + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setOnContextualToolbarLifecycleListener(this) + } + override fun onDocumentLoaded(document: PdfDocument) { super.onDocumentLoaded(document) // Notify the Flutter PSPDFKit plugin that the document has been loaded. @@ -31,4 +43,19 @@ class FlutterPdfUiFragment : PdfUiFragment() { this.precision = precision } + override fun onPrepareContextualToolbar(toolbar: ContextualToolbar<*>) { + if (toolbar is AnnotationCreationToolbar) { + toolbar.setMenuItemGroupingRule(CustomAnnotationToolbarMenu(requireContext())) + toolbar.layoutParams = ToolbarCoordinatorLayout.LayoutParams( + ToolbarCoordinatorLayout.LayoutParams.Position.TOP, EnumSet.of(ToolbarCoordinatorLayout.LayoutParams.Position.TOP) + ) + } + } + + override fun onDisplayContextualToolbar(p0: ContextualToolbar<*>) { + } + + override fun onRemoveContextualToolbar(p0: ContextualToolbar<*>) { + } + } \ No newline at end of file diff --git a/ios/Classes/PspdfPlatformView.m b/ios/Classes/PspdfPlatformView.m index 2297c5ee..39d1a35c 100644 --- a/ios/Classes/PspdfPlatformView.m +++ b/ios/Classes/PspdfPlatformView.m @@ -95,6 +95,20 @@ - (instancetype)initWithFrame:(CGRect)frame viewIdentifier:(int64_t)viewId argum [_channel setMethodCallHandler:^(FlutterMethodCall * _Nonnull call, FlutterResult _Nonnull result) { [weakSelf handleMethodCall:call result:result]; }]; + + PSPDFAnnotationToolbarConfiguration *configuration = [[PSPDFAnnotationToolbarConfiguration alloc] initWithAnnotationGroups:@[ + [PSPDFAnnotationGroup groupWithItems:@[ + [PSPDFAnnotationGroupItem itemWithType:PSPDFAnnotationStringHighlight], + ]], + [PSPDFAnnotationGroup groupWithItems:@[ + [PSPDFAnnotationGroupItem itemWithType:PSPDFAnnotationStringUnderline] + ]], + [PSPDFAnnotationGroup groupWithItems:@[ + [PSPDFAnnotationGroupItem itemWithType:PSPDFAnnotationStringNote] + ]] + ]]; + + _pdfViewController.annotationToolbarController.annotationToolbar.configurations = @[configuration]; } return self;