package club.bigtian.mf.plugin.windows;
import club.bigtian.mf.plugin.core.RenderMybatisFlexTemplate;
import club.bigtian.mf.plugin.core.Template;
import club.bigtian.mf.plugin.core.config.MybatisFlexConfig;
import club.bigtian.mf.plugin.core.listener.ComBoxDocumentListener;
import club.bigtian.mf.plugin.core.persistent.MybatisFlexPluginConfigData;
import club.bigtian.mf.plugin.core.render.TableListCellRenderer;
import club.bigtian.mf.plugin.core.search.InvertedIndexSearch;
import club.bigtian.mf.plugin.core.util.Package;
import club.bigtian.mf.plugin.core.util.*;
import club.bigtian.mf.plugin.core.validator.InputValidatorImpl;
import club.bigtian.mf.plugin.entity.ColumnInfo;
import club.bigtian.mf.plugin.entity.TableInfo;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import com.intellij.codeInspection.reference.RefUtil;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.ComponentValidator;
import com.intellij.openapi.ui.FixedSizeButton;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.ui.ValidationInfo;
import com.intellij.ui.DocumentAdapter;
import com.intellij.ui.components.fields.ExtendableTextField;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.List;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Function;
import java.util.stream.Collectors;
public class MybatisFlexCodeGenerateDialog extends JDialog {
public static final String SINCE_CONFIG = "---请选择配置---";
public static final String SINCE_CONFIG_ADD = "添加配置";
private JPanel contentPane;
private JButton generateBtn;
private JButton cancelBtn;
private JComboBox idTypeCombox;
private JComboBox cotrollerCombox;
private ExtendableTextField modelPackagePath;
private JPanel modelPanel;
private ExtendableTextField mapperPackagePath;
private com.intellij.openapi.ui.FixedSizeButton mapperBtn;
private com.intellij.openapi.ui.FixedSizeButton modelBtn;
private JTextField serviceIntefacePath;
private com.intellij.openapi.ui.FixedSizeButton serviceInterfaceBtn;
private JTextField serviceImpPath;
private com.intellij.openapi.ui.FixedSizeButton serviceImplBtn;
private JTextField controllerPath;
private com.intellij.openapi.ui.FixedSizeButton controllerBtn;
private JComboBox modelCombox;
private JComboBox serviceInteCombox;
private JComboBox serviceImplComBox;
private JComboBox mapperComBox;
private JTextField mapperXmlPath;
private FixedSizeButton mapperXmlBtn;
private JComboBox xmlComBox;
private JCheckBox syncCheckBox;
private FixedSizeButton settingLabel;
private JComboBox sinceComBox;
private JList tableList;
private JCheckBox selectAllChexBox;
private JTextField tableSearch;
private FixedSizeButton sortBtn;
private JCheckBox strictComBox;
private JButton button1;
private JCheckBox enableControllerBox;
private JCheckBox enableModelBox;
private JCheckBox enableInterBox;
private JCheckBox enableImplBox;
private JCheckBox enableMapperBox;
private JCheckBox enableXmlBox;
private AnActionEvent actionEvent;
List<JComboBox> list = Arrays.asList(cotrollerCombox, modelCombox, serviceInteCombox, serviceImplComBox, mapperComBox, xmlComBox);
List<JCheckBox> enableList = Arrays.asList(enableControllerBox, enableModelBox, enableInterBox, enableImplBox, enableMapperBox, enableXmlBox);
List<JTextField> packageList = Arrays.asList(controllerPath, modelPackagePath, serviceIntefacePath, serviceImpPath, mapperPackagePath, mapperXmlPath);
Project project;
List<String> tableNameList;
Map<String, TableInfo> tableInfoMap;
private boolean sinceFlag;
public MybatisFlexCodeGenerateDialog(AnActionEvent actionEvent) {
this.actionEvent = actionEvent;
setContentPane(contentPane);
setModal(true);
setTitle("Mybatis Flex Code Generate");
getRootPane().setDefaultButton(generateBtn);
setSize(1050, 460);
DialogUtil.centerShow(this);
project = actionEvent.getProject();
ProjectUtils.setCurrentProject(project);
generateBtn.addActionListener(e -> onGenerate());
cancelBtn.addActionListener(e -> onCancel());
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
onCancel();
}
});
contentPane.registerKeyboardAction(e ->
onCancel(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
init(project);
syncCheckBox.addActionListener(e -> {
if (syncCheckBox.isSelected()) {
Modules.syncModules(list, cotrollerCombox.getSelectedItem());
}
});
cotrollerCombox.addActionListener(e -> {
if (syncCheckBox.isSelected()) {
Modules.syncModules(list, cotrollerCombox.getSelectedItem());
}
});
JTextField textField = (JTextField) cotrollerCombox.getEditor().getEditorComponent();
textField.addActionListener(e -> {
if (syncCheckBox.isSelected()) {
Modules.syncModules(list, cotrollerCombox.getSelectedItem());
}
});
settingLabel.addActionListener(e -> {
Set<String> sinces = MybatisFlexPluginConfigData.getSinceMap().keySet();
MybatisFlexSettingDialog dialog = new MybatisFlexSettingDialog(project, () -> {
initConfigData(null);
});
dialog.show();
sinceFlag = true;
// 避免用户配置后,直接点击设置界面,再回来导致配置丢失
MybatisFlexConfig configData = getConfigData();
Set<String> sinceSet = MybatisFlexPluginConfigData.getSinceMap().keySet();
if (sinces.size() > sinceSet.size()) {
initSinceComBox(0);
} else {
initSinceComBox(CollUtil.isEmpty(list) ? null : sinceComBox.getSelectedIndex());
}
// 再次设置是因为initSinceComBox最终会把sinceFlag设置为false
sinceFlag = true;
initConfigData(configData);
});
sinceComBox.addActionListener(e -> {
Object selectedItem = sinceComBox.getSelectedItem();
if (ObjectUtil.isNull(selectedItem)) {
return;
}
if (selectedItem.toString().equals(SINCE_CONFIG_ADD)) {
sinceComBox.hidePopup();
Messages.InputDialog dialog = new Messages.InputDialog("请输入配置名称", "配置名称", Messages.getQuestionIcon(), "", new InputValidatorImpl());
dialog.show();
String configName = dialog.getInputString();
if (StrUtil.isEmpty(configName)) {
return;
}
MybatisFlexPluginConfigData.configSince(configName, getConfigData());
NotificationUtils.notifySuccess("保存成功", project);
initSinceComBox(null);
return;
}
String key = selectedItem.toString();
MybatisFlexConfig config = MybatisFlexPluginConfigData.getConfig(key);
sinceFlag = !SINCE_CONFIG.equals(selectedItem.toString());
initConfigData(config);
});
initSinceComBox(null);
initPackagePath();
没有合适的资源?快使用搜索试试~ 我知道了~
这是一款高度自定义代码生成idea插件,目前提供的 模板是依托于mybatis-flex 代码提示、自动APT,SQL预览等特性
共158个文件
java:89个
png:26个
form:13个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 135 浏览量
2023-12-16
18:19:15
上传
评论
收藏 12.89MB ZIP 举报
温馨提示
这是一款深度支持Mybatis-Flex的IDEA插件,它最大的亮点就是可以高度自定义代码生成模板,它可以快速根据表生成代码,可以使用导出/导入把配置分享给同事以便快速开发
资源推荐
资源详情
资源评论
收起资源包目录
这是一款高度自定义代码生成idea插件,目前提供的 模板是依托于mybatis-flex 代码提示、自动APT,SQL预览等特性 (158个子文件)
gradlew.bat 3KB
MybatisFlexSettingDialog.form 55KB
MybatisFlexCodeGenerateDialog.form 30KB
ReturnInfoDialog.form 10KB
SettingsDialogWrapper.form 10KB
CustomTabDialog.form 8KB
TemplatePreviewDialog.form 8KB
CustomMappingDialog.form 7KB
ConfirmTableInfoDialog.form 6KB
SqlToCodeDialog.form 5KB
SQLPreviewDialog.form 4KB
CommonSettingDialog.form 4KB
ProgressBarDialog.form 3KB
SupportDialog.form 3KB
.gitignore 560B
gradlew 8KB
runtime-agent-1.0-SNAPSHOT-jar-with-dependencies.jar 12.23MB
gradle-wrapper.jar 59KB
MybatisFlexCodeGenerateDialog.java 26KB
MybatisFlexConfigAnnotator.java 23KB
MybatisFlexSettingDialog.java 23KB
SqlToCodeDialog.java 23KB
SQLPreviewAction.java 20KB
MybatisFlexConfig.java 17KB
PackageChooserDialogCustom.java 17KB
WhereConditionVisitor.java 17KB
MybatisFlexDocumentChangeHandler.java 15KB
RenderMybatisFlexTemplate.java 14KB
BasicFormatter.java 13KB
Modules.java 12KB
MybatisFlexPluginConfigData.java 12KB
MyBatisLogManager.java 12KB
TableUtils.java 11KB
MybatisFlexCompletionContributor.java 11KB
MybatisFlexConfigCompletionContributor.java 9KB
CustomMappingDialog.java 8KB
ConfirmTableInfoDialog.java 8KB
VirtualFileUtils.java 7KB
SettingsDialogWrapper.java 7KB
PsiJavaFileUtil.java 7KB
ReturnInfoDialog.java 7KB
NotificationUtils.java 6KB
CommonSettingDialog.java 6KB
Template.java 6KB
CustomTabDialog.java 6KB
CustomConfig.java 6KB
MyBatisFlexLogConsoleFilter.java 5KB
TableDefUtils.java 5KB
MybatisFlexConstant.java 5KB
RenameAptAction.java 4KB
NoFromInspection.java 4KB
PerRun.java 4KB
TemplatePreviewDialog.java 4KB
DbType.java 4KB
MybatisFlexUtil.java 4KB
ColumnInfo.java 4KB
InvertedIndexSearch.java 4KB
JumpSqlAction.java 2KB
TableInfo.java 2KB
SQLPreviewDialog.java 2KB
NextSqlAction.java 2KB
SqlPreviewIconRenderer.java 2KB
PreviousSqlAction.java 2KB
SupportDialog.java 2KB
PluginInfo.java 2KB
JoinConditionVisitor.java 2KB
TableListCellRenderer.java 2KB
ComBoxDocumentListener.java 2KB
MethodComboBoxRenderer.java 2KB
FileChooserUtil.java 2KB
ModuleComBoxRender.java 2KB
MybatisFlexAgentHyperlinkInfo.java 2KB
Package.java 2KB
ClearAllAction.java 1KB
MybatisFlexInternal.java 1KB
MyBatisLogExecutor.java 1KB
TabInfo.java 1KB
TreeClassChooser.java 1KB
CompilerManagerUtil.java 1KB
FilterComboBoxModel.java 1KB
TableAction.java 1KB
MyBatisLogAction.java 1KB
PrettyPrintToggleAction.java 1KB
ProgressBarDialog.java 1KB
TableCore.java 1KB
MybatisFlexAgentFilter.java 1019B
MyBatisFlexConsoleFilterProvider.java 936B
MyBatisFlexAgentConsoleFilterProvider.java 912B
SettingsAction.java 888B
StopAction.java 812B
VelocityUtils.java 807B
MatchTypeMapping.java 794B
DialogUtil.java 775B
MybatisFlexConfigFileType.java 764B
AptInfo.java 743B
Icons.java 722B
ProjectUtils.java 719B
RerunAction.java 642B
MybatisFlexConfgInfo.java 640B
AutoCompileAction.java 567B
共 158 条
- 1
- 2
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6649
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于UC3842+LTS26Q1565A设计PC机充电器 硬件(原理图+PCB)工程文件.zip
- Hive SQL经典面试题,大数据SQL经典面试题
- Qt实现喷码器代码,实现二维码、条形码、图形的旋转、移动等
- 基于LM324芯片比较器传感器模块AD09设计硬件(原理图+PCB)工程文件.zip
- HTTP请求 - 记一笔-添加记账.jmx
- 2205040245凡永超硬间隔svm.ipynb
- Qt喷码器demo,演示软件,不是代码
- 目标跟踪-基于目标中心点同时进行目标检测+目标跟踪算法实现-项目源码-优质项目实战.zip
- Python《文本特征分析-全唐诗数据挖掘及分析 》+源代码
- Netron-Setup-4.5.0
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功