DeflatedPickle/Quiver

View on GitHub
docxviewer/src/main/kotlin/com/deflatedpickle/docxviewer/DocXViewerPlugin.kt

Summary

Maintainability
A
3 hrs
Test Coverage
/* Copyright (c) 2021 DeflatedPickle under the MIT license */

@file:Suppress("UNCHECKED_CAST")

package com.deflatedpickle.docxviewer

import com.deflatedpickle.haruhi.api.Registry
import com.deflatedpickle.haruhi.api.plugin.Plugin
import com.deflatedpickle.haruhi.api.plugin.PluginType
import com.deflatedpickle.haruhi.event.EventProgramFinishSetup
import com.deflatedpickle.haruhi.util.RegistryUtil
import com.deflatedpickle.quiver.filepanel.api.Viewer
import org.apache.logging.log4j.LogManager

@Suppress("unused")
@Plugin(
    value = "$[name]",
    author = "$[author]",
    version = "$[version]",
    description = """
        <br>
        A viewer for DocX files
    """,
    type = PluginType.OTHER,
    dependencies = [
        "deflatedpickle@file_panel#>=1.0.0"
    ]
)
object DocXViewerPlugin {
    internal val logger = LogManager.getLogger()

    private val extensionSet = setOf(
        "docx"
    )

    init {
        EventProgramFinishSetup.addListener {
            val registry = RegistryUtil.get("viewer") as Registry<String, MutableList<Viewer<Any>>>?

            if (registry != null) {
                for (i in this.extensionSet) {
                    registry.getOrRegister(i, ::mutableListOf)?.let { it += DocXViewer as Viewer<Any> }
                }
            }
        }
    }
}