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 8da604ab13..8cc5786833 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 @@ -15,15 +15,12 @@ import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.json.JSONObject; -import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; import java.io.BufferedReader; import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; @@ -40,6 +37,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { private SearchResult filterModelList; private SearchResult lessModelList; private SearchResult moreModelList; + private String searchText; private List fileNodes = null; //停止搜索 private boolean stopSearch = false; @@ -75,8 +73,8 @@ public class FileSearchManager implements AlphaFineSearchProvider { this.filterModelList = new SearchResult(); this.lessModelList = new SearchResult(); this.moreModelList = new SearchResult(); - searchText = dealWithSearchText(searchText); - if (StringUtils.isBlank(searchText) || ComparatorUtils.equals(searchText, DS_NAME)) { + this.searchText = dealWithSearchText(searchText); + if (StringUtils.isBlank(this.searchText) || ComparatorUtils.equals(this.searchText, DS_NAME)) { lessModelList.add(new MoreModel(Inter.getLocText("FR-Designer_Templates"))); return lessModelList; } @@ -86,7 +84,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { AlphaFineHelper.checkCancel(); isContainCpt = true; isContainFrm = true; - doSearch(searchText, true, env); + doSearch(this.searchText, true, env); if (stopSearch) { lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Templates"), Inter.getLocText("FR-Designer_AlphaFine_ShowAll"), true, CellType.FILE)); lessModelList.addAll(filterModelList.subList(0, AlphaFineConstants.SHOW_SIZE)); @@ -107,14 +105,12 @@ public class FileSearchManager implements AlphaFineSearchProvider { 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); + doSearch(this.searchText, false, env); moreModelList.addAll(filterModelList.subList(AlphaFineConstants.SHOW_SIZE, filterModelList.size())); return moreModelList; } @@ -122,10 +118,13 @@ public class FileSearchManager implements AlphaFineSearchProvider { private void doSearch(String searchText, boolean needMore, Env env) { for (FileNode node : fileNodes) { boolean isAlreadyContain = false; - String fileEnvPath = node.getEnvPath(); - String filePath = StableUtils.pathJoin(env.getPath(), fileEnvPath); isAlreadyContain = searchFile(searchText, node, isAlreadyContain, needMore); - searchFileContent(searchText, node, isAlreadyContain, filePath, needMore); + if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainFileContent() && node.getLock() == null) { + searchFileContent(env, searchText, node, isAlreadyContain, needMore); + } + if (filterModelList.size() > AlphaFineConstants.SHOW_SIZE && stopSearch) { + return; + } } } @@ -147,40 +146,36 @@ public class FileSearchManager implements AlphaFineSearchProvider { * @param searchText * @param node * @param isAlreadyContain - * @param filePath */ - private void searchFileContent(String searchText, FileNode node, boolean isAlreadyContain, String filePath, boolean needMore) { - if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainFileContent()) { - - try { - InputStreamReader isr = new InputStreamReader(new FileInputStream(new File(filePath)), "UTF-8"); - BufferedReader reader = new BufferedReader(isr); - String line; - int columnNumber; - boolean isFoundInContent = false; - while ((line = reader.readLine()) != null) { - columnNumber = line.toLowerCase().indexOf(searchText); - if (columnNumber != -1) { - isFoundInContent = true; - break; - } + private void searchFileContent(Env env, String searchText, FileNode node, boolean isAlreadyContain, boolean needMore) { + try { + InputStream inputStream = env.readBean(node.getEnvPath().substring(ProjectConstants.REPORTLETS_NAME.length() + 1), ProjectConstants.REPORTLETS_NAME); + InputStreamReader isr = new InputStreamReader(inputStream, "UTF-8"); + BufferedReader reader = new BufferedReader(isr); + String line; + int columnNumber; + boolean isFoundInContent = false; + while ((line = reader.readLine()) != null) { + columnNumber = line.toLowerCase().indexOf(searchText); + if (columnNumber != -1) { + isFoundInContent = true; + break; } - if (isFoundInContent && !isAlreadyContain) { - FileModel model = new FileModel(node.getName(), node.getEnvPath()); - if (!AlphaFineHelper.getFilterResult().contains(model)) { - filterModelList.add(model); - } - if (this.filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) { - stopSearch = true; - } + } + if (isFoundInContent && !isAlreadyContain) { + FileModel model = new FileModel(node.getName(), node.getEnvPath()); + if (!AlphaFineHelper.getFilterResult().contains(model)) { + AlphaFineHelper.checkCancel(); + filterModelList.add(model); + } + if (this.filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) { + stopSearch = true; } - isr.close(); - reader.close(); - } catch (FileNotFoundException e) { - FRLogger.getLogger().error(e.getMessage()); - } catch (IOException e) { - FRLogger.getLogger().error(e.getMessage()); } + isr.close(); + reader.close(); + } catch (Exception e) { + FRLogger.getLogger().error("file read error: " + e.getMessage()); } } @@ -197,9 +192,10 @@ public class FileSearchManager implements AlphaFineSearchProvider { if (node.getName().toLowerCase().contains(searchText)) { FileModel model = new FileModel(node.getName(), node.getEnvPath()); if (!AlphaFineHelper.getFilterResult().contains(model)) { + AlphaFineHelper.checkCancel(); filterModelList.add(model); } - if(filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) { + if (filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) { stopSearch = true; } isAlreadyContain = true; @@ -286,4 +282,12 @@ public class FileSearchManager implements AlphaFineSearchProvider { public void setMoreModelList(SearchResult moreModelList) { this.moreModelList = moreModelList; } + + public String getSearchText() { + return searchText; + } + + public void setSearchText(String searchText) { + this.searchText = searchText; + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/actions/file/WebPreviewUtils.java b/designer_base/src/com/fr/design/actions/file/WebPreviewUtils.java index f682f7ddf1..2f62fad5a4 100644 --- a/designer_base/src/com/fr/design/actions/file/WebPreviewUtils.java +++ b/designer_base/src/com/fr/design/actions/file/WebPreviewUtils.java @@ -34,15 +34,17 @@ public final class WebPreviewUtils { if (map == null || map == Collections.EMPTY_MAP) { map = new HashMap<>(); } - map.put("mode", DesignerMode.getMode().toString()); + if (DesignerMode.isVcsMode()) { + map.put("mode", DesignerMode.getMode().toString()); + } DesignerContext.getDesignerFrame().refreshToolbar(); jt.stopEditing(); /* * alex:如果没有保存,先保存到Env - * - * 如果保存失败,不执行下面的WebPreview - */ + * + * 如果保存失败,不执行下面的WebPreview + */ if (!jt.isSaved() && !jt.saveTemplate2Env()) { return; } @@ -98,4 +100,4 @@ public final class WebPreviewUtils { } } } -} \ No newline at end of file +} diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java index 7ebc872025..6cbc3c7650 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java @@ -3,8 +3,6 @@ package com.fr.design.designer.beans.adapters.layout; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; - -import com.fr.design.designer.creator.cardlayout.XWCardTagLayout; import com.fr.general.ComparatorUtils; import com.fr.design.designer.beans.ConstraintsGroupModel; import com.fr.design.designer.beans.HoverPainter; @@ -36,9 +34,6 @@ public class FRBorderLayoutAdapter extends AbstractLayoutAdapter { * @param creator 组件 */ public void fix(XCreator creator) { - if(creator.acceptType(XWCardTagLayout.class)){ - creator = (XCreator) creator.getParent(); - } FRBorderLayout layout = (FRBorderLayout)container.getFRLayout(); Object constraints = layout.getConstraints(creator); if (ComparatorUtils.equals(constraints, BorderLayout.NORTH)) { diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRCardMainBorderLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRCardMainBorderLayoutAdapter.java new file mode 100644 index 0000000000..4b17ffaedb --- /dev/null +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRCardMainBorderLayoutAdapter.java @@ -0,0 +1,62 @@ +package com.fr.design.designer.beans.adapters.layout; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.cardlayout.XWCardTagLayout; +import com.fr.design.form.layout.FRBorderLayout; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; + +import javax.swing.JOptionPane; +import java.awt.BorderLayout; +import java.awt.Rectangle; + +/** + * cardMainBorderLayout适配器 + * + * @author kerry + * @date 2019/1/4 + */ +public class FRCardMainBorderLayoutAdapter extends FRBorderLayoutAdapter { + + public FRCardMainBorderLayoutAdapter(XLayoutContainer container) { + super(container); + } + + /** + * CardMainBorderLayout的title部分不能超出layout边界 + * + * @param creator 组件 + */ + @Override + public void fix(XCreator creator) { + if (creator.acceptType(XWCardTagLayout.class)) { + creator = (XCreator) creator.getParent(); + } + boolean beyondBounds = calculateBeyondBounds(creator); + if (!beyondBounds) { + super.fix(creator); + } + } + + private boolean calculateBeyondBounds(XCreator creator) { + FRBorderLayout layout = (FRBorderLayout) container.getFRLayout(); + Object constraints = layout.getConstraints(creator); + Rectangle rectangle = creator.getBounds(); + //不能超出控件边界 + if (ComparatorUtils.equals(constraints, BorderLayout.NORTH) || ComparatorUtils.equals(constraints, BorderLayout.SOUTH)) { + int containerHeight = container.getHeight(); + if (rectangle.height > containerHeight) { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Beyond_Tablayout_Bounds")); + return true; + } + } else if (ComparatorUtils.equals(constraints, BorderLayout.EAST) || ComparatorUtils.equals(constraints, BorderLayout.WEST)) { + int containerWidth = container.getWidth(); + if (rectangle.width > containerWidth) { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Beyond_Tablayout_Bounds")); + return true; + } + } + return false; + } +} diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java index 828c7f6c8b..6915ca0121 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java @@ -5,6 +5,8 @@ package com.fr.design.designer.creator.cardlayout; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; +import com.fr.design.designer.beans.LayoutAdapter; +import com.fr.design.designer.beans.adapters.layout.FRCardMainBorderLayoutAdapter; import com.fr.design.designer.beans.models.SelectionModel; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; @@ -366,4 +368,9 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ this.addCardPart((XWCardLayout)this.getComponent(0)); } + @Override + public LayoutAdapter getLayoutAdapter() { + return new FRCardMainBorderLayoutAdapter(this); + } + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java index 7a8ed5440e..8f71b08be7 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java @@ -19,7 +19,6 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; -import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.form.ui.CardSwitchButton; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WCardLayout; @@ -378,13 +377,6 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { XCardSwitchButton temp = (XCardSwitchButton) this.getComponent(i); setTabBtnSize(cardWidth, cardHeight, temp); } - - FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); - LayoutAdapter layoutAdapter = AdapterBus.searchLayoutAdapter(formDesigner, parent); - if (layoutAdapter != null) { - parent.setBackupBound(parent.getBounds()); - layoutAdapter.fix(parent); - } } public void setTabBtnSize(int cardWidth, int cardHeight, XCardSwitchButton temp){ @@ -427,12 +419,6 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { setTabBtnSize(cardWidth, cardHeight, temp); } - FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); - LayoutAdapter layoutAdapter = AdapterBus.searchLayoutAdapter(formDesigner, parent); - if (layoutAdapter != null) { - parent.setBackupBound(parent.getBounds()); - layoutAdapter.fix(parent); - } } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java index ecdf55e84b..7f80f94870 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java @@ -456,12 +456,28 @@ public class XWTabFitLayout extends XWFitLayout { @Override public Component getParentShow(){ XCardSwitchButton cardSwitchButton = this.getxCardSwitchButton(); + if(cardSwitchButton == null){ + initRelateSwitchButton(); + } //控件树上显示其taglayout层 if ((cardSwitchButton != null)) { return cardSwitchButton.getTagLayout(); } return super.getParentShow(); } + + public void initRelateSwitchButton(){ + //先确定此tabFitLayout所处位置 + XLayoutContainer parentContainer = this.getBackupParent(); + int index = parentContainer.getIndexOfChild(this); + XWCardMainBorderLayout cardMainBorderLayout = (XWCardMainBorderLayout) this.getTopLayout(); + XWCardTitleLayout titleLayout = cardMainBorderLayout.getTitlePart(); + XWCardTagLayout tagLayout = titleLayout.getTagPart(); + XCreator xCreator = tagLayout.getXCreator(index); + if(xCreator != null){ + this.setxCardSwitchButton((XCardSwitchButton)xCreator); + } + } /** * 去除原有的间隔 @@ -607,5 +623,4 @@ public class XWTabFitLayout extends XWFitLayout { xCardSwitchButton.setPreferredSize(new Dimension(width, xCardSwitchButton.getHeight())); } - } \ No newline at end of file