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.App; import com.luoboduner.moo.tool.ui.frame.FindResultFrame; import com.luoboduner.moo.tool.util.UndoUtil; import lombok.Getter; import javax.swing.*; import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.StyleSheet; import java.awt.*; import java.awt.event.KeyEvent; /** * <pre> * FindResultForm * </pre> * * @author <a href="https://github.com/rememberber">RememBerBer</a> * @since 2019/10/20. */ @Getter public class FindResultForm { private JEditorPane editorPane; private JScrollPane scrollPane; private JPanel findResultPanel; private JLabel findResultCount; private static FindResultForm findResultForm; private FindResultForm() { this.getScrollPane().getVerticalScrollBar().setUnitIncrement(15); this.getScrollPane().getVerticalScrollBar().setDoubleBuffered(true); if ("Darcula(推荐)".equals(App.config.getTheme())) { Color bgColor = new Color(43, 43, 43); editorPane.setBackground(bgColor); Color foreColor = new Color(187, 187, 187); editorPane.setForeground(foreColor); } editorPane.setEditable(false); this.getFindResultPanel().registerKeyboardAction(e -> FindResultFrame.getInstance().dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); } public static FindResultForm getInstance() { if (findResultForm == null) { findResultForm = new FindResultForm(); UndoUtil.register(findResultForm); } return findResultForm; } public void setHtmlText(String htmlText) { htmlText = htmlText.replaceAll("\n", "<br/>"); editorPane.setContentType("text/html; charset=utf-8"); HTMLEditorKit kit = new HTMLEditorKit(); editorPane.setEditorKit(kit); StyleSheet styleSheet = kit.getStyleSheet(); styleSheet.addRule("span{background-color:#FBC87A;color:2B2B2B}"); styleSheet.addRule("body{font-family:" + findResultCount.getFont().getName() + ";font-size:" + findResultCount.getFont().getSize() + ";}"); editorPane.setText(htmlText); editorPane.setCaretPosition(0); } { // 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$$$() { findResultPanel = new JPanel(); findResultPanel.setLayout(new GridLayoutManager(2, 1, new Insets(0, 0, 0, 0), -1, -1)); final JPanel panel1 = new JPanel(); panel1.setLayout(new GridLayoutManager(1, 4, new Insets(10, 10, 10, 10), -1, -1)); findResultPanel.add(panel1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, 1, 1, null, null, null, 0, false)); final JLabel label1 = new JLabel(); label1.setText("共找到"); panel1.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); findResultCount = new JLabel(); Font findResultCountFont = this.$$$getFont$$$(null, Font.BOLD, -1, findResultCount.getFont()); if (findResultCountFont != null) findResultCount.setFont(findResultCountFont); findResultCount.setText("0"); panel1.add(findResultCount, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label2 = new JLabel(); label2.setText("处"); panel1.add(label2, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final Spacer spacer1 = new Spacer(); panel1.add(spacer1, new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); final JPanel panel2 = new JPanel(); panel2.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); findResultPanel.add(panel2, new GridConstraints(1, 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)); scrollPane = new JScrollPane(); panel2.add(scrollPane, 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)); editorPane = new JEditorPane(); editorPane.setMargin(new Insets(10, 10, 10, 10)); scrollPane.setViewportView(editorPane); } /** * @noinspection ALL */ private Font $$$getFont$$$(String fontName, int style, int size, Font currentFont) { if (currentFont == null) return null; String resultName; if (fontName == null) { resultName = currentFont.getName(); } else { Font testFont = new Font(fontName, Font.PLAIN, 10); if (testFont.canDisplay('a') && testFont.canDisplay('1')) { resultName = fontName; } else { resultName = currentFont.getName(); } } return new Font(resultName, style >= 0 ? style : currentFont.getStyle(), size >= 0 ? size : currentFont.getSize()); } /** * @noinspection ALL */ public JComponent $$$getRootComponent$$$() { return findResultPanel; } }