Browse Source

Merge pull request #14019 in DESIGN/design from release/11.0 to final/11.0

* commit '1be2e2a22161bdaefc9f4bcf4bc91ee559692785':
  REPORT-115178 fix:模板主题管理显示被截断
  REPORT-119406 fix:设计器数据脱敏国际化显示不全,影响使用
  REPORT-116546 编辑图片控件之后,cpt模板切换到frm卡住 【问题原因】图片控件的listener没有eventName,会产生NPE,导致UI卡顿 【改动思路】判断eventName是否为空
  REPORT-114938 fix:其他语言下,frm按钮移动端设置显示不全
  REPORT-116316【MT】数据连接丢失【样板客户】
  REPORT-120151 feat: 添加 forkId 和相关埋点
  REPORT-119601 fix:创建新模板按钮显示不全
  REPORT-119567 fix:设计器地图图表默认显示与其他不一致
  REPORT-119405 解决打包问题
  REPORT-119405 fix:设计器数据脱敏国际化显示问题
  修改方法名称
  修改方法名称
  REPORT-118163 获取到了数据集sql语句中注释的参数
  REPORT-118629 FRM并行计算偶发埋点记录失败
  INO-19848 fix:英文的翻譯會令客戶誤會
  无jira任务,修复单测
  REPORT-115482 fix: 客户模板中报表块单元格插入图片,预览报错,编辑卡死
  KERNEL-17437 数据源代码移动到独立仓库
final/11.0
superman 6 months ago
parent
commit
fe15d9160b
  1. 3
      build.gradle
  2. 1
      designer-base/src/main/java/com/fr/design/data/datapane/ChoosePane.java
  3. 14
      designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java
  4. 35
      designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleEditPane.java
  5. 2
      designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java
  6. 3
      designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java
  7. 16
      designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java
  8. 3
      designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleDefinePane.java
  9. 3
      designer-base/src/main/java/com/fr/design/mainframe/mobile/utils/DesignerUtils.java
  10. 9
      designer-base/src/main/java/com/fr/design/record/analyzer/advice/MonitorAdvice.java
  11. 12
      designer-base/src/main/java/com/fr/design/style/background/image/ImagePreviewPane.java
  12. 2
      designer-base/src/main/java/com/fr/design/utils/DesignUtils.java
  13. 2
      designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties
  14. 2
      designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties
  15. 4
      designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties
  16. 2
      designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties
  17. 2
      designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties
  18. 2
      designer-base/src/test/java/com/fr/design/EnvChangeEntranceTest.java
  19. 2
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java
  20. 4
      designer-chart/src/main/java/com/fr/van/chart/map/designer/type/MapStatusPane.java
  21. 2
      designer-chart/src/main/java/com/fr/van/chart/map/designer/type/VanChartMapSourceChoosePane.java
  22. 2
      designer-form/src/main/java/com/fr/design/widget/ui/designer/ComboBoxDefinePane.java

3
build.gradle

