From 3c338a6b104665b0ca96943068c42ff4f5dca9f9 Mon Sep 17 00:00:00 2001 From: RememBerBer Date: Thu, 25 Jan 2024 10:01:12 +0800 Subject: [PATCH 01/14] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=97=E4=BD=93?= =?UTF-8?q?=E7=89=88=E6=9C=AC=EF=BC=8C=E9=9A=8F=E6=89=8B=E8=AE=B0=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0Inter=E5=AD=97=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 15 ++++++++------- .../textviewer/QuickNoteRSyntaxTextViewer.java | 3 +++ .../QuickNoteRSyntaxTextViewerManager.java | 7 ++++++- .../moo/tool/ui/form/func/QuickNoteForm.java | 2 ++ 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index 6f8513a3..3767c3da 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,8 @@ 3.4-SNAPSHOT 3.4-SNAPSHOT 3.4-SNAPSHOT - 2.242 + 2.304 + 4.0 3.3.4 2.0.4 1.18.1 @@ -182,12 +183,12 @@ com.formdev flatlaf-fonts-jetbrains-mono ${flatlaf-fonts-jetbrains-mono.version} - - - flatlaf - com.formdev - - + + + + com.formdev + flatlaf-fonts-inter + ${flatlaf-fonts-inter.version} diff --git a/src/main/java/com/luoboduner/moo/tool/ui/component/textviewer/QuickNoteRSyntaxTextViewer.java b/src/main/java/com/luoboduner/moo/tool/ui/component/textviewer/QuickNoteRSyntaxTextViewer.java index 32c444d7..0678895e 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/component/textviewer/QuickNoteRSyntaxTextViewer.java +++ b/src/main/java/com/luoboduner/moo/tool/ui/component/textviewer/QuickNoteRSyntaxTextViewer.java @@ -1,6 +1,7 @@ package com.luoboduner.moo.tool.ui.component.textviewer; import com.formdev.flatlaf.FlatLaf; +import com.formdev.flatlaf.fonts.inter.FlatInterFont; import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont; import com.formdev.flatlaf.util.FontUtils; import com.formdev.flatlaf.util.StringUtils; @@ -155,6 +156,8 @@ public void updateTheme() { Font font; if (FlatJetBrainsMonoFont.FAMILY.equals(fontName)) { font = FontUtils.getCompositeFont(FlatJetBrainsMonoFont.FAMILY, Font.PLAIN, fontSize); + } else if (FlatInterFont.FAMILY.equals(fontName)) { + font = FontUtils.getCompositeFont(FlatInterFont.FAMILY, Font.PLAIN, fontSize); } else { font = new Font(fontName, Font.PLAIN, fontSize); } diff --git a/src/main/java/com/luoboduner/moo/tool/ui/component/textviewer/QuickNoteRSyntaxTextViewerManager.java b/src/main/java/com/luoboduner/moo/tool/ui/component/textviewer/QuickNoteRSyntaxTextViewerManager.java index 0098a584..31d198e4 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/component/textviewer/QuickNoteRSyntaxTextViewerManager.java +++ b/src/main/java/com/luoboduner/moo/tool/ui/component/textviewer/QuickNoteRSyntaxTextViewerManager.java @@ -1,6 +1,7 @@ package com.luoboduner.moo.tool.ui.component.textviewer; import com.formdev.flatlaf.FlatLaf; +import com.formdev.flatlaf.fonts.inter.FlatInterFont; import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont; import com.formdev.flatlaf.util.FontUtils; import com.luoboduner.moo.tool.App; @@ -46,6 +47,8 @@ public RTextScrollPane getRTextScrollPane(String name) { Font font; if (FlatJetBrainsMonoFont.FAMILY.equals(tQuickNote.getFontName())) { font = FontUtils.getCompositeFont(FlatJetBrainsMonoFont.FAMILY, Font.PLAIN, Integer.parseInt(tQuickNote.getFontSize())); + } else if (FlatInterFont.FAMILY.equals(tQuickNote.getFontName())) { + font = FontUtils.getCompositeFont(FlatInterFont.FAMILY, Font.PLAIN, Integer.parseInt(tQuickNote.getFontSize())); } else { font = new Font(tQuickNote.getFontName(), Font.PLAIN, Integer.parseInt(tQuickNote.getFontSize())); } @@ -66,7 +69,7 @@ public RTextScrollPane getRTextScrollPane(String name) { return rTextScrollPane; } - public void updateFont(String name){ + public void updateFont(String name) { RTextScrollPane rTextScrollPane = viewMap.get(name); if (rTextScrollPane != null) { QuickNoteRSyntaxTextViewer plainTextViewer = (QuickNoteRSyntaxTextViewer) rTextScrollPane.getTextArea(); @@ -75,6 +78,8 @@ public void updateFont(String name){ Font font; if (FlatJetBrainsMonoFont.FAMILY.equals(tQuickNote.getFontName())) { font = FontUtils.getCompositeFont(FlatJetBrainsMonoFont.FAMILY, Font.PLAIN, Integer.parseInt(tQuickNote.getFontSize())); + } else if (FlatInterFont.FAMILY.equals(tQuickNote.getFontName())) { + font = FontUtils.getCompositeFont(FlatInterFont.FAMILY, Font.PLAIN, Integer.parseInt(tQuickNote.getFontSize())); } else { font = new Font(tQuickNote.getFontName(), Font.PLAIN, Integer.parseInt(tQuickNote.getFontSize())); } diff --git a/src/main/java/com/luoboduner/moo/tool/ui/form/func/QuickNoteForm.java b/src/main/java/com/luoboduner/moo/tool/ui/form/func/QuickNoteForm.java index c46bdb9b..a4e52afe 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/form/func/QuickNoteForm.java +++ b/src/main/java/com/luoboduner/moo/tool/ui/form/func/QuickNoteForm.java @@ -4,6 +4,7 @@ import com.formdev.flatlaf.FlatClientProperties; import com.formdev.flatlaf.FlatLaf; import com.formdev.flatlaf.extras.FlatSVGIcon; +import com.formdev.flatlaf.fonts.inter.FlatInterFont; import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont; import com.formdev.flatlaf.icons.FlatAbstractIcon; import com.formdev.flatlaf.icons.FlatSearchIcon; @@ -424,6 +425,7 @@ private static void getSysFontList() { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); String[] fonts = ge.getAvailableFontFamilyNames(); quickNoteForm.getFontNameComboBox().addItem(FlatJetBrainsMonoFont.FAMILY); + quickNoteForm.getFontNameComboBox().addItem(FlatInterFont.FAMILY); for (String font : fonts) { if (StringUtils.isNotBlank(font)) { quickNoteForm.getFontNameComboBox().addItem(font); From b9da3dc376fd0371c462576e56b231ed5a1e7969 Mon Sep 17 00:00:00 2001 From: RememBerBer Date: Thu, 22 Feb 2024 10:58:57 +0800 Subject: [PATCH 02/14] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 3767c3da..248b4ed0 100644 --- a/pom.xml +++ b/pom.xml @@ -32,12 +32,12 @@ 32.1.2-jre 4.11.0 3.5.1 - 3.4-SNAPSHOT - 3.4-SNAPSHOT - 3.4-SNAPSHOT + 3.4 + 3.4 + 3.4 2.304 4.0 - 3.3.4 + 3.4.0 2.0.4 1.18.1 From 625d5998ac03303a86f3ce32e29566d890e8031d Mon Sep 17 00:00:00 2001 From: rememberber Date: Mon, 6 May 2024 13:44:35 +0800 Subject: [PATCH 03/14] opt --- pom.xml | 8 ++++---- .../luoboduner/moo/tool/ui/listener/FrameListener.java | 6 +++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 248b4ed0..0080f6e6 100644 --- a/pom.xml +++ b/pom.xml @@ -32,9 +32,9 @@ 32.1.2-jre 4.11.0 3.5.1 - 3.4 - 3.4 - 3.4 + 3.4.1 + 3.4.1 + 3.4.1 2.304 4.0 3.4.0 @@ -312,7 +312,7 @@ io.github.fvarrui javapackager - 1.7.4 + 1.7.5 true com.luoboduner.moo.tool.App diff --git a/src/main/java/com/luoboduner/moo/tool/ui/listener/FrameListener.java b/src/main/java/com/luoboduner/moo/tool/ui/listener/FrameListener.java index cbc4a66c..371af621 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/listener/FrameListener.java +++ b/src/main/java/com/luoboduner/moo/tool/ui/listener/FrameListener.java @@ -104,7 +104,11 @@ public void mouseExited(MouseEvent e) { } }); - MainWindow.getInstance().getMainPanel().registerKeyboardAction(e -> App.mainFrame.setExtendedState(Frame.ICONIFIED), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); + if (SystemUtil.isMacOs()) { + MainWindow.getInstance().getMainPanel().registerKeyboardAction(e -> App.mainFrame.setExtendedState(Frame.NORMAL), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); + } else { + MainWindow.getInstance().getMainPanel().registerKeyboardAction(e -> App.mainFrame.setExtendedState(Frame.ICONIFIED), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); + } } From ade6560e7d0a3c4d9da9ed6519a6e199c818ac6a Mon Sep 17 00:00:00 2001 From: "602228512@qq.com" Date: Thu, 23 May 2024 12:18:52 +0800 Subject: [PATCH 04/14] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0yml=E5=92=8Cpropertie?= =?UTF-8?q?s=E4=B8=A4=E7=A7=8D=E6=A0=BC=E5=BC=8F=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E5=8A=9F=E8=83=BD=202.pom=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E9=87=8C=E7=9A=84=E6=8F=92=E4=BB=B6=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=EF=BC=8C=E5=9B=A0=E4=B8=BA?= =?UTF-8?q?=E6=88=91=E8=BF=99=E8=BE=B9=E5=90=AF=E5=8A=A8=E4=BC=9A=E6=8A=A5?= =?UTF-8?q?=E9=94=99=EF=BC=8C=E5=8A=A0=E4=BA=86=E5=B0=B1=E4=B8=8D=E4=BC=9A?= =?UTF-8?q?=E6=9C=89=E3=80=82=203.=E5=8F=A6=E5=A4=96=E5=BB=BA=E8=AE=AE?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0IOC=E6=A1=86=E6=9E=B6=EF=BC=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B9=E4=BE=BF=E5=BC=80=E5=8F=91=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 195 ++++++++++-------- .../java/com/luoboduner/moo/tool/ui/Init.java | 1 + .../moo/tool/ui/form/MainWindow.form | 9 + .../moo/tool/ui/form/MainWindow.java | 7 +- .../tool/ui/form/func/YmlPropertiesForm.form | 129 ++++++++++++ .../tool/ui/form/func/YmlPropertiesForm.java | 127 ++++++++++++ .../listener/func/YmlPropertiesListener.java | 48 +++++ .../moo/tool/util/YmlAndPropUtil.java | 180 ++++++++++++++++ src/main/resources/icon/suffix-yml.svg | 1 + .../java/com/luoboduner/moo/tool/AppTest.java | 26 ++- 10 files changed, 625 insertions(+), 98 deletions(-) create mode 100644 src/main/java/com/luoboduner/moo/tool/ui/form/func/YmlPropertiesForm.form create mode 100644 src/main/java/com/luoboduner/moo/tool/ui/form/func/YmlPropertiesForm.java create mode 100644 src/main/java/com/luoboduner/moo/tool/ui/listener/func/YmlPropertiesListener.java create mode 100644 src/main/java/com/luoboduner/moo/tool/util/YmlAndPropUtil.java create mode 100644 src/main/resources/icon/suffix-yml.svg diff --git a/pom.xml b/pom.xml index 0080f6e6..bbf76fe2 100644 --- a/pom.xml +++ b/pom.xml @@ -50,6 +50,7 @@ 1.16.2 1.5rc3 5.5.1 + 1.23 @@ -295,98 +296,112 @@ jar + + org.yaml + snakeyaml + ${snakeyaml.version} + + + + - - - org.mybatis.generator - mybatis-generator-maven-plugin - 1.3.6 - - true - true - - - - - io.github.fvarrui - javapackager - 1.7.5 - - true - com.luoboduner.moo.tool.App - true - - --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED - - - - bundling-for-windows - package - - package - - - windows - true - jdk.crypto.ec,jdk.charsets - - ${name}.l4j.ini - - true - - - - true - true - true - - - installForAllUsers - true - false - false - true - - compiler:Default.isl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + org.mybatis.generator + mybatis-generator-maven-plugin + 1.3.6 + + true + true + + + + + io.github.fvarrui + javapackager + 1.7.5 + + true + com.luoboduner.moo.tool.App + true + + --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + + + + bundling-for-windows + package + + + + + windows + true + jdk.crypto.ec,jdk.charsets + + ${name}.l4j.ini + + true + + + + true + true + true + + + installForAllUsers + true + false + false + true + + compiler:Default.isl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/luoboduner/moo/tool/ui/Init.java b/src/main/java/com/luoboduner/moo/tool/ui/Init.java index b35c08e1..e8593b0e 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/Init.java +++ b/src/main/java/com/luoboduner/moo/tool/ui/Init.java @@ -212,6 +212,7 @@ public static void initAllTab() { ThreadUtil.execute(RegexForm::init); ThreadUtil.execute(ImageForm::init); ThreadUtil.execute(VariablesForm::init); + ThreadUtil.execute(YmlPropertiesForm::init); // 检查新版版 if (App.config.isAutoCheckUpdate()) { diff --git a/src/main/java/com/luoboduner/moo/tool/ui/form/MainWindow.form b/src/main/java/com/luoboduner/moo/tool/ui/form/MainWindow.form index bb4d6a1f..1e3d2c33 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/form/MainWindow.form +++ b/src/main/java/com/luoboduner/moo/tool/ui/form/MainWindow.form @@ -192,6 +192,15 @@ + + + + + + + + + diff --git a/src/main/java/com/luoboduner/moo/tool/ui/form/MainWindow.java b/src/main/java/com/luoboduner/moo/tool/ui/form/MainWindow.java index 23c03751..a7e0adff 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/form/MainWindow.java +++ b/src/main/java/com/luoboduner/moo/tool/ui/form/MainWindow.java @@ -46,10 +46,11 @@ public class MainWindow { private JPanel reformattingPanel; private JPanel pdfPanel; private JPanel variablesPanel; + private JPanel ymlProperties; private static MainWindow mainWindow; - private static final String[] ICON_PATH = {"icon/edit.svg", "icon/time.svg", "icon/json.svg", "icon/check.svg", "icon/global.svg", "icon/exchange.svg", "icon/QRcode.svg", "icon/method.svg", "icon/calculate.svg", "icon/network.svg", "icon/color.svg", "icon/image.svg", "icon/translate.svg", "icon/schedule.svg", "icon/reg.svg", "icon/java.svg", "icon/nuclear.svg", "icon/pdf.svg", "icon/fx.svg"}; + private static final String[] ICON_PATH = {"icon/edit.svg", "icon/time.svg", "icon/json.svg", "icon/check.svg", "icon/global.svg", "icon/exchange.svg", "icon/QRcode.svg", "icon/method.svg", "icon/calculate.svg", "icon/network.svg", "icon/color.svg", "icon/image.svg", "icon/translate.svg", "icon/schedule.svg", "icon/reg.svg", "icon/java.svg", "icon/nuclear.svg", "icon/pdf.svg", "icon/fx.svg", "icon/suffix-yml.svg"}; private MainWindow() { } @@ -92,6 +93,7 @@ public void init() { mainWindow.getReformattingPanel().add(FileReformattingForm.getInstance().getReformattingPanel(), gridConstraints); mainWindow.getPdfPanel().add(PdfForm.getInstance().getPdfPanel(), gridConstraints); mainWindow.getVariablesPanel().add(VariablesForm.getInstance().getVariablesPanel(), gridConstraints); + mainWindow.getYmlProperties().add(YmlPropertiesForm.getInstance().getYmlPropertiesPanel(), gridConstraints); mainWindow.getMainPanel().updateUI(); TabListener.addListeners(); @@ -275,6 +277,9 @@ public void initTabPlacement() { variablesPanel = new JPanel(); variablesPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); tabbedPane.addTab("环境变量", variablesPanel); + ymlProperties = new JPanel(); + ymlProperties.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); + tabbedPane.addTab("配置文件转换", ymlProperties); } /** diff --git a/src/main/java/com/luoboduner/moo/tool/ui/form/func/YmlPropertiesForm.form b/src/main/java/com/luoboduner/moo/tool/ui/form/func/YmlPropertiesForm.form new file mode 100644 index 00000000..ddb30056 --- /dev/null +++ b/src/main/java/com/luoboduner/moo/tool/ui/form/func/YmlPropertiesForm.form @@ -0,0 +1,129 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/main/java/com/luoboduner/moo/tool/ui/form/func/YmlPropertiesForm.java b/src/main/java/com/luoboduner/moo/tool/ui/form/func/YmlPropertiesForm.java new file mode 100644 index 00000000..dd3c274e --- /dev/null +++ b/src/main/java/com/luoboduner/moo/tool/ui/form/func/YmlPropertiesForm.java @@ -0,0 +1,127 @@ +package com.luoboduner.moo.tool.ui.form.func; + +import com.intellij.uiDesigner.core.GridConstraints; +import com.intellij.uiDesigner.core.GridLayoutManager; +import com.intellij.uiDesigner.core.Spacer; +import com.luoboduner.moo.tool.ui.Style; +import com.luoboduner.moo.tool.ui.listener.func.YmlPropertiesListener; +import com.luoboduner.moo.tool.util.UndoUtil; +import lombok.Getter; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ComponentAdapter; + +/** + *
+ * yml配置文件和properties文件转换
+ * 
+ * + * @author RememBerBer + * @since 2019/9/9. + */ +@Getter +public class YmlPropertiesForm { + private JTabbedPane tabbedPane1; + private JPanel ymlPropertiesPanel; + private JTextArea propertiesTextArea; + private JTextArea ymlTextArea; + private JButton properties2ymlButton; + private JButton yml2propertiesButton; + + private static YmlPropertiesForm ymlPropertiesForm; + + public static YmlPropertiesForm getInstance() { + if (ymlPropertiesForm == null) { + ymlPropertiesForm = new YmlPropertiesForm(); + } + return ymlPropertiesForm; + } + + private YmlPropertiesForm() { + UndoUtil.register(this); + propertiesTextArea.addComponentListener(new ComponentAdapter() { + }); + } + + public static void init() { + initUi(); + + YmlPropertiesListener.addListeners(); + } + + private static void initUi() { + Style.blackTextArea(ymlPropertiesForm.getPropertiesTextArea()); + Style.blackTextArea(ymlPropertiesForm.getYmlTextArea()); + + ymlPropertiesForm.getYmlPropertiesPanel().updateUI(); + } + + + { +// GUI initializer generated by IntelliJ IDEA GUI Designer +// >>> IMPORTANT!! <<< +// DO NOT EDIT OR ADD ANY CODE HERE! + $$$setupUI$$$(); + } + + /** + * Method generated by IntelliJ IDEA GUI Designer + * >>> IMPORTANT!! <<< + * DO NOT edit this method OR call it in your code! + * + * @noinspection ALL + */ + private void $$$setupUI$$$() { + ymlPropertiesPanel = new JPanel(); + ymlPropertiesPanel.setLayout(new GridLayoutManager(1, 1, new Insets(10, 0, 0, 0), -1, -1)); + ymlPropertiesPanel.setMinimumSize(new Dimension(400, 300)); + ymlPropertiesPanel.setPreferredSize(new Dimension(400, 300)); + tabbedPane1 = new JTabbedPane(); + ymlPropertiesPanel.add(tabbedPane1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, new Dimension(200, 200), null, 0, false)); + final JPanel panel1 = new JPanel(); + panel1.setLayout(new GridLayoutManager(1, 3, new Insets(10, 10, 10, 10), -1, -1)); + tabbedPane1.addTab("yml/properties", panel1); + final JPanel panel2 = new JPanel(); + panel2.setLayout(new GridLayoutManager(4, 1, new Insets(0, 0, 0, 0), -1, -1)); + panel1.add(panel2, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, 1, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + properties2ymlButton = new JButton(); + properties2ymlButton.setText("properties → yml"); + panel2.add(properties2ymlButton, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + yml2propertiesButton = new JButton(); + yml2propertiesButton.setText("properties ← yml"); + panel2.add(yml2propertiesButton, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final Spacer spacer1 = new Spacer(); + panel2.add(spacer1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + final Spacer spacer2 = new Spacer(); + panel2.add(spacer2, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + final JPanel panel3 = new JPanel(); + panel3.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); + panel1.add(panel3, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + final JScrollPane scrollPane1 = new JScrollPane(); + scrollPane1.setHorizontalScrollBarPolicy(31); + panel3.add(scrollPane1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + propertiesTextArea = new JTextArea(); + propertiesTextArea.setLineWrap(true); + propertiesTextArea.setWrapStyleWord(true); + scrollPane1.setViewportView(propertiesTextArea); + final JPanel panel4 = new JPanel(); + panel4.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); + panel1.add(panel4, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + final JScrollPane scrollPane2 = new JScrollPane(); + scrollPane2.setHorizontalScrollBarPolicy(31); + panel4.add(scrollPane2, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + ymlTextArea = new JTextArea(); + ymlTextArea.setLineWrap(true); + ymlTextArea.setWrapStyleWord(true); + scrollPane2.setViewportView(ymlTextArea); + } + + /** + * @noinspection ALL + */ + public JComponent $$$getRootComponent$$$() { + return ymlPropertiesPanel; + } + +} diff --git a/src/main/java/com/luoboduner/moo/tool/ui/listener/func/YmlPropertiesListener.java b/src/main/java/com/luoboduner/moo/tool/ui/listener/func/YmlPropertiesListener.java new file mode 100644 index 00000000..784375b3 --- /dev/null +++ b/src/main/java/com/luoboduner/moo/tool/ui/listener/func/YmlPropertiesListener.java @@ -0,0 +1,48 @@ +package com.luoboduner.moo.tool.ui.listener.func; + +import cn.hutool.core.util.StrUtil; +import com.luoboduner.moo.tool.ui.form.func.YmlPropertiesForm; +import com.luoboduner.moo.tool.util.YmlAndPropUtil; +import lombok.extern.slf4j.Slf4j; + +/** + *
+ * EnCodeListener
+ * 
+ * + * @author RememBerBer + * @since 2019/10/14. + */ +@Slf4j +public class YmlPropertiesListener { + public static void addListeners() { + YmlPropertiesForm ymlForm = YmlPropertiesForm.getInstance(); + + // 点击转换按钮 + ymlForm.getProperties2ymlButton().addActionListener(e -> { + + String propStr = ymlForm.getPropertiesTextArea().getText(); + if (StrUtil.isBlank(propStr)) { + return; + } + + // Properties 转 yml + String result = YmlAndPropUtil.convertProp2Yml(propStr); + ymlForm.getYmlTextArea().setText(result); + }); + + // 点击转换按钮 + ymlForm.getYml2propertiesButton().addActionListener(e -> { + String ymlStr = ymlForm.getYmlTextArea().getText(); + if (StrUtil.isBlank(ymlStr)) { + // 为空不操作 + return; + } + + // yml 转 Properties + String result = YmlAndPropUtil.convertYml2Prop(ymlStr); + ymlForm.getPropertiesTextArea().setText(result); + }); + } + +} diff --git a/src/main/java/com/luoboduner/moo/tool/util/YmlAndPropUtil.java b/src/main/java/com/luoboduner/moo/tool/util/YmlAndPropUtil.java new file mode 100644 index 00000000..0b56b991 --- /dev/null +++ b/src/main/java/com/luoboduner/moo/tool/util/YmlAndPropUtil.java @@ -0,0 +1,180 @@ +package com.luoboduner.moo.tool.util; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.exceptions.UtilException; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.setting.yaml.YamlUtil; +import lombok.extern.slf4j.Slf4j; +import org.yaml.snakeyaml.Yaml; + +import java.io.IOException; +import java.io.StringReader; +import java.io.StringWriter; +import java.io.Writer; +import java.util.*; + +/** + * Yaml 转 Properties 工具 + */ +@Slf4j +public class YmlAndPropUtil { + private static final String PROP_DOT = "."; + private static final String PROP_COMMA = ","; + public static final String COMMENTS = " Automatically converts yml file to properties file."; + + public static void main(String[] args) { + String propertiesData = """ + ababa.list.mylist[0]=1 + ababa.list.mylist[1]=2 + ababa.list.mylist[2]=3 + ababa.map.myMap.1=张三 + ababa.map.myMap.2=李四 + ababa.map.myMap.3=王五 + system.user.age=30 + system.user.name=John Doe + system.user.offset= 200 + system.user.sex=1 + spring.launcher=appl.class + """; + + + System.out.println(convertProp2Yml(propertiesData)); + + /*String readString = """ + language: java + + before_install: + - mvn + - install + - closet + - pillows + - DartifactId + + jdk: + - openjdk8 + script: "mvn clean package -Dmaven.test.skip=true" + + notifications: + name: George + sex: 男 + age:\s + email: + - rememberber@163.com + - adjf@qq.com + \s + """; + String yml2Prop = YmlAndPropUtil.convertYml2Prop(readString); + log.info("prop is :{}", yml2Prop);*/ + } + + public static String convertProp2Yml(String propStr) { + Map yamlData = parseProperties(propStr); + + Yaml yaml = new Yaml(); + return yaml.dumpAsMap(yamlData); + } + + private static Map parseProperties(String propertiesData) { + Properties properties = new Properties(); + try { + properties.load(new StringReader(propertiesData)); + } catch (IOException e) { + throw new RuntimeException(e); + } + + Map data = new HashMap<>(); + for (String key : properties.stringPropertyNames()) { + parseKey(data, key, properties.getProperty(key)); + } + return data; + } + + private static void parseKey(Map data, String key, String value) { + // 去除前后空格 + value = StrUtil.trim(value); + + String[] parts = key.split("\\."); + Map current = data; + for (int i = 0; i < parts.length - 1; i++) { + String part = parts[i]; + if (!current.containsKey(part)) { + current.put(part, new HashMap<>()); + } + current = (Map) current.get(part); + } + String lastPart = parts[parts.length - 1]; + + if (lastPart.matches("\\w+\\[\\d+\\]")) { + String listKey = lastPart.substring(0, lastPart.indexOf('[')); + + // 将list类型key转成map + List> list = (List>) current.get(listKey); + if (list == null) { + list = new ArrayList<>(); + current.put(listKey, list); + } + Map map = new HashMap<>(); + map.put(Convert.toInt(lastPart.substring(lastPart.indexOf('[') + 1, lastPart.indexOf(']'))), value); + list.add(map); + } else { + current.put(lastPart, value); + } + } + + /** + * 转换 Yml → properties + * + * @param ymlStr + * @return + */ + public static String convertYml2Prop(String ymlStr) { + Assert.notBlank(ymlStr); + + // 将YAML转换为Properties + Properties props = recursiveYaml2Prop(YamlUtil.load(new StringReader(ymlStr), Map.class)); + + // 将Properties对象写入到控制台 + try (Writer out = new StringWriter()) { + props.store(out, COMMENTS); + return out.toString(); + } catch (IOException e) { + log.error("error", e); + throw new UtilException("Properties store error."); + } + } + + /** + * map 递归 + * + * @param ymlMap + * @return + */ + private static Properties recursiveYaml2Prop(Map ymlMap) { + Properties props = new Properties(); + for (Map.Entry entry : ymlMap.entrySet()) { + Object value = entry.getValue(); + + // 空值处理 + if (ObjectUtil.isEmpty(value)) { + props.setProperty(entry.getKey(), StrUtil.SPACE); + } + + if (value instanceof Map) { + // 递归处理嵌套的Map + Properties nestedProps = recursiveYaml2Prop((Map) value); + for (String key : nestedProps.stringPropertyNames()) { + props.setProperty(entry.getKey() + PROP_DOT + key, nestedProps.getProperty(key)); + } + } else if (value instanceof List) { + // list类型处理,用逗号拼接 + props.setProperty(entry.getKey(), StrUtil.join(PROP_COMMA, (List) value)); + } else { + // 其他 + props.setProperty(entry.getKey(), StrUtil.toString(value)); + } + } + return props; + } +} \ No newline at end of file diff --git a/src/main/resources/icon/suffix-yml.svg b/src/main/resources/icon/suffix-yml.svg new file mode 100644 index 00000000..11d35919 --- /dev/null +++ b/src/main/resources/icon/suffix-yml.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/test/java/com/luoboduner/moo/tool/AppTest.java b/src/test/java/com/luoboduner/moo/tool/AppTest.java index dfe0e56a..24b64394 100644 --- a/src/test/java/com/luoboduner/moo/tool/AppTest.java +++ b/src/test/java/com/luoboduner/moo/tool/AppTest.java @@ -1,20 +1,32 @@ package com.luoboduner.moo.tool; +import lombok.extern.slf4j.Slf4j; import org.junit.Test; -import static org.junit.Assert.assertTrue; - /** * Unit test for simple App. */ -public class AppTest -{ +@Slf4j +public class AppTest { /** * Rigorous Test :-) */ @Test - public void shouldAnswerWithTrue() - { - assertTrue( true ); + public void shouldAnswerWithTrue() { + // yml test + // Props props = YamlUtil.loadByPath("/Users/zhenjiazhang/app/mootool/1.yml", Properties.class); + // // PrintWriter writer = new PrintWriter(System.out); + // // props.list(writer); + // + // StringWriter sw = new StringWriter(); + // try { + // props.store(sw, "comments:"); + // } catch (IOException e) { + // log.error("error,", e); + // } + // String s = sw.toString(); + // + // log.info("yml is {}", s); + // // writer.flush(); } } From a37e66c66dc2137d61761a778e08b16b1d0ac811 Mon Sep 17 00:00:00 2001 From: rememberber Date: Thu, 23 May 2024 13:29:21 +0800 Subject: [PATCH 05/14] opt --- src/main/resources/icon/suffix-yml.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/icon/suffix-yml.svg b/src/main/resources/icon/suffix-yml.svg index 11d35919..6d49126d 100644 --- a/src/main/resources/icon/suffix-yml.svg +++ b/src/main/resources/icon/suffix-yml.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From 4bbd1693f1ed0259b7bcc6fcbc23cbcb811aaaa4 Mon Sep 17 00:00:00 2001 From: rememberber Date: Thu, 23 May 2024 13:44:36 +0800 Subject: [PATCH 06/14] =?UTF-8?q?=E5=BF=AB=E6=8D=B7=E9=94=AE=EF=BC=9A?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E6=94=AF=E6=8C=81intellij=20mac?= =?UTF-8?q?=E7=9A=84command+option+L?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/component/textviewer/QuickNoteRSyntaxTextViewer.java | 3 ++- .../java/com/luoboduner/moo/tool/ui/dialog/KeyMapDialog.form | 4 ++-- .../java/com/luoboduner/moo/tool/ui/dialog/KeyMapDialog.java | 4 ++-- .../moo/tool/ui/listener/func/JsonBeautyListener.java | 3 ++- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/luoboduner/moo/tool/ui/component/textviewer/QuickNoteRSyntaxTextViewer.java b/src/main/java/com/luoboduner/moo/tool/ui/component/textviewer/QuickNoteRSyntaxTextViewer.java index 0678895e..2e2ce101 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/component/textviewer/QuickNoteRSyntaxTextViewer.java +++ b/src/main/java/com/luoboduner/moo/tool/ui/component/textviewer/QuickNoteRSyntaxTextViewer.java @@ -67,7 +67,8 @@ public void keyReleased(KeyEvent arg0) { public void keyPressed(KeyEvent evt) { if ((evt.isControlDown() || evt.isMetaDown()) && evt.getKeyCode() == KeyEvent.VK_S) { QuickNoteListener.quickSave(true, true); - } else if ((evt.isControlDown() || evt.isMetaDown()) && evt.isShiftDown() && evt.getKeyCode() == KeyEvent.VK_F) { + } else if (((evt.isControlDown() || evt.isMetaDown()) && evt.isShiftDown() && evt.getKeyCode() == KeyEvent.VK_F) + || evt.isMetaDown() && evt.isAltDown() && evt.getKeyCode() == KeyEvent.VK_L) { QuickNoteListener.format(); } else if ((evt.isControlDown() || evt.isMetaDown()) && evt.getKeyCode() == KeyEvent.VK_F) { QuickNoteListener.showFindPanel(); diff --git a/src/main/java/com/luoboduner/moo/tool/ui/dialog/KeyMapDialog.form b/src/main/java/com/luoboduner/moo/tool/ui/dialog/KeyMapDialog.form index c76a41c2..a328dd78 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/dialog/KeyMapDialog.form +++ b/src/main/java/com/luoboduner/moo/tool/ui/dialog/KeyMapDialog.form @@ -39,7 +39,7 @@ - + @@ -71,7 +71,7 @@ - + diff --git a/src/main/java/com/luoboduner/moo/tool/ui/dialog/KeyMapDialog.java b/src/main/java/com/luoboduner/moo/tool/ui/dialog/KeyMapDialog.java index c0cc0814..3651bb21 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/dialog/KeyMapDialog.java +++ b/src/main/java/com/luoboduner/moo/tool/ui/dialog/KeyMapDialog.java @@ -80,7 +80,7 @@ private void onOK() { label2.setText("查找"); panel1.add(label2, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label3 = new JLabel(); - label3.setText("Json格式化"); + label3.setText("格式化"); panel1.add(label3, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label4 = new JLabel(); label4.setText("删除选择的行"); @@ -92,7 +92,7 @@ private void onOK() { label6.setText("Ctrl+F"); panel1.add(label6, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label7 = new JLabel(); - label7.setText("Ctrl+Shift+F"); + label7.setText("Ctrl+Shift+F或option+command+L"); panel1.add(label7, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label8 = new JLabel(); label8.setText("Ctrl+D"); diff --git a/src/main/java/com/luoboduner/moo/tool/ui/listener/func/JsonBeautyListener.java b/src/main/java/com/luoboduner/moo/tool/ui/listener/func/JsonBeautyListener.java index 8f246917..f26c7732 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/listener/func/JsonBeautyListener.java +++ b/src/main/java/com/luoboduner/moo/tool/ui/listener/func/JsonBeautyListener.java @@ -115,7 +115,8 @@ public void keyReleased(KeyEvent arg0) { public void keyPressed(KeyEvent evt) { if ((evt.isControlDown() || evt.isMetaDown()) && evt.getKeyCode() == KeyEvent.VK_S) { quickSave(true); - } else if ((evt.isControlDown() || evt.isMetaDown()) && evt.isShiftDown() && evt.getKeyCode() == KeyEvent.VK_F) { + } else if (((evt.isControlDown() || evt.isMetaDown()) && evt.isShiftDown() && evt.getKeyCode() == KeyEvent.VK_F) || + evt.isMetaDown() && evt.isAltDown() && evt.getKeyCode() == KeyEvent.VK_L) { String jsonText = jsonBeautyForm.getTextArea().getText(); jsonBeautyForm.getTextArea().setText(formatJson(jsonText)); jsonBeautyForm.getTextArea().setCaretPosition(0); From 30bdcb956cd646b50af12809c3a01aafc7286319 Mon Sep 17 00:00:00 2001 From: rememberber Date: Thu, 23 May 2024 13:46:54 +0800 Subject: [PATCH 07/14] =?UTF-8?q?=E5=BF=AB=E6=8D=B7=E9=94=AE=EF=BC=9A?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E6=94=AF=E6=8C=81intellij=20mac?= =?UTF-8?q?=E7=9A=84command+option+L?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 226 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 112 insertions(+), 114 deletions(-) diff --git a/pom.xml b/pom.xml index bbf76fe2..8a7392f0 100644 --- a/pom.xml +++ b/pom.xml @@ -40,15 +40,15 @@ 3.4.0 2.0.4 1.18.1 - + 9.2.1 5.13.0 6.4.6 1.2.0 1.5.0 - 4.0.15 - 1.16.2 - 1.5rc3 + 4.0.15 + 1.16.2 + 1.5rc3 5.5.1 1.23 @@ -205,17 +205,17 @@ ${sql-formatter.version} - - - - - - - - - - - + + + + + + + + + + + com.jayway.jsonpath @@ -229,11 +229,11 @@ - - - - - + + + + + net.java.dev.jna @@ -270,8 +270,8 @@ versioncompare ${versioncompare.version} - - + + org.apache.groovy groovy ${groovy.version} @@ -311,97 +311,95 @@ - - - - org.mybatis.generator - mybatis-generator-maven-plugin - 1.3.6 - - true - true - - - - - io.github.fvarrui - javapackager - 1.7.5 - - true - com.luoboduner.moo.tool.App - true - - --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED - - - - bundling-for-windows - package - - - - - windows - true - jdk.crypto.ec,jdk.charsets - - ${name}.l4j.ini - - true - - - - true - true - true - - - installForAllUsers - true - false - false - true - - compiler:Default.isl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + org.mybatis.generator + mybatis-generator-maven-plugin + 1.3.6 + + true + true + + + + + io.github.fvarrui + javapackager + 1.7.5 + + true + com.luoboduner.moo.tool.App + true + + --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bundling-for-mac + package + + package + + + mac + true + jdk.crypto.ec,jdk.charsets + + ${name}.l4j.ini + + + + + + From 4cccf796ff69c342d39d51d8f6a40c66c456a1d4 Mon Sep 17 00:00:00 2001 From: rememberber Date: Thu, 23 May 2024 15:31:24 +0800 Subject: [PATCH 08/14] v1.6.1 --- pom.xml | 2 +- src/main/java/com/luoboduner/moo/tool/ui/UiConsts.java | 2 +- src/main/resources/version_summary.json | 10 ++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 8a7392f0..28994543 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.luoboduner.moo.tool MooTool - 1.6.0 + 1.6.1 jar MooTool diff --git a/src/main/java/com/luoboduner/moo/tool/ui/UiConsts.java b/src/main/java/com/luoboduner/moo/tool/ui/UiConsts.java index 1216f43f..f4e28d2c 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/UiConsts.java +++ b/src/main/java/com/luoboduner/moo/tool/ui/UiConsts.java @@ -19,7 +19,7 @@ public class UiConsts { * 软件名称,版本 */ public static final String APP_NAME = "MooTool"; - public static final String APP_VERSION = "v1.6.0"; + public static final String APP_VERSION = "v1.6.1"; public static final int TABLE_ROW_HEIGHT = 30; diff --git a/src/main/resources/version_summary.json b/src/main/resources/version_summary.json index 792148e9..9b6bc13f 100644 --- a/src/main/resources/version_summary.json +++ b/src/main/resources/version_summary.json @@ -1,5 +1,5 @@ { - "currentVersion": "v1.6.0", + "currentVersion": "v1.6.1", "versionIndex": { "v0.0.0": "0", "v1.0.0": "1", @@ -31,7 +31,8 @@ "v1.5.7": "27", "v1.5.8": "28", "v1.5.9": "29", - "v1.6.0": "30" + "v1.6.0": "30", + "v1.6.1": "31" }, "versionDetailList": [ { @@ -188,6 +189,11 @@ "version": "v1.6.0", "title": "JSON工具功能增强", "log": "● JSON工具支持压缩,格式化支持按key字母排序、忽略key字母大小写、检查重复key,支持JSON和XML互转,支持通过JSON Path取值\n\n" + }, + { + "version": "v1.6.1", + "title": "增加yml和properties互转功能", + "log": "● 更新字体版本,随手记增加Inter字体\n● 增加yml和properties互转功能\n● 修复macOS下开启台前调度以后按esc之后会卡死的问题\n● 快捷键:格式化支持intellij mac的command+option+L\n\n" } ] } \ No newline at end of file From a6e471174c8f33ff366fb5fa576e8525b6429259 Mon Sep 17 00:00:00 2001 From: "602228512@qq.com" Date: Thu, 23 May 2024 22:03:25 +0800 Subject: [PATCH 09/14] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0yml=E5=92=8Cpropertie?= =?UTF-8?q?s=E4=B8=A4=E7=A7=8D=E6=A0=BC=E5=BC=8F=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E5=8A=9F=E8=83=BD=202.pom=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E9=87=8C=E7=9A=84=E6=8F=92=E4=BB=B6=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=EF=BC=8C=E5=9B=A0=E4=B8=BA?= =?UTF-8?q?=E6=88=91=E8=BF=99=E8=BE=B9=E5=90=AF=E5=8A=A8=E4=BC=9A=E6=8A=A5?= =?UTF-8?q?=E9=94=99=EF=BC=8C=E5=8A=A0=E4=BA=86=E5=B0=B1=E4=B8=8D=E4=BC=9A?= =?UTF-8?q?=E6=9C=89=E3=80=82=203.=E5=8F=A6=E5=A4=96=E5=BB=BA=E8=AE=AE?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0IOC=E6=A1=86=E6=9E=B6=EF=BC=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B9=E4=BE=BF=E5=BC=80=E5=8F=91=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moo/tool/util/YmlAndPropUtil.java | 42 +++++++++++++++---- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/luoboduner/moo/tool/util/YmlAndPropUtil.java b/src/main/java/com/luoboduner/moo/tool/util/YmlAndPropUtil.java index 0b56b991..2d5cfc8b 100644 --- a/src/main/java/com/luoboduner/moo/tool/util/YmlAndPropUtil.java +++ b/src/main/java/com/luoboduner/moo/tool/util/YmlAndPropUtil.java @@ -1,5 +1,6 @@ package com.luoboduner.moo.tool.util; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.exceptions.UtilException; import cn.hutool.core.lang.Assert; @@ -37,6 +38,15 @@ public static void main(String[] args) { system.user.offset= 200 system.user.sex=1 spring.launcher=appl.class + + tencent.0=1001 + tencent.1=2001 + tencent.2=3002 + + baidu.list[0]=a001 + baidu.list[1]=b001 + baidu.list[2]=c001 + """; @@ -94,14 +104,25 @@ private static Map parseProperties(String propertiesData) { private static void parseKey(Map data, String key, String value) { // 去除前后空格 value = StrUtil.trim(value); + key = StrUtil.trim(key); String[] parts = key.split("\\."); Map current = data; + Map beforeCurrent = null; for (int i = 0; i < parts.length - 1; i++) { + if ((i == parts.length - 2 || parts.length <= 2) + && StrUtil.isNumeric(parts[parts.length - 1])) { + // 如果最后一个key是数字 则将其转成列表 + addObj2MapList(current, parts[i], value); + return; + } + String part = parts[i]; if (!current.containsKey(part)) { current.put(part, new HashMap<>()); } + + // 指针下移 current = (Map) current.get(part); } String lastPart = parts[parts.length - 1]; @@ -110,19 +131,24 @@ private static void parseKey(Map data, String key, String value) String listKey = lastPart.substring(0, lastPart.indexOf('[')); // 将list类型key转成map - List> list = (List>) current.get(listKey); - if (list == null) { - list = new ArrayList<>(); - current.put(listKey, list); - } - Map map = new HashMap<>(); - map.put(Convert.toInt(lastPart.substring(lastPart.indexOf('[') + 1, lastPart.indexOf(']'))), value); - list.add(map); + addObj2MapList(current, listKey, value); } else { current.put(lastPart, value); } } + private static void addObj2MapList(Map map, String key, Object value) { + map.compute(key, (k, v) -> { + if (v == null) { + return CollUtil.newArrayList(value); + } else { + List list = Convert.toList(Object.class, v); + list.add(value); + return list; + } + }); + } + /** * 转换 Yml → properties * From b2bfc7c66d231b06f7e403f29089635bed2a6555 Mon Sep 17 00:00:00 2001 From: "602228512@qq.com" Date: Thu, 23 May 2024 22:24:01 +0800 Subject: [PATCH 10/14] =?UTF-8?q?[yml=E5=92=8Cproperties=E4=B8=A4=E7=A7=8D?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E6=96=87=E6=9C=AC=E8=BD=AC=E6=8D=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD]=20=E8=A7=A3=E5=86=B3=E5=88=97=E8=A1=A8=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E8=BD=AC=E6=8D=A2=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../luoboduner/moo/tool/util/YmlAndPropUtil.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/luoboduner/moo/tool/util/YmlAndPropUtil.java b/src/main/java/com/luoboduner/moo/tool/util/YmlAndPropUtil.java index 2d5cfc8b..5aff64ac 100644 --- a/src/main/java/com/luoboduner/moo/tool/util/YmlAndPropUtil.java +++ b/src/main/java/com/luoboduner/moo/tool/util/YmlAndPropUtil.java @@ -8,13 +8,17 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.setting.yaml.YamlUtil; import lombok.extern.slf4j.Slf4j; +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; /** * Yaml 转 Properties 工具 @@ -82,7 +86,13 @@ public static void main(String[] args) { public static String convertProp2Yml(String propStr) { Map yamlData = parseProperties(propStr); - Yaml yaml = new Yaml(); + DumperOptions options = new DumperOptions(); + options.setPrettyFlow(false); // 使用漂亮的流样式 + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); // 设置默认流样式为块样式 + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); + options.setAllowUnicode(true); // 允许Unicode字符 + options.setIndent(4); // 设置缩进宽度 + Yaml yaml = new Yaml(options); return yaml.dumpAsMap(yamlData); } From c4553d1f98ec243a9477b4a1c58e92668360d7cb Mon Sep 17 00:00:00 2001 From: rememberber Date: Sat, 25 May 2024 21:40:17 +0800 Subject: [PATCH 11/14] java packager revert --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 28994543..d87c1de7 100644 --- a/pom.xml +++ b/pom.xml @@ -325,7 +325,7 @@ io.github.fvarrui javapackager - 1.7.5 + 1.7.4 true com.luoboduner.moo.tool.App From b0f5fbb2dad5869ce70e0b92f3f8829d778879dd Mon Sep 17 00:00:00 2001 From: rememberber Date: Sat, 1 Jun 2024 10:52:51 +0800 Subject: [PATCH 12/14] java packager revert --- pom.xml | 98 ++++++++++++------------- src/main/resources/version_summary.json | 2 +- 2 files changed, 50 insertions(+), 50 deletions(-) diff --git a/pom.xml b/pom.xml index d87c1de7..36c653a7 100644 --- a/pom.xml +++ b/pom.xml @@ -334,40 +334,40 @@ --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + bundling-for-windows + package + + package + + + windows + true + jdk.crypto.ec,jdk.charsets + + ${name}.l4j.ini + + true + + + + true + true + true + + + installForAllUsers + true + false + false + true + + compiler:Default.isl + + + + + @@ -383,21 +383,21 @@ - - bundling-for-mac - package - - package - - - mac - true - jdk.crypto.ec,jdk.charsets - - ${name}.l4j.ini - - - + + + + + + + + + + + + + + + diff --git a/src/main/resources/version_summary.json b/src/main/resources/version_summary.json index 9b6bc13f..cc6f46dd 100644 --- a/src/main/resources/version_summary.json +++ b/src/main/resources/version_summary.json @@ -193,7 +193,7 @@ { "version": "v1.6.1", "title": "增加yml和properties互转功能", - "log": "● 更新字体版本,随手记增加Inter字体\n● 增加yml和properties互转功能\n● 修复macOS下开启台前调度以后按esc之后会卡死的问题\n● 快捷键:格式化支持intellij mac的command+option+L\n\n" + "log": "● 更新字体版本,随手记增加Inter字体\n● 增加yml和properties互转功能 by:放学后的茶会\n● 修复macOS下开启台前调度以后按esc之后会卡死的问题\n● 快捷键:格式化支持intellij mac的command+option+L\n\n" } ] } \ No newline at end of file From 9f262d60596debba5a81996c2c13cb4049a609df Mon Sep 17 00:00:00 2001 From: rememberber Date: Sat, 1 Jun 2024 11:13:08 +0800 Subject: [PATCH 13/14] java packager update --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 36c653a7..5992f64f 100644 --- a/pom.xml +++ b/pom.xml @@ -325,7 +325,7 @@ io.github.fvarrui javapackager - 1.7.4 + 1.7.5 true com.luoboduner.moo.tool.App From f417d8c1bb49ae5949f96e8a1ca1c16ca83c7546 Mon Sep 17 00:00:00 2001 From: rememberber Date: Sat, 1 Jun 2024 13:04:12 +0800 Subject: [PATCH 14/14] 1.6.1 --- download_links.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/download_links.json b/download_links.json index 90c5ec10..b3f47b3e 100644 --- a/download_links.json +++ b/download_links.json @@ -1,5 +1,5 @@ { - "windows": "https://gitee.com/zhoubochina/MooTool/releases/download/v1.6.0/MooTool-1.6.0-windows.exe", - "mac": "https://gitee.com/zhoubochina/MooTool/releases/download/v1.6.0/MooTool_1.6.0.dmg", - "linux": "https://gitee.com/zhoubochina/MooTool/releases/download/v1.6.0/MooTool_1.6.0.deb" + "windows": "https://gitee.com/zhoubochina/MooTool/releases/download/v1.6.1/MooTool-1.6.1-windows.exe", + "mac": "https://gitee.com/zhoubochina/MooTool/releases/download/v1.6.1/MooTool_1.6.1.dmg", + "linux": "https://gitee.com/zhoubochina/MooTool/releases/download/v1.6.1/MooTool_1.6.1.deb" } \ No newline at end of file