* commit '5e503bfbdfbde77fc79cc9c6fab01f8da47b37eb': REPORT-93554 更新Immutable类名 REPORT-93554 控件主题支持——报表支撑 REPORT-89967 控件默认值不对 REPORT-94530 【二开接口】转换用户名接口--调整一下接口位置 REPORT-94530 【二开接口】转换用户名接口--格式调整 REPORT-94530 【二开接口】转换用户名接口--注释 REPORT-94530 【二开接口】转换用户名接口--注释 REPORT-94530 【二开接口】转换用户名接口 REPORT-94530 【二开接口】转换用户名接口 REPORT-94530 【二开接口】转换用户名接口 REPORT-92757 【国际化】FR海外版本去除中文 REPORT-95494 frm停售-设计器变更 过一下规范 REPORT-95494 frm停售-设计器变更 过一下规范 REPORT-95494 frm停售-设计器变更 过一下规范 REPORT-95494 frm停售-设计器变更 REPORT-92757 【国际化】FR海外版本去除中文 REPORT-92353 fix注释 REPORT-92353 文本类控件功能增强 【问题原因】文本类控件新增配置属性 【改动思路】重新上传回退代码bugfix/11.0
@ -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); |
||||||
|
} |
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; |
||||||
|
} |
||||||
|
|
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,56 @@ |
|||||||
|
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.MobileTextEditSettingPane; |
||||||
|
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) { |
||||||
|
super.populate(designer); |
||||||
|
TextEditor textEditor = (TextEditor) getxCreator().toData(); |
||||||
|
inputSettingPane.populateBean(textEditor.getMobileScanCodeAttr()); |
||||||
|
this.bindListeners2Widgets(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void update() { |
||||||
|
super.update(); |
||||||
|
TextEditor textEditor = (TextEditor) getxCreator().toData(); |
||||||
|
inputSettingPane.updateBean(textEditor.getMobileScanCodeAttr()); |
||||||
|
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 |
After Width: | Height: | Size: 352 KiB |
Before Width: | Height: | Size: 161 KiB After Width: | Height: | Size: 161 KiB |