@ -79,7 +79,8 @@ allprojects {
implementation 'com.fr.third:fine-third:' + frVersion
implementation 'com.fr.core:fine-core:' + frDevVersion
implementation 'com.fr.activator:fine-activator:' + frVersion
implementation 'com.fr.datasource:fine-datasource:' + frVersion
implementation 'com.fr.datasource:fine-datasource-api:4.1-SNAPSHOT'
implementation 'com.fr.datasource:fine-datasource-core:4.1-SNAPSHOT'
implementation 'com.fr.decision:fine-decision:' + frVersion
implementation 'com.fr.schedule:fine-schedule:' + frVersion
implementation 'com.fr.report:engine-report:' + frDevVersion

1
designer-base/src/main/java/com/fr/design/data/datapane/ChoosePane.java

@ -355,7 +355,6 @@ public class ChoosePane extends BasicBeanPane<DataBaseItems> implements Refresha
*/
@Override
public void refresh() {
DBUtils.refreshDatabase();
String schema = StringUtils.isEmpty(schemaBox.getSelectedItem()) ? null : schemaBox.getSelectedItem();
DataCoreUtils.refreshTables(getConnection(), TableProcedure.TABLE, schema);
FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Refresh_Successfully") + "!", com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Refresh_Database"),

14
designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java

@ -18,9 +18,13 @@ import com.fr.stable.StringUtils;
import com.fr.stable.collections.CollectionUtils;
import javax.swing.AbstractCellEditor;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import java.awt.CardLayout;
@ -132,6 +136,16 @@ public class DesensitizationRuleChoosePane extends JPanel {
this.setDefaultRenderer(DesensitizationRuleStatusPane.class, new DesensitizationRuleStatusPane());
this.createTable().getColumnModel().getColumn(0).setMaxWidth(20);
this.createTable().getColumnModel().getColumn(3).setMaxWidth(60);
this.createTable().getColumnModel().getColumn(3).setHeaderRenderer(new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JLabel headerLabel = new JLabel(value != null ? value.toString() : "");
headerLabel.setToolTipText((String) value);
headerLabel.setHorizontalAlignment(SwingConstants.CENTER);
headerLabel.setBorder(BorderFactory.createMatteBorder(0, 0, 3, 0, new Color(216, 216, 216, 175)));
return headerLabel;
}
});
}
@Override

35
designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleEditPane.java

