diff --git a/designer/src/com/fr/design/actions/insert/cell/DSColumnCellAction.java b/designer/src/com/fr/design/actions/insert/cell/DSColumnCellAction.java index 632a8a2ee..90d0ccb8b 100644 --- a/designer/src/com/fr/design/actions/insert/cell/DSColumnCellAction.java +++ b/designer/src/com/fr/design/actions/insert/cell/DSColumnCellAction.java @@ -1,9 +1,10 @@ package com.fr.design.actions.insert.cell; -import com.fr.base.BaseUtils; import com.fr.design.actions.core.WorkBookSupportable; -import com.fr.design.menu.KeySetUtils; +import com.fr.design.dscolumn.DSColumnPane; import com.fr.design.mainframe.ElementCasePane; +import com.fr.design.menu.KeySetUtils; +import com.fr.general.IOUtils; import com.fr.report.cell.cellattr.core.group.DSColumn; public class DSColumnCellAction extends AbstractCellAction implements WorkBookSupportable { @@ -12,7 +13,8 @@ public class DSColumnCellAction extends AbstractCellAction implements WorkBookSu this.setMenuKeySet(KeySetUtils.INSERT_DATA_COLUMN); this.setName(getMenuKeySet().getMenuKeySetName()+ "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/bindColumn.png")); + this.setSmallIcon(IOUtils.readIcon("/com/fr/design/images/m_insert/bindColumn.png")); + this.setSearchText(new DSColumnPane()); } @Override diff --git a/designer/src/com/fr/design/actions/report/ReportEngineAttrAction.java b/designer/src/com/fr/design/actions/report/ReportEngineAttrAction.java index 796e3b638..894e25f36 100644 --- a/designer/src/com/fr/design/actions/report/ReportEngineAttrAction.java +++ b/designer/src/com/fr/design/actions/report/ReportEngineAttrAction.java @@ -1,13 +1,13 @@ package com.fr.design.actions.report; -import com.fr.base.BaseUtils; import com.fr.design.actions.ReportComponentAction; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.WorkSheetDesigner; import com.fr.design.menu.KeySetUtils; import com.fr.design.report.LayerReportPane; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.dialog.DialogActionAdapter; +import com.fr.general.IOUtils; import com.fr.report.worksheet.WorkSheet; public class ReportEngineAttrAction extends ReportComponentAction { @@ -17,7 +17,9 @@ public class ReportEngineAttrAction extends ReportComponentAction 0) { + searchResultList.setSelectedIndex(1); + } + } } catch (InterruptedException e) { FRLogger.getLogger().error(e.getMessage()); @@ -243,7 +278,14 @@ public class AlphaFineDialog extends UIDialog { this.searchWorker.execute(); } + /** + * 初始化监听器 + * @param searchText + */ private void initListListener(final String searchText) { + /** + * 鼠标监听器 + */ searchResultList.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { @@ -262,7 +304,9 @@ public class AlphaFineDialog extends UIDialog { } }); - // TODO: 2017/5/8 xiaxiang: e.getClickCount() == 1 时,偶发性的不能触发,所以先放到valueChanged + /** + *单击时触发右侧面板展示搜索结果 + */ searchResultList.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { @@ -273,6 +317,9 @@ public class AlphaFineDialog extends UIDialog { } }); + /** + * 键盘监听器 + */ searchResultList.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { @@ -435,6 +482,9 @@ public class AlphaFineDialog extends UIDialog { } + /** + * 窗口拖拽 + */ private void initMouseListener() { addMouseMotionListener(new MouseMotionAdapter() { @Override @@ -487,9 +537,9 @@ public class AlphaFineDialog extends UIDialog { Point p = k.getLocationOnScreen(); Rectangle dialogRectangle = AlphaFineDialog.this.getBounds(); Rectangle paneRectangle = new Rectangle(AlphaFinePane.createAlphaFinePane().getLocationOnScreen(), AlphaFinePane.createAlphaFinePane().getSize()); - if (!dialogRectangle.contains(p) && !paneRectangle.contains(p) && !foreOpen) { + if (!dialogRectangle.contains(p) && !paneRectangle.contains(p) && !forceOpen) { AlphaFineDialog.this.dispose(); - foreOpen = false; + forceOpen = false; } } } @@ -604,15 +654,20 @@ public class AlphaFineDialog extends UIDialog { } + /** + * 点击显示更多时,添加对应的model到list;点击收起是移除model + * @param index + * @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.insertElementAt(moreResult.get(i), index + AlphaFineConstants.SHOW_SIZE -1 + i); + this.searchListModel.insertElementAt(moreResult.get(i), index + AlphaFineConstants.SHOW_SIZE + 1 + i); } } else { for (int i = 0; i < moreResult.size(); i++) { - this.searchListModel.removeElementAt(index + AlphaFineConstants.SHOW_SIZE - 1); + this.searchListModel.removeElementAt(index + AlphaFineConstants.SHOW_SIZE + 1); } } @@ -669,11 +724,11 @@ public class AlphaFineDialog extends UIDialog { } - public boolean isForeOpen() { - return foreOpen; + public boolean isForceOpen() { + return forceOpen; } - public void setForeOpen(boolean foreOpen) { - this.foreOpen = foreOpen; + public void setForceOpen(boolean forceOpen) { + this.forceOpen = forceOpen; } } \ No newline at end of file diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/ActionSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/ActionSearchManager.java index 32b71eeb3..b174e0b73 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/ActionSearchManager.java +++ b/designer/src/com/fr/design/mainframe/alphafine/search/manager/ActionSearchManager.java @@ -1,16 +1,16 @@ package com.fr.design.mainframe.alphafine.search.manager; import com.fr.design.DesignerEnvManager; -import com.fr.design.actions.UpdateAction; import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; -import com.fr.design.mainframe.alphafine.cell.model.MoreModel; import com.fr.design.mainframe.alphafine.cell.model.ActionModel; +import com.fr.design.mainframe.alphafine.cell.model.MoreModel; import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.design.mainframe.toolbar.UpdateActionManager; import com.fr.design.mainframe.toolbar.UpdateActionModel; -import com.fr.general.FRLogger; +import com.fr.general.ComparatorUtils; import com.fr.general.Inter; +import com.fr.stable.StringUtils; import java.util.List; @@ -38,8 +38,8 @@ public class ActionSearchManager implements AlphaFineSearchProcessor { if (DesignerEnvManager.getEnvManager().getAlphafineConfigManager().isContainAction()) { List updateActions = UpdateActionManager.getUpdateActionManager().getUpdateActions(); for (UpdateActionModel updateActionModel : updateActions) { - if (updateActionModel.getActionName() != null) { - if (updateActionModel.getActionName().toLowerCase().contains(searchText.toLowerCase()) || updateActionModel.getParentName().toLowerCase().contains(searchText.toLowerCase())) { + if (StringUtils.isNotBlank(updateActionModel.getSearchKey())) { + if (updateActionModel.getSearchKey().toLowerCase().contains(searchText.toLowerCase()) ) { filterModelList.add(new ActionModel(updateActionModel.getActionName(), updateActionModel.getParentName(), updateActionModel.getAction())); } } @@ -53,7 +53,7 @@ public class ActionSearchManager implements AlphaFineSearchProcessor { moreModelList.add(filterModelList.get(i)); } if (filterModelList.size() > AlphaFineConstants.SHOW_SIZE) { - lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Set"), Inter.getLocText("FR-Designer_AlphaFine_ShowAll"),true, CellType.ACTION)); + lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Set"), Inter.getLocText("FR-Designer_AlphaFine_ShowAll"), true, CellType.ACTION)); } else { lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Set"), CellType.ACTION)); } @@ -70,24 +70,17 @@ public class ActionSearchManager implements AlphaFineSearchProcessor { } /** - * 根据类名反射获取对象 + * 根据类名获取对象 * @param actionName * @return */ public static ActionModel getModelFromCloud(String actionName ) { - UpdateAction action = null; - String name = null; - try { - Class className = Class.forName(actionName); - action = (UpdateAction) className.newInstance(); - name = action.getName(); - } catch (ClassNotFoundException e) { - FRLogger.getLogger().error(e.getMessage()); - } catch (IllegalAccessException e) { - FRLogger.getLogger().error(e.getMessage()); - } catch (InstantiationException e) { - FRLogger.getLogger().error(e.getMessage()); + List updateActions = UpdateActionManager.getUpdateActionManager().getUpdateActions(); + for (UpdateActionModel updateActionModel : updateActions) { + if (ComparatorUtils.equals(actionName, updateActionModel.getClassName())) { + return new ActionModel(updateActionModel.getActionName(), updateActionModel.getParentName(), updateActionModel.getAction()); + } } - return new ActionModel(name, action); + return null; } } diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java index 8742c09ba..535d6b1a6 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java +++ b/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java @@ -3,7 +3,7 @@ package com.fr.design.mainframe.alphafine.search.manager; import com.fr.base.FRContext; import com.fr.base.Utils; import com.fr.design.mainframe.alphafine.AlphaFineConstants; -import com.fr.design.mainframe.alphafine.cell.CellModelHelper; +import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; import com.fr.design.mainframe.alphafine.cell.model.MoreModel; import com.fr.design.mainframe.alphafine.model.SearchResult; @@ -38,11 +38,11 @@ public class RecentSearchManager extends XMLFileManager implements AlphaFineSear private static final int MAX_SIZE = 3; private static RecentSearchManager recentSearchManager = null; private static File recentFile = null; - private List fileList; - private List actionList; - private List documentList; private SearchResult modelList; - private List pluginList; + private List fileList = new ArrayList<>(); + private List actionList = new ArrayList<>(); + private List documentList = new ArrayList<>(); + private List pluginList = new ArrayList<>(); private List recentModelList = new ArrayList<>(); private Map> recentKVModelMap = new HashMap<>(); @@ -95,17 +95,73 @@ public class RecentSearchManager extends XMLFileManager implements AlphaFineSear } } + private void addModelToList(List list, String name) { try { - AlphaCellModel model = CellModelHelper.getModelFromJson(new JSONObject(name)); + AlphaCellModel model = getModelFromJson(new JSONObject(name)); if (model != null) { - list.add(CellModelHelper.getModelFromJson(new JSONObject(name))); + list.add(model); } } catch (JSONException e) { FRLogger.getLogger().error(e.getMessage()); } } + /** + * 转成cellModel + * @param object + * @return + */ + private AlphaCellModel getModelFromJson(JSONObject object) { + int typeValue = object.optInt("cellType"); + AlphaCellModel cellModel = null; + switch (CellType.parse(typeValue)) { + case ACTION: + cellModel = ActionSearchManager.getModelFromCloud(object.optString("result")); + if (cellModel != null) { + actionList.add(cellModel); + } + break; + case DOCUMENT: + cellModel = DocumentSearchManager.getModelFromCloud(object.optJSONObject("result")); + if (cellModel != null) { + documentList.add(cellModel); + } + break; + case FILE: + cellModel = FileSearchManager.getModelFromCloud(object.optString("result")); + if (cellModel != null) { + fileList.add(cellModel); + } + break; + case PLUGIN: + case REUSE: + cellModel = PluginSearchManager.getModelFromCloud(object.optJSONObject("result")); + if (cellModel != null) { + pluginList.add(cellModel); + } + break; + + } + return cellModel; + } + + public List getFileList() { + return fileList; + } + + public List getActionList() { + return actionList; + } + + public List getDocumentList() { + return documentList; + } + + public List getPluginList() { + return pluginList; + } + @Override public void writeXML(XMLPrintWriter writer) { writer.startTAG(XML_TAG); @@ -135,37 +191,7 @@ public class RecentSearchManager extends XMLFileManager implements AlphaFineSear return "alphafine_recent.xml"; } - public List getFileList() { - return fileList; - } - public void setFileList(List fileList) { - this.fileList = fileList; - } - - public List getActionList() { - return actionList; - } - - public void setActionList(List actionList) { - this.actionList = actionList; - } - - public List getDocumentList() { - return documentList; - } - - public void setDocumentList(List documentList) { - this.documentList = documentList; - } - - public List getPluginList() { - return pluginList; - } - - public void setPluginList(List pluginList) { - this.pluginList = pluginList; - } /** * 获取xml diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecommendSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecommendSearchManager.java index d1213822b..94f718be2 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecommendSearchManager.java +++ b/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecommendSearchManager.java @@ -47,7 +47,7 @@ public class RecommendSearchManager implements AlphaFineSearchProcessor { if (jsonArray != null && jsonArray.length() > 0) { for (int i = 0; i < jsonArray.length(); i++) { AlphaCellModel alphaCellModel = CellModelHelper.getModelFromJson((JSONObject) jsonArray.get(i)); - if (!RecentSearchManager.getRecentSearchManger().getRecentModelList().contains(alphaCellModel)) { + if (alphaCellModel != null && !RecentSearchManager.getRecentSearchManger().getRecentModelList().contains(alphaCellModel)) { this.modelList.add(alphaCellModel); } } diff --git a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java index 492daa88c..6a3fd219a 100644 --- a/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java +++ b/designer/src/com/fr/design/webattr/EditReportServerParameterPane.java @@ -4,6 +4,7 @@ package com.fr.design.webattr; import com.fr.base.ConfigManager; +import com.fr.base.ConfigManagerProvider; import com.fr.base.FRContext; import com.fr.design.gui.frpane.LoadingBasicPane; import com.fr.design.gui.frpane.UITabbedPane; @@ -12,7 +13,6 @@ import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; -import com.fr.base.ConfigManagerProvider; import com.fr.stable.project.ProjectConstants; import com.fr.web.attr.ReportWebAttr; @@ -33,17 +33,17 @@ public class EditReportServerParameterPane extends LoadingBasicPane { //TODO 表单 // private FormToolBarPane formPane; private WriteToolBarPane writePane; - private ReportWebAttr webAttr ; + private ReportWebAttr webAttr; private WebCssPane cssPane; private WebJsPane jsPane; private ErrorTemplatePane errorTemplatePane; - + @Override - protected void initComponents(JPanel container) { + protected synchronized void initComponents(JPanel container) { JPanel defaultPane = container; defaultPane.setLayout(FRGUIPaneFactory.createBorderLayout()); diff --git a/designer/src/com/fr/design/webattr/ReportWebAttrPane.java b/designer/src/com/fr/design/webattr/ReportWebAttrPane.java index a4e877c56..8577e0e3e 100644 --- a/designer/src/com/fr/design/webattr/ReportWebAttrPane.java +++ b/designer/src/com/fr/design/webattr/ReportWebAttrPane.java @@ -3,18 +3,17 @@ */ package com.fr.design.webattr; -import java.awt.BorderLayout; - -import javax.swing.JPanel; - import com.fr.design.gui.frpane.LoadingBasicPane; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.style.background.BackgroundPane; import com.fr.design.style.background.BackgroundPane4Browser; import com.fr.general.Inter; -import com.fr.design.style.background.BackgroundPane; import com.fr.web.attr.ReportWebAttr; +import javax.swing.*; +import java.awt.*; + /** * ReportWebAttr Dialog */ @@ -37,7 +36,7 @@ public class ReportWebAttrPane extends LoadingBasicPane { @Override - protected void initComponents(JPanel container) { + protected synchronized void initComponents(JPanel container) { JPanel defaultPane = container; defaultPane.setLayout(FRGUIPaneFactory.createBorderLayout()); diff --git a/designer/src/com/fr/design/webattr/ReportWriteAttrPane.java b/designer/src/com/fr/design/webattr/ReportWriteAttrPane.java index 2b9d4fdd9..e9e04fdf3 100644 --- a/designer/src/com/fr/design/webattr/ReportWriteAttrPane.java +++ b/designer/src/com/fr/design/webattr/ReportWriteAttrPane.java @@ -25,7 +25,7 @@ public class ReportWriteAttrPane extends LoadingBasicPane { } @Override - protected void initComponents(JPanel container) { + protected synchronized void initComponents(JPanel container) { container.setLayout(FRGUIPaneFactory.createBorderLayout()); final UITabbedPane tabbedPane = new UITabbedPane(SwingConstants.TOP, JTabbedPane.SCROLL_TAB_LAYOUT); container.add(tabbedPane, BorderLayout.CENTER); diff --git a/designer_base/src/com/fr/design/actions/UpdateAction.java b/designer_base/src/com/fr/design/actions/UpdateAction.java index 93a553f9c..04e8b7fe4 100644 --- a/designer_base/src/com/fr/design/actions/UpdateAction.java +++ b/designer_base/src/com/fr/design/actions/UpdateAction.java @@ -6,19 +6,22 @@ package com.fr.design.actions; import com.fr.base.NameStyle; import com.fr.base.ScreenResolution; import com.fr.base.Style; -import com.fr.design.constants.UIConstants; import com.fr.design.actions.core.ActionFactory; +import com.fr.design.constants.UIConstants; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.imenu.UICheckBoxMenuItem; import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.menu.ShortCut; import com.fr.design.selection.SelectionListener; import com.fr.stable.StringUtils; +import com.fr.stable.pinyin.PinyinFormat; +import com.fr.stable.pinyin.PinyinHelper; import javax.swing.*; +import javax.swing.border.Border; +import javax.swing.border.TitledBorder; import java.awt.*; import java.awt.event.ComponentEvent; -import java.awt.event.ContainerEvent; import java.beans.PropertyChangeListener; import java.util.HashMap; import java.util.Iterator; @@ -50,6 +53,10 @@ public abstract class UpdateAction extends ShortCut implements Action { */ private Map componentMap; + private String searchText = StringUtils.EMPTY; + + + /** * Constructor */ @@ -426,4 +433,112 @@ public abstract class UpdateAction extends ShortCut implements Action { return menuItem; } + + public void setSearchText(JPanel panel) { + this.searchText = getComponentTexts(panel, "_", new StringBuffer(), new StringBuffer(), new StringBuffer()); + + } + + /** + * 获取搜索匹配字符串 + * @return + */ + public String getSearchText() { + return searchText; + } + + /** + * 遍历面板中所有控件,获取text用于alphafine的action搜索,考虑分词,拼音,首字母检索 + * @param panel + * @param separator + * @param text + * @param pinyin + * @param shortPinyin + * @return + */ + public String getComponentTexts(JPanel panel, String separator, StringBuffer text, StringBuffer pinyin, StringBuffer shortPinyin) { + Border border = panel.getBorder(); + if (border instanceof TitledBorder) { + String title = ((TitledBorder) border).getTitle(); + text.append(title).append(separator); + pinyin.append(PinyinHelper.convertToPinyinString(title, "", PinyinFormat.WITHOUT_TONE)).append(separator); + shortPinyin.append(PinyinHelper.getShortPinyin(title)).append(separator); + } + Component[] components = panel.getComponents(); + for (Component component : components) { + if (component instanceof JPanel) { + getComponentTexts((JPanel) component, separator, text, pinyin, shortPinyin); + } else if (component instanceof JScrollPane) { + Component childComponent = ((JScrollPane) component).getViewport().getView(); + if (childComponent instanceof JPanel) { + getComponentTexts((JPanel) childComponent, separator, text, pinyin, shortPinyin); + } + } else if (component instanceof JLabel) { + String title = ((JLabel) component).getText(); + handleSearchText(separator, text, pinyin, shortPinyin, title); + + } else if (component instanceof JCheckBox) { + String title = ((JCheckBox) component).getText(); + handleSearchText(separator, text, pinyin, shortPinyin, title); + + } else if (component instanceof JButton) { + String title = ((JButton) component).getText(); + handleSearchText(separator, text, pinyin, shortPinyin, title); + + } else if (component instanceof JRadioButton) { + String title = ((JRadioButton) component).getText(); + handleSearchText(separator, text, pinyin, shortPinyin, title); + + } else if (component instanceof JComboBox) { + for (int i = 0; i < ((JComboBox) component).getItemCount(); i++) { + text.append(((JComboBox) component).getItemAt(i)); + String title = String.valueOf(((JComboBox) component).getItemAt(i)); + handleSearchText(separator, text, pinyin, shortPinyin, title); + + } + } else if (component instanceof JTabbedPane) { + getTabPaneTexts((JTabbedPane) component, separator, text, pinyin, shortPinyin); + } + } + return String.valueOf(text.append(pinyin).append(shortPinyin)); + } + + /** + * 递归遍历tabbedPane + * @param component + * @param separator + * @param text + * @param pinyin + * @param shortPinyin + */ + private synchronized void getTabPaneTexts(JTabbedPane component, String separator, StringBuffer text, StringBuffer pinyin, StringBuffer shortPinyin) { + for (int i = 0; i < component.getTabCount(); i++) { + String title = component.getTitleAt(i); + handleSearchText(separator, text, pinyin, shortPinyin, title); + Component tabComponent = component.getComponentAt(i); + if (tabComponent instanceof JPanel) { + getComponentTexts((JPanel) tabComponent, separator, text, pinyin, shortPinyin); + } else if (tabComponent instanceof JTabbedPane) { + getTabPaneTexts((JTabbedPane) tabComponent, separator, text, pinyin, shortPinyin); + } + } + } + + /** + * 将text,pinyin,pinyin首字母拼接到一起 + * @param separator + * @param text + * @param pinyin + * @param shortPinyin + * @param title + */ + private void handleSearchText(String separator, StringBuffer text, StringBuffer pinyin, StringBuffer shortPinyin, String title) { + if (StringUtils.isBlank(title)) { + return; + } + text.append(title).append(separator); + pinyin.append(PinyinHelper.convertToPinyinString(title, "", PinyinFormat.WITHOUT_TONE)); + shortPinyin.append(PinyinHelper.getShortPinyin(title)).append(separator); + } + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/actions/file/PreferenceAction.java b/designer_base/src/com/fr/design/actions/file/PreferenceAction.java index 71c25837d..f9f222c1b 100644 --- a/designer_base/src/com/fr/design/actions/file/PreferenceAction.java +++ b/designer_base/src/com/fr/design/actions/file/PreferenceAction.java @@ -1,47 +1,49 @@ package com.fr.design.actions.file; -import java.awt.event.ActionEvent; - import com.fr.design.DesignerEnvManager; import com.fr.design.actions.UpdateAction; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.design.mainframe.JTemplate; import com.fr.design.menu.KeySetUtils; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.dialog.DialogActionAdapter; + +import java.awt.event.ActionEvent; public class PreferenceAction extends UpdateAction { - public PreferenceAction() { + public PreferenceAction() { this.setMenuKeySet(KeySetUtils.PREFERENCE); - this.setName(getMenuKeySet().getMenuKeySetName()+"..."); + this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - } + this.setSearchText(new PreferencePane()); + } /** * 动作 + * * @param e 事件 */ - public void actionPerformed(ActionEvent e) { - final DesignerFrame designerFrame = DesignerContext.getDesignerFrame(); - - final PreferencePane preferencePane = new PreferencePane(); - preferencePane.populate(DesignerEnvManager.getEnvManager()); - - BasicDialog basicDialog = preferencePane.showWindow(designerFrame); - basicDialog.addDialogActionListener(new DialogActionAdapter() { - public void doOk() { - preferencePane.update(DesignerEnvManager.getEnvManager()); - DesignerEnvManager.loadLogSetting(); - DesignerEnvManager.getEnvManager().saveXMLFile(); - JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - jt.refreshToolArea(); - preferencePane.showRestartDialog(); - } - }); - - basicDialog.setVisible(true); - } + public void actionPerformed(ActionEvent e) { + final DesignerFrame designerFrame = DesignerContext.getDesignerFrame(); + + final PreferencePane preferencePane = new PreferencePane(); + preferencePane.populate(DesignerEnvManager.getEnvManager()); + + BasicDialog basicDialog = preferencePane.showWindow(designerFrame); + basicDialog.addDialogActionListener(new DialogActionAdapter() { + public void doOk() { + preferencePane.update(DesignerEnvManager.getEnvManager()); + DesignerEnvManager.loadLogSetting(); + DesignerEnvManager.getEnvManager().saveXMLFile(); + JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + jt.refreshToolArea(); + preferencePane.showRestartDialog(); + } + }); + + basicDialog.setVisible(true); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/actions/help/AboutAction.java b/designer_base/src/com/fr/design/actions/help/AboutAction.java index 1c3c48d0e..b8bcd4f2c 100644 --- a/designer_base/src/com/fr/design/actions/help/AboutAction.java +++ b/designer_base/src/com/fr/design/actions/help/AboutAction.java @@ -47,4 +47,7 @@ public class AboutAction extends UpdateAction { return null; } }; + + + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineAction.java b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineAction.java index fdd6e060e..23cf7de75 100644 --- a/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineAction.java +++ b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineAction.java @@ -9,6 +9,7 @@ import com.fr.design.dialog.DialogActionListener; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.design.menu.MenuKeySet; +import com.fr.general.IOUtils; import javax.swing.*; import java.awt.event.ActionEvent; @@ -21,7 +22,8 @@ public class AlphafineAction extends UpdateAction { this.setMenuKeySet(ALPHAFINE); this.setName(getMenuKeySet().getMenuName()); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/mainframe/alphafine/images/smallsearch.png")); + this.setSmallIcon(IOUtils.readIcon("/com/fr/design/mainframe/alphafine/images/smallsearch.png")); + this.setSearchText(new AlphafineConfigPane()); } public static final MenuKeySet ALPHAFINE = new MenuKeySet() { diff --git a/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineConfigManager.java b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineConfigManager.java index eba6de79c..c119e09b9 100644 --- a/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineConfigManager.java +++ b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineConfigManager.java @@ -95,6 +95,7 @@ public class AlphafineConfigManager implements XMLable { public void readXML(XMLableReader reader) { if (reader.isAttr()) { this.setEnabled(reader.getAttrAsBoolean("isEnabled", true)); + this.setSearchOnLine(reader.getAttrAsBoolean("isSearchOnline", true)); this.setContainPlugin(reader.getAttrAsBoolean("isContainDocument", true)); this.setContainDocument(reader.getAttrAsBoolean("isContainDocument", true)); this.setContainRecommend(reader.getAttrAsBoolean("isContainRecommend", true)); diff --git a/designer_base/src/com/fr/design/actions/server/ConnectionListAction.java b/designer_base/src/com/fr/design/actions/server/ConnectionListAction.java index 68e605757..a91ab6af1 100644 --- a/designer_base/src/com/fr/design/actions/server/ConnectionListAction.java +++ b/designer_base/src/com/fr/design/actions/server/ConnectionListAction.java @@ -1,6 +1,5 @@ package com.fr.design.actions.server; -import com.fr.base.BaseUtils; import com.fr.base.Env; import com.fr.base.FRContext; import com.fr.base.ModifiedTable; @@ -9,6 +8,7 @@ import com.fr.dav.LocalEnv; import com.fr.design.actions.UpdateAction; import com.fr.design.data.datapane.connect.ConnectionManagerPane; import com.fr.design.data.datapane.connect.ConnectionShowPane; +import com.fr.design.data.datapane.connect.DatabaseConnectionPane; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.mainframe.DesignerContext; @@ -16,6 +16,7 @@ import com.fr.design.mainframe.DesignerFrame; import com.fr.design.menu.MenuKeySet; import com.fr.file.DatasourceManager; import com.fr.file.DatasourceManagerProvider; +import com.fr.general.IOUtils; import com.fr.general.Inter; import javax.swing.*; @@ -31,7 +32,8 @@ public class ConnectionListAction extends UpdateAction { this.setMenuKeySet(DEFINE_DATA_CONNECTION); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_web/connection.png")); + this.setSmallIcon(IOUtils.readIcon("/com/fr/design/images/m_web/connection.png")); + this.setSearchText(new DatabaseConnectionPane.JDBC()); } public static final MenuKeySet DEFINE_DATA_CONNECTION = new MenuKeySet() { diff --git a/designer_base/src/com/fr/design/actions/server/FunctionManagerAction.java b/designer_base/src/com/fr/design/actions/server/FunctionManagerAction.java index 664d44862..7467a00ea 100644 --- a/designer_base/src/com/fr/design/actions/server/FunctionManagerAction.java +++ b/designer_base/src/com/fr/design/actions/server/FunctionManagerAction.java @@ -14,6 +14,7 @@ import com.fr.design.mainframe.DesignerContext; import com.fr.design.menu.MenuKeySet; import com.fr.file.FunctionManager; import com.fr.file.FunctionManagerProvider; +import com.fr.general.IOUtils; import com.fr.general.Inter; import javax.swing.*; @@ -28,7 +29,8 @@ public class FunctionManagerAction extends UpdateAction { this.setMenuKeySet(FUNCTION_MANAGER); this.setName(getMenuKeySet().getMenuKeySetName()+"..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_web/function.png")); + this.setSmallIcon(IOUtils.readIcon("/com/fr/design/images/m_web/function.png")); + this.setSearchText(new FunctionManagerPane()); } /** diff --git a/designer_base/src/com/fr/design/gui/frpane/LoadingBasicPane.java b/designer_base/src/com/fr/design/gui/frpane/LoadingBasicPane.java index 32a211807..6a9e4fd8d 100644 --- a/designer_base/src/com/fr/design/gui/frpane/LoadingBasicPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/LoadingBasicPane.java @@ -3,19 +3,14 @@ */ package com.fr.design.gui.frpane; -import java.awt.BorderLayout; -import java.awt.CardLayout; - +import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ilable.UILabel; -import javax.swing.JPanel; -import javax.swing.JProgressBar; -import javax.swing.SwingConstants; -import javax.swing.SwingWorker; - import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.dialog.BasicPane; -import com.fr.general.Inter; import com.fr.design.utils.gui.LayoutUtils; +import com.fr.general.Inter; + +import javax.swing.*; +import java.awt.*; /** * @author richer @@ -46,6 +41,7 @@ public abstract class LoadingBasicPane extends BasicPane { }.execute(); } + private void initCards() { card = new CardLayout(); setLayout(card); @@ -74,6 +70,16 @@ public abstract class LoadingBasicPane extends BasicPane { } + /** + * 为了alphafine搜索使用,预加载面板控件,获取全部控件的信息 + * @return + */ + public JPanel getAllComponents() { + JPanel panel = new JPanel(); + initComponents(panel); + return panel; + } + /** * 完成时 */ diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index f80e20331..6a3079f9d 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -166,14 +166,13 @@ public abstract class ToolBarMenuDock { * @param menuDef */ private void addUpdateActionToList(MenuDef menuDef) { - - String ParentName = menuDef.getName(); if (menuDef instanceof OpenRecentReportMenuDef) { return; } + String parentName = menuDef.getName(); for (ShortCut shortCut : menuDef.getShortcutList()) { if (shortCut instanceof UpdateAction) { - shortCutsList.add(new UpdateActionModel(ParentName, (UpdateAction) shortCut)); + shortCutsList.add(new UpdateActionModel(parentName, (UpdateAction) shortCut)); } else if (shortCut instanceof MenuDef) { addUpdateActionToList((MenuDef) shortCut); } diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/UpdateActionModel.java b/designer_base/src/com/fr/design/mainframe/toolbar/UpdateActionModel.java index ad3db0348..4ded05f71 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/UpdateActionModel.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/UpdateActionModel.java @@ -1,6 +1,8 @@ package com.fr.design.mainframe.toolbar; import com.fr.design.actions.UpdateAction; +import com.fr.stable.pinyin.PinyinFormat; +import com.fr.stable.pinyin.PinyinHelper; /** * Created by XiaXiang on 2017/5/24. @@ -10,14 +12,35 @@ import com.fr.design.actions.UpdateAction; * action对象 */ public class UpdateActionModel { + private static final String SEPARATOR = "/"; private String parentName; private String actionName; + private String className; + private String searchKey; private UpdateAction action; public UpdateActionModel(String parentName, UpdateAction action) { this.parentName = parentName; this.action = action; this.actionName = action.getName(); + setSearchKey(parentName, action); + } + + /** + * 获取搜索关键字,包括上级菜单名,菜单名,以及对应打开面板的所有文字信息(使其能够支持模糊搜索) + * @param parentName + * @param action + */ + private void setSearchKey(String parentName, UpdateAction action) { + StringBuffer buffer = new StringBuffer(); + if (actionName == null) { + return; + } + buffer.append(parentName).append(SEPARATOR).append(PinyinHelper.convertToPinyinString(parentName, "", PinyinFormat.WITHOUT_TONE)) + .append(SEPARATOR).append(PinyinHelper.getShortPinyin(parentName)).append(SEPARATOR) + .append(actionName).append(SEPARATOR).append(PinyinHelper.convertToPinyinString(actionName, "", PinyinFormat.WITHOUT_TONE)) + .append(SEPARATOR).append(PinyinHelper.getShortPinyin(actionName)).append(action.getSearchText()); + this.searchKey = buffer.toString(); } /** @@ -55,4 +78,20 @@ public class UpdateActionModel { public void setActionName(String actionName) { this.actionName = actionName; } + + public String getSearchKey() { + return searchKey; + } + + public void setSearchKey(String searchKey) { + this.searchKey = searchKey; + } + + public String getClassName() { + return getAction().getClass().getName(); + } + + public void setClassName(String className) { + this.className = className; + } } diff --git a/designer_chart/src/com/fr/design/module/ChartPreStyleAction.java b/designer_chart/src/com/fr/design/module/ChartPreStyleAction.java index 36909565b..e93b271e2 100644 --- a/designer_chart/src/com/fr/design/module/ChartPreStyleAction.java +++ b/designer_chart/src/com/fr/design/module/ChartPreStyleAction.java @@ -9,6 +9,7 @@ import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.design.menu.MenuKeySet; +import com.fr.general.IOUtils; import com.fr.general.Inter; import javax.swing.*; @@ -25,7 +26,8 @@ public class ChartPreStyleAction extends UpdateAction { this.setMenuKeySet(CHART_DEFAULT_STYLE); this.setName(getMenuKeySet().getMenuKeySetName()+ "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon(BaseUtils.readIcon("com/fr/design/images/chart/ChartType.png")); + this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/chart/ChartType.png")); + this.setSearchText(new ChartPreStyleManagerPane()); } /**