Compare commits

...

112 Commits

Author SHA1 Message Date
superman 5d27e8c274 Merge pull request #13703 in DESIGN/design from final/10.0 to persist/10.0 2 months ago
superman 48142925d6 Merge pull request #13684 in DESIGN/design from release/10.0 to final/10.0 2 months ago
superman a7a1467bcf Merge pull request #13683 in DESIGN/design from bugfix/10.0 to release/10.0 2 months ago
Destiny.Lin-林锦龙 c32e841a97 Pull request #13653: REPORT-114522 /remote/design/service接口可以未鉴权获取源码信息 同步10.0 3 months ago
Destiny.Lin 3e17752c77 REPORT-114522 /remote/design/service接口可以未鉴权获取源码信息 同步10.0 3 months ago
superman 3d2d5e6a66 Merge pull request #13582 in DESIGN/design from release/10.0 to bugfix/10.0 3 months ago
superman 5d6c8c9c8d Merge pull request #13581 in DESIGN/design from final/10.0 to release/10.0 3 months ago
superman b1d267c8bb Merge pull request #13578 in DESIGN/design from persist/10.0 to final/10.0 3 months ago
superman 67cadd1490 Merge pull request #13550 in DESIGN/design from final/10.0 to persist/10.0 4 months ago
superman 5908b9ae7f Merge pull request #13498 in DESIGN/design from release/10.0 to bugfix/10.0 4 months ago
superman f064e8e0a4 Merge pull request #13497 in DESIGN/design from final/10.0 to release/10.0 4 months ago
superman b993803832 Merge pull request #13496 in DESIGN/design from persist/10.0 to final/10.0 4 months ago
superman 590ffc17d0 Merge pull request #13468 in DESIGN/design from final/10.0 to persist/10.0 5 months ago
superman 3b9398924a Merge pull request #13410 in DESIGN/design from release/10.0 to bugfix/10.0 5 months ago
superman 56ce31a90f Merge pull request #13409 in DESIGN/design from final/10.0 to release/10.0 5 months ago
superman 60050eb550 Merge pull request #13406 in DESIGN/design from release/10.0 to final/10.0 5 months ago
superman 1006a78f5b Merge pull request #13405 in DESIGN/design from bugfix/10.0 to release/10.0 5 months ago
superman b8bc25d365 Merge pull request #13278 in DESIGN/design from release/10.0 to bugfix/10.0 5 months ago
superman 83a4d6ce5b Merge pull request #13277 in DESIGN/design from final/10.0 to release/10.0 5 months ago
superman 90e99aa662 Merge pull request #13276 in DESIGN/design from persist/10.0 to final/10.0 5 months ago
superman 6de0b30e85 Merge pull request #13269 in DESIGN/design from final/10.0 to persist/10.0 6 months ago
superman 8ad5ad255d Merge pull request #13241 in DESIGN/design from release/10.0 to bugfix/10.0 6 months ago
superman baac9806a8 Merge pull request #13240 in DESIGN/design from final/10.0 to release/10.0 6 months ago
superman 315aff60ba Merge pull request #13237 in DESIGN/design from release/10.0 to final/10.0 6 months ago
superman e2a41a3a3b Merge pull request #13236 in DESIGN/design from bugfix/10.0 to release/10.0 6 months ago
Xiqiu-王喜秋 1723cf8e3e Pull request #13169: 无jira 添加日志 6 months ago
xiqiu e66354cd01 Merge remote-tracking branch 'origin/bugfix/10.0' into bugfix/10.0 6 months ago
xiqiu cb9ba77721 无jira 添加日志 6 months ago
superman f2f346c02e Merge pull request #13044 in DESIGN/design from release/10.0 to bugfix/10.0 6 months ago
superman c210b8211e Merge pull request #13043 in DESIGN/design from final/10.0 to release/10.0 6 months ago
superman 2d2486a4d5 Merge pull request #13042 in DESIGN/design from persist/10.0 to final/10.0 6 months ago
superman 886862d396 Merge pull request #13041 in DESIGN/design from final/10.0 to persist/10.0 6 months ago
superman 67eb120b88 Merge pull request #13012 in DESIGN/design from release/10.0 to bugfix/10.0 7 months ago
superman 3fe3b665ef Merge pull request #13011 in DESIGN/design from final/10.0 to release/10.0 7 months ago
superman d1195f2273 Merge pull request #13009 in DESIGN/design from release/10.0 to final/10.0 7 months ago
superman 0c53b9cbeb Merge pull request #13008 in DESIGN/design from bugfix/10.0 to release/10.0 7 months ago
superman 185594ce48 Merge pull request #12853 in DESIGN/design from release/10.0 to bugfix/10.0 8 months ago
superman 1a9e7292f1 Merge pull request #12852 in DESIGN/design from final/10.0 to release/10.0 8 months ago
superman 974e040cc8 Merge pull request #12851 in DESIGN/design from persist/10.0 to final/10.0 8 months ago
superman 27426f0e75 Merge pull request #12850 in DESIGN/design from final/10.0 to persist/10.0 8 months ago
superman d3d793baed Merge pull request #12828 in DESIGN/design from release/10.0 to bugfix/10.0 8 months ago
superman 4766b28c54 Merge pull request #12827 in DESIGN/design from final/10.0 to release/10.0 8 months ago
superman 42ab4686b2 Merge pull request #12824 in DESIGN/design from release/10.0 to final/10.0 8 months ago
superman a83143a701 Merge pull request #12823 in DESIGN/design from bugfix/10.0 to release/10.0 8 months ago
superman 1bd3daee80 Merge pull request #12807 in DESIGN/design from release/10.0 to bugfix/10.0 8 months ago
vito-刘恒霖 7f68ab323f Pull request #12804: REPORT-105614 设计器去除webroot/druid服务 8 months ago
vito 8c9f48a2dc REPORT-105614 设计器去除webroot/druid服务 8 months ago
superman 66765c0877 Merge pull request #12679 in DESIGN/design from release/10.0 to bugfix/10.0 9 months ago
superman 407e856b51 Merge pull request #12678 in DESIGN/design from final/10.0 to release/10.0 9 months ago
superman 7a47e673f3 Merge pull request #12677 in DESIGN/design from persist/10.0 to final/10.0 9 months ago
superman 02ee81d97b Merge pull request #12676 in DESIGN/design from final/10.0 to persist/10.0 9 months ago
superman 9528cb10cc Merge pull request #12642 in DESIGN/design from release/10.0 to bugfix/10.0 9 months ago
superman c250412a0f Merge pull request #12641 in DESIGN/design from final/10.0 to release/10.0 9 months ago
superman cad095237a Merge pull request #12639 in DESIGN/design from release/10.0 to final/10.0 9 months ago
superman cad8e69f96 Merge pull request #12638 in DESIGN/design from bugfix/10.0 to release/10.0 9 months ago
superman 788f43a93c Merge pull request #12568 in DESIGN/design from release/10.0 to bugfix/10.0 9 months ago
superman d62bca7e6e Merge pull request #12567 in DESIGN/design from final/10.0 to release/10.0 9 months ago
superman d439e124f8 Merge pull request #12566 in DESIGN/design from persist/10.0 to final/10.0 9 months ago
superman 9c9014e706 Merge pull request #12559 in DESIGN/design from final/10.0 to persist/10.0 10 months ago
superman b593d31a55 Merge pull request #12540 in DESIGN/design from release/10.0 to bugfix/10.0 10 months ago
superman 36ce5ffa84 Merge pull request #12539 in DESIGN/design from final/10.0 to release/10.0 10 months ago
superman df09c457a7 Merge pull request #12537 in DESIGN/design from release/10.0 to final/10.0 10 months ago
superman 1c7de76505 Merge pull request #12536 in DESIGN/design from bugfix/10.0 to release/10.0 10 months ago
superman f1d8a5d9f4 Merge pull request #12390 in DESIGN/design from release/10.0 to bugfix/10.0 11 months ago
superman 3220fbea5e Merge pull request #12389 in DESIGN/design from final/10.0 to release/10.0 11 months ago
superman 3bec9ec93e Merge pull request #12388 in DESIGN/design from persist/10.0 to final/10.0 11 months ago
superman 71b4270fcb Merge pull request #12385 in DESIGN/design from final/10.0 to persist/10.0 11 months ago
superman 19e7d20681 Merge pull request #12328 in DESIGN/design from release/10.0 to bugfix/10.0 11 months ago
superman 44d0bc8099 Merge pull request #12327 in DESIGN/design from final/10.0 to release/10.0 11 months ago
superman 68e9be81ca Merge pull request #12325 in DESIGN/design from release/10.0 to final/10.0 11 months ago
superman 313cc2aa22 Merge pull request #12324 in DESIGN/design from bugfix/10.0 to release/10.0 11 months ago
superman a22c2d887e Merge pull request #12259 in DESIGN/design from release/10.0 to bugfix/10.0 11 months ago
superman f1d0d2f491 Merge pull request #12258 in DESIGN/design from final/10.0 to release/10.0 11 months ago
superman 3a0d7a6a59 Merge pull request #12257 in DESIGN/design from persist/10.0 to final/10.0 11 months ago
Destiny.Lin-林锦龙 600047f1f6 Pull request #12242: REPORT-96808 屏蔽设计器系统信息面板中的jxbrowser相关参数 同步10.0 12 months ago
Destiny.Lin eed4de1f69 Merge remote-tracking branch 'origin/final/10.0' into final/10.0 12 months ago
Destiny.Lin 8b4c1ebb32 REPORT-96808 屏蔽设计器系统信息面板中的jxbrowser相关参数 同步10.0 12 months ago
superman e3b1531e63 Merge pull request #12238 in DESIGN/design from final/10.0 to persist/10.0 12 months ago
superman d3272c4e1e Merge pull request #12208 in DESIGN/design from release/10.0 to bugfix/10.0 12 months ago
superman c369b15b68 Merge pull request #12207 in DESIGN/design from final/10.0 to release/10.0 12 months ago
superman 99acac0f72 Merge pull request #12205 in DESIGN/design from release/10.0 to final/10.0 12 months ago
superman a3343bcc93 Merge pull request #12204 in DESIGN/design from bugfix/10.0 to release/10.0 12 months ago
superman c4870e8222 Merge pull request #12137 in DESIGN/design from release/10.0 to bugfix/10.0 1 year ago
Coral.Chen-张晨 749941f507 Pull request #12122: REPORT-94629 设计器tab组件操作异常 1 year ago
coral.chen@fanruan.com 1a1dd2b9f0 REPORT-94629 设计器tab组件操作异常 1 year ago
superman 53ffd6c537 Merge pull request #12094 in DESIGN/design from release/10.0 to bugfix/10.0 1 year ago
superman 81ad7f564a Merge pull request #12093 in DESIGN/design from final/10.0 to release/10.0 1 year ago
superman 5c7f634e6c Merge pull request #12092 in DESIGN/design from persist/10.0 to final/10.0 1 year ago
superman 4ca379d78c Merge pull request #12090 in DESIGN/design from final/10.0 to persist/10.0 1 year ago
superman 7a6ac53d9e Merge pull request #12082 in DESIGN/design from release/10.0 to bugfix/10.0 1 year ago
superman 27d3ddffa1 Merge pull request #12081 in DESIGN/design from final/10.0 to release/10.0 1 year ago
Levy.Xie-解安森 42339dbe9b Pull request #12076: REPORT-94597 安装【平台内打开标签页】插件,FR图表超链会多两个重复下拉项 1 year ago
Levy.Xie d3af0f553b REPORT-94597 安装【平台内打开标签页】插件,FR图表超链会多两个重复下拉项 改用ListMap 1 year ago
Levy.Xie f5ee576778 REPORT-94597 安装【平台内打开标签页】插件,FR图表超链会多两个重复下拉项 1 year ago
superman 746cf8a393 Merge pull request #12051 in DESIGN/design from release/10.0 to bugfix/10.0 1 year ago
superman 314bec28b9 Merge pull request #12050 in DESIGN/design from final/10.0 to release/10.0 1 year ago
superman 6d1ad1e3d9 Merge pull request #12048 in DESIGN/design from release/10.0 to final/10.0 1 year ago
superman 1d7e4e5e23 Merge pull request #12047 in DESIGN/design from bugfix/10.0 to release/10.0 1 year ago
Leo.Qin-覃宇攀 1e990ab35d Pull request #12045: REPORT-94114 设计器面板图表超链选项缺失 1 year ago
Leo.Qin 10532ad28a REPORT-94114 设计器面板图表超链选项缺失 修改 报表块超链选项 1 year ago
Leo.Qin 83acc126ac REPORT-94114 设计器面板图表超链选项缺失 1 year ago
superman f50457dd30 Merge pull request #11852 in DESIGN/design from release/10.0 to bugfix/10.0 1 year ago
Obo-王学仁 f43359a946 Pull request #11848: REPORT-82787 图表空数据提示配置页面,默认图片需补充繁中版 1 year ago
obo b139252340 REPORT-82787 图表空数据提示配置页面,默认图片需补充繁中版 1 year ago
superman 8f6c50ae26 Merge pull request #11831 in DESIGN/design from release/10.0 to bugfix/10.0 1 year ago
superman e5cb848dc0 Merge pull request #11830 in DESIGN/design from final/10.0 to release/10.0 1 year ago
superman 560ee16a64 Merge pull request #11829 in DESIGN/design from persist/10.0 to final/10.0 1 year ago
superman 8aa3be7d47 Merge pull request #11828 in DESIGN/design from final/10.0 to persist/10.0 1 year ago
superman a959378bae Merge pull request #11782 in DESIGN/design from release/10.0 to bugfix/10.0 1 year ago
superman 500f72d1bf Merge pull request #11781 in DESIGN/design from final/10.0 to release/10.0 1 year ago
superman 4547fddc1c Merge pull request #11776 in DESIGN/design from release/10.0 to final/10.0 1 year ago
superman e826a708cd Merge pull request #11775 in DESIGN/design from bugfix/10.0 to release/10.0 1 year ago
  1. 2
      designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java
  2. 28
      designer-base/src/main/java/com/fr/design/actions/help/SystemInfoPane.java
  3. 2
      designer-base/src/main/java/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java
  4. 2
      designer-base/src/main/java/com/fr/design/versioncheck/VersionCheckUtils.java
  5. 5
      designer-base/src/main/java/com/fr/start/server/FineEmbedServerActivator.java
  6. 37
      designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java
  7. 10
      designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java
  8. 39
      designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java
  9. 0
      designer-chart/src/main/resources/com/fr/design/images/en_us_emptydata.png
  10. 0
      designer-chart/src/main/resources/com/fr/design/images/zh_cn_emptydata.png
  11. 0
      designer-chart/src/main/resources/com/fr/design/images/zh_tw_emptydata.png
  12. 110
      designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java
  13. 37
      designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java
  14. 6
      designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/WCardMainLayoutDefinePane.java
  15. 6
      designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/WCardTagLayoutDefinePane.java

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

