Android Studio 插件开发4、自定义配置文件
2023-09-27 14:27:38 时间
这种功能我们一般把秘钥让用户自己设置。对吧
那么就需要一个设置页面
如果没设置就点不进去
那么如何操作呢
书接上回
清零已有的key
data class TrelloState(
var apiKey:String="",
var token:String="",
var fromListId:String="",
var toListId:String="",
// @OptionTag(converter = MyDataTimeConverter::class) val data: DateTime?=null
)
在同services、或者同actions的目录上面 新建package settings
将配置都拿进来
package com.anguomob.anguo.settings
import com.anguomob.anguo.actions.trello.TrelloState
import com.anguomob.anguo.services.TrelloService
import com.intellij.openapi.options.Configurable
import com.intellij.openapi.project.Project
import com.intellij.ui.layout.rowWithIndent
import javax.swing.JComponent
import javax.swing.JPanel
import javax.swing.JPasswordField
import javax.swing.JTextField
import com.intellij.ui.layout.panel
import javax.swing.event.DocumentEvent
import javax.swing.event.DocumentListener
class TrelloSettings(private val project: Project) : Configurable, DocumentListener {
private val state: TrelloState by lazy {
TrelloService.getInstance(project).state
}
private val apiKeyField: JPasswordField = JPasswordField()
private val tokenKeyField: JPasswordField = JPasswordField()
private val fromListIdField: JTextField = JTextField()
private val toListIdField: JTextField = JTextField()
private var modified = false
private val panle: JPanel = panel {
row("Api Key") { apiKeyField() }
row("Token") { tokenKeyField() }
row("From List id") { fromListIdField() }
row("To List Id") { toListIdField() }
modified = false
}
override fun createComponent(): JComponent? {
apiKeyField.apply {
text = state.apiKey
document.addDocumentListener(this@TrelloSettings)
}
tokenKeyField.apply {
text = state.token
document.addDocumentListener(this@TrelloSettings)
}
fromListIdField.apply {
text = state.fromListId
document.addDocumentListener(this@TrelloSettings)
}
toListIdField.apply {
text = state.toListId
document.addDocumentListener(this@TrelloSettings)
}
return panle
}
override fun isModified(): Boolean {
return modified
}
override fun apply() {
state.apiKey = String(apiKeyField.password)
state.token = String(tokenKeyField.password)
state.fromListId = fromListIdField.text
state.toListId = toListIdField.text
TrelloService.getInstance(project).loadState(state)
}
override fun getDisplayName(): String {
return "安果Trello设置"
}
override fun insertUpdate(e: DocumentEvent?) {
modified = true
}
override fun removeUpdate(e: DocumentEvent?) {
modified = true
}
override fun changedUpdate(e: DocumentEvent?) {
modified = true
}
}
配置到Plugins当中去
<extensions defaultExtensionNs="com.intellij">
<projectConfigurable instance="com.anguomob.anguo.settings.TrelloSettings"/>
<projectService serviceImplementation="com.anguomob.anguo.services.TrelloService"/>
</extensions>
然后就行了。非常的方便。
相关文章
- 安卓逆向_22( 一 ) --- Xposed【 Android Studio + Xposed 实现简单的 hook 】
- Android中插件开发篇之----应用换肤原理解析
- android ndk-build 编译静态库libxx.a 以及Android studio openssl 静态库配置(cmake)
- Android Studio Electric Eel | 2022.1.1 版本
- Android Studio插件
- Android应用性能优化最佳实践.1.3 Android Studio实用技巧
- android学习精要
- 五年Android开发大厂面经总结,吐血整理2022Android面试题合集(符解析)你确定不看看?
- Xamarin.Android提示找不到mono.Android.Support.v4
- 《Android游戏开发详解》一2.6 构建一个简单的计算器程序
- android图像处理系列之六--给图片添加边框(下)-图片叠加
- 超级简单的Android Studio jni 实现(无需命令行)
- Android:控件WebView显示网页
- eclipse项目迁移到android studio(图文最新版)
- 正确使用Android性能分析工具——TraceView
- 介绍一款Android小游戏--交互式人机对战五子棋
- 在Android Studio 和 Eclipse 的 git 插件操作 "代码提交"以及"代码冲突"
- android 开发不能创建目录
- 如何从Android 应用深入到Framework?
- Android端新版Office Insider发布:Excel中数据集可转地图
- Android Studio Ndk 编程
- Android Studio 基础 之 获取系统Calendar 日历日程(可获得当天以后可设定天数范围内的日历日程) (涉及指定日期时间判断是星期几的方法使用)的方法整理
- android --Activity生命周期具体解释
- 【Android学习】下载jar慢和gradle慢的情况
- 教我兄弟学Android逆向06 用AndroidStudio编写第一个so
- android studio 使用本地gradle的配置
- Android Studio报错Error:Failed to open zip file. Gradle's dependency cache may be corrupt
- Android Studio/Android SDK加载packages不全、无法下载问题/国内镜像