diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java index 45897f7ac0..b1d23d03cd 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java @@ -588,9 +588,6 @@ public class TableDataTreePane extends BasicTableDataTreePane { private void populate(TableDataSourceOP op) { this.op = op; - if (TableDataTreeSearchManager.getInstance().getTreeSearchStatus() == TreeSearchStatus.SEARCHING) { - TableDataTreeSearchManager.getInstance().switchBackToolBar(); - } tableDataTree.populate(op); checkButtonEnabled(); } @@ -744,6 +741,9 @@ public class TableDataTreePane extends BasicTableDataTreePane { if (op != null) { op.setDataMode(modeArray[buttonGroup.getSelectedIndex()]); addMenuDef.setEnabled(modeArray[buttonGroup.getSelectedIndex()] == TEMPLATE_TABLE_DATA); + if (TableDataTreeSearchManager.getInstance().isInSearchMode()) { + TableDataTreeSearchManager.getInstance().outOfSearchMode(); + } refreshDockingView(); } diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/TableDataTreeSearchManager.java b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/TableDataTreeSearchManager.java index afc28e59f9..f47f457aa3 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/TableDataTreeSearchManager.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/TableDataTreeSearchManager.java @@ -64,7 +64,7 @@ public class TableDataTreeSearchManager { } private void init() { - this.treeSearchStatus = TreeSearchStatus.SEARCH_NOT_BEGIN; + this.treeSearchStatus = TreeSearchStatus.NOT_IN_SEARCH_MODE; } private static class Holder { @@ -194,11 +194,19 @@ public class TableDataTreeSearchManager { /** * 切换回工具栏 */ - public void switchBackToolBar() { - setTreeSearchStatus(TreeSearchStatus.SEARCH_NOT_BEGIN); + public void restoreToolBarAndTreePane() { + setTreeSearchStatus(TreeSearchStatus.NOT_IN_SEARCH_MODE); + if (treeSearcher != null) { + treeSearcher.afterSearch(); + } + restoreTreePane(); + } + + public void restoreTreePane() { lastSearchText = null; - treeSearcher.afterSearch(); - rendererHelper.restore(getCurrentTableDataTree()); + if (rendererHelper != null) { + rendererHelper.restore(getCurrentTableDataTree()); + } } /** @@ -264,4 +272,12 @@ public class TableDataTreeSearchManager { } return false; } + + public boolean isInSearchMode() { + return getTreeSearchStatus() != TreeSearchStatus.NOT_IN_SEARCH_MODE; + } + + public void outOfSearchMode() { + restoreToolBarAndTreePane(); + } } diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/control/pre/TableDataPreSearchTask.java b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/control/pre/TableDataPreSearchTask.java index 009f027653..1e42349122 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/control/pre/TableDataPreSearchTask.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/control/pre/TableDataPreSearchTask.java @@ -1,9 +1,11 @@ package com.fr.design.data.datapane.management.search.control.pre; +import com.fr.design.data.datapane.management.search.TableDataTreeSearchManager; import com.fr.design.data.datapane.management.search.control.TreeSearchTask; import com.fr.design.data.datapane.management.search.control.common.TableDataSearchResult; import com.fr.design.data.datapane.management.search.control.TreeSearchCallback; import com.fr.design.data.datapane.management.search.control.TreeSearchResult; +import com.fr.design.data.datapane.management.search.searcher.TreeSearchStatus; import com.fr.design.data.tabledata.wrapper.TableDataWrapper; import com.fr.log.FineLoggerFactory; @@ -27,6 +29,9 @@ public class TableDataPreSearchTask implements TreeSearchTask { public void run() { TreeSearchResult result; try { + if (TableDataTreeSearchManager.getInstance().getTreeSearchStatus() != TreeSearchStatus.SEARCH_NOT_BEGIN) { + return; + } tableDataWrapper.calculateColumnNameList(); result = new TableDataSearchResult.Builder() .buildSuccess(true) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TableDataSearchRemindPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TableDataSearchRemindPane.java index 7d62f876ba..3b78ba311f 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TableDataSearchRemindPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TableDataSearchRemindPane.java @@ -50,7 +50,7 @@ public class TableDataSearchRemindPane extends JPanel implements TreeSearchStatu @Override public void updateTreeSearchChange(TreeSearchStatusChangeEvent event) { TreeSearchStatus status = event.getTreeSearchStatus(); - if (status == TreeSearchStatus.SEARCH_NOT_BEGIN) { + if (status == TreeSearchStatus.SEARCH_NOT_BEGIN || status == TreeSearchStatus.NOT_IN_SEARCH_MODE) { remindPane.onNotBegin(); treePane.onNotBegin(); } else if (status == TreeSearchStatus.SEARCHING) { @@ -147,12 +147,12 @@ public class TableDataSearchRemindPane extends JPanel implements TreeSearchStatu } } - private class RemindPane extends JPanel implements TreeSearchStatusChange { + private static class RemindPane extends JPanel implements TreeSearchStatusChange { - private static final String IN_SEARCHING = "Fine-Design_Tree_Search_In_Searching"; - private static final String STOP_SEARCHING = "Fine-Design_Tree_Search_Stop_Search"; - private static final String SEARCHING_STOPPED = "Fine-Design_Tree_Search_Search_Stopped"; - private static final String DONE_SEARCHING = "Fine-Design_Tree_Search_Search_Completed"; + private static final String IN_SEARCHING = Toolkit.i18nText("Fine-Design_Tree_Search_In_Searching"); + private static final String STOP_SEARCHING = Toolkit.i18nText("Fine-Design_Tree_Search_Stop_Search"); + private static final String SEARCHING_STOPPED = Toolkit.i18nText("Fine-Design_Tree_Search_Search_Stopped"); + private static final String DONE_SEARCHING = Toolkit.i18nText("Fine-Design_Tree_Search_Search_Completed"); private UILabel textLabel; diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java index 454009bf27..aa88ed48e0 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java @@ -5,6 +5,8 @@ import com.fr.design.DesignModelAdapter; import com.fr.design.constants.UIConstants; import com.fr.design.data.datapane.TableDataTreePane; import com.fr.design.data.datapane.management.search.TableDataTreeSearchManager; +import com.fr.design.data.datapane.management.search.event.TreeSearchStatusChangeEvent; +import com.fr.design.data.datapane.management.search.event.TreeSearchStatusChangeListener; import com.fr.design.data.datapane.management.search.searcher.TreeSearchStatus; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; @@ -32,7 +34,7 @@ import java.awt.event.MouseEvent; /** * @author Yvan */ -public class TreeSearchToolbarPane extends Panel { +public class TreeSearchToolbarPane extends Panel implements TreeSearchStatusChangeListener { public static final String TOOLBAR_PANE = "toolbarPane"; @@ -85,6 +87,7 @@ public class TreeSearchToolbarPane extends Panel { initContentPane(); add(contentPane, BorderLayout.CENTER); setPreferredSize(new Dimension(240, 30)); + TableDataTreeSearchManager.getInstance().registerTreeSearchStatusChangeListener(this); } private void initContentPane() { @@ -147,7 +150,7 @@ public class TreeSearchToolbarPane extends Panel { @Override public void mouseClicked(MouseEvent e) { searchTextField.setText(StringUtils.EMPTY); - TableDataTreeSearchManager.getInstance().switchBackToolBar(); + TableDataTreeSearchManager.getInstance().outOfSearchMode(); switchPane(TOOLBAR_PANE); } }); @@ -158,12 +161,10 @@ public class TreeSearchToolbarPane extends Panel { } private void dealWithTextChange() { - // 判断搜索是否正在进行 - if (StringUtils.isEmpty(searchTextField.getText()) && TableDataTreeSearchManager.getInstance().getTreeSearchStatus() != TreeSearchStatus.SEARCH_NOT_BEGIN) { - TableDataTreeSearchManager.getInstance().setTreeSearchStatus(TreeSearchStatus.SEARCH_NOT_BEGIN); - DesignModelAdapter currentModelAdapter = DesignModelAdapter.getCurrentModelAdapter(); - TableDataTreePane tableDataTreePane = (TableDataTreePane) TableDataTreePane.getInstance(currentModelAdapter); - tableDataTreePane.refreshDockingView(); + if (StringUtils.isEmpty(searchTextField.getText()) && TableDataTreeSearchManager.getInstance().isInSearchMode()) { + // 如果是搜索模式下,看作是用户删除输入框文字,仅复原TableDataTreePane + TableDataTreeSearchManager.getInstance().restoreTreePane(); + TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).refreshDockingView(); } } @@ -189,4 +190,15 @@ public class TreeSearchToolbarPane extends Panel { public void setPlaceHolder(String placeHolder) { this.searchTextField.setPlaceholder(placeHolder); } + + /** + * 根据搜索状态变化,来调整自身面板的显示 + * + * @param event + */ + @Override + public void updateTreeSearchChange(TreeSearchStatusChangeEvent event) { + TreeSearchStatus treeSearchStatus = event.getTreeSearchStatus(); + switchPane(treeSearchStatus == TreeSearchStatus.NOT_IN_SEARCH_MODE ? TOOLBAR_PANE : SEARCH_PANE); + } } diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/searcher/TreeSearchStatus.java b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/searcher/TreeSearchStatus.java index fd59f60ea2..835e9ded6d 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/searcher/TreeSearchStatus.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/searcher/TreeSearchStatus.java @@ -5,6 +5,8 @@ package com.fr.design.data.datapane.management.search.searcher; */ public enum TreeSearchStatus { + NOT_IN_SEARCH_MODE, + /** * 搜索未开始 */ diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index 2b7a321a82..ab30582dd4 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -11,6 +11,7 @@ import com.fr.design.actions.UpdateAction; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.TableDataTreePane; +import com.fr.design.data.datapane.management.search.TableDataTreeSearchManager; import com.fr.design.data.tabledata.ResponseDataSourceChange; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.file.FileOperations; @@ -244,6 +245,9 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt DesignModelAdapter.setCurrentModelAdapter(jt.getModel()); fireDSChanged(); + if (TableDataTreeSearchManager.getInstance().isInSearchMode()) { + TableDataTreeSearchManager.getInstance().outOfSearchMode(); + } TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()); HistoryTemplateListPane.getInstance().setCurrentEditingTemplate(jt); //处理自动新建的模板