diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java index c74ddaa65..2e78d1062 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java @@ -484,6 +484,14 @@ public class AlphaFineConfigManager implements XMLable { this.showTemplateShop = showTemplateShop; } + /** + * 是否展示alphafine窗口,设置-搜索范围 0勾选,则不显示 + */ + public boolean needShowAlphaFineDialog() { + return hasTemplateShop() || isContainDocument() || isContainPlugin() || + isContainAction() || isProductDynamics() || isContainMyTemplate(); + } + /** * 返回tab显示顺序 */ diff --git a/designer-base/src/main/java/com/fr/design/remote/button/IconButton.java b/designer-base/src/main/java/com/fr/design/remote/button/IconButton.java index 598ec7f05..d2d04b8d4 100644 --- a/designer-base/src/main/java/com/fr/design/remote/button/IconButton.java +++ b/designer-base/src/main/java/com/fr/design/remote/button/IconButton.java @@ -4,6 +4,7 @@ import com.fr.base.BaseUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.stable.StringUtils; +import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; @@ -15,14 +16,19 @@ import java.awt.Graphics2D; import java.awt.Point; public final class IconButton extends JButton { - public IconButton() { + + public IconButton(Icon icon) { super(StringUtils.EMPTY); setContentAreaFilled(false); setFocusPainted(false); - setIcon(BaseUtils.readIcon("com/fr/design/remote/images/icon_tab_close_normal.png")); + setIcon(icon); setBorder(null); } + public IconButton() { + this(BaseUtils.readIcon("com/fr/design/remote/images/icon_tab_close_normal.png")); + } + @Override protected void paintBorder(Graphics g) { } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineHelper.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineHelper.java index 441bd03ac..126e883d9 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineHelper.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineHelper.java @@ -58,7 +58,7 @@ public class AlphaFineHelper { * 弹出alphafine搜索面板 */ public static void showAlphaFineDialog(boolean forceOpen) { - if (!AlphaFineConfigManager.isALPHALicAvailable()) { + if (!AlphaFineConfigManager.isALPHALicAvailable() || !AlphaFineConfigManager.getInstance().needShowAlphaFineDialog()) { return; } if (alphaFineDialog == null) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java index 8e9a4d3cd..0269480b6 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java @@ -920,6 +920,7 @@ public class AlphaFineFrame extends JFrame { this.productNewsSearchWorkerManager.doSearch(searchTextBean); this.documentWorkerManager.doSearch(searchTextBean); this.pluginSearchWorkerManager.doSearch(searchTextBean); + this.templateResourceSearchWorkerManager.doSearch(searchTextBean); } /** diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java index 8d3b76070..f7e017024 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java @@ -23,7 +23,7 @@ public class RecommendSearchLabel extends JPanel { private static final Color RECOMMEND_SEARCH_KEY_BLUE = new Color(0x419bf9); public RecommendSearchLabel(String title, @NotNull List tips) { - this.setLayout(new FlowLayout(FlowLayout.LEFT)); + this.setLayout(new FlowLayout(FlowLayout.CENTER)); this.setBackground(Color.WHITE); JLabel recommend = new JLabel(title); this.add(recommend); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java index adc5fc835..83a2fdffc 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java @@ -31,8 +31,9 @@ public class SearchHintPane extends JPanel { private static final String TITLE = Toolkit.i18nText("Fine-Design_Report_AlphaFine_Search_Title"); private static final String RECOMMEND = Toolkit.i18nText("Fine-Design_Report_AlphaFine_Recommend_Search"); private static final Icon ICON = IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/search_hint.svg"); - private static final int HEIGHT = 305; + private static final int HEIGHT = 200; private static final int WIDTH = 300; + private static final int TITLE_LABEL_HEIGHT = 30; private static final int TITLE_FONT_SIZE = 14; public SearchHintPane() { @@ -45,6 +46,7 @@ public class SearchHintPane extends JPanel { public SearchHintPane(List hints, Icon icon, String title) { setLayout(new BorderLayout()); + setBorder(BorderFactory.createEmptyBorder(40,0,0,0)); setBackground(Color.white); setPreferredSize(new Dimension(WIDTH, HEIGHT)); setAlignmentY(SwingConstants.CENTER); @@ -64,6 +66,7 @@ public class SearchHintPane extends JPanel { description.setFont(DesignUtils.getDefaultGUIFont().applySize(TITLE_FONT_SIZE)); description.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); description.setHorizontalAlignment(SwingConstants.CENTER); + description.setPreferredSize(new Dimension(WIDTH, TITLE_LABEL_HEIGHT)); return description; } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java index 29172f94e..127d2002b 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java @@ -2,7 +2,6 @@ package com.fr.design.mainframe.alphafine.download; import com.fr.base.svg.IconUtils; import com.fr.common.util.Strings; -import com.fr.decision.webservice.v10.log.download.utils.LogZipUtils; import com.fr.design.DesignerEnvManager; import com.fr.design.extra.Process; import com.fr.design.i18n.Toolkit; @@ -14,7 +13,6 @@ import com.fr.design.mainframe.alphafine.search.helper.FineMarketClientHelper; import com.fr.design.mainframe.toast.SimpleToast; import com.fr.general.IOUtils; import com.fr.log.FineLoggerFactory; -import com.fr.stable.pinyin.ChineseHelper; import javax.swing.SwingUtilities; import javax.swing.filechooser.FileSystemView; @@ -82,11 +80,8 @@ public class FineMarketDownloadManager { if (fileName.endsWith(FineMarketConstants.ZIP)) { File file = new File(fileName); File parentDir = file.getParentFile(); - if (ChineseHelper.containChinese(fileName)) { - IOUtils.unzip(file, parentDir.getAbsolutePath(), LogZipUtils.GBK); - } else { - IOUtils.unzip(file, parentDir.getAbsolutePath()); - } + // TODO:之前用的gbk解码太容易乱码了。这里应该自动识别编码,然后解压,但是要添加1个三方包,可能会赶不上发布。所以先暂时用utf8顶着。 + IOUtils.unzip(file, parentDir.getAbsolutePath(), "UTF-8"); } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java index 56c14dc28..99c312e88 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java @@ -35,6 +35,14 @@ public class DefaultContentPane extends JPanel { this.searchWorkerManager.showDefault(this); } + /** + * 显示搜索结果 + */ + public void showResult(JPanel result) { + add(result); + repaint(); + } + public DefaultContentPane() { } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java index fc9838e9f..9ed5003d3 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java @@ -10,8 +10,9 @@ import com.fr.design.mainframe.alphafine.search.manager.SearchProviderRegistry; import com.fr.general.CloudCenter; import com.fr.log.FineLoggerFactory; +import javax.swing.JPanel; import javax.swing.SwingWorker; -import java.awt.BorderLayout; +import java.awt.CardLayout; import java.util.ArrayList; import java.util.List; @@ -25,18 +26,46 @@ import java.util.List; public class DefaultPluginContentPane extends DefaultContentPane { private static final String[] HINTS = CloudCenter.getInstance().acquireConf("alphafine.plugin.recommend", "JS,API,JSON").split(","); - // 左边展示内容,右边展示搜索提示 + private static final String LOADING_PANE = "loading"; + private static final String NETWORK_ERROR = "networkError"; + private static final String RESULT_PANE = "result"; private SearchWorkerManager searchWorkerManager; private CellType cellType; + private AlphaFineFrame parentWindow; + private CardLayout cardLayout; + private SearchLoadingPane searchLoadingPane; + private NetWorkFailedPane netWorkFailedPane; + private SwingWorker worker; + public DefaultPluginContentPane(CellType cellType, AlphaFineFrame parentWindow) { super(); - this.setLayout(new BorderLayout()); + this.cellType = cellType; + this.parentWindow = parentWindow; + this.cardLayout = new CardLayout(); + this.setLayout(cardLayout); this.setPreferredSize(AlphaFineConstants.PREVIEW_SIZE); - new SwingWorker() { + initPanel(); + add(searchLoadingPane, LOADING_PANE); + add(netWorkFailedPane, NETWORK_ERROR); + worker = createWorker(); + worker.execute(); + } + + private void initPanel() { + this.searchLoadingPane = new SearchLoadingPane(); + this.netWorkFailedPane = new NetWorkFailedPane(()-> reload()); + } + + private void switchPane(String tag) { + cardLayout.show(this, tag); + } + + private SwingWorker createWorker() { + return new SwingWorker() { @Override protected Boolean doInBackground() throws Exception { - add(new SearchLoadingPane()); + switchPane(LOADING_PANE); return AlphaFineHelper.isNetworkOk(); } @@ -45,9 +74,8 @@ public class DefaultPluginContentPane extends DefaultContentPane { super.done(); try { boolean networkOk = get(); - removeAll(); if (!networkOk) { - add(new NetWorkFailedPane()); + switchPane(NETWORK_ERROR); } else { List searchKeys = new ArrayList<>(); for (String s : HINTS) { @@ -64,10 +92,22 @@ public class DefaultPluginContentPane extends DefaultContentPane { } catch (Exception e) { FineLoggerFactory.getLogger().error(e, e.getMessage()); } - } - }.execute(); + }; + } + + @Override + public void showResult(JPanel result) { + add(result, RESULT_PANE); + switchPane(RESULT_PANE); + } + /** + * 网络异常时,重新加载 + */ + public void reload() { + worker = createWorker(); + worker.execute(); } public CellType getCellType() { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchWorkerManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchWorkerManager.java index bca8904a1..cdacd681d 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchWorkerManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchWorkerManager.java @@ -135,8 +135,7 @@ public class SearchWorkerManager implements SearchManager { searchResultPane.getSearchResultList().setModel(searchListModel); searchResultPane.getSearchResultList().setSelectedIndex(0); searchResultPane.getSearchResultList().requestFocus(); - defaultContentPane.add(searchResultPane); - SwingUtilities.invokeLater(()->defaultContentPane.repaint()); + SwingUtilities.invokeLater(()->defaultContentPane.showResult(searchResultPane)); } @Override