forked from fanruan/design
Browse Source
* commit '59a0387289e5d1aed7b4d9a951df7bf0c04f2cf1': (127 commits) 无jira任务,屏蔽组件隐藏新功能 无JIRA任务, release设计器支持1.7jdk REPORT-2052 漏传 超级链接中,图表链接正常显示。 无JIRA任务 国际化 无jira任务,提交国际化 分两行显示checkbox和输入框,适应国际化情况。 分两行显示checkbox和输入框,适应国际化情况。 8.0插件启用禁用重启设计器confirm对话框保留,在9.0删除 REPORT-1957,并且修改参数说明资源文件的编码方式为utf-8,加载资源时使用utf-8编码 REPORT-1858 frm组件隐藏 分两行显示checkbox和输入框,适应国际化情况。 REPORT-1980 换成listmap维持原有顺序 “REPORT-2030删除designer对话框” 无任务 调整代码 editlabel not append origin label 补上句号 国际化少了句号 无JIRA任务 tab布局字体、字号无法修改,release同步到dev 修改国际化文件 ...master
richie
8 years ago
152 changed files with 3017 additions and 1690 deletions
@ -1 +1 @@ |
|||||||
package com.fr.design.widget.ui;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
import com.fr.general.Inter;
import javax.swing.*;
import java.awt.*;
/**
design.gui.icheckbox.UICheckBox;
design.gui.icheckbox.UICheckBox;
design.gui.icheckbox.UICheckBox;
design.gui.icheckbox.UICheckBox;
import com.fr.design.layout.FRGUIPaneFactory;
design.gui.icheckbox.UICheckBox;
import com.fr.design.utils.gui.GUICoreUtils;
design.gui.icheckbox.UICheckBox;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
design.gui.icheckbox.UICheckBox;
import com.fr.general.Inter;
design.gui.icheckbox.UICheckBox;
design.gui.icheckbox.UICheckBox;
import javax.swing.*;
design.gui.icheckbox.UICheckBox;
import java.awt.*;
design.gui.icheckbox.UICheckBox;
/**
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.FRGUIPaneFactory;
design.gui.icheckbox.UICheckBox;
contentPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.gui.GUICoreUtils;
this.customDataCheckBox.setPreferredSize(new Dimension(100, 30));
getValidatePane().add(GUICoreUtils.createFlowPane(new JComponent[]{this.customDataCheckBox}, FlowLayout.LEFT, 5));
JPanel otherContentPane = this.setForthContentPane();
if (otherContentPane != null) {
contentPane.add(otherContentPane,BorderLayout.CENTER);
}
return contentPane;
}
protected abstract JPanel setForthContentPane();
protected void populateSubWritableRepeatEditorBean(T e) {
this.customDataCheckBox.setSelected(e.isCustomData());
populateSubCustomWritableRepeatEditorBean(e);
}
protected abstract void populateSubCustomWritableRepeatEditorBean(T e);
protected T updateSubWritableRepeatEditorBean() {
T e = updateSubCustomWritableRepeatEditorBean();
e.setCustomData(this.customDataCheckBox.isSelected());
return e;
}
protected abstract T updateSubCustomWritableRepeatEditorBean();
} |
package com.fr.design.widget.ui;
import com.fr.base.GraphHelper;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
import com.fr.general.Inter;
import com.fr.design.utils.gui.GUICoreUtils;
design.gui.icheckbox.UICheckBox;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.Inter;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.design.utils.gui.GUICoreUtils;
import javax.swing.*;
import com.fr.design.utils.gui.GUICoreUtils;
import java.awt.*;
import com.fr.design.utils.gui.GUICoreUtils;
/**
import com.fr.design.utils.gui.GUICoreUtils;
design.gui.icheckbox.UICheckBox;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
design.gui.icheckbox.UICheckBox;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.gui.GUICoreUtils;
design.gui.icheckbox.UICheckBox;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
import com.fr.general.Inter;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
import javax.swing.*;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
import java.awt.*;
import com.fr.form.ui.CustomWriteAbleRepeatEditor;
/**
import com.fr.general.Inter;
import com.fr.general.Inter;
design.gui.icheckbox.UICheckBox;
import com.fr.general.Inter;
import com.fr.design.layout.FRGUIPaneFactory;
));
getValidatePane().add(GUICoreUtils.createFlowPane(new JComponent[]{this.customDataCheckBox}, FlowLayout.LEFT, 5));
JPanel otherContentPane = this.setForthContentPane();
if (otherContentPane != null) {
contentPane.add(otherContentPane,BorderLayout.CENTER);
}
return contentPane;
}
protected abstract JPanel setForthContentPane();
protected void populateSubWritableRepeatEditorBean(T e) {
this.customDataCheckBox.setSelected(e.isCustomData());
populateSubCustomWritableRepeatEditorBean(e);
}
protected abstract void populateSubCustomWritableRepeatEditorBean(T e);
protected T updateSubWritableRepeatEditorBean() {
T e = updateSubCustomWritableRepeatEditorBean();
e.setCustomData(this.customDataCheckBox.isSelected());
return e;
}
protected abstract T updateSubCustomWritableRepeatEditorBean();
} |
@ -0,0 +1,22 @@ |
|||||||
|
package com.fr.design.fun; |
||||||
|
|
||||||
|
import com.fr.data.impl.DBTableData; |
||||||
|
import com.fr.design.actions.UpdateAction; |
||||||
|
import com.fr.stable.fun.mark.Immutable; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by xiaxiang on 2017/1/15. |
||||||
|
*/ |
||||||
|
public interface DBTableDataMenuHandler extends Immutable { |
||||||
|
String MARK_STRING = "DBTableDataMenuHandler"; |
||||||
|
|
||||||
|
int CURRENT_LEVEL = 1; |
||||||
|
|
||||||
|
UpdateAction createQueryAction(); |
||||||
|
|
||||||
|
void populate(DBTableData dbTableData); |
||||||
|
|
||||||
|
DBTableData update(); |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.fr.design.fun; |
||||||
|
|
||||||
|
import com.fr.file.FILE; |
||||||
|
import com.fr.stable.fun.mark.Immutable; |
||||||
|
|
||||||
|
/** |
||||||
|
* 指定设计器启动时默认打开的文件 |
||||||
|
* Created by rinoux on 2016/12/16. |
||||||
|
*/ |
||||||
|
public interface DesignerStartOpenFileProcessor extends Immutable { |
||||||
|
|
||||||
|
int CURRENT_LEVEL = 1; |
||||||
|
|
||||||
|
String XML_TAG = "DesignerStartOpenFileProcessor"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 显示需要打开的报表文件 |
||||||
|
*/ |
||||||
|
FILE fileToShow(); |
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
package com.fr.design.fun.impl; |
||||||
|
|
||||||
|
import com.fr.data.impl.DBTableData; |
||||||
|
import com.fr.design.actions.UpdateAction; |
||||||
|
import com.fr.design.fun.DBTableDataMenuHandler; |
||||||
|
import com.fr.stable.fun.mark.API; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by xiaxiang on 2017/1/15. |
||||||
|
*/ |
||||||
|
@API(level = DBTableDataMenuHandler.CURRENT_LEVEL) |
||||||
|
public abstract class AbstractDBTableDataMenuHandler implements DBTableDataMenuHandler { |
||||||
|
public int currentAPILevel() { |
||||||
|
return CURRENT_LEVEL; |
||||||
|
} |
||||||
|
|
||||||
|
public int layerIndex() { |
||||||
|
return DEFAULT_LAYER_INDEX; |
||||||
|
} |
||||||
|
|
||||||
|
public UpdateAction createQueryAction() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public DBTableData update() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populate(DBTableData dbTableData) { |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,18 @@ |
|||||||
|
package com.fr.design.fun.impl; |
||||||
|
|
||||||
|
import com.fr.design.fun.DesignerStartOpenFileProcessor; |
||||||
|
import com.fr.stable.fun.mark.API; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by rinoux on 2016/12/16. |
||||||
|
*/ |
||||||
|
@API(level = DesignerStartOpenFileProcessor.CURRENT_LEVEL) |
||||||
|
public abstract class AbstractDesignerStartOpenFileProcessor implements DesignerStartOpenFileProcessor { |
||||||
|
public int currentAPILevel() { |
||||||
|
return DesignerStartOpenFileProcessor.CURRENT_LEVEL; |
||||||
|
} |
||||||
|
|
||||||
|
public int layerIndex() { |
||||||
|
return DEFAULT_LAYER_INDEX; |
||||||
|
} |
||||||
|
} |
After Width: | Height: | Size: 432 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 3.6 KiB |
@ -1 +1 @@ |
|||||||
΅±Η°Φ΅ |
当前值 |
@ -1 +1 @@ |
|||||||
当前的页数。 |
当前的页数。 |
@ -1 +1 @@ |
|||||||
总页数。 |
总页数。 |
@ -1 +1 @@ |
|||||||
使用权限时保存角色的参数 |
使用权限时保存角色的参数 |
@ -1 +1 @@ |
|||||||
使用权限时保存用户名的参数 |
使用权限时保存用户名的参数 |
@ -1,3 +1 @@ |
|||||||
使用权限时,$fr_userposition就是部门角色, |
使用权限时,$fr_userposition就是部门角色,格式如:{"jobTitle":"销售经理","departments":"销售"},部门角色是以部门和职务组成的数组。 |
||||||
格式如:{"departments":"销售","jobTitle":"销售经理"}, |
|
||||||
部门角色是以部门和职务组成的数组。 |
|
@ -1 +1 @@ |
|||||||
NOFILTER是一个与任意值比较都为true的参数。 |
NOFILTER是一个与任意值比较都为true的参数。 |
@ -1 +1 @@ |
|||||||
空值的参数。 |
空值的参数。 |
@ -1,3 +1 @@ |
|||||||
contextPath是指绝对路径的服务器别名,即虚拟目录. |
contextPath是指绝对路径的服务器别名,即虚拟目录.假如访问:http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt,contextPath是/WebReport |
||||||
假如访问:http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt, |
|
||||||
contextPath是/WebReport |
|
@ -1 +1 @@ |
|||||||
当前报表。 |
当前报表。 |
@ -1,3 +1 @@ |
|||||||
表单名字 |
表单名字假如访问:http://localhost:8080/WebReport/ReportServer?formlet=Form1.frm,formName就是Form1.frm |
||||||
假如访问:http://localhost:8080/WebReport/ReportServer?formlet=Form1.frm, |
|
||||||
formName就是Form1.frm |
|
@ -1 +1 @@ |
|||||||
提交入库事件的返回信息。
fr_submitinfo.success记录成功与否
fr_submitinfo.failinfo简单记录出错信息
|
提交入库事件的返回信息。fr_submitinfo.success记录成功与否fr_submitinfo.failinfo简单记录出错信息 |
@ -1,3 +1 @@ |
|||||||
报表名字 |
报表名字假如访问:http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt,reportName就是WorkBook1.cpt |
||||||
假如访问:http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt, |
|
||||||
reportName就是WorkBook1.cpt |
|
@ -1,3 +1 @@ |
|||||||
serverName,是指服务器地址或名称. |
serverName,是指服务器地址或名称.假如访问:http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt,serverName指的是:localhost,即访问机子的IP |
||||||
假如访问:http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt, |
|
||||||
serverName指的是:localhost,即访问机子的IP |
|
@ -1 +1 @@ |
|||||||
serverPort指的是访问的端口 |
serverPort指的是访问的端口 |
@ -1,3 +1 @@ |
|||||||
serverSchema,是指协议名称. |
serverSchema,是指协议名称.假如访问:http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt,serverSchema指的是:http |
||||||
假如访问:http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt, |
|
||||||
serverSchema指的是:http |
|
@ -1,3 +1 @@ |
|||||||
serverURL是指访问服务的URL |
serverURL是指访问服务的URL假如访问:http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt,serverURL就是http://localhost:8080 |
||||||
假如访问:http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt, |
|
||||||
serverURL就是http://localhost:8080 |
|
@ -1,2 +1 @@ |
|||||||
假如访问:http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt, |
假如访问:http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt,servletURL指的是:/WebReport/ReportServer |
||||||
servletURL指的是:/WebReport/ReportServer |
|
@ -1,4 +1 @@ |
|||||||
SessionID属性是返回用户会话的标识。 |
SessionID属性是返回用户会话的标识。在创建会话时,服务器会为每一个会话生成一个单独的标识,会话标识以长整形数据类型返回。SessionID等于本次会话ID的记录,SessionID 多数情况是用于WEB页面的统计。 |
||||||
在创建会话时,服务器会为每一个会话生成一个单独的标识, |
|
||||||
会话标识以长整形数据类型返回。SessionID等于本次会话ID的记录, |
|
||||||
SessionID 多数情况是用于WEB页面的统计。 |
|
@ -1 +1 @@ |
|||||||
The current value |
The current value |
@ -1 +1 @@ |
|||||||
Parameter of user authority |
Parameter of user authority |
@ -1 +1 @@ |
|||||||
Parameter of username |
Parameter of username |
@ -1 +1 @@ |
|||||||
department role of user |
department role of user |
@ -1 +1 @@ |
|||||||
The result is aways true when NOFILTER is compared with any other values. |
The result is aways true when NOFILTER is compared with any other values. |
@ -1 +1 @@ |
|||||||
absolute path of the server
http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt£¬
contextPath is /WebReport |
absolute path of the serverhttp://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt,contextPath is /WebReport |
@ -1,3 +1 @@ |
|||||||
form name |
form namehttp://localhost:8080/WebReport/ReportServer?formlet=Form1.frm,formName is Form1.frm |
||||||
http://localhost:8080/WebReport/ReportServer?formlet=Form1.frm£¬ |
|
||||||
formName is Form1.frm |
|
@ -1 +1 @@ |
|||||||
callback status of form submit
contains fr_submitinfo.success and fr_submitinfo.failinfo |
callback status of form submitcontains fr_submitinfo.success and fr_submitinfo.failinfo |
@ -1,3 +1 @@ |
|||||||
report name |
report namehttp://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt,reportName is WorkBook1.cpt |
||||||
http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt£¬ |
|
||||||
reportName is WorkBook1.cpt |
|
@ -1,3 +1 @@ |
|||||||
address or name of the server |
address or name of the serverhttp://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt,serverName means localhost |
||||||
http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt£¬ |
|
||||||
serverName means localhost |
|
@ -1,3 +1 @@ |
|||||||
serverSchema |
serverSchemahttp://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt,serverSchema is http |
||||||
http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt£¬ |
|
||||||
serverSchema is http |
|
@ -1,3 +1 @@ |
|||||||
URL of the server |
URL of the serverhttp://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt,serverURL is http://localhost:8080 |
||||||
http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt£¬ |
|
||||||
serverURL is http://localhost:8080 |
|
@ -1,2 +1 @@ |
|||||||
http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt£¬ |
http://localhost:8080/WebReport/ReportServer?reportlet=WorkBook1.cpt,servletURL is /WebReport/ReportServer |
||||||
servletURL is /WebReport/ReportServer |
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,53 @@ |
|||||||
|
package com.fr.design.style.background; |
||||||
|
|
||||||
|
import com.fr.design.layout.FRGUIPaneFactory; |
||||||
|
import com.fr.general.Background; |
||||||
|
import com.fr.general.Inter; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by ibm on 2017/1/5. |
||||||
|
*/ |
||||||
|
public class BackgroundButtonPane extends BackgroundPane { |
||||||
|
|
||||||
|
|
||||||
|
public BackgroundButtonPane() { |
||||||
|
super(); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initTabPane() { |
||||||
|
int index = 0; |
||||||
|
for (Class<? extends Background> key : BackgroundFactory.buttonKindsOfKey()) { |
||||||
|
BackgroundUIWrapper wrapper = BackgroundFactory.getButtonWrapper(key); |
||||||
|
wrapper.setIndex(index++); |
||||||
|
tabbedPane.addTab(Inter.getLocText(wrapper.getTitle()), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
protected BackgroundUIWrapper getBackgroundUIWrapper(Background background) { |
||||||
|
return BackgroundFactory.getButtonWrapper(background == null ? null : background.getClass()); |
||||||
|
} |
||||||
|
|
||||||
|
protected BackgroundDetailPane getTabItemPane(Background background, int index) { |
||||||
|
BackgroundDetailPane quickPane = cacheMap.get(index); |
||||||
|
if (quickPane == null) { |
||||||
|
quickPane = BackgroundFactory.createButtonIfAbsent(background == null ? null : background.getClass()); |
||||||
|
quickPane.addChangeListener(backgroundChangeListener); |
||||||
|
cacheMap.put(index, quickPane); |
||||||
|
} |
||||||
|
tabbedPane.setComponentAt(index, quickPane); |
||||||
|
tabbedPane.setSelectedIndex(index); |
||||||
|
return quickPane; |
||||||
|
} |
||||||
|
|
||||||
|
protected BackgroundDetailPane getTabItemPaneByIndex(int index) { |
||||||
|
BackgroundDetailPane quickPane = cacheMap.get(index); |
||||||
|
if (quickPane == null) { |
||||||
|
quickPane = BackgroundFactory.createButtonIfAbsent(index); |
||||||
|
tabbedPane.setComponentAt(index, quickPane); |
||||||
|
cacheMap.put(index, quickPane); |
||||||
|
quickPane.addChangeListener(backgroundChangeListener); |
||||||
|
} |
||||||
|
return quickPane; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,79 @@ |
|||||||
|
package com.fr.design.style.background.impl; |
||||||
|
|
||||||
|
import com.fr.base.Style; |
||||||
|
import com.fr.base.background.ImageBackground; |
||||||
|
import com.fr.design.gui.ibutton.UIButton; |
||||||
|
import com.fr.general.Background; |
||||||
|
import com.fr.general.Inter; |
||||||
|
import com.fr.stable.Constants; |
||||||
|
import javax.swing.*; |
||||||
|
import java.awt.*; |
||||||
|
import java.awt.event.ActionEvent; |
||||||
|
import java.awt.event.ActionListener; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by ibm on 2017/1/5. |
||||||
|
*/ |
||||||
|
public class ImageButtonBackgroundPane extends ImageBackgroundPane { |
||||||
|
private UIButton chooseButton; |
||||||
|
private UIButton clearButton; |
||||||
|
|
||||||
|
public ImageButtonBackgroundPane(){ |
||||||
|
super(); |
||||||
|
Style imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_CENTER); |
||||||
|
previewPane.setImageStyle(imageStyle); |
||||||
|
} |
||||||
|
|
||||||
|
public JPanel initSelectFilePane(){ |
||||||
|
|
||||||
|
JPanel choosePane = new JPanel(new BorderLayout(0, 10)); |
||||||
|
choosePane.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); |
||||||
|
JPanel choosePane1 = new JPanel(new BorderLayout(0, 10)); |
||||||
|
initButton(); |
||||||
|
|
||||||
|
choosePane.add(chooseButton, BorderLayout.NORTH); |
||||||
|
|
||||||
|
choosePane1.add(clearButton,BorderLayout.NORTH); |
||||||
|
choosePane.add(choosePane1,BorderLayout.CENTER); |
||||||
|
|
||||||
|
imageSizeLabel.setHorizontalAlignment(SwingConstants.CENTER); |
||||||
|
choosePane1.add(imageSizeLabel,BorderLayout.CENTER); |
||||||
|
this.add(choosePane,BorderLayout.EAST); |
||||||
|
|
||||||
|
return choosePane; |
||||||
|
} |
||||||
|
|
||||||
|
private void initButton() { |
||||||
|
chooseButton = new UIButton(Inter.getLocText("FR-Designer_Background_Image_Select")); |
||||||
|
chooseButton.addActionListener(selectPictureActionListener); |
||||||
|
clearButton = new UIButton(Inter.getLocText("FR-Designer_Background_Clear")); |
||||||
|
clearButton.addActionListener(new ActionListener() { |
||||||
|
public void actionPerformed(ActionEvent e) { |
||||||
|
previewPane.setImage(null); |
||||||
|
previewPane.repaint(); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
public void imageStyleRepaint(){ |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public void populate(Background background) { |
||||||
|
if(background != null && background instanceof ImageBackground){ |
||||||
|
ImageBackground imageBackground = (ImageBackground) background; |
||||||
|
if(imageBackground.getImage() != null) { |
||||||
|
previewPane.setImage(imageBackground.getImage()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public Background update() { |
||||||
|
if(previewPane.getImage() == null) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
return new ImageBackground(previewPane.getImage()); |
||||||
|
} |
||||||
|
} |
@ -1,56 +1,192 @@ |
|||||||
package com.fr.design.style.color; |
package com.fr.design.style.color; |
||||||
|
|
||||||
|
import com.fr.file.XMLFileManager; |
||||||
|
|
||||||
|
|
||||||
|
import com.fr.base.FRContext; |
||||||
|
import com.fr.cluster.rpc.RPC; |
||||||
|
import com.fr.file.BaseClusterHelper; |
||||||
|
import com.fr.general.ComparatorUtils; |
||||||
|
import com.fr.general.GeneralContext; |
||||||
|
import com.fr.stable.EnvChangedListener; |
||||||
|
import com.fr.stable.xml.XMLPrintWriter; |
||||||
|
import com.fr.stable.xml.XMLTools; |
||||||
|
import com.fr.stable.xml.XMLableReader; |
||||||
|
import com.fr.general.FRLogger; |
||||||
|
|
||||||
import java.awt.Color; |
import java.awt.Color; |
||||||
import java.util.ArrayList; |
import java.util.ArrayList; |
||||||
import java.util.List; |
import java.util.List; |
||||||
|
import java.io.InputStream; |
||||||
|
|
||||||
/** |
/** |
||||||
* 最近使用颜色 |
* 最近使用颜色 |
||||||
* @author focus |
|
||||||
* |
* |
||||||
|
* @author focus |
||||||
*/ |
*/ |
||||||
public class ColorSelectConfigManager{ |
public class ColorSelectConfigManager extends XMLFileManager implements ColorSelectConfigManagerProvider { |
||||||
|
|
||||||
// 最近使用的颜色个数
|
// 最近使用的颜色个数
|
||||||
private int colorNums = 20; |
private int colorNums = 20; |
||||||
// 最近使用颜色
|
|
||||||
private List<Color> colors; |
private static ColorSelectConfigManagerProvider configManager = null; |
||||||
|
private static ColorSelectConfigManager colorSelectConfigManager = null; |
||||||
private static ColorSelectConfigManager colorSelectConfigManager = null; |
private boolean init = true; |
||||||
|
// 最近使用颜色
|
||||||
public Color[] getColors() { |
private List<Color> colors = new ArrayList<Color>(); |
||||||
if(colors == null){ |
private static final String RECENT_COLOR_TAG = "RecentColors"; |
||||||
colors = new ArrayList<Color>(); |
private static final String COLOR_TAG = "Color"; |
||||||
} |
|
||||||
return colors.toArray(new Color[colors.size()]); |
static { |
||||||
} |
GeneralContext.addEnvChangedListener(new EnvChangedListener() { |
||||||
|
public void envChanged() { |
||||||
public int getColorNum() { |
ColorSelectConfigManager.envChanged(); |
||||||
return colorNums; |
} |
||||||
} |
}); |
||||||
public void setColorNum(int colorNums) { |
} |
||||||
this.colorNums = colorNums; |
|
||||||
} |
private static void envChanged() { |
||||||
|
configManager = null; |
||||||
public synchronized static ColorSelectConfigManager getInstance() { |
} |
||||||
if (colorSelectConfigManager == null) { |
|
||||||
colorSelectConfigManager = new ColorSelectConfigManager(); |
public Color[] getColors() { |
||||||
} |
|
||||||
return colorSelectConfigManager; |
//初次打开软件时从xml文件中获取历史颜色信息
|
||||||
} |
if (init) { |
||||||
|
ColorSelectConfigManagerProvider manager = ColorSelectConfigManager.getProviderInstance(); |
||||||
/** |
this.colors = manager.getColorsFromFile(); |
||||||
* 添加颜色到最近使用队列中 |
init = false; |
||||||
* |
} |
||||||
* @param color 颜色 |
if (colors == null) { |
||||||
* |
colors = new ArrayList<Color>(); |
||||||
*/ |
} |
||||||
public void addToColorQueue(Color color){ |
return colors.toArray(new Color[colors.size()]); |
||||||
// 过滤重复的最近使用颜色
|
} |
||||||
// 因为有个后进先出的问题,最近使用的颜色需要放到最前面所以没用set
|
|
||||||
if(colors.contains(color)){ |
public int getColorNum() { |
||||||
colors.remove(color); |
return colorNums; |
||||||
} |
} |
||||||
colors.add(color); |
|
||||||
} |
public void setColorNum(int colorNums) { |
||||||
} |
this.colorNums = colorNums; |
||||||
|
} |
||||||
|
|
||||||
|
public synchronized static ColorSelectConfigManager getInstance() { |
||||||
|
if (colorSelectConfigManager == null) { |
||||||
|
colorSelectConfigManager = new ColorSelectConfigManager(); |
||||||
|
} |
||||||
|
return colorSelectConfigManager; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 添加颜色到最近使用队列中 |
||||||
|
* |
||||||
|
* @param color 颜色 |
||||||
|
*/ |
||||||
|
public void addToColorQueue(Color color) { |
||||||
|
// 过滤重复的最近使用颜色
|
||||||
|
// 因为有个后进先出的问题,最近使用的颜色需要放到最前面所以没用set
|
||||||
|
if (colors.contains(color)) { |
||||||
|
colors.remove(color); |
||||||
|
} |
||||||
|
colors.add(color); |
||||||
|
|
||||||
|
/*@author yaohwu*/ |
||||||
|
//将历史颜色信息保存到xml文件中去
|
||||||
|
ColorSelectConfigManagerProvider manager = ColorSelectConfigManager.getProviderInstance(); |
||||||
|
if (colors != null && !colors.isEmpty()) { |
||||||
|
manager.setColorsToFile(colors); |
||||||
|
} |
||||||
|
try { |
||||||
|
FRContext.getCurrentEnv().writeResource(manager); |
||||||
|
} catch (Exception e) { |
||||||
|
FRLogger.getLogger().error(e.getMessage()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 读取配置文件流 |
||||||
|
* |
||||||
|
* @param input 流 |
||||||
|
* @throws Exception 异常 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void readFromInputStream(InputStream input) throws Exception { |
||||||
|
ColorSelectConfigManager manager = new ColorSelectConfigManager(); |
||||||
|
XMLTools.readInputStreamXML(manager, input); |
||||||
|
configManager = manager; |
||||||
|
FRContext.getCurrentEnv().writeResource(configManager); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 获取配置管理接口 |
||||||
|
* |
||||||
|
* @return 配置管理接口ConfigManagerProvider |
||||||
|
*/ |
||||||
|
public synchronized static ColorSelectConfigManagerProvider getProviderInstance() { |
||||||
|
if (configManager == null) { |
||||||
|
if (isClusterMember()) { |
||||||
|
return configManager; |
||||||
|
} |
||||||
|
configManager.readXMLFile(); |
||||||
|
} |
||||||
|
return configManager; |
||||||
|
} |
||||||
|
|
||||||
|
private synchronized static boolean isClusterMember() { |
||||||
|
switch (BaseClusterHelper.getClusterState()) { |
||||||
|
case LEADER: |
||||||
|
configManager = new ColorSelectConfigManager(); |
||||||
|
RPC.registerSkeleton(configManager); |
||||||
|
return false; |
||||||
|
case MEMBER: |
||||||
|
String ip = BaseClusterHelper.getMainServiceIP(); |
||||||
|
configManager = (ColorSelectConfigManagerProvider) RPC.getProxy(ColorSelectConfigManager.class, ip); |
||||||
|
return true; |
||||||
|
default: |
||||||
|
configManager = new ColorSelectConfigManager(); |
||||||
|
break; |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean writeResource() throws Exception { |
||||||
|
return FRContext.getCurrentEnv().writeResource(ColorSelectConfigManager.getProviderInstance()); |
||||||
|
} |
||||||
|
|
||||||
|
public String fileName() { |
||||||
|
return "recentcolors.xml"; |
||||||
|
} |
||||||
|
|
||||||
|
public void readXML(XMLableReader reader) { |
||||||
|
String name = reader.getTagName(); |
||||||
|
if (reader.isChildNode()) { |
||||||
|
if (ComparatorUtils.equals(COLOR_TAG, name)) { |
||||||
|
Color color = null; |
||||||
|
colors.add(reader.getAttrAsColor("colors", color)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void writeXML(XMLPrintWriter writer) { |
||||||
|
writer.startTAG(RECENT_COLOR_TAG); |
||||||
|
if (this.colors != null && !this.colors.isEmpty()) { |
||||||
|
for (int i = 0; i < this.colors.size(); i++) { |
||||||
|
writer.startTAG(COLOR_TAG); |
||||||
|
writer.attr("colors", colors.get(i).getRGB()); |
||||||
|
writer.end(); |
||||||
|
} |
||||||
|
} |
||||||
|
writer.end(); |
||||||
|
} |
||||||
|
|
||||||
|
public List<Color> getColorsFromFile() { |
||||||
|
return this.colors; |
||||||
|
} |
||||||
|
|
||||||
|
public void setColorsToFile(List<Color> colors) { |
||||||
|
this.colors = colors; |
||||||
|
} |
||||||
|
} |
||||||
|
@ -0,0 +1,17 @@ |
|||||||
|
package com.fr.design.style.color; |
||||||
|
|
||||||
|
import com.fr.stable.file.RemoteXMLFileManagerProvider; |
||||||
|
|
||||||
|
import java.awt.Color; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Created by yaohwu on 2017/2/8. |
||||||
|
*/ |
||||||
|
public interface ColorSelectConfigManagerProvider extends RemoteXMLFileManagerProvider { |
||||||
|
|
||||||
|
List<Color> getColorsFromFile(); |
||||||
|
|
||||||
|
void setColorsToFile(List<Color> colors); |
||||||
|
} |
@ -1 +1 @@ |
|||||||
package com.fr.design.write.submit;
import com.fr.data.AbstractClassJob;
import com.fr.design.data.tabledata.tabledatapane.ClassNameSelectPane;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.formula.JavaEditorPane;
import com.fr.design.gui.frpane.ObjectProperiesPane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.itextarea.UITextArea;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.dialog.BasicDialog;
data.AbstractClassJob;
data.AbstractClassJob;
data.AbstractClassJob;
import com.fr.design.data.tabledata.tabledatapane.ClassNameSelectPane;
data.AbstractClassJob;
import com.fr.design.beans.BasicBeanPane;
data.AbstractClassJob;
import com.fr.design.formula.JavaEditorPane;
data.AbstractClassJob;
import com.fr.design.gui.frpane.ObjectProperiesPane;
data.AbstractClassJob;
import com.fr.design.gui.ibutton.UIButton;
data.AbstractClassJob;
import com.fr.design.gui.itextarea.UITextArea;
data.AbstractClassJob;
import com.fr.design.gui.itextfield.UITextField;
data.AbstractClassJob;
import com.fr.design.layout.FRGUIPaneFactory;
data.AbstractClassJob;
import com.fr.design.gui.frpane.ObjectProperiesPane;
/**
* Author : Shockway
* Date: 13-7-29
* Time: 下午6:48
*/
public abstract class CustomJobPane extends BasicBeanPane {
protected UITextField classNameTextField;
protected ObjectProperiesPane objectProperiesPane;
public static final int DEFAULT_LENGTH = 30;
data.AbstractClassJob;
import com.fr.design.gui.frpane.ObjectProperiesPane;
public CustomJobPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
JPanel reportletNamePane = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane();
classNameTextField = new UITextField(getLengthOfTextField());
reportletNamePane.add(classNameTextField);
data.AbstractClassJob;
import com.fr.design.gui.frpane.ObjectProperiesPane;
UIButton browserButton = new UIButton(Inter.getLocText("FR-Designer_Select_panel"));
browserButton.setPreferredSize(new Dimension(
browserButton.getPreferredSize().width,
classNameTextField.getPreferredSize().height));
data.AbstractClassJob;
import com.fr.design.gui.frpane.ObjectProperiesPane;
UIButton editButton = new UIButton(Inter.getLocText("FR-Designer_Edit_panel"));
editButton.setPreferredSize(new Dimension(
browserButton.getPreferredSize().width,
classNameTextField.getPreferredSize().height));
data.AbstractClassJob;
import com.fr.design.gui.frpane.ObjectProperiesPane;
reportletNamePane.add(browserButton);
reportletNamePane.add(editButton);
data.AbstractClassJob;
import com.fr.design.gui.frpane.ObjectProperiesPane;
browserButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
final ClassNameSelectPane bPane = new ClassNameSelectPane();
bPane.setClassPath(classNameTextField.getText());
bPane.showWindow(
SwingUtilities.getWindowAncestor(getWindowAncestor()),
new DialogActionAdapter() {
public void doOk() {
classNameTextField.setText(bPane.getClassPath());
checkAddButtonEnable();
}
}).setVisible(true);
}
});
editButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final JavaEditorPane javaEditorPane = new JavaEditorPane(classNameTextField.getText(), JavaEditorPane.DEFAULT_SUBMIT_JOB);
final BasicDialog dlg = javaEditorPane.showMediumWindow(SwingUtilities.getWindowAncestor(CustomJobPane.this),
new DialogActionAdapter() {
public void doOk() {
classNameTextField.setText(javaEditorPane.getClassText());
checkAddButtonEnable();
}
});
javaEditorPane.addSaveActionListener(new ActionListener() {
@Override
import com.fr.design.gui.itextarea.UITextArea;
dlg.doOK();
import com.fr.design.gui.itextarea.UITextArea;
import com.fr.design.data.tabledata.tabledatapane.ClassNameSelectPane;
});
dlg.setVisible(true);
}
import com.fr.design.gui.itextarea.UITextArea;
import com.fr.design.gui.ibutton.UIButton;
data.AbstractClassJob;
import com.fr.design.gui.frpane.ObjectProperiesPane;
reportletNamePane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("FR-Designer_ClassName_panel"), null));
import com.fr.design.gui.itextarea.UITextArea;
import com.fr.design.gui.itextfield.UITextField;
data.AbstractClassJob;
import com.fr.design.gui.frpane.ObjectProperiesPane;
import com.fr.design.gui.itextarea.UITextArea;
import com.fr.design.layout.FRGUIPaneFactory;
objectProperiesPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("FR-Designer_Property_panel"), null));
import com.fr.design.gui.itextfield.UITextField;
data.AbstractClassJob;
data.AbstractClassJob;
import com.fr.design.gui.frpane.ObjectProperiesPane;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.data.tabledata.tabledatapane.ClassNameSelectPane;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.beans.BasicBeanPane;
JPanel dsPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
dsPane.add(area);
dsPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("FR-Designer_Description_panel"), null));
this.add(dsPane, BorderLayout.SOUTH);
checkAddButtonEnable();
}
public int getLengthOfTextField() {
return DEFAULT_LENGTH;
}
protected String title4PopupWindow() {
return "CustomJob";
}
protected Component getWindowAncestor() {
return this;
}
@Override
public void populateBean(Object ob) {
if (ob instanceof AbstractClassJob) {
AbstractClassJob cj = (AbstractClassJob) ob;
this.classNameTextField.setText(cj.getClassName());
this.objectProperiesPane.populateBean(cj.getPropertyMap());
checkAddButtonEnable();
}
}
/**
* 添加按钮可用
*/
public void checkAddButtonEnable() {
objectProperiesPane.enableAddButton(StringUtils.isNotEmpty(classNameTextField.getText()));
}
/**
* 重置
*/
public void reset() {
this.classNameTextField.setText(null);
this.checkAddButtonEnable();
}
} |
package com.fr.design.write.submit;
import com.fr.base.GraphHelper;
import com.fr.data.AbstractClassJob;
import com.fr.design.data.tabledata.tabledatapane.ClassNameSelectPane;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.layout.FRGUIPaneFactory;
data.AbstractClassJob;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.data.tabledata.tabledatapane.ClassNameSelectPane;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.formula.JavaEditorPane;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.gui.frpane.ObjectProperiesPane;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.gui.itextarea.UITextArea;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.dialog.BasicDialog;
data.AbstractClassJob;
data.AbstractClassJob;
data.AbstractClassJob;
import com.fr.design.data.tabledata.tabledatapane.ClassNameSelectPane;
data.AbstractClassJob;
import com.fr.design.beans.BasicBeanPane;
data.AbstractClassJob;
import com.fr.design.formula.JavaEditorPane;
data.AbstractClassJob;
import com.fr.design.gui.frpane.ObjectProperiesPane;
data.AbstractClassJob;
import com.fr.design.gui.ibutton.UIButton;
data.AbstractClassJob;
import com.fr.design.data.tabledata.tabledatapane.ClassNameSelectPane;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.gui.itextarea.UITextArea;
data.AbstractClassJob;
import com.fr.design.gui.itextfield.UITextField;
data.AbstractClassJob;
import com.fr.design.layout.FRGUIPaneFactory;
data.AbstractClassJob;
import com.fr.design.dialog.BasicDialog;
*/
public abstract class CustomJobPane extends BasicBeanPane {
protected UITextField classNameTextField;
protected ObjectProperiesPane objectProperiesPane;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.gui.frpane.ObjectProperiesPane;
public CustomJobPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
JPanel reportletNamePane = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane();
classNameTextField = new UITextField(getLengthOfTextField());
data.AbstractClassJob;
/**
data.AbstractClassJob;
* Author : Shockway
data.AbstractClassJob;
* Date: 13-7-29
data.AbstractClassJob;
* Time: 下午6:48
data.AbstractClassJob;
*/
data.AbstractClassJob;
public abstract class CustomJobPane extends BasicBeanPane {
data.AbstractClassJob;
protected UITextField classNameTextField;
data.AbstractClassJob;
protected ObjectProperiesPane objectProperiesPane;
data.AbstractClassJob;
public static final int DEFAULT_LENGTH = 30;
data.AbstractClassJob;
import com.fr.design.data.tabledata.tabledatapane.ClassNameSelectPane;
data.AbstractClassJob;
public CustomJobPane() {
data.AbstractClassJob;
this.setLayout(FRGUIPaneFactory.createBorderLayout());
data.AbstractClassJob;
JPanel reportletNamePane = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane();
data.AbstractClassJob;
classNameTextField = new UITextField(getLengthOfTextField());
data.AbstractClassJob;
reportletNamePane.add(classNameTextField);
data.AbstractClassJob;
UIButton browserButton = new UIButton(Inter.getLocText("FR-Designer_Select_panel"));
data.AbstractClassJob;
browserButton.setPreferredSize(new Dimension(
data.AbstractClassJob;
browserButton.getPreferredSize().width,
data.AbstractClassJob;
classNameTextField.getPreferredSize().height));
data.AbstractClassJob;
UIButton editButton = new UIButton(Inter.getLocText("FR-Designer_Edit_panel"));
data.AbstractClassJob;
editButton.setPreferredSize(new Dimension(
data.AbstractClassJob;
browserButton.getPreferredSize().width,
data.AbstractClassJob;
classNameTextField.getPreferredSize().height));
data.AbstractClassJob;
reportletNamePane.add(browserButton);
data.AbstractClassJob;
reportletNamePane.add(editButton);
data.AbstractClassJob;
browserButton.addActionListener(new ActionListener() {
data.AbstractClassJob;
public void actionPerformed(ActionEvent evt) {
data.AbstractClassJob;
final ClassNameSelectPane bPane = new ClassNameSelectPane();
data.AbstractClassJob;
bPane.setClassPath(classNameTextField.getText());
data.AbstractClassJob;
bPane.showWindow(
data.AbstractClassJob;
SwingUtilities.getWindowAncestor(getWindowAncestor()),
data.AbstractClassJob;
new DialogActionAdapter() {
data.AbstractClassJob;
public void doOk() {
data.AbstractClassJob;
classNameTextField.setText(bPane.getClassPath());
checkAddButtonEnable();
data.AbstractClassJob;
checkAddButtonEnable();
data.AbstractClassJob;
}
data.AbstractClassJob;
}).setVisible(true);
data.AbstractClassJob;
}
data.AbstractClassJob;
});
data.AbstractClassJob;
editButton.addActionListener(new ActionListener() {
data.AbstractClassJob;
@Override
data.AbstractClassJob;
public void actionPerformed(ActionEvent e) {
data.AbstractClassJob;
final JavaEditorPane javaEditorPane = new JavaEditorPane(classNameTextField.getText(), JavaEditorPane.DEFAULT_SUBMIT_JOB);
data.AbstractClassJob;
final BasicDialog dlg = javaEditorPane.showMediumWindow(SwingUtilities.getWindowAncestor(CustomJobPane.this),
data.AbstractClassJob;
new DialogActionAdapter() {
data.AbstractClassJob;
public void doOk() {
data.AbstractClassJob;
classNameTextField.setText(javaEditorPane.getClassText());
data.AbstractClassJob;
}
data.AbstractClassJob;
});
data.AbstractClassJob;
javaEditorPane.addSaveActionListener(new ActionListener() {
data.AbstractClassJob;
import com.fr.design.data.tabledata.tabledatapane.ClassNameSelectPane;
data.AbstractClassJob;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.layout.FRGUIPaneFactory;
data.AbstractClassJob;
import com.fr.design.gui.itextarea.UITextArea;
data.AbstractClassJob;
import com.fr.design.gui.itextarea.UITextArea;
data.AbstractClassJob;
data.AbstractClassJob;
import com.fr.design.gui.itextarea.UITextArea;
import com.fr.design.data.tabledata.tabledatapane.ClassNameSelectPane;
import java.awt.*;
import com.fr.design.beans.BasicBeanPane;
"), null));
this.add(dsPane, BorderLayout.SOUTH);
checkAddButtonEnable();
}
public int getLengthOfTextField() {
return DEFAULT_LENGTH;
}
protected String title4PopupWindow() {
return "CustomJob";
}
protected Component getWindowAncestor() {
return this;
}
@Override
public void populateBean(Object ob) {
if (ob instanceof AbstractClassJob) {
AbstractClassJob cj = (AbstractClassJob) ob;
this.classNameTextField.setText(cj.getClassName());
this.objectProperiesPane.populateBean(cj.getPropertyMap());
checkAddButtonEnable();
}
}
/**
* 添加按钮可用
*/
public void checkAddButtonEnable() {
objectProperiesPane.enableAddButton(StringUtils.isNotEmpty(classNameTextField.getText()));
}
/**
* 重置
*/
public void reset() {
this.classNameTextField.setText(null);
this.checkAddButtonEnable();
}
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue