From 72b5b8e035278a4af345b6666cddaa5a3466f17c Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Fri, 29 Dec 2017 01:41:25 +0800 Subject: [PATCH 1/2] =?UTF-8?q?REPORT-6296=20REPORT-6303=20AF=E6=94=B9?= =?UTF-8?q?=E8=89=AFbugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/component/AlphaFineDialog.java | 29 ++++++++++++++++--- .../manager/impl/FileSearchManager.java | 20 +++++++++++-- .../manager/impl/PluginSearchManager.java | 12 +++++++- 3 files changed, 53 insertions(+), 8 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java b/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java index fe7b66aeca..a5c1dcd75e 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java +++ b/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java @@ -795,13 +795,34 @@ public class AlphaFineDialog extends UIDialog { * @param selectedValue */ private void rebuildShowMoreList(int index, MoreModel selectedValue) { - SearchResult moreResult = getMoreResult(selectedValue); if ((selectedValue).getContent().equals(Inter.getLocText("FR-Designer_AlphaFine_ShowLess"))) { - for (int i = 0; i < moreResult.size(); i++) { - this.searchListModel.add(index + AlphaFineConstants.SHOW_SIZE + 1 + i, moreResult.get(i)); + splitLabel.setIcon(new ImageIcon(getClass().getResource("/com/fr/design/mainframe/alphafine/images/bigloading.gif"))); + refreshContainer(); + if (this.searchWorker != null && !this.searchWorker.isDone()) { + this.searchWorker.cancel(true); + this.searchWorker = null; } + this.searchWorker = new SwingWorker() { + @Override + protected Object doInBackground() throws Exception { + splitLabel.setIcon(new ImageIcon(getClass().getResource("/com/fr/design/mainframe/alphafine/images/bigloading.gif"))); + for (int i = 0; i < getMoreResult(selectedValue).size(); i++) { + searchListModel.add(index + AlphaFineConstants.SHOW_SIZE + 1 + i, getMoreResult(selectedValue).get(i)); + } + return null; + } + + @Override + protected void done() { + if (!isCancelled()) { + splitLabel.setIcon(null); + } + } + }; + this.searchWorker.execute(); + } else { - for (int i = 0; i < moreResult.size(); i++) { + for (int i = 0; i < getMoreResult(selectedValue).size(); i++) { this.searchListModel.remove(index + AlphaFineConstants.SHOW_SIZE + 1); } diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java index 22f4424c9f..8da604ab13 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java +++ b/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java @@ -39,6 +39,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { private static FileSearchManager fileSearchManager = null; private SearchResult filterModelList; private SearchResult lessModelList; + private SearchResult moreModelList; private List fileNodes = null; //停止搜索 private boolean stopSearch = false; @@ -73,6 +74,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { public synchronized SearchResult getLessSearchResult(String searchText) { this.filterModelList = new SearchResult(); this.lessModelList = new SearchResult(); + this.moreModelList = new SearchResult(); searchText = dealWithSearchText(searchText); if (StringUtils.isBlank(searchText) || ComparatorUtils.equals(searchText, DS_NAME)) { lessModelList.add(new MoreModel(Inter.getLocText("FR-Designer_Templates"))); @@ -101,16 +103,20 @@ public class FileSearchManager implements AlphaFineSearchProvider { @Override public SearchResult getMoreSearchResult(String searchText) { + if (moreModelList != null && !moreModelList.isEmpty()) { + return moreModelList; + } this.filterModelList = new SearchResult(); this.lessModelList = new SearchResult(); + this.moreModelList = new SearchResult(); searchText = dealWithSearchText(searchText); Env env = FRContext.getCurrentEnv(); AlphaFineHelper.checkCancel(); isContainCpt = true; isContainFrm = true; doSearch(searchText, false, env); - lessModelList.addAll(filterModelList.subList(AlphaFineConstants.SHOW_SIZE, filterModelList.size())); - return lessModelList; + moreModelList.addAll(filterModelList.subList(AlphaFineConstants.SHOW_SIZE, filterModelList.size())); + return moreModelList; } private void doSearch(String searchText, boolean needMore, Env env) { @@ -193,7 +199,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { if (!AlphaFineHelper.getFilterResult().contains(model)) { filterModelList.add(model); } - if (filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) { + if(filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) { stopSearch = true; } isAlreadyContain = true; @@ -272,4 +278,12 @@ public class FileSearchManager implements AlphaFineSearchProvider { public void setContainFrm(boolean containFrm) { isContainFrm = containFrm; } + + public SearchResult getMoreModelList() { + return moreModelList; + } + + public void setMoreModelList(SearchResult moreModelList) { + this.moreModelList = moreModelList; + } } \ No newline at end of file diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java index 2978eee40e..17cd01f584 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java +++ b/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java @@ -15,6 +15,8 @@ import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; import com.fr.json.JSONException; import com.fr.json.JSONObject; +import com.fr.plugin.basic.version.Version; +import com.fr.plugin.basic.version.VersionIntervalFactory; import com.fr.stable.StringUtils; import java.io.UnsupportedEncodingException; @@ -37,10 +39,18 @@ public class PluginSearchManager implements AlphaFineSearchProvider { } + private static boolean isCompatibleCurrentEnv(String envVersion){ + return VersionIntervalFactory.create(envVersion).contain(Version.currentEnvVersion()); + } + private static PluginModel getPluginModel(JSONObject object, boolean isFromCloud) { String name = object.optString("name"); String content = object.optString("description"); String pluginId = object.optString("pluginid"); + String envVersion = object.optString("envversion"); + if (!isCompatibleCurrentEnv(envVersion)) { + return null; + } int id = object.optInt("id"); int searchCount = object.optInt("searchCount"); String imageUrl = null; @@ -107,7 +117,7 @@ public class PluginSearchManager implements AlphaFineSearchProvider { for (int i = 0; i < jsonArray.length(); i++) { AlphaFineHelper.checkCancel(); PluginModel cellModel = getPluginModel(jsonArray.optJSONObject(i), false); - if (!AlphaFineHelper.getFilterResult().contains(cellModel)) { + if (cellModel != null && !AlphaFineHelper.getFilterResult().contains(cellModel)) { searchResult.add(cellModel); } } From b7af29a8388f0b77b8900bcf87bd66be54d983ab Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Fri, 29 Dec 2017 09:10:24 +0800 Subject: [PATCH 2/2] rt --- .../mainframe/alphafine/component/AlphaFineDialog.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java b/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java index a5c1dcd75e..ea50d88268 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java +++ b/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java @@ -390,7 +390,6 @@ public class AlphaFineDialog extends UIDialog { */ private void rebuildList(String searchText) { resetContainer(); - if (searchText.startsWith(ADVANCED_SEARCH_MARK)) { if (searchText.startsWith(ACTION_MARK_SHORT) || searchText.startsWith(ACTION_MARK)) { storeText = searchText.substring(searchText.indexOf(StringUtils.BLANK) + 1, searchText.length()); @@ -624,6 +623,7 @@ public class AlphaFineDialog extends UIDialog { private void dealWithMoreOrLessResult(int index, MoreModel selectedValue) { if (ComparatorUtils.equals(Inter.getLocText("FR-Designer_AlphaFine_ShowAll"), selectedValue.getContent())) { selectedValue.setContent(Inter.getLocText("FR-Designer_AlphaFine_ShowLess")); + rebuildShowMoreList(index, selectedValue); } else { selectedValue.setContent(Inter.getLocText("FR-Designer_AlphaFine_ShowAll")); @@ -796,8 +796,7 @@ public class AlphaFineDialog extends UIDialog { */ private void rebuildShowMoreList(int index, MoreModel selectedValue) { if ((selectedValue).getContent().equals(Inter.getLocText("FR-Designer_AlphaFine_ShowLess"))) { - splitLabel.setIcon(new ImageIcon(getClass().getResource("/com/fr/design/mainframe/alphafine/images/bigloading.gif"))); - refreshContainer(); + splitLabel.setIcon(new ImageIcon(getClass().getResource(AlphaFineConstants.IMAGE_URL + "bigloading.gif"))); if (this.searchWorker != null && !this.searchWorker.isDone()) { this.searchWorker.cancel(true); this.searchWorker = null; @@ -805,7 +804,6 @@ public class AlphaFineDialog extends UIDialog { this.searchWorker = new SwingWorker() { @Override protected Object doInBackground() throws Exception { - splitLabel.setIcon(new ImageIcon(getClass().getResource("/com/fr/design/mainframe/alphafine/images/bigloading.gif"))); for (int i = 0; i < getMoreResult(selectedValue).size(); i++) { searchListModel.add(index + AlphaFineConstants.SHOW_SIZE + 1 + i, getMoreResult(selectedValue).get(i)); }