From 835474ffb35d9155ff47d6f39f5f920e2d8dfbcc Mon Sep 17 00:00:00 2001 From: Starryi Date: Tue, 10 May 2022 15:53:09 +0800 Subject: [PATCH 1/5] =?UTF-8?q?REPORT-71158=20=E6=89=93=E5=BC=80fvs?= =?UTF-8?q?=EF=BC=8C=E4=BB=8E=E8=BF=9C=E7=A8=8B=E5=88=87=E6=8D=A2=E5=88=B0?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=EF=BC=8C=E8=AE=BE=E8=AE=A1=E5=99=A8=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=B1=95=E7=A4=BA=E7=A9=BA=E7=99=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 检测JTemplate类型,避免类型转换失败 【改动思路】 同上 【review建议】 --- .../main/java/com/fr/design/gui/xpane/LayoutBorderPane.java | 4 ++-- .../main/java/com/fr/design/gui/xpane/LayoutStylePane.java | 6 ++++-- .../widget/ui/designer/component/WidgetBoundPane.java | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/gui/xpane/LayoutBorderPane.java b/designer-form/src/main/java/com/fr/design/gui/xpane/LayoutBorderPane.java index cf460f9ce..7a00075d6 100644 --- a/designer-form/src/main/java/com/fr/design/gui/xpane/LayoutBorderPane.java +++ b/designer-form/src/main/java/com/fr/design/gui/xpane/LayoutBorderPane.java @@ -333,8 +333,8 @@ public class LayoutBorderPane extends BasicPane { JPanel rightPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); defaultPane.add(rightPane, BorderLayout.EAST); rightPane.add(initRightBottomPane(), BorderLayout.CENTER); - JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (!jTemplate.isJWorkBook() && ((JForm)jTemplate).isSelectRootPane()){ + JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (!jTemplate.isJWorkBook() && jTemplate instanceof JForm && ((JForm)jTemplate).isSelectRootPane()){ //界面上表单主体只有背景和透明度可以设置 rightPane.add(initBodyRightTopPane(), BorderLayout.NORTH); } else { diff --git a/designer-form/src/main/java/com/fr/design/gui/xpane/LayoutStylePane.java b/designer-form/src/main/java/com/fr/design/gui/xpane/LayoutStylePane.java index 4a034e9be..5cbddadb4 100644 --- a/designer-form/src/main/java/com/fr/design/gui/xpane/LayoutStylePane.java +++ b/designer-form/src/main/java/com/fr/design/gui/xpane/LayoutStylePane.java @@ -66,8 +66,10 @@ public class LayoutStylePane extends BasicBeanPane { this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - JTemplate currentEditingTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - boolean isRootLayout = currentEditingTemplate != null && !currentEditingTemplate.isJWorkBook() && ((JForm)currentEditingTemplate).isSelectRootPane(); + JTemplate currentEditingTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + boolean isRootLayout = currentEditingTemplate != null && + !currentEditingTemplate.isJWorkBook() && + currentEditingTemplate instanceof JForm && ((JForm)currentEditingTemplate).isSelectRootPane(); namedTitleStylePane = createNamedTitleStylePane(isRootLayout); namedBodyStylePane = createNamedBodyStylePane(isRootLayout); diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java index 85265fa6e..1c77bdaf1 100644 --- a/designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java @@ -76,8 +76,8 @@ public class WidgetBoundPane extends BasicPane { height.setEnabled(false); } - JTemplate jTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - if (jTemplate.isJWorkBook() || !((JForm)jTemplate).isSelectRootPane()) { + JTemplate jTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + if (jTemplate.isJWorkBook() || !((jTemplate instanceof JForm) && ((JForm)jTemplate).isSelectRootPane())) { ratioLockedButton = new AspectRatioLockedButton(width, height); ratioLockedButton.setGlobalName(i18nText("Fine-Design_Form_Coords_And_Size")); ratioLockedButton.setLockEnabled(false); From 26438dce0f9c108367b9303b5f79d78721ba15ee Mon Sep 17 00:00:00 2001 From: hades Date: Fri, 13 May 2022 13:56:05 +0800 Subject: [PATCH 2/5] =?UTF-8?q?REPORT-71402=20fvs=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=90=AB=E6=9C=89SQL=E7=9A=84=E5=85=AC=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E8=AE=A1=E7=AE=97=E6=97=B6=EF=BC=8C=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=E5=8D=A1=E6=AD=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/formula/FormulaPane.java | 3 +- .../ParameterInputNoneListenerPane.java | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 designer-base/src/main/java/com/fr/design/parameter/ParameterInputNoneListenerPane.java diff --git a/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java b/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java index ef321e708..2c5db9a31 100644 --- a/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java +++ b/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java @@ -38,6 +38,7 @@ import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; +import com.fr.design.parameter.ParameterInputNoneListenerPane; import com.fr.design.parameter.ParameterInputPane; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; @@ -964,7 +965,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula { if (parameters.length < 1 && editor4CalPane.update().size() < 1) { return parameterMap; } - ParameterInputPane pPane = new ParameterInputPane(parameters); + ParameterInputPane pPane = new ParameterInputNoneListenerPane(parameters); pPane.showSmallWindow(new JFrame(), new DialogActionAdapter() { @Override public void doOk() { diff --git a/designer-base/src/main/java/com/fr/design/parameter/ParameterInputNoneListenerPane.java b/designer-base/src/main/java/com/fr/design/parameter/ParameterInputNoneListenerPane.java new file mode 100644 index 000000000..2484a4b20 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/parameter/ParameterInputNoneListenerPane.java @@ -0,0 +1,30 @@ +package com.fr.design.parameter; + +import com.fr.design.editor.ValueEditorPane; +import com.fr.stable.ParameterProvider; + +/** + * 与ParameterInputPane区别在于 输入参数不会触发模板修改事件 + * + * 适用于参数不需要存储在模板中的场景 + * + * @author hades + * @version 11.0 + * Created by hades on 2022/5/13 + */ +public class ParameterInputNoneListenerPane extends ParameterInputPane { + + public ParameterInputNoneListenerPane(ParameterProvider[] parameters) { + super(parameters); + } + + public ParameterInputNoneListenerPane(ParameterProvider[] parameters, boolean allowBlank) { + super(parameters, allowBlank); + } + + @Override + protected void initTextListener(ValueEditorPane textF) { + // 这边输入参数 不用联动模板变化激活保存按钮 相关参数并不存储在模板 + // do nothing + } +} From ae11f9bba2e1fda1c12524e20a05c6cea3138766 Mon Sep 17 00:00:00 2001 From: hades Date: Fri, 13 May 2022 19:56:16 +0800 Subject: [PATCH 3/5] =?UTF-8?q?REPORT-70888=20=E3=80=90=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E3=80=91=E5=A4=A7=E5=B1=8F=E7=BC=96=E8=BE=91=E5=99=A8?= =?UTF-8?q?-=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=90=AF=E5=8A=A8=E6=97=B6?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=89=93=E5=BC=80=E7=9A=84fvs=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E4=BC=9A=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/start/module/DesignerStartup.java | 4 ++++ .../module/optimized/TenantDBAdapter4Designer.java | 13 +++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java b/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java index da8b559e8..4149753f7 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java @@ -124,6 +124,10 @@ public class DesignerStartup extends Activator { listenEvent(LazyStartupEvent.INSTANCE, new Listener(Integer.MIN_VALUE) { @Override public void on(Event event, Null param) { + // 有可能被插件之类的 强制启动了 判断下 + if (FineEmbedServer.isRunning()) { + return; + } startEmbeddedServer(); } }); diff --git a/designer-realize/src/main/java/com/fr/start/module/optimized/TenantDBAdapter4Designer.java b/designer-realize/src/main/java/com/fr/start/module/optimized/TenantDBAdapter4Designer.java index d45913e1a..ad2485d69 100644 --- a/designer-realize/src/main/java/com/fr/start/module/optimized/TenantDBAdapter4Designer.java +++ b/designer-realize/src/main/java/com/fr/start/module/optimized/TenantDBAdapter4Designer.java @@ -9,6 +9,7 @@ import com.fr.event.Null; import com.fr.exit.ConfigToPropMigrator; import com.fr.stable.db.tenant.TenantDBAdapter; import com.fr.start.event.LazyStartupEvent; +import com.fr.start.server.EmbedServerEvent; /** * @author hades @@ -24,7 +25,15 @@ public class TenantDBAdapter4Designer extends TenantDBAdapter { @Override public void on(Event event, Null param) { TenantDBAdapter4Designer.super.start(); - afterStart(); + } + }); + + listenEvent(EmbedServerEvent.BeforeStart, new Listener() { + @Override + public void on(Event event, Null param) { + if (DaoSelectorFactory.getDaoSelector().useCacheDao()) { + beforeEmbedServerStart(); + } } }); @@ -33,7 +42,7 @@ public class TenantDBAdapter4Designer extends TenantDBAdapter { } } - private void afterStart() { + private void beforeEmbedServerStart() { DesignerEnvManager.getEnvManager().setPropertiesUsable(false); DaoSwitcher.executeSwitch(); ConfigToPropMigrator.getInstance().deletePropertiesCache(); From 058de914e2de59400a71ed68faa7dc777371754a Mon Sep 17 00:00:00 2001 From: hades Date: Fri, 13 May 2022 19:58:06 +0800 Subject: [PATCH 4/5] =?UTF-8?q?REPORT-70681=20=E8=B6=85=E9=95=BF=E6=96=87?= =?UTF-8?q?=E6=9C=AC=E6=90=9C=E7=B4=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/AlphaFineConstants.java | 11 ++++ .../alphafine/component/AlphaFineFrame.java | 65 ++++++++++++++----- .../manager/impl/ActionSearchManager.java | 9 ++- .../manager/impl/DocumentSearchManager.java | 11 ++++ 4 files changed, 79 insertions(+), 17 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineConstants.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineConstants.java index f4440fb5c..9ceec2a2f 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineConstants.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineConstants.java @@ -48,6 +48,17 @@ public class AlphaFineConstants { public static final int HOT_ITEMS = 6; + /** + * 限制搜索字符长度 + */ + public static final int LEN_LIMIT = 50; + + /** + * 帮助文档搜索间隔(ms) api限制了1s之内只能搜索一次 + * + */ + public static final long DOCUMENT_SEARCH_GAP = 1000; + public static final Dimension FULL_SIZE = new Dimension(680, 460); 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 b6763f8cf..db89cf348 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 @@ -146,6 +146,8 @@ public class AlphaFineFrame extends JFrame { private UILabel clearLabel; + private JPanel tabPane; + private CellType selectedType; private String beforeSearchStr = StringUtils.EMPTY; @@ -365,7 +367,7 @@ public class AlphaFineFrame extends JFrame { labelPane.add(labelContentPane); labelPane.setPreferredSize(new Dimension(AlphaFineConstants.FULL_SIZE.width, 30)); - JPanel tabPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 20, 10)); + tabPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 20, 10)); tabPane.setBackground(Color.WHITE); List selectedLabelList = createSelectedLabelList(); selectedType = selectedLabelList.get(0).getCellType(); @@ -624,6 +626,7 @@ public class AlphaFineFrame extends JFrame { clearLabel.setVisible(true); SearchTooltipPopup.getInstance().show(searchTextFieldWrapperPane); } + tabPane.repaint(); }); timer.start(); @@ -644,28 +647,58 @@ public class AlphaFineFrame extends JFrame { beforeSearchStr = StringUtils.EMPTY; return; } + String lowerCaseSearchText = preProcessSearchText(searchTextField.getText().toLowerCase()); if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isNeedSegmentationCheckbox()) { - //是高级搜索 - if (searchTextField.getText().toLowerCase().startsWith(ADVANCED_SEARCH_MARK)) { - segmentationResult = SegmentationManager.getInstance().startSegmentation(getStoreText(searchTextField.getText().toLowerCase())); - } - //是普通搜索 - else { - segmentationResult = SegmentationManager.getInstance().startSegmentation(searchTextField.getText().toLowerCase()); - } + dealSegmentationSearch(lowerCaseSearchText); } else { - if (StringUtils.isEmpty(getRealSearchText(searchTextField.getText()))) { - segmentationResult = null; - } else { - segmentationResult = new String[]{getRealSearchText(searchTextField.getText())}; - } + dealNormalSearch(); } DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().getHistorySearch().push(searchTextField.getText()); - doSearch(searchTextField.getText().toLowerCase()); + doSearch(lowerCaseSearchText); beforeSearchStr = searchTextField.getText(); SearchTooltipPopup.getInstance().hide(); } + /** + * 普通搜索 + */ + private void dealNormalSearch() { + String searchText = preProcessSearchText(searchTextField.getText()); + if (StringUtils.isEmpty(getRealSearchText(searchText))) { + segmentationResult = null; + } else { + segmentationResult = new String[]{getRealSearchText(searchText)}; + } + } + + /** + * 分词搜索 + */ + private void dealSegmentationSearch(String lowerCaseSearchText) { + //是高级搜索 + if (searchTextField.getText().toLowerCase().startsWith(ADVANCED_SEARCH_MARK)) { + segmentationResult = SegmentationManager.getInstance().startSegmentation(getStoreText(lowerCaseSearchText)); + } + //是普通搜索 + else { + segmentationResult = SegmentationManager.getInstance().startSegmentation(lowerCaseSearchText); + } + } + + /** + * 文本预处理 限制长度 + * + * @param text + * @return + */ + private String preProcessSearchText(String text) { + if (text.length() > AlphaFineConstants.LEN_LIMIT) { + return text.substring(0, AlphaFineConstants.LEN_LIMIT); + } else { + return text; + } + } + private void dealWithSearchResult() { final AlphaCellModel model = searchResultList.getSelectedValue(); if (model != null) { @@ -717,7 +750,7 @@ public class AlphaFineFrame extends JFrame { * */ private void reSearch() { - String text = this.searchTextField.getText().toLowerCase(); + String text = preProcessSearchText(this.searchTextField.getText().toLowerCase()); if (StringUtils.isEmpty(text)) { return; } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java index a2a1a7037..54d6d1402 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java @@ -17,7 +17,9 @@ import com.fr.json.JSONObject; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Created by XiaXiang on 2017/3/27. @@ -68,12 +70,17 @@ public class ActionSearchManager implements AlphaFineSearchProvider { return lessModelList; } List updateActions = UpdateActionManager.getUpdateActionManager().getUpdateActions(); + Set searchKeySet = new HashSet<>(); for (UpdateActionModel updateActionModel : updateActions) { for (int j = 0; j < searchText.length; j++) { AlphaFineHelper.checkCancel(); if (StringUtils.isNotBlank(updateActionModel.getSearchKey())) { - if (updateActionModel.getSearchKey().contains(searchText[j]) && updateActionModel.getAction().isEnabled()) { + if (updateActionModel.getSearchKey().contains(searchText[j]) + && updateActionModel.getAction().isEnabled() + // 老alphaFine就有问题 加个去重 + && !searchKeySet.contains(updateActionModel.getSearchKey())) { filterModelList.add(new ActionModel(updateActionModel.getActionName(), updateActionModel.getParentName(), updateActionModel.getAction())); + searchKeySet.add(updateActionModel.getSearchKey()); } } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java index bc3b214d0..3ea1f2db2 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java @@ -15,6 +15,7 @@ import com.fr.json.JSONException; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; +import java.util.concurrent.TimeUnit; /** @@ -67,6 +68,7 @@ public class DocumentSearchManager implements AlphaFineSearchProvider { } searchResult = new SearchResult(); for (int j = 0; j < searchText.length; j++) { + long start = System.currentTimeMillis(); String url = AlphaFineConstants.DOCUMENT_SEARCH_URL + searchText[j]; try { String result = HttpToolbox.get(url); @@ -88,6 +90,15 @@ public class DocumentSearchManager implements AlphaFineSearchProvider { } catch (Exception e) { FineLoggerFactory.getLogger().error("document search error: " + e.getMessage()); } + // 计算等待时间 防止1s内搜索多次 + long spentTime = (System.currentTimeMillis() - start); + long waitTime = AlphaFineConstants.DOCUMENT_SEARCH_GAP - spentTime; + if (waitTime > 0 && j != searchText.length - 1) { + try { + TimeUnit.MILLISECONDS.sleep(waitTime); + } catch (Exception ignored) { + } + } } lessModelList.clear(); moreModelList.clear(); From 8c3eb1758fd3d31e150b9762dda7ee681ef54c8a Mon Sep 17 00:00:00 2001 From: WeiYanglu Date: Fri, 13 May 2022 23:47:12 +0800 Subject: [PATCH 5/5] =?UTF-8?q?REPORT-71563=20FVS=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=9D=97=E4=B8=8D=E9=9C=80=E8=A6=81=E6=94=AF=E6=8C=81=E6=8F=92?= =?UTF-8?q?=E5=85=A5=E6=82=AC=E6=B5=AE=E5=85=83=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/mainframe/EastRegionContainerPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java index 43097e366..d640f84f4 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java @@ -287,7 +287,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer { // 悬浮元素 PropertyItem floatElement = new PropertyItem(KEY_FLOAT_ELEMENT, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Float_Element"), "floatelement", new PropertyMode[]{PropertyMode.REPORT, PropertyMode.REPORT_PARA, PropertyMode.REPORT_PARA_WIDGET, PropertyMode.REPORT_FLOAT, PropertyMode.POLY, PropertyMode.POLY_CHART}, - new PropertyMode[]{PropertyMode.REPORT, PropertyMode.REPORT_FLOAT, PropertyMode.POLY_REPORT, PropertyMode.DUCHAMP_REPORT}); + new PropertyMode[]{PropertyMode.REPORT, PropertyMode.REPORT_FLOAT, PropertyMode.POLY_REPORT}); // 控件设置 PropertyItem widgetSettings = new PropertyItem(KEY_WIDGET_SETTINGS, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Component_Settings"), "widgetsettings", new PropertyMode[]{PropertyMode.REPORT, PropertyMode.REPORT_PARA, PropertyMode.REPORT_PARA_WIDGET, PropertyMode.REPORT_FLOAT, PropertyMode.FORM, PropertyMode.POLY},