summaryrefslogtreecommitdiff
path: root/src/main/kotlin/me/kyren223/trident/ui/SettingsConfigurable.kt
blob: 6283a29da3481de897796d6da488497921db1e2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package me.kyren223.trident.ui

import com.intellij.openapi.options.Configurable
import com.intellij.openapi.util.NlsContexts.ConfigurableName
import me.kyren223.trident.data.SettingsData
import me.kyren223.trident.data.SettingsState
import javax.swing.JComponent

class SettingsConfigurable : Configurable {

    private var settings: SettingsData? = null

    override fun getDisplayName(): @ConfigurableName String {
        return "Trident Settings"
    }

    override fun createComponent(): JComponent {
        settings = SettingsData()
        return settings!!.panel
    }

    override fun isModified(): Boolean {
        val settings = SettingsState.instance
        if (settings.width != this.settings!!.getWidth()) return true
        if (settings.height != this.settings!!.getHeight()) return true
        if (settings.fontSize != this.settings!!.getFontSize()) return true
        if (settings.enterToSelect != this.settings!!.getEnterToSelect()) return true
        if (settings.automaticMapping != this.settings!!.getAutomaticMapping()) return true
        if (settings.recursiveMapping != this.settings!!.getRecursiveMapping()) return true
        if (settings.rememberLine != this.settings!!.getRememberLine()) return true
        return false
    }

    override fun apply() {
        val settings = SettingsState.instance
        settings.width = this.settings!!.getWidth()
        settings.height = this.settings!!.getHeight()
        settings.fontSize = this.settings!!.getFontSize()
        settings.enterToSelect = this.settings!!.getEnterToSelect()
        settings.automaticMapping = this.settings!!.getAutomaticMapping()
        settings.recursiveMapping = this.settings!!.getRecursiveMapping()
        settings.rememberLine = this.settings!!.getRememberLine()
    }

    override fun reset() {
        val settings = SettingsState.instance
        if (this.settings == null) {
            this.settings = SettingsData()
        }
        this.settings!!.setWidth(settings.width)
        this.settings!!.setHeight(settings.height)
        this.settings!!.setFontSize(settings.fontSize)
        this.settings!!.setEnterToSelect(settings.enterToSelect)
        this.settings!!.setAutomaticMapping(settings.automaticMapping)
        this.settings!!.setRecursiveMapping(settings.recursiveMapping)
        this.settings!!.setRememberLine(settings.rememberLine)
    }

    override fun disposeUIResources() {
        settings = null
    }
}