Browse Source

Merge branch 'feature/x' of ssh://code.fineres.com:7999/~roger.chen/design into feature/x

feature/x
roger 11 months ago
parent
commit
5c062b072a
  1. 1
      designer-base/src/main/java/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java
  2. 16
      designer-base/src/main/java/com/fr/design/deeplink/DeepLinkCore.java
  3. 8
      designer-base/src/main/java/com/fr/design/formula/FormulaPane.java
  4. 3
      designer-base/src/main/java/com/fr/design/gui/controlpane/JListControlPane.java
  5. 18
      designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java
  6. 54
      designer-base/src/main/java/com/fr/design/mainframe/chart/info/ChartInfoCollector.java
  7. 25
      designer-base/src/main/java/com/fr/design/mainframe/messagecollect/StartErrorMessageCollector.java
  8. 23
      designer-base/src/main/java/com/fr/design/mainframe/mobile/processor/AbstractMobileStyleDefinePaneCreator.java
  9. 40
      designer-base/src/main/java/com/fr/design/mainframe/mobile/processor/MobileStyleDefinePaneCreator.java
  10. 3
      designer-base/src/main/java/com/fr/design/utils/DesignUtils.java
  11. 9
      designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java
  12. 2
      designer-base/src/main/java/com/fr/widgettheme/designer/WidgetThemeDisplayAction.java
  13. 6
      designer-base/src/main/java/com/fr/widgettheme/theme/edit/ParamContainerStyleEditPane.java
  14. 12
      designer-base/src/main/java/com/fr/widgettheme/util/WidgetThemeDesignerUtils.java
  15. 2
      designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties
  16. 2
      designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties
  17. 2
      designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties
  18. 2
      designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties
  19. 2
      designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties
  20. 4
      designer-form/src/main/java/com/fr/design/widget/ui/designer/ButtonDefinePane.java
  21. 4
      designer-form/src/main/java/com/fr/design/widget/ui/designer/CheckBoxDefinePane.java
  22. 4
      designer-form/src/main/java/com/fr/design/widget/ui/designer/DateEditorDefinePane.java
  23. 4
      designer-form/src/main/java/com/fr/design/widget/ui/designer/DirectWriteEditorDefinePane.java
  24. 4
      designer-form/src/main/java/com/fr/design/widget/ui/designer/LabelDefinePane.java
  25. 4
      designer-form/src/main/java/com/fr/design/widget/ui/designer/NumberEditorDefinePane.java
  26. 4
      designer-form/src/main/java/com/fr/design/widget/ui/designer/TextFieldEditorDefinePane.java
  27. 4
      designer-form/src/main/java/com/fr/design/widget/ui/designer/btn/ButtonGroupDefinePane.java
  28. 3
      designer-form/src/main/java/com/fr/design/widgettheme/processor/WidgetThemeCreatorPaneAdder.java
  29. 3
      designer-form/src/main/java/com/fr/design/widgettheme/processor/WidgetThemeParaCreatorPaneAdder.java
  30. 1
      designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxDefinePane.java
  31. 1
      designer-realize/src/main/java/com/fr/design/widget/ui/btn/FreeButtonDetailPane.java
  32. 2
      designer-realize/src/main/java/com/fr/start/module/optimized/DesignerStartupPageActivator.java

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

@ -462,6 +462,7 @@ public abstract class DatabaseConnectionPane<E extends com.fr.data.impl.Connecti
} catch (InterruptedException e) { } catch (InterruptedException e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e); FineLoggerFactory.getLogger().error(e.getMessage(), e);
} catch (ExecutionException e) { } catch (ExecutionException e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
dealWithException(e); dealWithException(e);
} }
} }

16
designer-base/src/main/java/com/fr/design/deeplink/DeepLinkCore.java