@ -1,5 +1,7 @@
package com.fr.design.data.datapane.preview.desensitization.view.rule;
import com.fine.swing.ui.layout.Column;
import com.fine.swing.ui.layout.Layouts;
import com.fr.data.desensitize.rule.base.DesensitizationCondition;
import com.fr.data.desensitize.rule.base.DesensitizationRule;
import com.fr.data.desensitize.rule.base.DesensitizationRuleSource;
@ -28,6 +30,10 @@ import java.awt.event.FocusListener;
import java.util.Arrays;
import java.util.Set;
import static com.fine.swing.ui.layout.Layouts.cell;
import static com.fine.swing.ui.layout.Layouts.column;
import static com.fine.swing.ui.layout.Layouts.row;
/**
* 脱敏规则编辑页
*
@ -157,26 +163,29 @@ public class DesensitizationRuleEditPane extends BasicBeanPane<DesensitizationRu
JPanel panel = FRGUIPaneFactory.createBorderLayout_S_Pane();
cardLayout = new CardLayout();
ruleConditionPane = new JPanel(cardLayout);
// 字符替换
JPanel characterReplacePane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane();
UILabel retainFrontLabel = new UILabel(Toolkit.i18nText("Fine-Design_Report_Desensitization_Part_One") + StringUtils.BLANK);
retainFrontTextField = new UINumberField(5);
retainFrontTextField.addFocusListener(retainFrontListener);
UILabel retainBackLabel = new UILabel(StringUtils.BLANK + Toolkit.i18nText("Fine-Design_Report_Desensitization_Part_Two") + StringUtils.BLANK);
retainBackTextField = new UINumberField(5);
retainBackTextField.addFocusListener(retainBackListener);
UILabel replaceLabel = new UILabel(StringUtils.BLANK + Toolkit.i18nText("Fine-Design_Report_Desensitization_Part_Three") + StringUtils.BLANK);
firstSymbolTextField = new UITextField(10);
firstSymbolTextField.addFocusListener(firstSymbolListener);
characterReplacePane.add(retainFrontLabel);
characterReplacePane.add(retainFrontTextField);
characterReplacePane.add(retainBackLabel);
characterReplacePane.add(retainBackTextField);
characterReplacePane.add(replaceLabel);
characterReplacePane.add(firstSymbolTextField);
// 字符替换
Layouts.Cell<Column> column = column(
4,
row(
cell(new UILabel(Toolkit.i18nText("Fine-Design_Report_Desensitization_Part_One") + StringUtils.BLANK)),
cell(retainFrontTextField),
cell(new UILabel(StringUtils.BLANK + Toolkit.i18nText("Fine-Design_Report_Desensitization_Part_Two") + StringUtils.BLANK)),
cell(retainBackTextField),
cell(new UILabel(StringUtils.BLANK + Toolkit.i18nText("Fine-Design_Report_Desensitization_Part_Four") + StringUtils.BLANK))
),
row(
cell(new UILabel(Toolkit.i18nText("Fine-Design_Report_Desensitization_Part_Three") + StringUtils.BLANK)),
cell(firstSymbolTextField)
)
);
// 整体替换
JPanel characterAllReplacePane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane();
UILabel allReplaceLabel = new UILabel(Toolkit.i18nText("Fine-Design_Report_Desensitization_All_Character_Replace_By") + StringUtils.BLANK);
@ -186,7 +195,7 @@ public class DesensitizationRuleEditPane extends BasicBeanPane<DesensitizationRu
characterAllReplacePane.add(allReplaceLabel);
characterAllReplacePane.add(secondSymbolTextField);
ruleConditionPane.add(characterReplacePane, DesensitizationRuleType.CHARACTER_REPLACE.getRuleTypeName());
ruleConditionPane.add(column.getComponent(), DesensitizationRuleType.CHARACTER_REPLACE.getRuleTypeName());
ruleConditionPane.add(characterAllReplacePane, DesensitizationRuleType.ALL_CHARACTERS_REPLACE.getRuleTypeName());
// 初始化状态为字符替换
switchRuleConditionPane(DesensitizationRuleType.CHARACTER_REPLACE);

2
designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java

@ -251,7 +251,7 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener {
private static Parameter[] processParameters(DBTableData tableData, Calculator calculator) {
ParameterProvider[] parameters = tableData.getParameters();
if (parameters == null || parameters.length == 0) {
tableData.setParameters(ParameterHelper.analyze4Parameters(tableData.getQuery(), false));
tableData.setParameters(ParameterHelper.analyze4Parameters(tableData.getQueryWithoutComments(), false));
return new Parameter[0];
}
return Parameter.providers2Parameter(Calculator.processParameters(calculator, parameters));

3
designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java

@ -118,6 +118,9 @@ public abstract class UIListGroupControlPane extends UIControlPane implements Li
for (int i = 0, size = widget.getListenerSize(); i < size; i++) {
Listener listener = widget.getListener(i);
if (!listener.isDefault()) {
if (StringUtils.isEmpty(listener.getEventName())) {
continue;
}
String eventName = switchLang(listener.getEventName()) + (nameObjectList.size() + 1);
NameObject nameObject = new NameObject(eventName, listener);
nameObjectList.add(nameObject);

16
designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java

@ -6,6 +6,7 @@ import com.fr.base.extension.FileExtension;
import com.fr.base.info.TemplateSaveInfoContext;
import com.fr.base.io.BaseBook;
import com.fr.base.iofile.attr.DesignBanCopyAttrMark;
import com.fr.base.iofile.attr.ForkIdAttrMark;
import com.fr.base.iofile.attr.TemplateIdAttrMark;
import com.fr.base.iofile.attr.TemplateThemeAttrMark;
import com.fr.base.svg.IconUtils;
@ -343,6 +344,18 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
generateTemplateId();
}
/**
* 如果没有 forkId, 则计算 forkId
* 要求在 templateId, 创建后执行
*/
protected void computeForkIdIfAbsent() {
ForkIdAttrMark forkIdAttrMark = this.template.getAttrMark(ForkIdAttrMark.XML_TAG);
if (forkIdAttrMark == null || StringUtils.isEmpty(forkIdAttrMark.getForkId())) {
this.template.addAttrMark(new ForkIdAttrMark(this.template.getTemplateID()));
}
}
/**
* 收集图表信息
*/
@ -971,6 +984,7 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
}
// 在保存之前,初始化 templateID
generateNewTemplateIdForSaveAs();
computeForkIdIfAbsent();
this.editingFILE = editingFILE;
TemplateSaveInfoContext.getInstance().startCollect(template);
@ -1855,6 +1869,8 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
}
// 在保存之前,初始化 templateID
generateNewTemplateIdForSaveAs();
computeForkIdIfAbsent();
this.editingFILE = editingFILE;
boolean result = this.saveToNewRealFile(oldName);
if (result) {

3
designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleDefinePane.java

@ -8,6 +8,7 @@ import com.fr.design.gui.icombobox.LineComboBox;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ispinner.UISpinner;
import com.fr.design.i18n.DesignSizeI18nManager;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayoutHelper;
@ -210,7 +211,7 @@ public class MobileStyleDefinePane extends BasicBeanPane<MobileStyle> {
private UILabel createConfigLabel(String title) {
UILabel label = new UILabel(title + ":", UILabel.RIGHT);
label.setPreferredSize(new Dimension(75, 20));
label.setPreferredSize(DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel"));
return label;
}

3
designer-base/src/main/java/com/fr/design/mainframe/mobile/utils/DesignerUtils.java

@ -4,6 +4,7 @@ import com.fr.design.constants.LayoutConstants;
import com.fr.design.designer.IntervalConstants;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.DesignSizeI18nManager;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.widget.UITitleSplitLine;
import com.fr.design.style.color.NewColorSelectBox;
@ -44,7 +45,7 @@ public class DesignerUtils {
public static UILabel createConfigLabel(String title) {
UILabel label = new UILabel(title, UILabel.RIGHT);
label.setPreferredSize(new Dimension(100, 20));
label.setPreferredSize(DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel"));
return label;
}

9
designer-base/src/main/java/com/fr/design/record/analyzer/advice/MonitorAdvice.java

@ -88,8 +88,9 @@ public class MonitorAdvice implements DesignerAnalyzerAdvice {
MessageRecorderFactory.getInstance().syncSubmit(message);
}
}
} catch (Exception ignore) {
} catch (Exception ex) {
//埋点信息入库失败应该不能影响业务流程
FineLoggerFactory.getLogger().debug("[Metric] failed to log message.", ex);
} finally {
sessionBinder.detachSession();
}
@ -113,7 +114,11 @@ public class MonitorAdvice implements DesignerAnalyzerAdvice {
}
public static void recordSQLDetail(String uuid) {
DBMeterFactory.getMeter().submit(uuid);
try {
DBMeterFactory.getMeter().submit(uuid);
} catch (Exception e) {
FineLoggerFactory.getLogger().debug("[Metric] failed to log sql detail.", e);
}
}
public static void recordSQL(Compute once, MeasureObject measureObject) {

12
designer-base/src/main/java/com/fr/design/style/background/image/ImagePreviewPane.java

@ -9,6 +9,7 @@ import com.fr.base.Style;
import com.fr.design.gui.iscrollbar.UIScrollBar;
import com.fr.general.ImageWithSuffix;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.CoreGraphHelper;
import javax.swing.JComponent;
@ -92,9 +93,14 @@ public class ImagePreviewPane extends JComponent implements Scrollable, ImagePre
isLoading = false;
CoreGraphHelper.waitForImage(image);
imageWidth = image.getWidth(null);
imageHeight = image.getHeight(null);
if (image.getFineImage() != null && image.getImage() != null) {
try {
imageWidth = image.getWidth(null);
imageHeight = image.getHeight(null);
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
}
this.setToolTipText("Image Size: " + imageWidth + "x" + imageHeight + "px");
}
fireChangeListener();

2
designer-base/src/main/java/com/fr/design/utils/DesignUtils.java

@ -345,7 +345,7 @@ public class DesignUtils {
@Override
protected FRFont compute() {
FRFont guiFRFont;
Locale defaultLocale = Locale.getDefault();
Locale defaultLocale = GeneralContext.getLocale();
// JDK9 之后宋体在计算label中字母的空间上出现问题,暂时先用雅黑兼容,以后再统一字体
if (StableUtils.getMajorJavaVersion() >= 9 && OperatingSystem.isWindows()) {
guiFRFont = getNamedFont("Microsoft YaHei");

2
designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties

@ -27,3 +27,5 @@ com.fr.design.file.MultiTemplateTabPane.popUpMenu=350*65
com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600
com.fr.design.formula.FormulaPane=900*600
com.fr.design.formula.FormulaPaneWhenReserveFormula=1200*600
com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=130*20
com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=140*20

2
designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties

@ -26,3 +26,5 @@ com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65
com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600
com.fr.design.formula.FormulaPane=900*600
com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600
com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=100*20
com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=130*20

4
designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties

@ -14,7 +14,7 @@ com.fr.design.report.fit.firstColumn=130*20
com.fr.design.report.fit.column=100*20
com.fr.design.lock.LockInfoDialog=500*180
com.fr.design.mainframe.ForbiddenPane.refreshButton=80*24
com.fr.start.common.DesignerOpenEmptyPanel.createButton=70*24
com.fr.start.common.DesignerOpenEmptyPanel.createButton=90*24
com.fr.design.cell.expand.sort.pane=267*165
com.fr.design.sort.rule.item=125*20
com.fr.design.ds.column.sort.pane=250*180
@ -26,3 +26,5 @@ com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65
com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600
com.fr.design.formula.FormulaPane=900*600
com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600
com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=75*20
com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=100*20

2
designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties

@ -26,3 +26,5 @@ com.fr.design.report.WatermarkSettingPane=720*600
com.fr.design.file.MultiTemplateTabPane.popUpMenu=170*65
com.fr.design.formula.FormulaPane=900*600
com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600
com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=75*20
com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=100*20

2
designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties

@ -25,3 +25,5 @@ com.fr.design.report.WatermarkSettingPane=720*600
com.fr.design.file.MultiTemplateTabPane.popUpMenu=170*65
com.fr.design.formula.FormulaPane=900*600
com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600
com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=75*20
com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=100*20

2
designer-base/src/test/java/com/fr/design/EnvChangeEntranceTest.java

@ -49,7 +49,7 @@ public class EnvChangeEntranceTest {
EasyMock.expect(selectedEnv.getRemindTime()).andReturn(null);
FunctionalHttpRequest request = EasyMock.mock(FunctionalHttpRequest.class);
EasyMock.expect(request.getServiceList()).andReturn(null);
EasyMock.expect(request.getServiceList(connectionInfo)).andReturn(null);
PowerMock.expectNew(FunctionalHttpRequest.class, connectionInfo).andReturn(request).anyTimes();
EasyMock.expect(request.getServerBranch()).andReturn(remoteBranch);

2
designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java

@ -100,7 +100,7 @@ public abstract class AbstractChartTypePane<T extends ChartProvider> extends Fur
}
}
double[] columnSize = {p, vs, f};
double[] columnSize = {f};
double[] rowSize = {p, p, p, p, p, p, p};
if (styleList != null && !styleList.isEmpty()) {

4
designer-chart/src/main/java/com/fr/van/chart/map/designer/type/MapStatusPane.java

@ -81,8 +81,8 @@ public class MapStatusPane extends JPanel {
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double s = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH;
double[] rowSize = {p, p, p};
double[] columnSize = {d, e};
double[] column = {d, s};
double[] columnSize = {p, e};
double[] column = {p, s};
Component[][] comps = new Component[][]{
new Component[]{null, null},

2
designer-chart/src/main/java/com/fr/van/chart/map/designer/type/VanChartMapSourceChoosePane.java

@ -36,7 +36,7 @@ public class VanChartMapSourceChoosePane extends JPanel implements UIObserver {
this.setBorder(BorderFactory.createEmptyBorder(10, 5, 0, 0));
double p = TableLayout.PREFERRED;
double[] columnSize = {230};
double[] columnSize = {TableLayout.FILL};
double[] rowSize = {p, p, p, p, p, p, p, p};
JPanel panel = new JPanel(new BorderLayout());

2
designer-form/src/main/java/com/fr/design/widget/ui/designer/ComboBoxDefinePane.java

@ -27,7 +27,7 @@ public class ComboBoxDefinePane extends DictEditorDefinePane<ComboBox> {
public Component[] createWaterMarkPane() {
waterMarkField = new UITextField();
return new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_WaterMark")), waterMarkField};
return new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_PlaceHolder")), waterMarkField};
}
protected void populateSubDictionaryEditorBean(ComboBox ob){

Loading…
Cancel
Save