* commit '1d2dec6c8f09c85934a8e5635169a9f7df94789f': (52 commits) REPORT-92333 frm图片控件,默认图片是中文 EPORT-97225 【H5控件增强】关于文本类控件的新功能,设计器设置项的屏蔽 REPORT-76564 设计器检查-国际化问题 REPORT-76564 设计器检查-国际化问题 REPORT-76564 设计器检查-国际化问题 REPORT-96012 移动文件夹到自己文件夹下,文件夹丢失 REPORT-96808 屏蔽设计器系统信息面板中的jxbrowser相关参数 REPORT-96808 屏蔽设计器系统信息面板中的jxbrowser相关参数 REPORT-96808 屏蔽设计器系统信息面板中的jxbrowser相关参数 REPORT-96808 屏蔽设计器系统信息面板中的jxbrowser相关参数 REPORT-96424 高级js编辑器超链国际化处理 REPORT-96107 8.0和11.0.2能双开,8.0和11.0.14不能双开--调整 REPORT-96424 高级js编辑器超链国际化处理 REPORT-96107 8.0和11.0.2能双开,8.0和11.0.14不能双开--魔数 REPORT-96107 8.0和11.0.2能双开,8.0和11.0.14不能双开--方案调整 REPORT-96567 文本控件无法正确设置输入方式 REPORT-96107 8.0和11.0.2能双开,8.0和11.0.14不能双开 REPORT-96012 移动文件夹到自己文件夹下,文件夹丢失 优化代码 无jira任务,补交遗漏代码 REPORT-96012 移动文件夹到自己文件夹下,文件夹丢失 ...fix-lag
@ -0,0 +1,24 @@
|
||||
package com.fr.design.env.processor; |
||||
|
||||
import com.fr.stable.fun.mark.API; |
||||
|
||||
|
||||
/** |
||||
* 远程设计自定义用户名接口实现抽象类 |
||||
* |
||||
* @author John.Ying |
||||
* @since 11.0 |
||||
* Created on 2023/5/17 |
||||
*/ |
||||
@API(level = RemoteDesignerWorkspaceInfoProcessor.CURRENT_LEVEL) |
||||
public abstract class AbstractRemoteDesignerWorkspaceInfoProcessor implements RemoteDesignerWorkspaceInfoProcessor { |
||||
@Override |
||||
public int currentAPILevel() { |
||||
return CURRENT_LEVEL; |
||||
} |
||||
|
||||
@Override |
||||
public int layerIndex() { |
||||
return DEFAULT_LAYER_INDEX; |
||||
} |
||||
} |
@ -0,0 +1,25 @@
|
||||
package com.fr.design.env.processor; |
||||
|
||||
import com.fr.stable.fun.mark.Immutable; |
||||
import com.fr.workspace.connect.WorkspaceConnectionInfo; |
||||
|
||||
/** |
||||
* 远程设计自定义用户名接口 |
||||
* px:为了二开插件开的接口,不建议实现,后面可能会变动 |
||||
* |
||||
* @author John.Ying |
||||
* @since 11.0 |
||||
* Created on 2023/5/17 |
||||
*/ |
||||
public interface RemoteDesignerWorkspaceInfoProcessor extends Immutable { |
||||
|
||||
String XML_TAG = "RemoteDesignerWorkspaceInfoProcessor"; |
||||
|
||||
int CURRENT_LEVEL = 1; |
||||
|
||||
/** |
||||
* 根据链接信息自定义用户名 |
||||
*/ |
||||
WorkspaceConnectionInfo customUserName(WorkspaceConnectionInfo workspaceInfo); |
||||
|
||||
} |
@ -0,0 +1,23 @@
|
||||
package com.fr.design.mainframe.mobile.processor; |
||||
|
||||
import com.fr.stable.fun.mark.API; |
||||
|
||||
/** |
||||
* 移动端Form控件,样式模板,通用属性替换接口 |
||||
* |
||||
* @author Coral.Chen |
||||
* @since 11.0 |
||||
* Created on 2023/4/11 |
||||
*/ |
||||
@API(level = MobileStyleDefinePaneCreator.CURRENT_LEVEL) |
||||
public abstract class AbstractMobileStyleDefinePaneCreator implements MobileStyleDefinePaneCreator { |
||||
@Override |
||||
public int currentAPILevel() { |
||||
return CURRENT_LEVEL; |
||||
} |
||||
|
||||
@Override |
||||
public int layerIndex() { |
||||
return DEFAULT_LAYER_INDEX; |
||||
} |
||||
} |
@ -0,0 +1,40 @@
|
||||
package com.fr.design.mainframe.mobile.processor; |
||||
|
||||
import com.fr.design.beans.BasicBeanPane; |
||||
import com.fr.design.mainframe.mobile.ui.MobileStyleCustomDefinePane; |
||||
import com.fr.form.ui.Widget; |
||||
import com.fr.form.ui.mobile.MobileCommonExtraStyle; |
||||
import com.fr.form.ui.mobile.MobileStyle; |
||||
import com.fr.stable.fun.mark.Immutable; |
||||
import org.jetbrains.annotations.Nullable; |
||||
|
||||
/** |
||||
* 移动端Form控件,样式模板,通用属性替换接口 |
||||
* |
||||
* @author Coral.Chen |
||||
* @since 11.0 |
||||
* Created on 2023/4/11 |
||||
*/ |
||||
public interface MobileStyleDefinePaneCreator extends Immutable { |
||||
String XML_TAG = "MobileStyleDefinePaneCreator"; |
||||
|
||||
int CURRENT_LEVEL = 1; |
||||
|
||||
/** |
||||
* <p> 创建通用属性样式界面,可替换{@link com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane} |
||||
* <p> 每种样式的通用属性面板是一样的 |
||||
* |
||||
* @param widget 控件 |
||||
* @param customDefinePane 自定义面板 |
||||
* @param mobileStyle 移动端样式 |
||||
* @return |
||||
*/ |
||||
@Nullable BasicBeanPane<MobileStyle> createBaseBeanPane(Widget widget, Class<? extends MobileStyleCustomDefinePane> customDefinePane, Class<? extends MobileStyle> mobileStyle); |
||||
|
||||
/** |
||||
* 替换通用属性面板,注册额外属性 |
||||
* |
||||
* @return 属性类 |
||||
*/ |
||||
@Nullable Class<? extends MobileCommonExtraStyle> classForCommonExtraStyle(Widget widget); |
||||
} |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 17 KiB |
@ -1,57 +0,0 @@
|
||||
.background-login-close { |
||||
color: white !important; |
||||
font-weight: bold; |
||||
font-size: 14px; |
||||
} |
||||
.background-guide-close { |
||||
background: url(./img/icon_install_normal.png) no-repeat center center; |
||||
background-size: cover; |
||||
width: 20px; |
||||
height: 20px; |
||||
cursor: pointer; |
||||
} |
||||
.background-guide-close:hover { |
||||
background-color: #E8E8E9; |
||||
} |
||||
.background-login-loading { |
||||
background: url(./img/login_loading.gif) no-repeat center center; |
||||
} |
||||
.background-plugin-need-update { |
||||
background: url(./img/icon_new.png) no-repeat center center; |
||||
} |
||||
.background-plugin-cant-use { |
||||
background: url(./img/icon_cantuse.png) no-repeat center center; |
||||
} |
||||
.background-plugin-is-disable { |
||||
background: url(./img/icon_disable.png) no-repeat center center; |
||||
} |
||||
.background-plugin-is-disable-new { |
||||
background: url(./img/icon_disable-new.png) no-repeat center center; |
||||
} |
||||
.background-plugin-selected { |
||||
background: url(./img/icon_marked.png) no-repeat center center; |
||||
} |
||||
.background-shop-title-close { |
||||
background: url(./img/icon_close40x40_normal.svg) no-repeat center center; |
||||
} |
||||
.background-dialog-confirm { |
||||
background: url(./img/warning.png) no-repeat center center; |
||||
background-size: contain; |
||||
} |
||||
.background-close-button { |
||||
background: url(./img/icon_close9x9_normal.png) no-repeat center center; |
||||
} |
||||
.background-close-button:hover { |
||||
background: url(./img/icon_close9x9_hover.png) no-repeat center center; |
||||
} |
||||
.designer-login-guide { |
||||
background: url(./img/login_guide.png) no-repeat center center; |
||||
background-size: cover; |
||||
} |
||||
.designer-guide-login-button { |
||||
font-size: 14px; |
||||
color: white; |
||||
border-radius: 4px; |
||||
background-color: #3685F2; |
||||
} |
||||
|
After Width: | Height: | Size: 459 KiB |
After Width: | Height: | Size: 459 KiB |
Before Width: | Height: | Size: 473 KiB After Width: | Height: | Size: 473 KiB |
After Width: | Height: | Size: 482 KiB |
@ -0,0 +1,57 @@
|
||||
.background-login-close { |
||||
color: white !important; |
||||
font-weight: bold; |
||||
font-size: 14px; |
||||
} |
||||
.background-guide-close { |
||||
background: url(../../../img/icon_install_normal.png) no-repeat center center; |
||||
background-size: cover; |
||||
width: 20px; |
||||
height: 20px; |
||||
cursor: pointer; |
||||
} |
||||
.background-guide-close:hover { |
||||
background-color: #E8E8E9; |
||||
} |
||||
.background-login-loading { |
||||
background: url(../../../img/login_loading.gif) no-repeat center center; |
||||
} |
||||
.background-plugin-need-update { |
||||
background: url(../../../img/icon_new.png) no-repeat center center; |
||||
} |
||||
.background-plugin-cant-use { |
||||
background: url(../../../img/icon_cantuse.png) no-repeat center center; |
||||
} |
||||
.background-plugin-is-disable { |
||||
background: url(../../../img/icon_disable.png) no-repeat center center; |
||||
} |
||||
.background-plugin-is-disable-new { |
||||
background: url(../../../img/icon_disable-new.png) no-repeat center center; |
||||
} |
||||
.background-plugin-selected { |
||||
background: url(../../../img/icon_marked.png) no-repeat center center; |
||||
} |
||||
.background-shop-title-close { |
||||
background: url(../../../img/icon_close40x40_normal.svg) no-repeat center center; |
||||
} |
||||
.background-dialog-confirm { |
||||
background: url(../../../img/warning.png) no-repeat center center; |
||||
background-size: contain; |
||||
} |
||||
.background-close-button { |
||||
background: url(../../../img/icon_close9x9_normal.png) no-repeat center center; |
||||
} |
||||
.background-close-button:hover { |
||||
background: url(../../../img/icon_close9x9_hover.png) no-repeat center center; |
||||
} |
||||
.designer-login-guide { |
||||
background: url(../../../img/guide/login_guide_en.png) no-repeat center center; |
||||
background-size: cover; |
||||
} |
||||
.designer-guide-login-button { |
||||
font-size: 14px; |
||||
color: white; |
||||
border-radius: 4px; |
||||
background-color: #3685F2; |
||||
} |
||||
|
@ -0,0 +1,57 @@
|
||||
.background-login-close { |
||||
color: white !important; |
||||
font-weight: bold; |
||||
font-size: 14px; |
||||
} |
||||
.background-guide-close { |
||||
background: url(../../../img/icon_install_normal.png) no-repeat center center; |
||||
background-size: cover; |
||||
width: 20px; |
||||
height: 20px; |
||||
cursor: pointer; |
||||
} |
||||
.background-guide-close:hover { |
||||
background-color: #E8E8E9; |
||||
} |
||||
.background-login-loading { |
||||
background: url(../../../img/login_loading.gif) no-repeat center center; |
||||
} |
||||
.background-plugin-need-update { |
||||
background: url(../../../img/icon_new.png) no-repeat center center; |
||||
} |
||||
.background-plugin-cant-use { |
||||
background: url(../../../img/icon_cantuse.png) no-repeat center center; |
||||
} |
||||
.background-plugin-is-disable { |
||||
background: url(../../../img/icon_disable.png) no-repeat center center; |
||||
} |
||||
.background-plugin-is-disable-new { |
||||
background: url(../../../img/icon_disable-new.png) no-repeat center center; |
||||
} |
||||
.background-plugin-selected { |
||||
background: url(../../../img/icon_marked.png) no-repeat center center; |
||||
} |
||||
.background-shop-title-close { |
||||
background: url(../../../img/icon_close40x40_normal.svg) no-repeat center center; |
||||
} |
||||
.background-dialog-confirm { |
||||
background: url(../../../img/warning.png) no-repeat center center; |
||||
background-size: contain; |
||||
} |
||||
.background-close-button { |
||||
background: url(../../../img/icon_close9x9_normal.png) no-repeat center center; |
||||
} |
||||
.background-close-button:hover { |
||||
background: url(../../../img/icon_close9x9_hover.png) no-repeat center center; |
||||
} |
||||
.designer-login-guide { |
||||
background: url(../../../img/guide/login_guide_en.png) no-repeat center center; |
||||
background-size: cover; |
||||
} |
||||
.designer-guide-login-button { |
||||
font-size: 14px; |
||||
color: white; |
||||
border-radius: 4px; |
||||
background-color: #3685F2; |
||||
} |
||||
|
@ -0,0 +1,57 @@
|
||||
.background-login-close { |
||||
color: white !important; |
||||
font-weight: bold; |
||||
font-size: 14px; |
||||
} |
||||
.background-guide-close { |
||||
background: url(../../../img/icon_install_normal.png) no-repeat center center; |
||||
background-size: cover; |
||||
width: 20px; |
||||
height: 20px; |
||||
cursor: pointer; |
||||
} |
||||
.background-guide-close:hover { |
||||
background-color: #E8E8E9; |
||||
} |
||||
.background-login-loading { |
||||
background: url(../../../img/login_loading.gif) no-repeat center center; |
||||
} |
||||
.background-plugin-need-update { |
||||
background: url(../../../img/icon_new.png) no-repeat center center; |
||||
} |
||||
.background-plugin-cant-use { |
||||
background: url(../../../img/icon_cantuse.png) no-repeat center center; |
||||
} |
||||
.background-plugin-is-disable { |
||||
background: url(../../../img/icon_disable.png) no-repeat center center; |
||||
} |
||||
.background-plugin-is-disable-new { |
||||
background: url(../../../img/icon_disable-new.png) no-repeat center center; |
||||
} |
||||
.background-plugin-selected { |
||||
background: url(../../../img/icon_marked.png) no-repeat center center; |
||||
} |
||||
.background-shop-title-close { |
||||
background: url(../../../img/icon_close40x40_normal.svg) no-repeat center center; |
||||
} |
||||
.background-dialog-confirm { |
||||
background: url(../../../img/warning.png) no-repeat center center; |
||||
background-size: contain; |
||||
} |
||||
.background-close-button { |
||||
background: url(../../../img/icon_close9x9_normal.png) no-repeat center center; |
||||
} |
||||
.background-close-button:hover { |
||||
background: url(../../../img/icon_close9x9_hover.png) no-repeat center center; |
||||
} |
||||
.designer-login-guide { |
||||
background: url(../../../img/guide/login_guide_en.png) no-repeat center center; |
||||
background-size: cover; |
||||
} |
||||
.designer-guide-login-button { |
||||
font-size: 14px; |
||||
color: white; |
||||
border-radius: 4px; |
||||
background-color: #3685F2; |
||||
} |
||||
|
@ -0,0 +1,57 @@
|
||||
.background-login-close { |
||||
color: white !important; |
||||
font-weight: bold; |
||||
font-size: 14px; |
||||
} |
||||
.background-guide-close { |
||||
background: url(../../../img/icon_install_normal.png) no-repeat center center; |
||||
background-size: cover; |
||||
width: 20px; |
||||
height: 20px; |
||||
cursor: pointer; |
||||
} |
||||
.background-guide-close:hover { |
||||
background-color: #E8E8E9; |
||||
} |
||||
.background-login-loading { |
||||
background: url(../../../img/login_loading.gif) no-repeat center center; |
||||
} |
||||
.background-plugin-need-update { |
||||
background: url(../../../img/icon_new.png) no-repeat center center; |
||||
} |
||||
.background-plugin-cant-use { |
||||
background: url(../../../img/icon_cantuse.png) no-repeat center center; |
||||
} |
||||
.background-plugin-is-disable { |
||||
background: url(../../../img/icon_disable.png) no-repeat center center; |
||||
} |
||||
.background-plugin-is-disable-new { |
||||
background: url(../../../img/icon_disable-new.png) no-repeat center center; |
||||
} |
||||
.background-plugin-selected { |
||||
background: url(../../../img/icon_marked.png) no-repeat center center; |
||||
} |
||||
.background-shop-title-close { |
||||
background: url(../../../img/icon_close40x40_normal.svg) no-repeat center center; |
||||
} |
||||
.background-dialog-confirm { |
||||
background: url(../../../img/warning.png) no-repeat center center; |
||||
background-size: contain; |
||||
} |
||||
.background-close-button { |
||||
background: url(../../../img/icon_close9x9_normal.png) no-repeat center center; |
||||
} |
||||
.background-close-button:hover { |
||||
background: url(../../../img/icon_close9x9_hover.png) no-repeat center center; |
||||
} |
||||
.designer-login-guide { |
||||
background: url(../../../img/guide/login_guide_zh.png) no-repeat center center; |
||||
background-size: cover; |
||||
} |
||||
.designer-guide-login-button { |
||||
font-size: 14px; |
||||
color: white; |
||||
border-radius: 4px; |
||||
background-color: #3685F2; |
||||
} |
||||
|
@ -0,0 +1,57 @@
|
||||
.background-login-close { |
||||
color: white !important; |
||||
font-weight: bold; |
||||
font-size: 14px; |
||||
} |
||||
.background-guide-close { |
||||
background: url(../../../img/icon_install_normal.png) no-repeat center center; |
||||
background-size: cover; |
||||
width: 20px; |
||||
height: 20px; |
||||
cursor: pointer; |
||||
} |
||||
.background-guide-close:hover { |
||||
background-color: #E8E8E9; |
||||
} |
||||
.background-login-loading { |
||||
background: url(../../../img/login_loading.gif) no-repeat center center; |
||||
} |
||||
.background-plugin-need-update { |
||||
background: url(../../../img/icon_new.png) no-repeat center center; |
||||
} |
||||
.background-plugin-cant-use { |
||||
background: url(../../../img/icon_cantuse.png) no-repeat center center; |
||||
} |
||||
.background-plugin-is-disable { |
||||
background: url(../../../img/icon_disable.png) no-repeat center center; |
||||
} |
||||
.background-plugin-is-disable-new { |
||||
background: url(../../../img/icon_disable-new.png) no-repeat center center; |
||||
} |
||||
.background-plugin-selected { |
||||
background: url(../../../img/icon_marked.png) no-repeat center center; |
||||
} |
||||
.background-shop-title-close { |
||||
background: url(../../../img/icon_close40x40_normal.svg) no-repeat center center; |
||||
} |
||||
.background-dialog-confirm { |
||||
background: url(../../../img/warning.png) no-repeat center center; |
||||
background-size: contain; |
||||
} |
||||
.background-close-button { |
||||
background: url(../../../img/icon_close9x9_normal.png) no-repeat center center; |
||||
} |
||||
.background-close-button:hover { |
||||
background: url(../../../img/icon_close9x9_hover.png) no-repeat center center; |
||||
} |
||||
.designer-login-guide { |
||||
background: url(../../../img/guide/login_guide_zh_TW.png) no-repeat center center; |
||||
background-size: cover; |
||||
} |
||||
.designer-guide-login-button { |
||||
font-size: 14px; |
||||
color: white; |
||||
border-radius: 4px; |
||||
background-color: #3685F2; |
||||
} |
||||
|
@ -0,0 +1,49 @@
|
||||
package com.fr.design.file; |
||||
|
||||
import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; |
||||
import com.fr.file.filetree.FileNode; |
||||
import org.junit.Assert; |
||||
import org.junit.Test; |
||||
|
||||
|
||||
/** |
||||
* |
||||
* @author Levy.Xie |
||||
* @version 11.0 |
||||
* Created by Levy.Xie on 2023/05/23 |
||||
*/ |
||||
public class FileOperationHelperTest { |
||||
|
||||
@Test |
||||
public void testIsSubDirectory() { |
||||
FileNode sourceNode1 = new FileNode("/usr/local/webroot/reportlets", true); |
||||
FileNode sourceNode2 = new FileNode("/usr/local/webroot/reportlets/demo", true); |
||||
FileNode sourceNode3 = new FileNode("/usr/local/webroot/reportlets/doc", true); |
||||
FileNode sourceNode4 = new FileNode("/usr/local/webroot/reportlets/doc/1.cpt", false); |
||||
FileNode sourceNode5 = new FileNode("/usr/local/webroot/reportlets/demo/test", true); |
||||
FileNode sourceNode6 = new FileNode("/usr/local/webroot/reportlets/demo/test", false); |
||||
FileNode sourceNode7 = new FileNode("/usr/local/webroot/reportlets/demo/test123", true); |
||||
FileNode sourceNode8 = new FileNode("/usr/local/webroot/reportlets/../reportlets/demo/test", true); |
||||
FileNode sourceNode9 = new FileNode("/usr/local/webroot/reportlets/../reportlets/demo/test/c", true); |
||||
|
||||
FileNode targetNode = new FileNode("/usr/local/webroot/reportlets/demo/test", true); |
||||
|
||||
Assert.assertTrue(FileOperationHelper.getInstance().isSubDirectoryOrSame(sourceNode1, targetNode)); |
||||
Assert.assertTrue(FileOperationHelper.getInstance().isSubDirectoryOrSame(sourceNode2, targetNode)); |
||||
Assert.assertFalse(FileOperationHelper.getInstance().isSubDirectoryOrSame(sourceNode3, targetNode)); |
||||
Assert.assertFalse(FileOperationHelper.getInstance().isSubDirectoryOrSame(sourceNode4, targetNode)); |
||||
Assert.assertTrue(FileOperationHelper.getInstance().isSubDirectoryOrSame(sourceNode5, targetNode)); |
||||
Assert.assertFalse(FileOperationHelper.getInstance().isSubDirectoryOrSame(sourceNode6, targetNode)); |
||||
Assert.assertFalse(FileOperationHelper.getInstance().isSubDirectoryOrSame(sourceNode7, targetNode)); |
||||
Assert.assertTrue(FileOperationHelper.getInstance().isSubDirectoryOrSame(sourceNode8, targetNode)); |
||||
Assert.assertFalse(FileOperationHelper.getInstance().isSubDirectoryOrSame(sourceNode9, targetNode)); |
||||
|
||||
|
||||
ExpandMutableTreeNode treeNode1 = new ExpandMutableTreeNode(sourceNode1); |
||||
ExpandMutableTreeNode treeNode2 = new ExpandMutableTreeNode(sourceNode2); |
||||
ExpandMutableTreeNode treeNode3 = new ExpandMutableTreeNode(sourceNode3); |
||||
ExpandMutableTreeNode treeNode4 = new ExpandMutableTreeNode(sourceNode4); |
||||
Assert.assertTrue(FileOperationHelper.getInstance().isSubDirectoryOrSame(new ExpandMutableTreeNode[]{treeNode1, treeNode2, treeNode3}, targetNode)); |
||||
Assert.assertFalse(FileOperationHelper.getInstance().isSubDirectoryOrSame(new ExpandMutableTreeNode[]{treeNode3, treeNode4}, targetNode)); |
||||
} |
||||
} |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 105 KiB |
After Width: | Height: | Size: 77 KiB |
@ -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"); |
||||
} |
||||
} |
@ -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"); |
||||
} |
||||
} |
@ -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"); |
||||
} |
||||
} |
@ -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; |
||||
|
||||
/** |
||||
* <p> 文本类组件移动端高级属性的定义面板,基础扩展可以直接继承此面板 |
||||
* <p> 往内部添加其他配置 |
||||
* |
||||
* @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; |
||||
} |
||||
} |
@ -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(); |
||||
} |
||||
} |
@ -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); |
||||
} |
||||
} |
@ -1,63 +0,0 @@
|
||||
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.MobileTextFieldInputSettingPane; |
||||
import com.fr.form.ui.TextEditor; |
||||
|
||||
import java.awt.BorderLayout; |
||||
|
||||
|
||||
public class ScanCodeMobileDefinePane extends MobileWidgetDefinePane { |
||||
|
||||
private XCreator xCreator; |
||||
private MobileTextFieldInputSettingPane settingPane; |
||||
|
||||
public ScanCodeMobileDefinePane(XCreator xCreator) { |
||||
this.xCreator = 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(); |
||||
} |
||||
|
||||
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); |
||||
this.bindListeners2Widgets(); |
||||
} |
||||
|
||||
@Override |
||||
public void update() { |
||||
MobileScanCodeAttr mobileScanCodeAttr = ((TextEditor) xCreator.toData()).getMobileScanCodeAttr(); |
||||
settingPane.updateBean(mobileScanCodeAttr); |
||||
DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified(); |
||||
} |
||||
|
||||
} |
@ -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); |
||||
} |
||||
} |
@ -0,0 +1,55 @@
|
||||
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.design.widget.ui.designer.mobile.component.MobileTextFieldInputSettingPane; |
||||
import com.fr.form.ui.TextEditor; |
||||
|
||||
import javax.swing.JPanel; |
||||
|
||||
/** |
||||
* 文本控件移动端属性 |
||||
* 输入方式: |
||||
* 输入框属性: |
||||
* |
||||
* @author hades |
||||
* @since 11.0 |
||||
* Created on 2018/11/27 |
||||
*/ |
||||
public class TextEditorMobileDefinePane extends BaseTextEditorMobileDefinePane { |
||||
/** |
||||
* 输入方式 |
||||
*/ |
||||
private MobileTextFieldInputSettingPane inputSettingPane; |
||||
|
||||
public TextEditorMobileDefinePane(XCreator xCreator) { |
||||
super(xCreator); |
||||
} |
||||
|
||||
@Override |
||||
protected void initSettingPane(JPanel container) { |
||||
inputSettingPane = new MobileTextFieldInputSettingPane(); |
||||
// textSettingPane = new MobileTextEditSettingPane();
|
||||
container.add(inputSettingPane); |
||||
// container.add(textSettingPane);
|
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void populate(FormDesigner designer) { |
||||
TextEditor textEditor = (TextEditor) getxCreator().toData(); |
||||
inputSettingPane.populateBean(textEditor.getMobileScanCodeAttr()); |
||||
// textSettingPane.populateBean(textEditor.getMobileTextEditAttr());
|
||||
this.bindListeners2Widgets(); |
||||
} |
||||
|
||||
@Override |
||||
public void update() { |
||||
TextEditor textEditor = (TextEditor) getxCreator().toData(); |
||||
inputSettingPane.updateBean(textEditor.getMobileScanCodeAttr()); |
||||
// textSettingPane.updateBean(textEditor.getMobileTextEditAttr());
|
||||
DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified(); |
||||
} |
||||
|
||||
} |
@ -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/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 |
||||
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()); |
||||
} |
||||
} |
@ -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/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 |
||||
protected boolean getClearDefaultState() { |
||||
return false; |
||||
} |
||||
|
||||
@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()); |
||||
} |
||||
} |
@ -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<MobileTextEditAttr> { |
||||
// 允许一键清空
|
||||
protected UICheckBox allowOneClickClear; |
||||
|
||||
public MobileTextEditSettingPane() { |
||||
initLayout(); |
||||
allowOneClickClear = new UICheckBox(Toolkit.i18nText("Fine-Design_Mobile_Allow_One_Click_Clear"), getClearDefaultState()); |
||||
this.add(allowOneClickClear, BorderLayout.NORTH); |
||||
} |
||||
|
||||
protected boolean getClearDefaultState() { |
||||
return true; |
||||
} |
||||
|
||||
protected void initLayout() { |
||||
VerticalFlowLayout verticalFlowLayout = new VerticalFlowLayout(FlowLayout.LEADING, 0, 5); |
||||
verticalFlowLayout.setAlignLeft(true); |
||||
this.setLayout(verticalFlowLayout); |
||||
} |
||||
|
||||
@Override |
||||
public void populateBean(MobileTextEditAttr ob) { |
||||
allowOneClickClear.setSelected(ob.isAllowOneClickClear() == null || ob.isAllowOneClickClear()); |
||||
} |
||||
|
||||
@Override |
||||
public MobileTextEditAttr updateBean() { |
||||
// do nothing
|
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public void updateBean(MobileTextEditAttr ob) { |
||||
ob.setAllowOneClickClear(allowOneClickClear.isSelected()); |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return null; |
||||
} |
||||
} |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 24 KiB |
@ -0,0 +1,41 @@
|
||||
package com.fr.design.widget.ui.mobile; |
||||
|
||||
import com.fr.design.foldablepane.UIExpandablePane; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.layout.FRGUIPaneFactory; |
||||
import com.fr.design.widget.mobile.WidgetMobilePane; |
||||
import com.fr.design.widget.ui.designer.mobile.component.MobileTextEditSettingPane; |
||||
import com.fr.form.ui.NumberEditor; |
||||
import com.fr.form.ui.Widget; |
||||
|
||||
import java.awt.BorderLayout; |
||||
|
||||
/** |
||||
* 数字控件移动端属性 |
||||
* |
||||
* @author Coral.Chen |
||||
* @since 11.0 |
||||
* Created on 2023/4/11 |
||||
*/ |
||||
public class NumberEditorMobilePane extends WidgetMobilePane { |
||||
private MobileTextEditSettingPane textSettingPane; |
||||
|
||||
@Override |
||||
protected void init() { |
||||
this.setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||
textSettingPane = new MobileTextEditSettingPane(); |
||||
this.add(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Advanced"), 280, 20, textSettingPane), BorderLayout.NORTH); |
||||
} |
||||
|
||||
@Override |
||||
public void populate(Widget widget) { |
||||
NumberEditor numberEditor = (NumberEditor) widget; |
||||
textSettingPane.populateBean(numberEditor.getMobileTextEditAttr()); |
||||
} |
||||
|
||||
@Override |
||||
public void update(Widget widget) { |
||||
NumberEditor numberEditor = (NumberEditor) widget; |
||||
textSettingPane.updateBean(numberEditor.getMobileTextEditAttr()); |
||||
} |
||||
} |
@ -0,0 +1,42 @@
|
||||
package com.fr.design.widget.ui.mobile; |
||||
|
||||
import com.fr.design.foldablepane.UIExpandablePane; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.layout.FRGUIPaneFactory; |
||||
import com.fr.design.widget.mobile.WidgetMobilePane; |
||||
import com.fr.design.widget.ui.designer.mobile.component.MobilePasswordEditSettingPane; |
||||
import com.fr.design.widget.ui.designer.mobile.component.MobileTextEditSettingPane; |
||||
import com.fr.form.ui.TextEditor; |
||||
import com.fr.form.ui.Widget; |
||||
|
||||
import java.awt.BorderLayout; |
||||
|
||||
/** |
||||
* 密码控件移动端属性 |
||||
* |
||||
* @author Coral.Chen |
||||
* @since 11.0 |
||||
* Created on 2023/4/11 |
||||
*/ |
||||
public class PasswordMobilePane extends WidgetMobilePane { |
||||
private MobileTextEditSettingPane textSettingPane; |
||||
|
||||
@Override |
||||
protected void init() { |
||||
this.setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||
textSettingPane = new MobilePasswordEditSettingPane(); |
||||
this.add(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Advanced"), 280, 20, textSettingPane), BorderLayout.NORTH); |
||||
} |
||||
|
||||
@Override |
||||
public void populate(Widget widget) { |
||||
TextEditor textEditor = (TextEditor) widget; |
||||
textSettingPane.populateBean(textEditor.getMobileTextEditAttr()); |
||||
} |
||||
|
||||
@Override |
||||
public void update(Widget widget) { |
||||
TextEditor textEditor = (TextEditor) widget; |
||||
textSettingPane.updateBean(textEditor.getMobileTextEditAttr()); |
||||
} |
||||
} |
@ -1,39 +0,0 @@
|
||||
package com.fr.design.widget.ui.mobile; |
||||
|
||||
import com.fr.base.mobile.MobileScanCodeAttr; |
||||
import com.fr.design.foldablepane.UIExpandablePane; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.layout.FRGUIPaneFactory; |
||||
import com.fr.design.widget.mobile.WidgetMobilePane; |
||||
import com.fr.design.widget.ui.designer.mobile.component.MobileTextFieldInputSettingPane; |
||||
import com.fr.form.ui.TextEditor; |
||||
import com.fr.form.ui.Widget; |
||||
|
||||
import java.awt.BorderLayout; |
||||
|
||||
|
||||
public class ScanCodeMobilePane extends WidgetMobilePane { |
||||
|
||||
private MobileTextFieldInputSettingPane settingPane; |
||||
|
||||
@Override |
||||
protected void init() { |
||||
this.setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||
settingPane = new MobileTextFieldInputSettingPane(); |
||||
this.add(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Advanced"), 280, 20, settingPane), BorderLayout.NORTH); |
||||
} |
||||
|
||||
@Override |
||||
public void populate(Widget widget) { |
||||
MobileScanCodeAttr mobileScanCodeAttr = ((TextEditor) widget).getMobileScanCodeAttr(); |
||||
settingPane.populateBean(mobileScanCodeAttr); |
||||
} |
||||
|
||||
@Override |
||||
public void update(Widget widget) { |
||||
MobileScanCodeAttr mobileScanCodeAttr = ((TextEditor) widget).getMobileScanCodeAttr(); |
||||
settingPane.updateBean(mobileScanCodeAttr); |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,42 @@
|
||||
package com.fr.design.widget.ui.mobile; |
||||
|
||||
import com.fr.design.foldablepane.UIExpandablePane; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.layout.FRGUIPaneFactory; |
||||
import com.fr.design.widget.mobile.WidgetMobilePane; |
||||
import com.fr.design.widget.ui.designer.mobile.component.MobileTextAreaSettingPane; |
||||
import com.fr.design.widget.ui.designer.mobile.component.MobileTextEditSettingPane; |
||||
import com.fr.form.ui.TextEditor; |
||||
import com.fr.form.ui.Widget; |
||||
|
||||
import java.awt.BorderLayout; |
||||
|
||||
/** |
||||
* 文本域控件移动端属性 |
||||
* |
||||
* @author Coral.Chen |
||||
* @since 11.0 |
||||
* Created on 2023/4/11 |
||||
*/ |
||||
public class TextAreaMobilePane extends WidgetMobilePane { |
||||
private MobileTextEditSettingPane textSettingPane; |
||||
|
||||
@Override |
||||
protected void init() { |
||||
this.setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||
textSettingPane = new MobileTextAreaSettingPane(); |
||||
this.add(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Advanced"), 280, 20, textSettingPane), BorderLayout.NORTH); |
||||
} |
||||
|
||||
@Override |
||||
public void populate(Widget widget) { |
||||
TextEditor textEditor = (TextEditor) widget; |
||||
textSettingPane.populateBean(textEditor.getMobileTextEditAttr()); |
||||
} |
||||
|
||||
@Override |
||||
public void update(Widget widget) { |
||||
TextEditor textEditor = (TextEditor) widget; |
||||
textSettingPane.updateBean(textEditor.getMobileTextEditAttr()); |
||||
} |
||||
} |
@ -0,0 +1,59 @@
|
||||
package com.fr.design.widget.ui.mobile; |
||||
|
||||
import com.fr.design.foldablepane.UIExpandablePane; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.layout.FRGUIPaneFactory; |
||||
import com.fr.design.widget.mobile.WidgetMobilePane; |
||||
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 com.fr.form.ui.Widget; |
||||
|
||||
import javax.swing.JPanel; |
||||
import java.awt.BorderLayout; |
||||
|
||||
/** |
||||
* 文本控件移动端属性面板 |
||||
* |
||||
* @author Coral.Chen |
||||
* @since 11.0 |
||||
* Created on 2023/4/12 |
||||
*/ |
||||
public class TextEditorMobilePane extends WidgetMobilePane { |
||||
|
||||
/** |
||||
* 输入方式 |
||||
*/ |
||||
private MobileTextFieldInputSettingPane settingPane; |
||||
/** |
||||
* 输入框属性配置 |
||||
*/ |
||||
private MobileTextEditSettingPane textSettingPane; |
||||
|
||||
@Override |
||||
protected void init() { |
||||
JPanel container = FRGUIPaneFactory.createVerticalFlowLayout_S_Pane(true); |
||||
this.setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||
settingPane = new MobileTextFieldInputSettingPane(); |
||||
textSettingPane = new MobileTextEditSettingPane(); |
||||
container.add(settingPane); |
||||
// container.add(textSettingPane);
|
||||
this.add(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Advanced"), 280, 20, container), BorderLayout.NORTH); |
||||
} |
||||
|
||||
@Override |
||||
public void populate(Widget widget) { |
||||
TextEditor textEditor = (TextEditor) widget; |
||||
settingPane.populateBean(textEditor.getMobileScanCodeAttr()); |
||||
textSettingPane.populateBean(textEditor.getMobileTextEditAttr()); |
||||
} |
||||
|
||||
@Override |
||||
public void update(Widget widget) { |
||||
TextEditor textEditor = (TextEditor) widget; |
||||
settingPane.updateBean(textEditor.getMobileScanCodeAttr()); |
||||
textSettingPane.updateBean(textEditor.getMobileTextEditAttr()); |
||||
} |
||||
|
||||
|
||||
} |
Before Width: | Height: | Size: 297 KiB After Width: | Height: | Size: 298 KiB |
Before Width: | Height: | Size: 946 KiB After Width: | Height: | Size: 949 KiB |
Before Width: | Height: | Size: 949 KiB After Width: | Height: | Size: 949 KiB |
After Width: | Height: | Size: 946 KiB |
After Width: | Height: | Size: 564 KiB |
After Width: | Height: | Size: 297 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 352 KiB |