@ -167,6 +167,22 @@ public class DeepLinkCore {
markPendingURLConsumed(); markPendingURLConsumed();
} }
/**
* 符合条件的url才处理
*
* @param url 接收到的url
* @return true:处理; false:不处理
*/
public boolean accept(String url) {
UrlBean urlBean = UrlBean.create(url);
for (DeepLink deepLink: deepLinkList) {
if (deepLink.accept(urlBean.getUrl(), urlBean.getHost(), urlBean.getPath(), urlBean.getParams())) {
return true;
}
}
return false;
}
private void performDeepLinks(String url, String host, String path, Map<String, Object> params) { private void performDeepLinks(String url, String host, String path, Map<String, Object> params) {
SwingUtilities.invokeLater(new Runnable() { SwingUtilities.invokeLater(new Runnable() {
@Override @Override

8
designer-base/src/main/java/com/fr/design/formula/FormulaPane.java

@ -34,6 +34,7 @@ import com.fr.design.gui.itextarea.UITextArea;
import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants;
import com.fr.design.i18n.DesignSizeI18nManager;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
@ -742,7 +743,8 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula {
} }
public BasicDialog showLargeWindow(Window window, DialogActionListener l) { public BasicDialog showLargeWindow(Window window, DialogActionListener l) {
BasicDialog basicDialog = super.showWindowWithCustomSize(window, l, new Dimension(900, 600)); Dimension dimension = DesignSizeI18nManager.getInstance().i18nDimension(this.getClass().getName());
BasicDialog basicDialog = super.showWindowWithCustomSize(window, l, dimension);
basicDialog.setMinimumSize(new Dimension(900, 600)); basicDialog.setMinimumSize(new Dimension(900, 600));
basicDialog.setResizable(true); basicDialog.setResizable(true);
return basicDialog; return basicDialog;
@ -1196,7 +1198,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula {
private void initDescriptionTextArea() { private void initDescriptionTextArea() {
// Description // Description
descriptionTextArea = new UITextArea(DESCRIPTION_TEXT_AREA_ROW,DESCRIPTION_TEXT_AREA_COLUMN); descriptionTextArea = new UITextArea(DESCRIPTION_TEXT_AREA_ROW, DESCRIPTION_TEXT_AREA_COLUMN);
descriptionTextArea.setBackground(Color.white); descriptionTextArea.setBackground(Color.white);
descriptionTextArea.setLineWrap(true); descriptionTextArea.setLineWrap(true);
descriptionTextArea.setWrapStyleWord(true); descriptionTextArea.setWrapStyleWord(true);
@ -1282,7 +1284,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula {
desScrollPane.setBorder(null); desScrollPane.setBorder(null);
panel.add(this.createNamePane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_FormulaPane_Formula_Description") + ":", desScrollPane), BorderLayout.CENTER); panel.add(this.createNamePane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_FormulaPane_Formula_Description") + ":", desScrollPane), BorderLayout.CENTER);
initVariablesTreeSelectionListener(); initVariablesTreeSelectionListener();
this.add(panel,BorderLayout.CENTER); this.add(panel, BorderLayout.CENTER);
} }
private void initComponents() { private void initComponents() {

3
designer-base/src/main/java/com/fr/design/gui/controlpane/JListControlPane.java

@ -17,6 +17,7 @@ import com.fr.stable.Nameable;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.core.PropertyChangeAdapter; import com.fr.stable.core.PropertyChangeAdapter;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel; import javax.swing.DefaultListModel;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.JLabel; import javax.swing.JLabel;
@ -359,6 +360,8 @@ public abstract class JListControlPane extends JControlPane implements ListContr
setLayout(new BorderLayout()); setLayout(new BorderLayout());
this.textLabel = new JLabel(); this.textLabel = new JLabel();
this.iconLabel = new JLabel(); this.iconLabel = new JLabel();
this.textLabel.setBorder(BorderFactory.createEmptyBorder(1, 0, 1, 1));
this.iconLabel.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 0));
add(this.textLabel, BorderLayout.CENTER); add(this.textLabel, BorderLayout.CENTER);
add(this.iconLabel, BorderLayout.WEST); add(this.iconLabel, BorderLayout.WEST);
this.iconLabel.setBackground(Color.WHITE); this.iconLabel.setBackground(Color.WHITE);

18
designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java

@ -25,7 +25,6 @@ import com.fr.design.actions.edit.UndoAction;
import com.fr.design.actions.file.SaveAsTemplateAction; import com.fr.design.actions.file.SaveAsTemplateAction;
import com.fr.design.actions.file.SaveTemplateAction; import com.fr.design.actions.file.SaveTemplateAction;
import com.fr.design.actions.file.WebPreviewUtils; import com.fr.design.actions.file.WebPreviewUtils;
import com.fr.widgettheme.designer.WidgetThemeDisplayAction;
import com.fr.design.base.mode.DesignModeContext; import com.fr.design.base.mode.DesignModeContext;
import com.fr.design.data.datapane.TableDataTreePane; import com.fr.design.data.datapane.TableDataTreePane;
import com.fr.design.designer.DesignerProxy; import com.fr.design.designer.DesignerProxy;
@ -102,6 +101,7 @@ import com.fr.stable.Filter;
import com.fr.stable.ProductConstants; import com.fr.stable.ProductConstants;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.core.UUID; import com.fr.stable.core.UUID;
import com.fr.widgettheme.designer.WidgetThemeDisplayAction;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import com.fr.workspace.server.lock.TplOperator; import com.fr.workspace.server.lock.TplOperator;
@ -879,7 +879,10 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
return saveAsTemplate(isShowLoc); return saveAsTemplate(isShowLoc);
} }
collectInfo(); collectInfo();
return this.saveFile(); TemplateSaveInfoContext.getInstance().startCollect(template);
boolean result = this.saveFile();
TemplateSaveInfoContext.getInstance().stopCollect(result);
return result;
} }
private boolean isCancelOperation(int operation) { private boolean isCancelOperation(int operation) {
@ -968,7 +971,9 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
generateNewTemplateIdForSaveAs(); generateNewTemplateIdForSaveAs();
this.editingFILE = editingFILE; this.editingFILE = editingFILE;
TemplateSaveInfoContext.getInstance().startCollect(template);
boolean result = this.saveToNewFile(oldName); boolean result = this.saveToNewFile(oldName);
TemplateSaveInfoContext.getInstance().stopCollect(result);
if (result) { if (result) {
DesignerFrameFileDealerPane.getInstance().refresh(); DesignerFrameFileDealerPane.getInstance().refresh();
collectInfoWhenSaveAs(originID); collectInfoWhenSaveAs(originID);
@ -1783,6 +1788,8 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
CallbackSaveWorker worker = new CallbackSaveWorker(new Callable<Boolean>() { CallbackSaveWorker worker = new CallbackSaveWorker(new Callable<Boolean>() {
@Override @Override
public Boolean call() throws Exception { public Boolean call() throws Exception {
TemplateSaveInfoContext.getInstance().startRecord();
TemplateSaveInfoContext.getInstance().collectInfo(template.suffix());
return saveAs(finalEditingFILE, sourceFile, oldName); return saveAs(finalEditingFILE, sourceFile, oldName);
} }
}, this); }, this);
@ -1946,6 +1953,13 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
@Override @Override
public void saveDirectly() { public void saveDirectly() {
if (isSaving()) {
// 处理连按ctrl+s触发多线程保存的问题
// 这里为什么可以不用加锁而直接判断isSaving:
// 实测actionPerformed有线程安全的特性,同一时间只有一个AWT线程走到这里,setSaving是线程安全的(SaveTemplateAction.actionPerformed)
// 多线程场景是因为我们用了SwingWorker子线程处理保存
return;
}
new SaveTypeWorker(getSaveTypeCallable(), this) { new SaveTypeWorker(getSaveTypeCallable(), this) {
@Override @Override
protected void done() { protected void done() {

54
designer-base/src/main/java/com/fr/design/mainframe/chart/info/ChartInfoCollector.java

@ -7,6 +7,7 @@ import com.fr.chartx.config.info.constant.ConfigType;
import com.fr.design.mainframe.burying.point.AbstractPointCollector; import com.fr.design.mainframe.burying.point.AbstractPointCollector;
import com.fr.design.mainframe.template.info.TemplateProcessInfo; import com.fr.design.mainframe.template.info.TemplateProcessInfo;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLableReader; import com.fr.stable.xml.XMLableReader;
@ -184,33 +185,44 @@ public class ChartInfoCollector extends AbstractPointCollector<ChartInfo> {
*/ */
@Override @Override
public void collectInfo(String templateId, String originID, TemplateProcessInfo processInfo, int timeConsume) { public void collectInfo(String templateId, String originID, TemplateProcessInfo processInfo, int timeConsume) {
if (!shouldCollectInfo()) { // 捕获RuntimeException,不中断保存模板核心逻辑,避免出现保存失败弹窗
return; try {
} if (!shouldCollectInfo()) {
if (StringUtils.isEmpty(originID)) { return;
originID = templateId; }
} if (StringUtils.isEmpty(originID)) {
boolean testTemplate = isTestTemplate(processInfo); originID = templateId;
}
boolean testTemplate = isTestTemplate(processInfo);
for (ChartInfo chartInfo : pointInfoMap.values()) { for (ChartInfo chartInfo : pointInfoMap.values()) {
if (originID.equals(chartInfo.getTemplateId())) { if (chartInfo != null && originID.equals(chartInfo.getTemplateId())) {
chartInfo.setTemplateId(templateId); chartInfo.setTemplateId(templateId);
chartInfo.setTestTemplate(testTemplate); chartInfo.setTestTemplate(testTemplate);
}
} }
}
for (ChartInfo chartInfo : chartInfoCacheMap.values()) { for (ChartInfo chartInfo : chartInfoCacheMap.values()) {
BaseBook book = chartInfo.getBook(); if (chartInfo == null) {
if ((book != null && templateId.equals(book.getTemplateID())) || continue;
originID.equals(chartInfo.getTemplateId())) { }
chartInfo.setTemplateId(templateId); BaseBook book = chartInfo.getBook();
chartInfo.setTestTemplate(testTemplate); if (accept(templateId, originID, chartInfo, book)) {
pointInfoMap.put(chartInfo.getChartId(), chartInfo); chartInfo.setTemplateId(templateId);
chartInfo.setTestTemplate(testTemplate);
pointInfoMap.put(chartInfo.getChartId(), chartInfo);
}
} }
// 每次更新之后,都同步到暂存文件中
saveInfo();
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
} }
}
// 每次更新之后,都同步到暂存文件中 private static boolean accept(String templateId, String originID, ChartInfo chartInfo, BaseBook book) {
saveInfo(); return (book != null && templateId.equals(book.getTemplateID())) ||
originID.equals(chartInfo.getTemplateId());
} }
private boolean isTestTemplate(TemplateProcessInfo processInfo) { private boolean isTestTemplate(TemplateProcessInfo processInfo) {

25
designer-base/src/main/java/com/fr/design/mainframe/messagecollect/StartErrorMessageCollector.java

@ -1,5 +1,6 @@
package com.fr.design.mainframe.messagecollect; package com.fr.design.mainframe.messagecollect;
import com.fr.concurrent.NamedThreadFactory;
import com.fr.design.DesignerEnvManager; import com.fr.design.DesignerEnvManager;
import com.fr.design.mainframe.errorinfo.ErrorInfo; import com.fr.design.mainframe.errorinfo.ErrorInfo;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
@ -7,6 +8,9 @@ import com.fr.stable.StringUtils;
import com.fr.start.common.DesignerStartupContext; import com.fr.start.common.DesignerStartupContext;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/** /**
* *
* @author hades * @author hades
@ -17,9 +21,11 @@ public class StartErrorMessageCollector {
private static final StartErrorMessageCollector INSTANCE = new StartErrorMessageCollector(); private static final StartErrorMessageCollector INSTANCE = new StartErrorMessageCollector();
private ExecutorService executorService = Executors.newSingleThreadExecutor(new NamedThreadFactory(StartErrorMessageCollector.this.getClass()));
private String uuid; private String uuid;
private String activeKey; private String activeKey;
private boolean extraJudgeStart = false;
public static StartErrorMessageCollector getInstance() { public static StartErrorMessageCollector getInstance() {
return INSTANCE; return INSTANCE;
@ -37,12 +43,29 @@ public class StartErrorMessageCollector {
errorInfo.setLogid(id); errorInfo.setLogid(id);
errorInfo.setLog(msg); errorInfo.setLog(msg);
errorInfo.setStackTrace(detail); errorInfo.setStackTrace(detail);
errorInfo.setStarting(DesignerStartupContext.getInstance().isOnStartup()); errorInfo.setStarting(DesignerStartupContext.getInstance().isOnStartup() || extraJudgeStart);
errorInfo.setRemote(!WorkContext.getCurrent().isLocal()); errorInfo.setRemote(!WorkContext.getCurrent().isLocal());
errorInfo.saveAsJSON(); errorInfo.saveAsJSON();
} }
/**
* 异步记录
*/
public void asyncRecord(String id, String msg, String detail) {
executorService.submit(() -> {
record(id, msg, detail);
StartErrorMessageCollector.getInstance().setExtraJudgeStart(false);
});
}
public void record(String id, String msg) { public void record(String id, String msg) {
record(id, msg, StringUtils.EMPTY); record(id, msg, StringUtils.EMPTY);
} }
public void setExtraJudgeStart(boolean extraJudgeStart) {
this.extraJudgeStart = extraJudgeStart;
}
} }

23
designer-base/src/main/java/com/fr/design/mainframe/mobile/processor/AbstractMobileStyleDefinePaneCreator.java

@ -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;
}
}

40
designer-base/src/main/java/com/fr/design/mainframe/mobile/processor/MobileStyleDefinePaneCreator.java

@ -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);
}

3
designer-base/src/main/java/com/fr/design/utils/DesignUtils.java

@ -27,7 +27,6 @@ import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.bridge.ObjectHolder; import com.fr.stable.bridge.ObjectHolder;
import com.fr.stable.os.OperatingSystem; import com.fr.stable.os.OperatingSystem;
import com.fr.stable.plugin.ExtraDesignClassManagerProvider;
import com.fr.start.ServerStarter; import com.fr.start.ServerStarter;
import com.fr.start.common.DesignerStartupContext; import com.fr.start.common.DesignerStartupContext;
import com.fr.start.common.DesignerStartupUtil; import com.fr.start.common.DesignerStartupUtil;
@ -238,7 +237,7 @@ public class DesignUtils {
DesignerContext.getDesignerFrame().openTemplate(new FileFILE(f)); DesignerContext.getDesignerFrame().openTemplate(new FileFILE(f));
} }
}); });
} else { } else if (DeepLinkCore.getInstance().accept(line)) {
String url = line; String url = line;
UIUtil.invokeLaterIfNeeded(new Runnable() { UIUtil.invokeLaterIfNeeded(new Runnable() {
@Override @Override

9
designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java

@ -1,6 +1,7 @@
package com.fr.startup.ui; package com.fr.startup.ui;
import com.fr.base.svg.IconUtils; import com.fr.base.svg.IconUtils;
import com.fr.concurrent.NamedThreadFactory;
import com.fr.design.DesignerEnvManager; import com.fr.design.DesignerEnvManager;
import com.fr.design.dialog.UIExpandDialog; import com.fr.design.dialog.UIExpandDialog;
import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.icontainer.UIScrollPane;
@ -8,6 +9,8 @@ import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.VerticalFlowLayout; import com.fr.design.layout.VerticalFlowLayout;
import com.fr.design.mainframe.messagecollect.StartErrorMessageCollector;
import com.fr.design.mainframe.messagecollect.entity.DesignerErrorMessage;
import com.fr.design.ui.util.UIUtil; import com.fr.design.ui.util.UIUtil;
import com.fr.design.utils.ColorUtils; import com.fr.design.utils.ColorUtils;
import com.fr.design.utils.ThemeUtils; import com.fr.design.utils.ThemeUtils;
@ -49,6 +52,8 @@ import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/** /**
* 启动页 * 启动页
@ -253,6 +258,7 @@ public class StartupPageWindow extends JFrame {
try { try {
Void result = get(); Void result = get();
setVisible(false); setVisible(false);
StartErrorMessageCollector.getInstance().setExtraJudgeStart(false);
} catch (Exception e) { } catch (Exception e) {
// 处理错误 // 处理错误
UIUtil.invokeLaterIfNeeded(() -> { UIUtil.invokeLaterIfNeeded(() -> {
@ -269,6 +275,9 @@ public class StartupPageWindow extends JFrame {
setEnabled(true); setEnabled(true);
}); });
FineLoggerFactory.getLogger().error(e.getMessage(), e); FineLoggerFactory.getLogger().error(e.getMessage(), e);
StartErrorMessageCollector.getInstance().asyncRecord(DesignerErrorMessage.UNEXCEPTED_START_FAILED.getId(),
DesignerErrorMessage.UNEXCEPTED_START_FAILED.getMessage(),
e.getMessage());
} finally { } finally {
loadingPanel.hide(); loadingPanel.hide();
} }

2
designer-base/src/main/java/com/fr/widgettheme/designer/WidgetThemeDisplayAction.java

@ -31,7 +31,7 @@ public class WidgetThemeDisplayAction<T extends JTemplate<?, ?>> extends JTempla
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
final T jTemplate = getEditingComponent(); final T jTemplate = getEditingComponent();
if (jTemplate == null) { if (!JTemplate.isValid(jTemplate)) {
return; return;
} }
BaseBook baseBook = jTemplate.getTarget(); BaseBook baseBook = jTemplate.getTarget();

6
designer-base/src/main/java/com/fr/widgettheme/theme/edit/ParamContainerStyleEditPane.java

@ -1,6 +1,8 @@
package com.fr.widgettheme.theme.edit; package com.fr.widgettheme.theme.edit;
import com.fr.base.theme.TemplateTheme; import com.fr.base.theme.TemplateTheme;
import com.fr.base.theme.settings.AbstractThemedParamContainerStyle;
import com.fr.base.theme.settings.DefaultThemedParamContainerStyle;
import com.fr.widgettheme.theme.widget.style.ThemedParamContainerStyle; import com.fr.widgettheme.theme.widget.style.ThemedParamContainerStyle;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.IntervalConstants;
@ -52,8 +54,8 @@ public class ParamContainerStyleEditPane<T extends TemplateTheme> extends BasicB
@Override @Override
public void populateBean(T t) { public void populateBean(T t) {
ThemedParamContainerStyle paramContainerStyle = (ThemedParamContainerStyle) t.getParamContainerStyle(); AbstractThemedParamContainerStyle paramContainerStyle = t.getParamContainerStyle();
if (paramContainerStyle == null) { if (paramContainerStyle == null || paramContainerStyle instanceof DefaultThemedParamContainerStyle) {
paramContainerStyle = new ThemedParamContainerStyle(); paramContainerStyle = new ThemedParamContainerStyle();
t.setParamContainerStyle(paramContainerStyle); t.setParamContainerStyle(paramContainerStyle);
} }

12
designer-base/src/main/java/com/fr/widgettheme/util/WidgetThemeDesignerUtils.java

@ -43,16 +43,4 @@ public class WidgetThemeDesignerUtils {
} }
return false; return false;
} }
/**
* 判断当前widget是否为新多选下拉树控件
*/
public static boolean isNewComboBoxTreeEditor(Object widget) {
String className = widget.getClass().getName();
if (widget instanceof Class) {
className = ((Class) widget).getName();
}
return StringUtils.equals(className, "com.fr.plugin.widget.newcomboboxtree.NewComboBoxTreeEditor")
|| StringUtils.equals(className, "com.fr.plugin.widget.newcomboboxtree.XNewComboBoxTreeEditor");
}
} }

2
designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties

@ -25,3 +25,5 @@ com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369
com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.report.WatermarkSettingPane=720*600
com.fr.design.file.MultiTemplateTabPane.popUpMenu=350*65 com.fr.design.file.MultiTemplateTabPane.popUpMenu=350*65
com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600 com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600
com.fr.design.formula.FormulaPane=900*600
com.fr.design.formula.FormulaPaneWhenReserveFormula=1200*600

2
designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties

@ -24,3 +24,5 @@ com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369
com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.report.WatermarkSettingPane=720*600
com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65 com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65
com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600 com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600
com.fr.design.formula.FormulaPane=900*600
com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600

2
designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties

@ -24,3 +24,5 @@ com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369
com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.report.WatermarkSettingPane=720*600
com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65 com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65
com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600 com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600
com.fr.design.formula.FormulaPane=900*600
com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600

2
designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties

@ -24,3 +24,5 @@ com.fr.design.plugin.remind.PluginInvalidateRemindDialog.dialog=600*500
com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369 com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369
com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.report.WatermarkSettingPane=720*600
com.fr.design.file.MultiTemplateTabPane.popUpMenu=170*65 com.fr.design.file.MultiTemplateTabPane.popUpMenu=170*65
com.fr.design.formula.FormulaPane=900*600
com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600

2
designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties

@ -23,3 +23,5 @@ com.fr.design.plugin.remind.PluginInvalidateRemindDialog.dialog=600*500
com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369 com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369
com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.report.WatermarkSettingPane=720*600
com.fr.design.file.MultiTemplateTabPane.popUpMenu=170*65 com.fr.design.file.MultiTemplateTabPane.popUpMenu=170*65
com.fr.design.formula.FormulaPane=900*600
com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600

4
designer-form/src/main/java/com/fr/design/widget/ui/designer/ButtonDefinePane.java

@ -1,5 +1,6 @@
package com.fr.design.widget.ui.designer; package com.fr.design.widget.ui.designer;
import com.finebi.cbb.utils.CollectionUtils;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.IntervalConstants;
@ -19,7 +20,6 @@ import com.fr.general.GeneralContext;
import com.fr.plugin.observer.PluginEvent; import com.fr.plugin.observer.PluginEvent;
import com.fr.plugin.observer.PluginEventListener; import com.fr.plugin.observer.PluginEventListener;
import com.fr.stable.StableUtils; import com.fr.stable.StableUtils;
import com.fr.stable.collections.CollectionUtils;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
@ -67,7 +67,7 @@ public abstract class ButtonDefinePane<T extends Button> extends AbstractDataMod
private void refreshAdvancedPane() { private void refreshAdvancedPane() {
extraPaneList.clear(); extraPaneList.clear();
WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList); WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList);
containsExtraPane = !CollectionUtils.isEmpty(extraPaneList); containsExtraPane = CollectionUtils.isNotEmpty(extraPaneList);
Set<WidgetAdvancedPaneProvider<T>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); Set<WidgetAdvancedPaneProvider<T>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG);
for (WidgetAdvancedPaneProvider<T> provider : providers) { for (WidgetAdvancedPaneProvider<T> provider : providers) {
if (!provider.accept(creator)) { if (!provider.accept(creator)) {

4
designer-form/src/main/java/com/fr/design/widget/ui/designer/CheckBoxDefinePane.java

@ -1,5 +1,6 @@
package com.fr.design.widget.ui.designer; package com.fr.design.widget.ui.designer;
import com.finebi.cbb.utils.CollectionUtils;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.IntervalConstants;
@ -18,7 +19,6 @@ import com.fr.form.ui.CheckBox;
import com.fr.general.GeneralContext; import com.fr.general.GeneralContext;
import com.fr.plugin.observer.PluginEvent; import com.fr.plugin.observer.PluginEvent;
import com.fr.plugin.observer.PluginEventListener; import com.fr.plugin.observer.PluginEventListener;
import com.fr.stable.collections.CollectionUtils;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JPanel; import javax.swing.JPanel;
@ -79,7 +79,7 @@ public class CheckBoxDefinePane extends AbstractDataModify<CheckBox> {
protected void refreshExtraAdvancedPane() { protected void refreshExtraAdvancedPane() {
extraPaneList.clear(); extraPaneList.clear();
WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList); WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList);
boolean containsExtraPane = !CollectionUtils.isEmpty(extraPaneList); boolean containsExtraPane = CollectionUtils.isNotEmpty(extraPaneList);
Set<WidgetAdvancedPaneProvider<CheckBox>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); Set<WidgetAdvancedPaneProvider<CheckBox>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG);
for (WidgetAdvancedPaneProvider<CheckBox> provider : providers) { for (WidgetAdvancedPaneProvider<CheckBox> provider : providers) {
if (!provider.accept(creator)) { if (!provider.accept(creator)) {

4
designer-form/src/main/java/com/fr/design/widget/ui/designer/DateEditorDefinePane.java

@ -1,5 +1,6 @@
package com.fr.design.widget.ui.designer; package com.fr.design.widget.ui.designer;
import com.finebi.cbb.utils.CollectionUtils;
import com.fr.base.FRContext; import com.fr.base.FRContext;
import com.fr.data.core.FormatField; import com.fr.data.core.FormatField;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
@ -22,7 +23,6 @@ import com.fr.design.widget.ui.designer.date.DateFormatCheckManager;
import com.fr.design.widget.ui.designer.date.DateFormatCheckResult; import com.fr.design.widget.ui.designer.date.DateFormatCheckResult;
import com.fr.form.ui.DateEditor; import com.fr.form.ui.DateEditor;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import com.fr.stable.collections.CollectionUtils;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JPanel; import javax.swing.JPanel;
@ -101,7 +101,7 @@ public class DateEditorDefinePane extends DirectWriteEditorDefinePane<DateEditor
protected void refreshExtraAdvancedPane() { protected void refreshExtraAdvancedPane() {
extraPaneList.clear(); extraPaneList.clear();
WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList); WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList);
boolean containsExtraPane = !CollectionUtils.isEmpty(extraPaneList); boolean containsExtraPane = CollectionUtils.isNotEmpty(extraPaneList);
Set<WidgetAdvancedPaneProvider<DateEditor>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); Set<WidgetAdvancedPaneProvider<DateEditor>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG);
for (WidgetAdvancedPaneProvider<DateEditor> provider : providers) { for (WidgetAdvancedPaneProvider<DateEditor> provider : providers) {
if (!provider.accept(creator)) { if (!provider.accept(creator)) {

4
designer-form/src/main/java/com/fr/design/widget/ui/designer/DirectWriteEditorDefinePane.java

@ -1,5 +1,6 @@
package com.fr.design.widget.ui.designer; package com.fr.design.widget.ui.designer;
import com.finebi.cbb.utils.CollectionUtils;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.IntervalConstants;
@ -13,7 +14,6 @@ import com.fr.design.widgettheme.processor.WidgetThemeParaCreatorPaneAdder;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.design.widget.ui.designer.component.FormWidgetValuePane; import com.fr.design.widget.ui.designer.component.FormWidgetValuePane;
import com.fr.form.ui.DirectWriteEditor; import com.fr.form.ui.DirectWriteEditor;
import com.fr.stable.collections.CollectionUtils;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JComponent; import javax.swing.JComponent;
@ -69,7 +69,7 @@ public abstract class DirectWriteEditorDefinePane<T extends DirectWriteEditor> e
protected void refreshExtraAdvancedPane() { protected void refreshExtraAdvancedPane() {
extraPaneList.clear(); extraPaneList.clear();
WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList); WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList);
boolean containsExtraPane = !CollectionUtils.isEmpty(extraPaneList); boolean containsExtraPane = CollectionUtils.isNotEmpty(extraPaneList);
Set<WidgetAdvancedPaneProvider<T>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); Set<WidgetAdvancedPaneProvider<T>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG);
for (WidgetAdvancedPaneProvider<T> provider : providers) { for (WidgetAdvancedPaneProvider<T> provider : providers) {
if (!provider.accept(creator)) { if (!provider.accept(creator)) {

4
designer-form/src/main/java/com/fr/design/widget/ui/designer/LabelDefinePane.java

@ -1,5 +1,6 @@
package com.fr.design.widget.ui.designer; package com.fr.design.widget.ui.designer;
import com.finebi.cbb.utils.CollectionUtils;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
@ -23,7 +24,6 @@ import com.fr.general.GeneralContext;
import com.fr.plugin.observer.PluginEvent; import com.fr.plugin.observer.PluginEvent;
import com.fr.plugin.observer.PluginEventListener; import com.fr.plugin.observer.PluginEventListener;
import com.fr.stable.Constants; import com.fr.stable.Constants;
import com.fr.stable.collections.CollectionUtils;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.Icon; import javax.swing.Icon;
@ -112,7 +112,7 @@ public class LabelDefinePane extends AbstractDataModify<Label> {
protected void refreshExtraAdvancedPane() { protected void refreshExtraAdvancedPane() {
extraPaneList.clear(); extraPaneList.clear();
WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList); WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList);
boolean containsExtraPane = !CollectionUtils.isEmpty(extraPaneList); boolean containsExtraPane = CollectionUtils.isNotEmpty(extraPaneList);
Set<WidgetAdvancedPaneProvider<Label>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); Set<WidgetAdvancedPaneProvider<Label>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG);
for (WidgetAdvancedPaneProvider<Label> provider : providers) { for (WidgetAdvancedPaneProvider<Label> provider : providers) {
if (!provider.accept(creator)) { if (!provider.accept(creator)) {

4
designer-form/src/main/java/com/fr/design/widget/ui/designer/NumberEditorDefinePane.java

@ -1,5 +1,6 @@
package com.fr.design.widget.ui.designer; package com.fr.design.widget.ui.designer;
import com.finebi.cbb.utils.CollectionUtils;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.IntervalConstants;
@ -14,7 +15,6 @@ import com.fr.design.widgettheme.processor.WidgetThemeParaCreatorPaneAdder;
import com.fr.design.widget.component.NumberEditorValidatePane; import com.fr.design.widget.component.NumberEditorValidatePane;
import com.fr.design.widget.ui.designer.component.FormWidgetValuePane; import com.fr.design.widget.ui.designer.component.FormWidgetValuePane;
import com.fr.form.ui.NumberEditor; import com.fr.form.ui.NumberEditor;
import com.fr.stable.collections.CollectionUtils;
import javax.swing.JComponent; import javax.swing.JComponent;
import javax.swing.JFormattedTextField; import javax.swing.JFormattedTextField;
@ -77,7 +77,7 @@ public class NumberEditorDefinePane extends FieldEditorDefinePane<NumberEditor>
protected void refreshExtraAdvancedPane() { protected void refreshExtraAdvancedPane() {
extraPaneList.clear(); extraPaneList.clear();
WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList); WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList);
boolean containsExtraPane = !CollectionUtils.isEmpty(extraPaneList); boolean containsExtraPane = CollectionUtils.isNotEmpty(extraPaneList);
Set<WidgetAdvancedPaneProvider<NumberEditor>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); Set<WidgetAdvancedPaneProvider<NumberEditor>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG);
for (WidgetAdvancedPaneProvider<NumberEditor> provider : providers) { for (WidgetAdvancedPaneProvider<NumberEditor> provider : providers) {
if (!provider.accept(creator)) { if (!provider.accept(creator)) {

4
designer-form/src/main/java/com/fr/design/widget/ui/designer/TextFieldEditorDefinePane.java

@ -1,5 +1,6 @@
package com.fr.design.widget.ui.designer; package com.fr.design.widget.ui.designer;
import com.finebi.cbb.utils.CollectionUtils;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.IntervalConstants;
@ -17,7 +18,6 @@ import com.fr.design.widget.ui.designer.component.FormWidgetValuePane;
import com.fr.form.ui.TextEditor; import com.fr.form.ui.TextEditor;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.collections.CollectionUtils;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
@ -88,7 +88,7 @@ public class TextFieldEditorDefinePane extends FieldEditorDefinePane<TextEditor>
protected void refreshExtraAdvancedPane() { protected void refreshExtraAdvancedPane() {
extraPaneList.clear(); extraPaneList.clear();
WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList); WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList);
boolean containsExtraPane = !CollectionUtils.isEmpty(extraPaneList); boolean containsExtraPane = CollectionUtils.isNotEmpty(extraPaneList);
Set<WidgetAdvancedPaneProvider<TextEditor>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); Set<WidgetAdvancedPaneProvider<TextEditor>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG);
for (WidgetAdvancedPaneProvider<TextEditor> provider : providers) { for (WidgetAdvancedPaneProvider<TextEditor> provider : providers) {
if (!provider.accept(creator)) { if (!provider.accept(creator)) {

4
designer-form/src/main/java/com/fr/design/widget/ui/designer/btn/ButtonGroupDefinePane.java

@ -1,5 +1,6 @@
package com.fr.design.widget.ui.designer.btn; package com.fr.design.widget.ui.designer.btn;
import com.finebi.cbb.utils.CollectionUtils;
import com.fr.data.Dictionary; import com.fr.data.Dictionary;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
@ -16,7 +17,6 @@ import com.fr.design.widget.ui.designer.ButtonGroupDictPane;
import com.fr.design.widget.ui.designer.FieldEditorDefinePane; import com.fr.design.widget.ui.designer.FieldEditorDefinePane;
import com.fr.design.widget.ui.designer.component.FormWidgetValuePane; import com.fr.design.widget.ui.designer.component.FormWidgetValuePane;
import com.fr.form.ui.ButtonGroup; import com.fr.form.ui.ButtonGroup;
import com.fr.stable.collections.CollectionUtils;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
@ -71,7 +71,7 @@ public abstract class ButtonGroupDefinePane<T extends ButtonGroup> extends Field
protected void refreshExtraAdvancedPane() { protected void refreshExtraAdvancedPane() {
extraPaneList.clear(); extraPaneList.clear();
WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList); WidgetThemeParaCreatorPaneAdder.add(creator, extraPaneList);
boolean containsExtraPane = !CollectionUtils.isEmpty(extraPaneList); boolean containsExtraPane = CollectionUtils.isNotEmpty(extraPaneList);
Set<WidgetAdvancedPaneProvider<T>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); Set<WidgetAdvancedPaneProvider<T>> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG);
for (WidgetAdvancedPaneProvider<T> provider : providers) { for (WidgetAdvancedPaneProvider<T> provider : providers) {
if (!provider.accept(creator)) { if (!provider.accept(creator)) {

3
designer-form/src/main/java/com/fr/design/widgettheme/processor/WidgetThemeCreatorPaneAdder.java

@ -24,6 +24,7 @@ import com.fr.design.widgettheme.common.ButtonSettingPane;
import com.fr.design.widgettheme.common.EditorSettingPane; import com.fr.design.widgettheme.common.EditorSettingPane;
import com.fr.design.widgettheme.common.NormalButtonSettingPane; import com.fr.design.widgettheme.common.NormalButtonSettingPane;
import com.fr.design.widgettheme.common.TreeEditorSettingPane; import com.fr.design.widgettheme.common.TreeEditorSettingPane;
import com.fr.widgettheme.utils.WidgetThemeServerUtils;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
@ -88,7 +89,7 @@ public class WidgetThemeCreatorPaneAdder {
} }
private static <T> void acceptEditor(Class<?> creator, List<BasicBeanPane<T>> extraPaneList) { private static <T> void acceptEditor(Class<?> creator, List<BasicBeanPane<T>> extraPaneList) {
boolean accept = WidgetThemeDesignerUtils.isNewComboBoxTreeEditor(creator) || EDITOR_SET.contains(creator); boolean accept = WidgetThemeServerUtils.isNewComboBoxTreeEditor(creator) || EDITOR_SET.contains(creator);
if (accept) { if (accept) {
insertShortCut(extraPaneList, new EditorSettingPane<>()); insertShortCut(extraPaneList, new EditorSettingPane<>());
} }

3
designer-form/src/main/java/com/fr/design/widgettheme/processor/WidgetThemeParaCreatorPaneAdder.java

@ -21,6 +21,7 @@ import com.fr.design.widgettheme.ParaEditorSettingPane;
import com.fr.design.widgettheme.ParaTreeEditorSettingPane; import com.fr.design.widgettheme.ParaTreeEditorSettingPane;
import com.fr.widgettheme.ParameterBackgroundStyleSettingPane; import com.fr.widgettheme.ParameterBackgroundStyleSettingPane;
import com.fr.design.widgettheme.common.NormalButtonSettingPane; import com.fr.design.widgettheme.common.NormalButtonSettingPane;
import com.fr.widgettheme.utils.WidgetThemeServerUtils;
import java.util.List; import java.util.List;
@ -64,7 +65,7 @@ public class WidgetThemeParaCreatorPaneAdder {
|| creator instanceof XComboBox || creator instanceof XComboBox
|| creator instanceof XDateEditor || creator instanceof XDateEditor
|| creator instanceof XTreeComboBoxEditor || creator instanceof XTreeComboBoxEditor
|| WidgetThemeDesignerUtils.isNewComboBoxTreeEditor(creator); || WidgetThemeServerUtils.isNewComboBoxTreeEditor(creator);
if (accept) { if (accept) {
insertShortCut(extraPaneList, new ParaEditorSettingPane<>()); insertShortCut(extraPaneList, new ParaEditorSettingPane<>());
} }

1
designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxDefinePane.java

@ -16,7 +16,6 @@ import com.fr.general.GeneralContext;
import com.fr.plugin.observer.PluginEvent; import com.fr.plugin.observer.PluginEvent;
import com.fr.plugin.observer.PluginEventListener; import com.fr.plugin.observer.PluginEventListener;
import com.fr.stable.collections.CollectionUtils; import com.fr.stable.collections.CollectionUtils;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.awt.Component; import java.awt.Component;

1
designer-realize/src/main/java/com/fr/design/widget/ui/btn/FreeButtonDetailPane.java

@ -41,5 +41,4 @@ public class FreeButtonDetailPane extends AbstractExtraButtonPane<FreeButton> {
public Class classType() { public Class classType() {
return FreeButton.class; return FreeButton.class;
} }
} }

2
designer-realize/src/main/java/com/fr/start/module/optimized/DesignerStartupPageActivator.java

@ -2,6 +2,7 @@ package com.fr.start.module.optimized;
import com.fr.design.DesignerEnvManager; import com.fr.design.DesignerEnvManager;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.messagecollect.StartErrorMessageCollector;
import com.fr.design.ui.util.UIUtil; import com.fr.design.ui.util.UIUtil;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.module.Activator; import com.fr.module.Activator;
@ -164,6 +165,7 @@ public class DesignerStartupPageActivator extends Activator {
UIUtil.invokeLaterIfNeeded(() -> { UIUtil.invokeLaterIfNeeded(() -> {
// 换到 awt 线程中关闭,不然异步会出现问题。 // 换到 awt 线程中关闭,不然异步会出现问题。
DesignerStartupContext.getInstance().setOnStartup(false); DesignerStartupContext.getInstance().setOnStartup(false);
StartErrorMessageCollector.getInstance().setExtraJudgeStart(true);
recordStartupEnd(stopWatch); recordStartupEnd(stopWatch);
}); });
markComplete(); markComplete();

Loading…
Cancel
Save