diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XNumberEditor.java b/designer-form/src/main/java/com/fr/design/designer/creator/XNumberEditor.java index 15cd30c6fd..8861d6fcbc 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XNumberEditor.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XNumberEditor.java @@ -6,7 +6,9 @@ package com.fr.design.designer.creator; import com.fr.base.BaseUtils; import com.fr.base.ScreenResolution; import com.fr.base.Style; +import com.fr.design.designer.properties.mobile.NumberEditorMobilePropertyUI; import com.fr.design.form.util.XCreatorConstants; +import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.mainframe.widget.editors.InChangeBooleanEditor; import com.fr.design.mainframe.widget.editors.SpinnerMaxNumberEditor; import com.fr.design.mainframe.widget.editors.SpinnerMinNumberEditor; @@ -91,15 +93,19 @@ public class XNumberEditor extends XWrapperedFieldEditor { } } - @Override + @Override protected JComponent initEditor() { setBorder(FIELDBORDER); return this; } - @Override - protected String getIconName() { - return "number_field_16.png"; - } + @Override + protected String getIconName() { + return "number_field_16.png"; + } + @Override + public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() { + return new WidgetPropertyUIProvider[]{new NumberEditorMobilePropertyUI(this)}; + } } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XPassword.java b/designer-form/src/main/java/com/fr/design/designer/creator/XPassword.java index 4194e4be03..29de6c9d05 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XPassword.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XPassword.java @@ -3,7 +3,9 @@ */ package com.fr.design.designer.creator; +import com.fr.design.designer.properties.mobile.PasswordMobilePropertyUI; import com.fr.design.form.util.XCreatorConstants; +import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.gui.ibutton.UIPasswordField; import com.fr.design.mainframe.widget.editors.RegexEditor; import com.fr.design.mainframe.widget.editors.WidgetValueEditor; @@ -68,4 +70,8 @@ public class XPassword extends XWrapperedFieldEditor { (CRPropertyDescriptor[]) ArrayUtils.addAll(sup, new CRPropertyDescriptor[]{regex, waterMark}); } + @Override + public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() { + return new WidgetPropertyUIProvider[]{new PasswordMobilePropertyUI(this)}; + } } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java b/designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java index 845fe43d9e..f23c24fea7 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java @@ -6,7 +6,9 @@ package com.fr.design.designer.creator; import com.fr.base.BaseUtils; import com.fr.base.ScreenResolution; import com.fr.base.Style; +import com.fr.design.designer.properties.mobile.TextAreaMobilePropertyUI; import com.fr.design.form.util.XCreatorConstants; +import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.mainframe.widget.editors.RegexEditor; import com.fr.design.mainframe.widget.editors.WidgetValueEditor; import com.fr.design.mainframe.widget.renderer.RegexCellRencerer; @@ -26,7 +28,7 @@ import java.beans.IntrospectionException; * @author richer * @since 6.5.3 */ -public class XTextArea extends XFieldEditor { +public class XTextArea extends XWrapperedFieldEditor { public XTextArea(TextArea widget, Dimension initSize) { super(widget, initSize); @@ -81,4 +83,10 @@ public class XTextArea extends XFieldEditor { protected String getIconName() { return "text_area_16.png"; } + + @Override + public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() { + return new WidgetPropertyUIProvider[]{new TextAreaMobilePropertyUI(this)}; + } + } diff --git a/designer-form/src/main/java/com/fr/design/designer/properties/mobile/NumberEditorMobilePropertyUI.java b/designer-form/src/main/java/com/fr/design/designer/properties/mobile/NumberEditorMobilePropertyUI.java new file mode 100644 index 0000000000..67a8569f72 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/designer/properties/mobile/NumberEditorMobilePropertyUI.java @@ -0,0 +1,37 @@ +package com.fr.design.designer.properties.mobile; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.dialog.BasicPane; +import com.fr.design.fun.impl.AbstractWidgetPropertyUIProvider; +import com.fr.design.gui.itable.AbstractPropertyTable; +import com.fr.design.widget.ui.designer.mobile.NumberEditorMobileDefinePane; + +/** + * 数字控件属性面板注册 + * + * @author Coral.Chen + * @since 11.0 + * Created on 2023/3/30 + */ +public class NumberEditorMobilePropertyUI extends AbstractWidgetPropertyUIProvider { + private XCreator xCreator; + + public NumberEditorMobilePropertyUI(XCreator xCreator) { + this.xCreator = xCreator; + } + + @Override + public AbstractPropertyTable createWidgetAttrTable() { + return null; + } + + @Override + public BasicPane createWidgetAttrPane() { + return new NumberEditorMobileDefinePane(xCreator); + } + + @Override + public String tableTitle() { + return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Mobile_Attr"); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/designer/properties/mobile/PasswordMobilePropertyUI.java b/designer-form/src/main/java/com/fr/design/designer/properties/mobile/PasswordMobilePropertyUI.java new file mode 100644 index 0000000000..2c3b3b2270 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/designer/properties/mobile/PasswordMobilePropertyUI.java @@ -0,0 +1,37 @@ +package com.fr.design.designer.properties.mobile; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.dialog.BasicPane; +import com.fr.design.fun.impl.AbstractWidgetPropertyUIProvider; +import com.fr.design.gui.itable.AbstractPropertyTable; +import com.fr.design.widget.ui.designer.mobile.PasswordMobileDefinePane; + +/** + * 密码控件移动端属性注册 + * + * @author Coral.Chen + * @since 11.0 + * Created on 2023/3/30 + */ +public class PasswordMobilePropertyUI extends AbstractWidgetPropertyUIProvider { + private XCreator xCreator; + + public PasswordMobilePropertyUI(XCreator xCreator) { + this.xCreator = xCreator; + } + + @Override + public AbstractPropertyTable createWidgetAttrTable() { + return null; + } + + @Override + public BasicPane createWidgetAttrPane() { + return new PasswordMobileDefinePane(xCreator); + } + + @Override + public String tableTitle() { + return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Mobile_Attr"); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/designer/properties/mobile/TextAreaMobilePropertyUI.java b/designer-form/src/main/java/com/fr/design/designer/properties/mobile/TextAreaMobilePropertyUI.java new file mode 100644 index 0000000000..1c24e06bce --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/designer/properties/mobile/TextAreaMobilePropertyUI.java @@ -0,0 +1,37 @@ +package com.fr.design.designer.properties.mobile; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.dialog.BasicPane; +import com.fr.design.fun.impl.AbstractWidgetPropertyUIProvider; +import com.fr.design.gui.itable.AbstractPropertyTable; +import com.fr.design.widget.ui.designer.mobile.TextAreaAdvancedDefinePane; + +/** + * 文本域控件移动端属性 + * + * @author Coral.Chen + * @since 11.0 + * Created on 2023/3/29 + */ +public class TextAreaMobilePropertyUI extends AbstractWidgetPropertyUIProvider { + private XCreator xCreator; + + public TextAreaMobilePropertyUI(XCreator xCreator) { + this.xCreator = xCreator; + } + + @Override + public AbstractPropertyTable createWidgetAttrTable() { + return null; + } + + @Override + public BasicPane createWidgetAttrPane() { + return new TextAreaAdvancedDefinePane(xCreator); + } + + @Override + public String tableTitle() { + return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Mobile_Attr"); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/BaseTextEditorMobileDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/BaseTextEditorMobileDefinePane.java new file mode 100644 index 0000000000..57faab6a72 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/BaseTextEditorMobileDefinePane.java @@ -0,0 +1,94 @@ +package com.fr.design.widget.ui.designer.mobile; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.foldablepane.UIExpandablePane; +import com.fr.design.gui.frpane.AttributeChangeListener; +import com.fr.design.i18n.Toolkit; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.FormDesigner; +import com.fr.design.widget.ui.designer.mobile.component.MobileTextEditSettingPane; +import com.fr.form.ui.TextEditor; + +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.FlowLayout; + +/** + *
文本类组件移动端高级属性的定义面板,基础扩展可以直接继承此面板 + *
往内部添加其他配置
+ *
+ * @author Coral.Chen
+ * @since 11.0
+ * Created on 2023/3/30
+ */
+public class BaseTextEditorMobileDefinePane extends MobileWidgetDefinePane {
+
+ private XCreator xCreator;
+ protected MobileTextEditSettingPane textSettingPane;
+
+ public BaseTextEditorMobileDefinePane(XCreator xCreator) {
+ this.xCreator = xCreator;
+ }
+
+ @Override
+ public void initPropertyGroups(Object source) {
+ this.setLayout(FRGUIPaneFactory.createBorderLayout());
+ JPanel container = FRGUIPaneFactory.createVerticalFlowLayout_Pane(true, FlowLayout.LEADING, 0, 5);
+ addPropertyPanesToContainer(container);
+ this.add(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Advanced"), 280, 20, container), BorderLayout.NORTH);
+ this.repaint();
+ }
+
+ /**
+ * 添加其他属性面板
+ *
+ * @param container 展开容器
+ */
+ protected void addPropertyPanesToContainer(JPanel container) {
+ initSettingPane(container);
+ }
+
+ /**
+ * 初始化文本类基础面板
+ *
+ * @param container
+ */
+ protected void initSettingPane(JPanel container) {
+ textSettingPane = new MobileTextEditSettingPane();
+ container.add(textSettingPane);
+ }
+
+ @Override
+ public void populate(FormDesigner designer) {
+ TextEditor textEditor = (TextEditor) xCreator.toData();
+ textSettingPane.populateBean(textEditor.getMobileTextEditAttr());
+ this.bindListeners2Widgets();
+ }
+
+ protected void bindListeners2Widgets() {
+ reInitAllListeners();
+ AttributeChangeListener changeListener = new AttributeChangeListener() {
+ @Override
+ public void attributeChange() {
+ update();
+ }
+ };
+ this.addAttributeChangeListener(changeListener);
+ }
+
+ private void reInitAllListeners() {
+ initListener(this);
+ }
+
+ @Override
+ public void update() {
+ TextEditor textEditor = (TextEditor) xCreator.toData();
+ textSettingPane.updateBean(textEditor.getMobileTextEditAttr());
+ DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified();
+ }
+
+ public XCreator getxCreator() {
+ return xCreator;
+ }
+}
\ No newline at end of file
diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/NumberEditorMobileDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/NumberEditorMobileDefinePane.java
new file mode 100644
index 0000000000..75c6dbefc0
--- /dev/null
+++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/NumberEditorMobileDefinePane.java
@@ -0,0 +1,33 @@
+package com.fr.design.widget.ui.designer.mobile;
+
+import com.fr.design.designer.creator.XCreator;
+import com.fr.design.mainframe.DesignerContext;
+import com.fr.design.mainframe.FormDesigner;
+import com.fr.form.ui.NumberEditor;
+
+/**
+ * 数字控件
+ *
+ * @author Coral.Chen
+ * @since 11.0
+ * Created on 2023/3/30
+ */
+public class NumberEditorMobileDefinePane extends BaseTextEditorMobileDefinePane {
+ public NumberEditorMobileDefinePane(XCreator xCreator) {
+ super(xCreator);
+ }
+
+ @Override
+ public void populate(FormDesigner designer) {
+ NumberEditor numberEditor = (NumberEditor) getxCreator().toData();
+ textSettingPane.populateBean(numberEditor.getMobileTextEditAttr());
+ this.bindListeners2Widgets();
+ }
+
+ @Override
+ public void update() {
+ NumberEditor numberEditor = (NumberEditor) getxCreator().toData();
+ textSettingPane.updateBean(numberEditor.getMobileTextEditAttr());
+ DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified();
+ }
+}
\ No newline at end of file
diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/PasswordMobileDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/PasswordMobileDefinePane.java
new file mode 100644
index 0000000000..68c878b459
--- /dev/null
+++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/PasswordMobileDefinePane.java
@@ -0,0 +1,25 @@
+package com.fr.design.widget.ui.designer.mobile;
+
+import com.fr.design.designer.creator.XCreator;
+import com.fr.design.widget.ui.designer.mobile.component.MobilePasswordEditSettingPane;
+
+import javax.swing.JPanel;
+
+/**
+ * 密码控件移动端高级属性
+ *
+ * @author Coral.Chen
+ * @since 11.0
+ * Created on 2023/3/30
+ */
+public class PasswordMobileDefinePane extends BaseTextEditorMobileDefinePane {
+ public PasswordMobileDefinePane(XCreator xCreator) {
+ super(xCreator);
+ }
+
+ @Override
+ protected void initSettingPane(JPanel container) {
+ textSettingPane = new MobilePasswordEditSettingPane();
+ container.add(textSettingPane);
+ }
+}
\ No newline at end of file
diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ScanCodeMobileDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ScanCodeMobileDefinePane.java
index a9876b7a3d..bb785c27d9 100644
--- a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ScanCodeMobileDefinePane.java
+++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ScanCodeMobileDefinePane.java
@@ -1,61 +1,50 @@
package com.fr.design.widget.ui.designer.mobile;
-import com.fr.base.mobile.MobileScanCodeAttr;
import com.fr.design.designer.creator.XCreator;
-import com.fr.design.foldablepane.UIExpandablePane;
-import com.fr.design.gui.frpane.AttributeChangeListener;
-import com.fr.design.i18n.Toolkit;
-import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.FormDesigner;
+import com.fr.design.widget.ui.designer.mobile.component.MobileTextEditSettingPane;
import com.fr.design.widget.ui.designer.mobile.component.MobileTextFieldInputSettingPane;
import com.fr.form.ui.TextEditor;
-import java.awt.BorderLayout;
+import javax.swing.JPanel;
-public class ScanCodeMobileDefinePane extends MobileWidgetDefinePane {
+/**
+ * 输入方式:
+ *
+ * @author hades
+ * @since 11.0
+ * Created on 2018/11/27
+ */
+public class ScanCodeMobileDefinePane extends BaseTextEditorMobileDefinePane {
- private XCreator xCreator;
- private MobileTextFieldInputSettingPane settingPane;
+ private MobileTextFieldInputSettingPane inputSettingPane;
public ScanCodeMobileDefinePane(XCreator xCreator) {
- this.xCreator = xCreator;
+ super(xCreator);
}
@Override
- public void initPropertyGroups(Object source) {
- this.setLayout(FRGUIPaneFactory.createBorderLayout());
- settingPane = new MobileTextFieldInputSettingPane();
- this.add(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Advanced"), 280, 20, settingPane), BorderLayout.NORTH);
- this.repaint();
+ protected void initSettingPane(JPanel container) {
+ inputSettingPane = new MobileTextFieldInputSettingPane();
+ textSettingPane = new MobileTextEditSettingPane();
+ container.add(inputSettingPane);
+ container.add(textSettingPane);
}
- private void bindListeners2Widgets() {
- reInitAllListeners();
- AttributeChangeListener changeListener = new AttributeChangeListener() {
- @Override
- public void attributeChange() {
- update();
- }
- };
- this.addAttributeChangeListener(changeListener);
- }
-
- private void reInitAllListeners() {
- initListener(this);
- }
@Override
public void populate(FormDesigner designer) {
- MobileScanCodeAttr mobileScanCodeAttr = ((TextEditor) xCreator.toData()).getMobileScanCodeAttr();
- settingPane.populateBean(mobileScanCodeAttr);
+ super.populate(designer);
+ TextEditor textEditor = (TextEditor) getxCreator().toData();
+ inputSettingPane.populateBean(textEditor.getMobileScanCodeAttr());
this.bindListeners2Widgets();
}
-
@Override
public void update() {
- MobileScanCodeAttr mobileScanCodeAttr = ((TextEditor) xCreator.toData()).getMobileScanCodeAttr();
- settingPane.updateBean(mobileScanCodeAttr);
+ super.update();
+ TextEditor textEditor = (TextEditor) getxCreator().toData();
+ inputSettingPane.updateBean(textEditor.getMobileScanCodeAttr());
DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified();
}
diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/TextAreaAdvancedDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/TextAreaAdvancedDefinePane.java
new file mode 100644
index 0000000000..ccc3194f9f
--- /dev/null
+++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/TextAreaAdvancedDefinePane.java
@@ -0,0 +1,25 @@
+package com.fr.design.widget.ui.designer.mobile;
+
+import com.fr.design.designer.creator.XCreator;
+import com.fr.design.widget.ui.designer.mobile.component.MobileTextAreaSettingPane;
+
+import javax.swing.JPanel;
+
+/**
+ * 文本域控件
+ *
+ * @author Coral.Chen
+ * @since 11.0
+ * Created on 2023/3/29
+ */
+public class TextAreaAdvancedDefinePane extends BaseTextEditorMobileDefinePane {
+ public TextAreaAdvancedDefinePane(XCreator xCreator) {
+ super(xCreator);
+ }
+
+ @Override
+ protected void initSettingPane(JPanel container) {
+ textSettingPane = new MobileTextAreaSettingPane();
+ container.add(textSettingPane);
+ }
+}
\ No newline at end of file
diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobilePasswordEditSettingPane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobilePasswordEditSettingPane.java
new file mode 100644
index 0000000000..db475dc569
--- /dev/null
+++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobilePasswordEditSettingPane.java
@@ -0,0 +1,43 @@
+package com.fr.design.widget.ui.designer.mobile.component;
+
+import com.fr.base.mobile.MobileTextEditAttr;
+import com.fr.design.gui.icheckbox.UICheckBox;
+import com.fr.design.i18n.Toolkit;
+
+import java.awt.BorderLayout;
+
+/**
+ * 密码控件编辑属性设置面板
+ *
+ * @author Coral.Chen
+ * @since 11.0
+ * Created on 2023/3/30
+ */
+public class MobilePasswordEditSettingPane extends MobileTextEditSettingPane {
+ // 显示字数统计
+ private UICheckBox showPassword;
+
+ public MobilePasswordEditSettingPane() {
+ super();
+ showPassword = new UICheckBox(Toolkit.i18nText("Fine-Design_Mobile_Show_Password"), false);
+ this.add(showPassword, BorderLayout.NORTH);
+ }
+
+ @Override
+ protected boolean getClearDefaultState() {
+ return true;
+ }
+
+ @Override
+ public void populateBean(MobileTextEditAttr ob) {
+ super.populateBean(ob);
+ // 要兼容处理一下,为null 的话赋默认值,默认开启
+ this.showPassword.setSelected(ob.isShowPassword() == null || ob.isShowPassword());
+ }
+
+ @Override
+ public void updateBean(MobileTextEditAttr ob) {
+ super.updateBean(ob);
+ ob.setShowPassword(showPassword.isSelected());
+ }
+}
\ No newline at end of file
diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextAreaSettingPane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextAreaSettingPane.java
new file mode 100644
index 0000000000..d660508e6e
--- /dev/null
+++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextAreaSettingPane.java
@@ -0,0 +1,38 @@
+package com.fr.design.widget.ui.designer.mobile.component;
+
+import com.fr.base.mobile.MobileTextEditAttr;
+import com.fr.design.gui.icheckbox.UICheckBox;
+import com.fr.design.i18n.Toolkit;
+
+import java.awt.BorderLayout;
+
+/**
+ * 文本域控件
+ *
+ * @author Coral.Chen
+ * @since 11.0
+ * Created on 2023/3/29
+ */
+public class MobileTextAreaSettingPane extends MobileTextEditSettingPane {
+ // 显示字数统计
+ private UICheckBox showWordCount;
+
+ public MobileTextAreaSettingPane() {
+ super();
+ showWordCount = new UICheckBox(Toolkit.i18nText("Fine-Design_Mobile_Show_Word_Count"), false);
+ this.add(showWordCount, BorderLayout.NORTH);
+ }
+
+ @Override
+ public void populateBean(MobileTextEditAttr ob) {
+ super.populateBean(ob);
+ // 要兼容处理一下,为null 的话赋默认值,默认不开启
+ this.showWordCount.setSelected(ob.isShowWordCount() != null && ob.isShowWordCount());
+ }
+
+ @Override
+ public void updateBean(MobileTextEditAttr ob) {
+ super.updateBean(ob);
+ ob.setShowWordCount(showWordCount.isSelected());
+ }
+}
\ No newline at end of file
diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextEditSettingPane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextEditSettingPane.java
new file mode 100644
index 0000000000..56d340e4d0
--- /dev/null
+++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextEditSettingPane.java
@@ -0,0 +1,59 @@
+package com.fr.design.widget.ui.designer.mobile.component;
+
+import com.fr.base.mobile.MobileTextEditAttr;
+import com.fr.design.beans.BasicBeanPane;
+import com.fr.design.gui.icheckbox.UICheckBox;
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.layout.VerticalFlowLayout;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+
+/**
+ * 文本类基础设置
+ *
+ * @author Coral.Chen
+ * @since 11.0
+ * Created on 2023/3/29
+ */
+public class MobileTextEditSettingPane extends BasicBeanPane