@ -308,7 +308,7 @@ public class EnvChangeEntrance {
Set<Class> localServiceSet = FineObjectPool.getInstance().getServerPool().keySet();
try {
JSONArray serviceArray = new FunctionalHttpRequest(info).getServiceList();
JSONArray serviceArray = new FunctionalHttpRequest(info).getServiceList(info);
for(int i = 0; i < serviceArray.size(); i++){
try{
Class clazz = Class.forName((String) serviceArray.get(i));

28
designer-base/src/main/java/com/fr/design/actions/help/SystemInfoPane.java

@ -41,19 +41,15 @@ public class SystemInfoPane extends JPanel {
for (int i = 0; i < keys.length; i++) {
Object[] tableRowData = new Object[2];
String keyValue = keys[i].toString();
// james:屏蔽掉exe4j的内容
if (keyValue.indexOf("exe4j") != -1) {
continue;
if (needToShield(keyValue)) {
continue;
}
// james:这个也是exe4j的东东
if ("install4j.exeDir".equals(keyValue)) {
continue;
if(keyValue.contains("FineReport")){
keys[i] = keyValue.replaceAll("FineReport", ProductConstants.APP_NAME);
}
if(keyValue.indexOf("FineReport") != -1){
keys[i] = keyValue.replaceAll("FineReport", ProductConstants.APP_NAME);
}
tableRowData[0] = keys[i];
tableRowData[1] = properties.getProperty((String) keys[i]);
tableModel.addRow(tableRowData);
@ -66,4 +62,14 @@ public class SystemInfoPane extends JPanel {
add(new JScrollPane(table), BorderLayout.CENTER);
}
/**
* 是否属于需要屏蔽的内容(当前屏蔽掉exe4j与jxbrowser的内容)
*
* @param keyValue 对应的key值
* @return 需要屏蔽则返回true
*/
private boolean needToShield(String keyValue) {
return keyValue.contains("exe4j") || keyValue.contains("jxbrowser") || "install4j.exeDir".equals(keyValue);
}
}

2
designer-base/src/main/java/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java

@ -129,6 +129,7 @@ public abstract class DatabaseConnectionPane<E extends com.fr.data.impl.Connecti
} catch (InterruptedException e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
} catch (ExecutionException e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
dialog.setSize(new Dimension(380, 142));
midPane.setVisible(true);
hiddenPanel.setVisible(false);
@ -339,6 +340,7 @@ public abstract class DatabaseConnectionPane<E extends com.fr.data.impl.Connecti
if (mainPanel instanceof JDBCDefPane) {
ActionLabel actionLabel = new ActionLabel(Toolkit.i18nText("Fine-Design_Basic_Advanced_Setup"));
actionLabel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
JDialog wDialog = createJDialog();
if (wDialog != null) {

2
designer-base/src/main/java/com/fr/design/versioncheck/VersionCheckUtils.java

@ -215,7 +215,7 @@ public class VersionCheckUtils {
Set<Class> localServiceSet = FineObjectPool.getInstance().getServerPool().keySet();
try {
JSONArray serviceArray = new FunctionalHttpRequest(info).getServiceList();
JSONArray serviceArray = new FunctionalHttpRequest(info).getServiceList(info);
for (int i = 0; i < serviceArray.size(); i++) {
try {
Class clazz = Class.forName((String) serviceArray.get(i));

5
designer-base/src/main/java/com/fr/start/server/FineEmbedServerActivator.java

@ -13,7 +13,6 @@ import com.fr.third.springframework.web.context.support.AnnotationConfigWebAppli
import com.fr.workspace.WorkContext;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.Wrapper;
import org.apache.catalina.loader.WebappLoader;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.webresources.StandardRoot;
@ -78,10 +77,6 @@ public class FineEmbedServerActivator extends Activator {
String contextPath = "/" + ProductConstants.getAppFolderName();
final Context context = tomcat.addContext(contextPath, docBase);
context.setResources(new StandardRoot(context));
Wrapper servlet = Tomcat.addServlet(context, "DruidStatView", "com.fr.third.alibaba.druid.support.http.StatViewServlet");
context.addServletMappingDecoded("/druid/*", "DruidStatView");
servlet.setLoadOnStartup(1);
servlet.setOverridable(true);
Tomcat.initWebappDefaults(context);
//覆盖tomcat的WebAppClassLoader
context.setLoader(new FRTomcatLoader());

37
designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java

@ -1,37 +0,0 @@
package com.fr.design.locale.impl;
import com.fr.general.GeneralContext;
import com.fr.general.IOUtils;
import com.fr.general.locale.LocaleMark;
import java.awt.image.BufferedImage;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
/**
* 根据本地化信息设置服务器图表空数据提示图标
*
* @author obo
* @version 11.0
* Created by obo on 2023/3/22
*/
public class EmptyDataMark implements LocaleMark<BufferedImage> {
private Map<Locale, BufferedImage> map = new HashMap<>();
private static final BufferedImage ZH_EMPTY_DATA = IOUtils.readImage("com/fr/design/images/zh_emptydata.png");
private static final BufferedImage US_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/us_emptydata.png");
private static final BufferedImage ZH_TRADITIONAL_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/zh_traditional_emptydata.png");
public EmptyDataMark() {
map.put(Locale.CHINA, ZH_EMPTY_DATA);
map.put(Locale.US, US_EMPTY_DATA);
map.put(Locale.TAIWAN, ZH_TRADITIONAL_EMPTY_DATA);
}
@Override
public BufferedImage getValue() {
BufferedImage result = map.get(GeneralContext.getLocale());
return result == null ? US_EMPTY_DATA : result;
}
}

10
designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java

@ -10,13 +10,12 @@ import com.fr.design.gui.ibutton.UIRadioButton;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.locale.impl.EmptyDataMark;
import com.fr.design.style.background.image.ImageFileChooser;
import com.fr.design.style.background.image.ImagePreviewPane;
import com.fr.design.utils.ImageUtils;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.locale.LocaleCenter;
import com.fr.general.locale.LocaleMark;
import com.fr.general.locale.image.LocaleImageFactory;
import com.fr.general.locale.image.LocaleImageMark;
import com.fr.stable.Constants;
import com.fr.stable.CoreGraphHelper;
import com.fr.stable.StringUtils;
@ -63,10 +62,11 @@ public class ChartEmptyDataStylePane extends AbstractAttrNoScrollPane {
private Image emptyDataImage = DEFAULT_EMPTY_DATA_IMAGE;
private SwingWorker<Void, Void> imageWorker;
private static final String EMPTY_DATA_IMAGE_PATH = "/com/fr/design/images/emptydata.png";
static {
LocaleMark<BufferedImage> localeMark = LocaleCenter.getMark(EmptyDataMark.class);
DEFAULT_EMPTY_DATA_IMAGE = localeMark.getValue();
LocaleImageMark localeImageMark = LocaleImageFactory.getOrCreateLocaleMark(EMPTY_DATA_IMAGE_PATH);
DEFAULT_EMPTY_DATA_IMAGE = localeImageMark.getValue();
}
@Override

39
designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java

@ -152,24 +152,23 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane {
setPlot(plot);
HashMap paneMap = getHyperlinkMap(plot);
//安装平台内打开插件时,添加相应按钮
Set<HyperlinkProvider> providers = ExtraDesignClassManager.getInstance().getArray(HyperlinkProvider.XML_TAG);
java.util.List<UIMenuNameableCreator> list = refreshList(paneMap);
Map<String, NameObjectCreator> creators = new ListMap<>();
int size = list.size();
NameObjectCreator[] creators = new NameObjectCreator[list.size() + providers.size()];
for (int i = 0; i < size; i++) {
UIMenuNameableCreator uiMenuNameableCreator = list.get(i);
creators[i] = new NameObjectCreator(uiMenuNameableCreator.getName(), uiMenuNameableCreator.getObj().getClass(), uiMenuNameableCreator.getPaneClazz());
NameObjectCreator creator = new NameObjectCreator(uiMenuNameableCreator.getName(), uiMenuNameableCreator.getObj().getClass(), uiMenuNameableCreator.getPaneClazz());
creators.put(uiMenuNameableCreator.getName(), creator);
}
//安装平台内打开插件时, 添加/替换 相应按钮
Set<HyperlinkProvider> providers = ExtraDesignClassManager.getInstance().getArray(HyperlinkProvider.XML_TAG);
for (HyperlinkProvider provider : providers) {
NameableCreator creator = provider.createHyperlinkCreator();
if (creator != null) {
creators[size] = new NameObjectCreator(creator.menuName(), creator.getHyperlink(), creator.getUpdatePane());
size++;
creators.put(creator.menuName(), new NameObjectCreator(creator.menuName(), creator.getHyperlink(), creator.getUpdatePane()));
}
}
refreshNameableCreator(creators);
refreshNameableCreator(creators.values().toArray(new NameObjectCreator[0]));
java.util.List<NameObject> nameObjects = new ArrayList<NameObject>();
@ -293,12 +292,24 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane {
if (template == null) {
return false;
}
Class[] classes = new Class[]{ChartHyperRelateCellLink.class, ChartHyperRelateFloatLink.class};
for (Class aClass : classes) {
if (template.getEditingReportIndex() == BaseJForm.FORM_TAB) {
// 编辑的是决策报表中的图表,那么没有ChartHyperRelateFloatLink 和 ChartHyperRelateCellLink 选项,有FormHyperlink 选项
if (ComparatorUtils.equals(aClass, clazz)) {
return false;
if (template.isJWorkBook()) {
// 如果是普通报表单元格,那么没有 FormHyperlink 选项
FormHyperlinkProvider formHyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class);
return !ComparatorUtils.equals(clazz, formHyperlink.getClass());
} else {
// 如果是决策报表
if (template.getEditingReportIndex() == BaseJForm.ELEMENTCASE_TAB) {
// 编辑的是决策报表中的报表块,那么没有 ChartHyperRelateFloatLink选项
return !ComparatorUtils.equals(clazz, ChartHyperRelateFloatLink.class);
}
Class[] classes = new Class[]{ChartHyperRelateCellLink.class, ChartHyperRelateFloatLink.class};
for (Class aClass : classes) {
if (template.getEditingReportIndex() == BaseJForm.FORM_TAB) {
// 编辑的是决策报表中的图表,那么没有 ChartHyperRelateFloatLink 和 ChartHyperRelateCellLink 选项
if (ComparatorUtils.equals(aClass, clazz)) {
return false;
}
}
}
}

0
designer-chart/src/main/resources/com/fr/design/images/us_emptydata.png → designer-chart/src/main/resources/com/fr/design/images/en_us_emptydata.png

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

0
designer-chart/src/main/resources/com/fr/design/images/zh_emptydata.png → designer-chart/src/main/resources/com/fr/design/images/zh_cn_emptydata.png

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

0
designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png → designer-chart/src/main/resources/com/fr/design/images/zh_tw_emptydata.png

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

110
designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java

@ -12,6 +12,7 @@ import com.fr.design.designer.beans.models.SelectionModel;
import com.fr.design.designer.creator.XButton;
import com.fr.design.designer.creator.XCreator;
import com.fr.design.designer.creator.XLayoutContainer;
import com.fr.design.designer.creator.XWAbsoluteLayout;
import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.gui.ilable.UILabel;
@ -27,17 +28,28 @@ import com.fr.form.ui.container.WTabTextDirection;
import com.fr.form.ui.container.cardlayout.WCardTagLayout;
import com.fr.form.ui.container.cardlayout.WTabFitLayout;
import com.fr.general.Background;
import com.fr.general.act.BorderPacker;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRFont;
import com.fr.general.act.BorderPacker;
import com.fr.general.act.TitlePacker;
import com.fr.general.cardtag.TemplateStyle;
import com.fr.stable.ProductConstants;
import com.fr.stable.unit.PT;
import javax.swing.*;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
import javax.swing.plaf.basic.BasicLabelUI;
import java.awt.*;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
@ -243,52 +255,43 @@ public class XCardSwitchButton extends XButton {
//SwitchButton对应的XWCardLayout和XWCardTagLayout暂未存到xml中,重新打开时根据父子层关系获取
private void initRelateLayout(){
this.tagLayout = (XWCardTagLayout)this.getBackupParent();
private void initRelateLayout() {
this.tagLayout = (XWCardTagLayout) this.getBackupParent();
XWCardTitleLayout titleLayout = (XWCardTitleLayout) this.tagLayout.getBackupParent();
XWCardMainBorderLayout borderLayout = (XWCardMainBorderLayout)titleLayout.getBackupParent();
XWCardMainBorderLayout borderLayout = (XWCardMainBorderLayout) titleLayout.getBackupParent();
this.cardLayout = borderLayout.getCardPart();
}
//是否进入点击关闭按钮区域
private boolean isSelectedClose(MouseEvent e, FormDesigner designer){
/**
* <p> 是否进入点击关闭按钮区域
* <p> 计算逻辑
* <p> 先得到鼠标的绝对坐标 -> tab布局的绝对坐标 -> 得到鼠标相对tab的坐标有参数面板时要减去参数面板的高度
* <p> 再计算删除区域位置的相对坐标通过对比判定鼠标是否在点击关闭按钮区域内鼠标的位置(ex,ey)
* <li> 当前点击tag删除区域的x坐标 < ex < 当前点击tag删除区域的x坐标 + 偏移量</li>
* <li> 当前点击tag删除区域的y坐标 < ey < 当前点击tag删除区域的y坐标 + 偏移量</li>
*
* @param e 鼠标事件
* @param designer 表单编辑对象
* @return true/false 在内/不在
*/
private boolean isSelectedClose(MouseEvent e, FormDesigner designer) {
int diff = designer.getHorizontalScaleValue();
// mouse position
// 这里是鼠标的绝对位置
int ex = e.getX() + diff;
int ey = e.getY();
//获取tab布局的位置,鼠标相对于tab按钮的位置
Container mainLayout = cardLayout.getBackupParent();
Point point = mainLayout.getLocation();
int y = 0;
int x = 0;
//遍历一下,不然是相对位置,嵌套后位置不对
while (mainLayout.getParent() != null){
if(mainLayout instanceof XWCardLayout){
y += mainLayout.getY();
}
mainLayout = mainLayout.getParent();
if(mainLayout instanceof XWCardMainBorderLayout){
x += mainLayout.getX();
y += mainLayout.getY();
}
}
double mainX = point.getX() + x;
double mainY = point.getY() + y;
// 获取tab布局的位置,鼠标相对于tab按钮的位置
double[] tabPositionInBody = getTabAbsolutePositionInBody();
// 参数界面对坐标的影响
JForm jform = (JForm) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
if(jform.getFormDesign().getParaComponent() != null){
if (jform.getFormDesign().getParaComponent() != null) {
ey -= jform.getFormDesign().getParaHeight();
}
//减掉tab布局的相对位置
ex -= mainX;
ey -= mainY;
ex -= tabPositionInBody[0];
ey -= tabPositionInBody[1];
XLayoutContainer titleLayout = tagLayout.getBackupParent();
Point titlePoint = titleLayout.getLocation();
@ -298,10 +301,43 @@ public class XCardSwitchButton extends XButton {
int width = button.getWidth();
// 鼠标进入按钮右侧删除图标区域
double recX = position.getX() + titlePoint.getX() + (width - CLOSE_ICON_RIGHT_OFFSET);
double recX = position.getX() + titlePoint.getX() + (width - CLOSE_ICON_RIGHT_OFFSET);
double recY = position.getY() + titlePoint.getY() + CLOSE_ICON_TOP_OFFSET;
// 比较的是相对位置的偏移量是否在一定距离内
// 所以要得到鼠标相对于当前tab块的坐标
return (recX < ex && ex < recX + CLOSE_ICON_RIGHT_OFFSET && ey < recY && ey > position.getY());
}
/**
* 获取tab布局在body内的绝对位置
*
* @return
*/
private double[] getTabAbsolutePositionInBody() {
// 获取tab布局的位置,鼠标相对于tab按钮的位置
Container mainLayout = cardLayout.getBackupParent();
// 这个point是当前tab布局的相对坐标,是相对于父容器的坐标
// 比如父级是一个absolute块,放在左上角,现在得到的point就是(0,0)
Point point = mainLayout.getLocation();
int y = 0;
int x = 0;
// 遍历一下,不然是相对位置,嵌套后位置不对
// 这里是要得到tab布局的绝对位置,所以要加上父组件的位置
while (mainLayout.getParent() != null) {
if (mainLayout instanceof XWCardLayout) {
y += mainLayout.getY();
}
mainLayout = mainLayout.getParent();
return (recX < ex && ex < recX + CLOSE_ICON_RIGHT_OFFSET && ey < recY && ey > position.getY());
if ((mainLayout instanceof XWCardMainBorderLayout) || (mainLayout instanceof XWAbsoluteLayout)) {
x += mainLayout.getX();
y += mainLayout.getY();
}
}
double mainX = point.getX() + x;
double mainY = point.getY() + y;
return new double[]{mainX, mainY};
}
//将当前switchButton改为选中状态
@ -313,7 +349,7 @@ public class XCardSwitchButton extends XButton {
}
}
@Override
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;

37
designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java

@ -25,20 +25,24 @@ import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.imenu.UIPopupMenu;
import com.fr.design.mainframe.EditingMouseListener;
import com.fr.design.mainframe.FormDesigner;
import com.fr.design.mainframe.FormHierarchyTreePane;
import com.fr.design.mainframe.WidgetPropertyPane;
import com.fr.design.utils.gui.LayoutUtils;
import com.fr.form.ui.CardSwitchButton;
import com.fr.form.ui.Widget;
import com.fr.form.ui.container.WCardLayout;
import com.fr.form.ui.container.WTabDisplayPosition;
import com.fr.form.ui.container.cardlayout.WCardTagLayout;
import com.fr.form.ui.container.cardlayout.WTabFitLayout;
import com.fr.general.act.BorderPacker;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRFont;
import com.fr.general.act.BorderPacker;
import com.fr.general.cardtag.DefaultTemplateStyle;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Rectangle;
import java.awt.event.ContainerEvent;
import java.awt.event.MouseEvent;
import java.util.HashMap;
@ -441,7 +445,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout {
}
private void fixTitleLayout(XLayoutContainer parent){
private void fixTitleLayout(XLayoutContainer parent) {
FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner();
LayoutAdapter layoutAdapter = AdapterBus.searchLayoutAdapter(formDesigner, parent);
if (layoutAdapter != null) {
@ -450,4 +454,31 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout {
}
}
/**
* <p> 对于tab组件WCardMainBorderLayout里面有两个子容器:
* <li> WCardTitleLayout里面包含两个部分一个是CardAddButton另一个是WCardTagLayout - tabpane0 </li>
* <li> WCardLayout里面放的是WTabFitLayout - tab00tab10</li>
* <p> 在右侧组件树选择删除WCardTagLayout时tabpane0按照现在的产品逻辑应该删除整个tab组件
*
* @param creator 组件
* @param designer 表单设计器
*/
@Override
public void deleteRelatedComponent(XCreator creator, FormDesigner designer) {
XWCardTagLayout tagLayout = (XWCardTagLayout) creator;
// 先删除所有tab按钮
tagLayout.removeAll();
//逐层回溯找出最外层的XWCardMainBorderLayout
XWCardTitleLayout cardTitleLayout = (XWCardTitleLayout) tagLayout.getBackupParent();
XWCardMainBorderLayout mainLayout = (XWCardMainBorderLayout) cardTitleLayout.getBackupParent();
// 删除tab布局
SelectionModel selectionModel = designer.getSelectionModel();
if (mainLayout != null) {
selectionModel.setSelectedCreator(mainLayout);
selectionModel.deleteSelection();
}
LayoutUtils.layoutRootContainer(designer.getRootComponent());
FormHierarchyTreePane.getInstance().refreshRoot();
selectionModel.setSelectedCreator(designer.getRootComponent());
}
}

6
designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/WCardMainLayoutDefinePane.java

@ -7,16 +7,13 @@ import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ispinner.UISpinner;
import com.fr.design.gui.xpane.CardTagLayoutStylePane;
import com.fr.design.gui.xpane.LayoutStylePane;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.widget.accessibles.AccessibleCardTagWLayoutBorderStyleEditor;
import com.fr.design.widget.ui.designer.AbstractDataModify;
import com.fr.form.ui.LayoutBorderStyle;
import com.fr.form.ui.container.WCardLayout;
import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import java.awt.BorderLayout;
@ -72,6 +69,9 @@ public class WCardMainLayoutDefinePane extends AbstractDataModify<WCardMainBorde
@Override
public void populateBean(WCardMainBorderLayout ob) {
WCardLayout cardLayout = ob.getCardPart();
if (cardLayout == null) {
return;
}
stylePane.populateBean((LayoutBorderStyle) cardLayout.getBorderStyle());
setCarousel.setSelected(cardLayout.isCarousel());
IntervalPane.setVisible(cardLayout.isCarousel());

6
designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/WCardTagLayoutDefinePane.java

@ -24,7 +24,6 @@ import com.fr.form.ui.container.cardlayout.WCardTagLayout;
import com.fr.general.Background;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRFont;
import com.fr.general.cardtag.TemplateStyle;
import javax.swing.BorderFactory;
@ -107,8 +106,11 @@ public class WCardTagLayoutDefinePane extends AbstractDataModify<WCardTagLayout>
public void populateBean(WCardTagLayout ob) {
//标题背景和字体属性设置在WCardLayout上做兼容
XLayoutContainer topLayout = creator.getTopLayout();
if (topLayout.getComponentCount() == 0) {
// 没有子组件,不用做处理
return;
}
LayoutBorderStyle layoutBorderStyle = (LayoutBorderStyle) ((XWCardMainBorderLayout) topLayout).getCardPart().toData().getBorderStyle();
displayPositionGroup.setSelectedIndex(ob.getDisplayPosition().getType());
textDirectionGroup.setSelectedIndex(ob.getTextDirection().getType());
backgroundEditor.setValue(layoutBorderStyle.getTitle().getBackground());

Loading…
Cancel
Save