Browse Source

Merge pull request #14802 in DESIGN/design from fbp/release to fbp/feature

* commit 'c7e298ca9dfb14768913f557949774de25801326':
  REPORT-134376 【fr-fbp回归】偶现保存模板,提示模板锁定信息不一致
  REPORT-134268 【FBP】连接本地数据库测试连接成功 使用时连接错误
  无jira任务 设计器单测编译问题
  无jira 图表面板遗留问题解决
  REPORT-134161 & REPORT-134062 REPORT-133943 fix:NewUI 版本管理注释面板、远程设计权限面板问题
  REPORT-134249 【fr-fbp回归】模板数据集会触发权限校验
  REPORT-133424 【fr-fbp回归】打开模板A,切换环境,模板A的锁定状态不会解除
  REPORT-134200 【fr-fbp回归】建立hsql数据驱动的数据连接失败
  REPORT-133990 & REPORT-133567 & REPORT-133398 & REPORT-133389 & REPORT-132370 & REPORT-133696 & REPORT-131838【newUI】fix:国际化布局调整及fbp回归问题修复
  REPORT-133990 & REPORT-133567 & REPORT-133398 & REPORT-133389 & REPORT-132370 & REPORT-133696 & REPORT-131838【newUI】fix:国际化布局调整及fbp回归问题修复
fbp/feature
superman 3 months ago
parent
commit
9ce814bd9f
  1. 15
      designer-base/src/main/java/com/fine/theme/utils/FineLayoutBuilder.java
  2. 3
      designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java
  3. 26
      designer-base/src/main/java/com/fr/design/backup/EnvBackupHelper.java
  4. 3
      designer-base/src/main/java/com/fr/design/data/datapane/connect/JDBCDefPane.java
  5. 10
      designer-base/src/main/java/com/fr/design/data/datapane/connect/LocalConnectionSource.java
  6. 10
      designer-base/src/main/java/com/fr/design/data/datapane/preview/ConnectionInfoBeanHelper.java
  7. 6
      designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java
  8. 3
      designer-base/src/main/java/com/fr/design/data/datapane/preview/TableDataBeanHelper.java
  9. 2
      designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTableModel.java
  10. 2
      designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/MultiTDTableDataPane.java
  11. 9
      designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java
  12. 4
      designer-base/src/main/java/com/fr/design/editor/editor/ColumnSelectedEditor.java
  13. 5
      designer-base/src/main/java/com/fr/design/editor/editor/CursorEditor.java
  14. 29
      designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java
  15. 2
      designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java
  16. 5
      designer-base/src/main/java/com/fr/design/file/TemplateDirTreePane.java
  17. 2
      designer-base/src/main/java/com/fr/design/formula/DefaultTinyFormulaPane.java
  18. 21
      designer-base/src/main/java/com/fr/design/gui/frpane/FineTabbedPane.java
  19. 7
      designer-base/src/main/java/com/fr/design/gui/frpane/UIBubbleFloatPane.java
  20. 14
      designer-base/src/main/java/com/fr/design/gui/ibutton/UIButtonGroup.java
  21. 3
      designer-base/src/main/java/com/fr/design/gui/ibutton/UIColorButtonWithAuto.java
  22. 4
      designer-base/src/main/java/com/fr/design/gui/itree/checkboxtree/CheckBoxTreeCellRenderer.java
  23. 3
      designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java
  24. 13
      designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java
  25. 18
      designer-base/src/main/java/com/fr/design/mainframe/manager/search/searcher/control/pane/TemplateDirTreeSearchPane.java
  26. 36
      designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/EditFileVersionDialog.java
  27. 4
      designer-base/src/main/resources/com/fine/theme/icon/dataset/connection_locked.svg
  28. 4
      designer-base/src/main/resources/com/fine/theme/icon/dataset/connection_locked_disable.svg
  29. 3
      designer-base/src/main/resources/com/fine/theme/icon/editor/type_cursor.svg
  30. 7
      designer-base/src/main/resources/com/fine/theme/icon/font/autoForeground.svg
  31. 7
      designer-base/src/main/resources/com/fine/theme/icon/font/autoForeground_disable.svg
  32. 3
      designer-base/src/main/resources/com/fine/theme/light/ui/fine_light.icon.json
  33. 2
      designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties
  34. 4
      designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties
  35. 2
      designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties
  36. 2
      designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties
  37. 2
      designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties
  38. 2
      designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties
  39. 6
      designer-base/src/test/java/com/fr/design/data/DesignTableDataManagerTest.java
  40. 24
      designer-base/src/test/java/com/fr/design/mainframe/template/info/TemplateInfoTestHelper.java
  41. 5
      designer-base/src/test/java/com/fr/design/menu/SnapChatMenuDefTest.java
  42. 16
      designer-base/src/test/java/com/fr/design/os/impl/SupportOSImplTest.java
  43. 2
      designer-base/src/test/java/com/fr/design/ui/FineUIDemo.java
  44. 34
      designer-base/src/test/java/com/fr/design/ui/Model.java
  45. 75
      designer-base/src/test/java/com/fr/design/ui/ModernUIPaneTest.java
  46. 4
      designer-base/src/test/java/com/fr/design/ui/report/TemplateWebSettingDemo.java
  47. 8
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java
  48. 23
      designer-chart/src/main/java/com/fr/van/chart/custom/VanChartCustomPlotPane.java
  49. 14
      designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartBeautyPaneWithGradientBar.java
  50. 5
      designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartHtmlLabelPane.java
  51. 4
      designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartLabelContentPane.java
  52. 7
      designer-chart/src/main/java/com/fr/van/chart/designer/other/AutoRefreshPane.java
  53. 2
      designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java
  54. 5
      designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartGaugeLabelDetailPane.java
  55. 12
      designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPieCategoryLabelDetailPane.java
  56. 15
      designer-chart/src/main/java/com/fr/van/chart/gauge/VanChartGaugeBeautyPane.java
  57. 5
      designer-chart/src/main/java/com/fr/van/chart/gauge/VanChartGaugeSeriesPane.java
  58. 3
      designer-realize/src/main/java/com/fanruan/boot/env/function/DesignComponent.java

15
designer-base/src/main/java/com/fine/theme/utils/FineLayoutBuilder.java

@ -4,8 +4,8 @@ import com.fine.swing.ui.layout.Column;
import com.fine.swing.ui.layout.Layouts; import com.fine.swing.ui.layout.Layouts;
import com.fine.swing.ui.layout.Row; import com.fine.swing.ui.layout.Row;
import com.fine.swing.ui.layout.Spacer; import com.fine.swing.ui.layout.Spacer;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.foldablepane.UIExpandablePane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.stable.collections.combination.Pair; import com.fr.stable.collections.combination.Pair;
@ -75,7 +75,7 @@ public class FineLayoutBuilder {
Row row = new Row(); Row row = new Row();
List<Component> visibleComponents = Arrays.stream(componentArray) List<Component> visibleComponents = Arrays.stream(componentArray)
.filter(com -> com != null && com.isVisible()).collect(Collectors.toList()); .filter(com -> com != null && com.isVisible()).collect(Collectors.toList());
if (visibleComponents.size() >= 1) { if (!visibleComponents.isEmpty()) {
// 仅当存在可见组件时处理布局 // 仅当存在可见组件时处理布局
dealWithVisibleComponents(weight, column, componentArray, row, visibleComponents); dealWithVisibleComponents(weight, column, componentArray, row, visibleComponents);
} }
@ -87,6 +87,17 @@ public class FineLayoutBuilder {
return new JPanel(); return new JPanel();
} }
/**
* 典型的左右网格布局竖向间距为典型间距标签及组件比例采用典型比例
*
* @param components 组件两列多行
* @return 面板
*/
public static JPanel commonLeftRightLayout(Component[][] components) {
return compatibleTableLayout(LayoutConstants.VERTICAL_GAP, components,
new double[]{LayoutConstants.LEFT_WEIGHT, LayoutConstants.RIGHT_WEIGHT});
}
private static void dealWithVisibleComponents(double[] weight, Column column, Component[] value, Row row, List<Component> components) { private static void dealWithVisibleComponents(double[] weight, Column column, Component[] value, Row row, List<Component> components) {
if (components.size() == 1 && value[0] != null) { if (components.size() == 1 && value[0] != null) {
// 仅存在首个元素,则该元素自适应占满整行 // 仅存在首个元素,则该元素自适应占满整行

3
designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java

@ -87,14 +87,11 @@ public class GlobalTableDataAction extends UpdateAction implements ResponseDataS
final Map<String, Connection> connectionMap = ConnectionInfoBeanHelper.createConnectionMap(ConnectionRepository.getInstance().getAll()); final Map<String, Connection> connectionMap = ConnectionInfoBeanHelper.createConnectionMap(ConnectionRepository.getInstance().getAll());
final Map<String, TableData> tableDataMap = new HashMap<>(); final Map<String, TableData> tableDataMap = new HashMap<>();
try { try {
TransmissionEncryptionManager.setTransEncryptionLevel(1);
for (ServerDataSetBean bean : beans) { for (ServerDataSetBean bean : beans) {
tableDataMap.put(bean.getDatasetName() , TableDataBeanHelper.getTableDataSet(connectionMap, bean.getDatasetType(), bean.getDatasetData())); tableDataMap.put(bean.getDatasetName() , TableDataBeanHelper.getTableDataSet(connectionMap, bean.getDatasetType(), bean.getDatasetData()));
} }
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} finally {
TransmissionEncryptionManager.removeTransEncryptionLevel();
} }
final TableDataManagerPane globalTableDataPane = new TableDataManagerPane() { final TableDataManagerPane globalTableDataPane = new TableDataManagerPane() {

26
designer-base/src/main/java/com/fr/design/backup/EnvBackupHelper.java

@ -4,11 +4,13 @@ import com.fanruan.carina.Carina;
import com.fanruan.config.realm.ConfigRepositoryFactory; import com.fanruan.config.realm.ConfigRepositoryFactory;
import com.fanruan.config.realm.local.LocalConfigRepositoryBuilder; import com.fanruan.config.realm.local.LocalConfigRepositoryBuilder;
import com.fr.design.ConfigHelper; import com.fr.design.ConfigHelper;
import com.fr.design.env.RemoteWorkspace;
import com.fr.design.mem.MemConfigBackupManager; import com.fr.design.mem.MemConfigBackupManager;
import com.fr.design.mem.MemConfigRepositoryBuilder; import com.fr.design.mem.MemConfigRepositoryBuilder;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import com.fr.workspace.Workspace; import com.fr.workspace.Workspace;
import com.fr.workspace.server.repository.connect.FineWorkspaceHttpClient;
import java.util.Properties; import java.util.Properties;
@ -42,11 +44,13 @@ public class EnvBackupHelper {
FineLoggerFactory.getLogger().info("[EnvBackup] 1.back start..."); FineLoggerFactory.getLogger().info("[EnvBackup] 1.back start...");
this.swtiching = true; this.swtiching = true;
local = WorkContext.getCurrent().isLocal(); local = WorkContext.getCurrent().isLocal();
origin = WorkContext.getCurrent();
if (local) { if (local) {
properties = ConfigHelper.getEnvProperties(); properties = ConfigHelper.getEnvProperties();
path = ConfigHelper.getEnvPropertiesPath(); path = ConfigHelper.getEnvPropertiesPath();
} else {
closeEnv();
} }
origin = WorkContext.getCurrent();
} }
/** /**
@ -107,10 +111,30 @@ public class EnvBackupHelper {
} else { } else {
// 如果是远程,则新环境的配置全部弃用,直接走老的 // 如果是远程,则新环境的配置全部弃用,直接走老的
MemConfigBackupManager.getInstance().failed(); MemConfigBackupManager.getInstance().failed();
rollbackEnv();
} }
} }
/**
* 关闭环境
*/
public void closeEnv() {
// 如果原来是远程,要先发请求告诉原来的环境我这边要断开
if (origin instanceof RemoteWorkspace) {
origin.close();
}
}
/**
* 重新进入老环境
*/
public void rollbackEnv() {
if (origin instanceof RemoteWorkspace && ((RemoteWorkspace) origin).getClient() instanceof FineWorkspaceHttpClient) {
((FineWorkspaceHttpClient) ((RemoteWorkspace) origin).getClient()).startHeartBeat();
}
}
public boolean isSwtiching() { public boolean isSwtiching() {
return swtiching; return swtiching;
} }

3
designer-base/src/main/java/com/fr/design/data/datapane/connect/JDBCDefPane.java

@ -4,7 +4,6 @@ import com.fine.swing.ui.layout.Layouts;
import com.fine.theme.icon.LazyIcon; import com.fine.theme.icon.LazyIcon;
import com.fine.theme.utils.FineUIUtils; import com.fine.theme.utils.FineUIUtils;
import com.fr.data.driver.DriverLoader; import com.fr.data.driver.DriverLoader;
import com.fr.data.driver.config.DriverLoaderConfig;
import com.fr.data.impl.JDBCDatabaseConnection; import com.fr.data.impl.JDBCDatabaseConnection;
import com.fr.data.solution.entity.DriverClasses; import com.fr.data.solution.entity.DriverClasses;
import com.fr.datasource.connection.impl.DefaultDatabaseType; import com.fr.datasource.connection.impl.DefaultDatabaseType;
@ -251,7 +250,7 @@ public class JDBCDefPane extends JPanel {
cell(driverComboBox).weight(3), flex(0.2), cell(odbcTipsLink).weight(1.8) cell(driverComboBox).weight(3), flex(0.2), cell(odbcTipsLink).weight(1.8)
).getComponent()) ).getComponent())
.addSupplier("define", () -> row( .addSupplier("define", () -> row(
cell(driverLoaderBox).weight(3), cell(driverManageLabel).weight(2) cell(driverLoaderBox).weight(3), flex(0.2), cell(driverManageLabel).weight(1.8)
).getComponent()); ).getComponent());
changeDriverRow(); changeDriverRow();

10
designer-base/src/main/java/com/fr/design/data/datapane/connect/LocalConnectionSource.java

@ -52,26 +52,19 @@ public class LocalConnectionSource extends BaseConnectionSource {
@Override @Override
public String[] testConnection(ConnectionInfoBean database) throws Exception { public String[] testConnection(ConnectionInfoBean database) throws Exception {
try { try {
// 暂时这么处理,后续最好拉到外层包装一下
TransmissionEncryptionManager.setTransEncryptionLevel(1);
return ConnectionProcessorFactory.testConnectionWithSchemaReturn(database); return ConnectionProcessorFactory.testConnectionWithSchemaReturn(database);
} catch (DriverNotFoundException e) { } catch (DriverNotFoundException e) {
throw new DriverUnExistException(); throw new DriverUnExistException();
} finally {
TransmissionEncryptionManager.removeTransEncryptionLevel();
} }
} }
@Override @Override
public void add(ConnectionInfoBean bean) throws Exception { public void add(ConnectionInfoBean bean) throws Exception {
try { try {
TransmissionEncryptionManager.setTransEncryptionLevel(1);
Connection connection = ConnectionProcessorFactory.createConnection(bean); Connection connection = ConnectionProcessorFactory.createConnection(bean);
validate(bean.getConnectionName(), connection); validate(bean.getConnectionName(), connection);
ConnectionProcessorFactory.addConnection(bean); ConnectionProcessorFactory.addConnection(bean);
} catch (DriverNotFoundException e) { } catch (DriverNotFoundException e) {
throw new DriverUnExistException(); throw new DriverUnExistException();
} finally {
TransmissionEncryptionManager.removeTransEncryptionLevel();
} }
} }
@ -84,14 +77,11 @@ public class LocalConnectionSource extends BaseConnectionSource {
@Override @Override
public void update(ConnectionInfoBean bean) throws Exception { public void update(ConnectionInfoBean bean) throws Exception {
try { try {
TransmissionEncryptionManager.setTransEncryptionLevel(1);
Connection connection = ConnectionProcessorFactory.createConnection(bean); Connection connection = ConnectionProcessorFactory.createConnection(bean);
validate(bean.getConnectionName(), connection); validate(bean.getConnectionName(), connection);
ConnectionProcessorFactory.updateConnection(bean.getConnectionName(), bean); ConnectionProcessorFactory.updateConnection(bean.getConnectionName(), bean);
} catch (DriverNotFoundException e) { } catch (DriverNotFoundException e) {
throw new DriverUnExistException(); throw new DriverUnExistException();
} finally {
TransmissionEncryptionManager.removeTransEncryptionLevel();
} }
} }

10
designer-base/src/main/java/com/fr/design/data/datapane/preview/ConnectionInfoBeanHelper.java

@ -157,7 +157,7 @@ public class ConnectionInfoBeanHelper {
.user(jdbcConnection.getUser()) .user(jdbcConnection.getUser())
.driver(jdbcConnection.getDriver()) .driver(jdbcConnection.getDriver())
// 关键中的关键,由设计器发出的请求如果要携带密码,不能传明文,必须必须必须传加密后的密码 // 关键中的关键,由设计器发出的请求如果要携带密码,不能传明文,必须必须必须传加密后的密码
.password(withPassword ? encrypt(jdbcConnection.getPassword()) : DecisionServiceConstants.DEFAULT_PASSWORD) .password(withPassword ? DataEncryptionHelper.encrypt(jdbcConnection.getPassword()) : DecisionServiceConstants.DEFAULT_PASSWORD)
.schema(jdbcConnection.getSchema()) .schema(jdbcConnection.getSchema())
.url(jdbcConnection.getURL()) .url(jdbcConnection.getURL())
.creator(jdbcConnection.getCreator()) .creator(jdbcConnection.getCreator())
@ -188,14 +188,6 @@ public class ConnectionInfoBeanHelper {
.verifyCa(jdbcConnection.getSsl().getSslType() == SslType.NORMAL && ((NormalSsl) jdbcConnection.getSsl()).isVerifyCa()); .verifyCa(jdbcConnection.getSsl().getSslType() == SslType.NORMAL && ((NormalSsl) jdbcConnection.getSsl()).isVerifyCa());
} }
private static String encrypt(String password) {
// 如果是空密码或者默认密码,就返回默认的星号回去
if (StringUtils.isEmpty(password) || StringUtils.equals(password, DecisionServiceConstants.DEFAULT_PASSWORD)) {
return DecisionServiceConstants.DEFAULT_PASSWORD;
}
return TransmissionEncryptionManager.getInstance().getEncryption(WorkplaceConstants.getEncryptionMode()).encrypt(password, WorkplaceConstants.getEncryptionKey());
}
private static Connection createJDBCConnection(ConnectionInfoBean connectionInfoBean) throws Exception { private static Connection createJDBCConnection(ConnectionInfoBean connectionInfoBean) throws Exception {
String name = connectionInfoBean.getConnectionName(); String name = connectionInfoBean.getConnectionName();

6
designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java

@ -34,6 +34,7 @@ import com.fr.design.gui.iprogressbar.AutoProgressBar;
import com.fr.design.gui.itable.SortableJTable; import com.fr.design.gui.itable.SortableJTable;
import com.fr.design.gui.itable.TableSorter; import com.fr.design.gui.itable.TableSorter;
import com.fr.design.gui.itextfield.UINumberField; import com.fr.design.gui.itextfield.UINumberField;
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;
@ -44,7 +45,6 @@ import com.fr.function.TIME;
import com.fr.general.FRFont; import com.fr.general.FRFont;
import com.fr.general.data.DataModel; import com.fr.general.data.DataModel;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.workspace.server.entity.connection.ConnectionBean;
import com.fr.workspace.server.repository.connection.ConnectionRepository; import com.fr.workspace.server.repository.connection.ConnectionRepository;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
@ -53,8 +53,6 @@ import javax.swing.JComponent;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable; import javax.swing.JTable;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.SwingWorker; import javax.swing.SwingWorker;
@ -258,7 +256,7 @@ public class PreviewTablePane extends BasicPane {
public void doCancel() { public void doCancel() {
} }
}, BasicDialog.DEFAULT); }, DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.data.datapane.preview.dialog"));
dialog.setVisible(true); dialog.setVisible(true);
// 关闭预览页面 // 关闭预览页面
PreviewTablePane.this.dialog.setVisible(false); PreviewTablePane.this.dialog.setVisible(false);

3
designer-base/src/main/java/com/fr/design/data/datapane/preview/TableDataBeanHelper.java

@ -52,14 +52,11 @@ public class TableDataBeanHelper {
final Map<String, Connection> connectionMap = ConnectionInfoBeanHelper.createConnectionMap(ConnectionRepository.getInstance().getAll()); final Map<String, Connection> connectionMap = ConnectionInfoBeanHelper.createConnectionMap(ConnectionRepository.getInstance().getAll());
final Map<String, TableData> tableDataMap = new HashMap<>(); final Map<String, TableData> tableDataMap = new HashMap<>();
try { try {
TransmissionEncryptionManager.setTransEncryptionLevel(1);
for (ServerDataSetBean bean : beans) { for (ServerDataSetBean bean : beans) {
tableDataMap.put(bean.getDatasetName() , TableDataBeanHelper.getTableDataSet(connectionMap, bean.getDatasetType(), bean.getDatasetData())); tableDataMap.put(bean.getDatasetName() , TableDataBeanHelper.getTableDataSet(connectionMap, bean.getDatasetType(), bean.getDatasetData()));
} }
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} finally {
TransmissionEncryptionManager.removeTransEncryptionLevel();
} }
return tableDataMap; return tableDataMap;
} }

2
designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTableModel.java

@ -127,8 +127,6 @@ public class TableDataDesensitizationTableModel extends UITableModelAdapter<Tabl
this.setDefaultEditor(EffectedRolesChooser.class, effectedRolesChooser); this.setDefaultEditor(EffectedRolesChooser.class, effectedRolesChooser);
this.setDefaultEditor(DesensitizationRuleStatusPane.class, new DesensitizationRuleStatusPane()); this.setDefaultEditor(DesensitizationRuleStatusPane.class, new DesensitizationRuleStatusPane());
this.setDefaultRenderer(DesensitizationRuleStatusPane.class, new DesensitizationRuleStatusPane()); this.setDefaultRenderer(DesensitizationRuleStatusPane.class, new DesensitizationRuleStatusPane());
this.createTable().getColumnModel().getColumn(TableSequences.DesensitizationRuleStatus.getNum()).setMaxWidth(60);
} }
@Override @Override

2
designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/MultiTDTableDataPane.java

@ -134,7 +134,7 @@ public class MultiTDTableDataPane extends AbstractTableDataPane<MultiTDTableData
private JPanel initSouthPanel() { private JPanel initSouthPanel() {
JPanel jpanel = new JPanel(); JPanel jpanel = new JPanel();
jpanel.setPreferredSize(new Dimension(-1, 150)); jpanel.setPreferredSize(new Dimension(super.getPreferredSize().width, FineUIScale.scale(150)));
jpanel.setLayout(new BorderLayout()); jpanel.setLayout(new BorderLayout());
editorPane = new UITableEditorPane<>(new ParameterTableModel() { editorPane = new UITableEditorPane<>(new ParameterTableModel() {

9
designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java

@ -1,13 +1,10 @@
package com.fr.design.editlock; package com.fr.design.editlock;
import com.fr.base.svg.IconUtils; import com.fine.theme.icon.LazyIcon;
import com.fr.base.svg.SVGLoader; import com.fr.base.svg.SVGLoader;
import com.fr.design.dialog.FineJOptionPane; import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.general.IOUtils;
import com.fr.workspace.WorkContext;
import com.fr.workspace.server.lock.editlock.EditLockOperator;
import com.fr.report.LockItem; import com.fr.report.LockItem;
import com.fr.workspace.server.repository.connection.ConnectionRepository; import com.fr.workspace.server.repository.connection.ConnectionRepository;
import com.fr.workspace.server.repository.tabledata.TableDataRepository; import com.fr.workspace.server.repository.tabledata.TableDataRepository;
@ -30,7 +27,7 @@ public class EditLockUtils {
/** /**
* 数据连接锁定标志 * 数据连接锁定标志
*/ */
public static final Icon CONNECTION_LOCKED_ICON = IconUtils.readIcon("/com/fr/design/images/m_web/connection_locked"); public static final Icon CONNECTION_LOCKED_ICON = new LazyIcon("connection_locked");
/** /**
* 小锁图片 * 小锁图片
@ -40,7 +37,7 @@ public class EditLockUtils {
/** /**
* 提示弹窗中的提示标志 * 提示弹窗中的提示标志
*/ */
public static final Icon TOOLTIPS_ICON = IOUtils.readIcon("/com/fr/design/images/m_web/warningIcon.png"); public static final Icon TOOLTIPS_ICON = new LazyIcon("warning");
/** /**
* 数据连接锁定中 * 数据连接锁定中

4
designer-base/src/main/java/com/fr/design/editor/editor/ColumnSelectedEditor.java

@ -1,5 +1,6 @@
package com.fr.design.editor.editor; package com.fr.design.editor.editor;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.DesignTableDataManager;
import com.fr.data.SimpleDSColumn; import com.fr.data.SimpleDSColumn;
import com.fr.design.data.datapane.TableDataComboBox; import com.fr.design.data.datapane.TableDataComboBox;
@ -18,6 +19,7 @@ import java.util.regex.Pattern;
import static com.fine.swing.ui.layout.Layouts.cell; import static com.fine.swing.ui.layout.Layouts.cell;
import static com.fine.swing.ui.layout.Layouts.row; import static com.fine.swing.ui.layout.Layouts.row;
import static com.fine.swing.ui.layout.Layouts.fix;
/** /**
* 选择数据列编辑器 * 选择数据列编辑器
@ -54,7 +56,7 @@ public class ColumnSelectedEditor extends Editor<SimpleDSColumn> implements Prep
} }
}); });
columnNameComboBox = new UIComboBox(); columnNameComboBox = new UIComboBox();
this.add(row(10, cell(tableDataComboBox), cell(columnNameComboBox)).getComponent()); this.add(row(cell(tableDataComboBox).weight(1), fix(LayoutConstants.HGAP_LARGE),cell(columnNameComboBox).weight(1)).getComponent());
} }
@Override @Override

5
designer-base/src/main/java/com/fr/design/editor/editor/CursorEditor.java

@ -28,6 +28,11 @@ public class CursorEditor extends Editor<CursorEditor> {
return "type_cursor"; return "type_cursor";
} }
@Override
public String getIconId() {
return "type_cursor";
}
@Override @Override
public boolean accept(Object object) { public boolean accept(Object object) {
return object instanceof CursorEditor ; return object instanceof CursorEditor ;

29
designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java

@ -1,8 +1,8 @@
package com.fr.design.file; package com.fr.design.file;
import com.fine.theme.icon.LazyIcon; import com.fine.theme.icon.LazyIcon;
import com.fine.theme.utils.FineComponentsFactory;
import com.fine.theme.utils.FineUIScale; import com.fine.theme.utils.FineUIScale;
import com.fine.theme.utils.FineUIStyle;
import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.design.actions.UpdateAction; import com.fr.design.actions.UpdateAction;
import com.fr.design.actions.file.DelFileAction; import com.fr.design.actions.file.DelFileAction;
@ -33,7 +33,6 @@ import com.fr.stable.StringUtils;
import com.fr.stable.collections.CollectionUtils; import com.fr.stable.collections.CollectionUtils;
import com.fr.stable.project.ProjectConstants; import com.fr.stable.project.ProjectConstants;
import javax.swing.BorderFactory;
import javax.swing.JDialog; import javax.swing.JDialog;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.JPanel; import javax.swing.JPanel;
@ -42,15 +41,11 @@ import java.awt.BorderLayout;
import java.awt.CardLayout; import java.awt.CardLayout;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.fine.swing.ui.layout.Layouts.cell;
import static com.fine.swing.ui.layout.Layouts.flex;
import static com.fine.swing.ui.layout.Layouts.row;
import static javax.swing.JOptionPane.WARNING_MESSAGE; import static javax.swing.JOptionPane.WARNING_MESSAGE;
import static javax.swing.JOptionPane.YES_NO_OPTION; import static javax.swing.JOptionPane.YES_NO_OPTION;
@ -380,28 +375,16 @@ public class DefaultTemplateTreeDefineProcessor extends AbstractTemplateTreeDefi
// 确认按钮,默认就可用 // 确认按钮,默认就可用
confirmButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Confirm")); confirmButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Confirm"));
FineUIStyle.setStyle(confirmButton, FineUIStyle.STYLE_PRIMARY); confirmButton.addActionListener(e -> confirmClose());
confirmButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
confirmClose();
}
});
confirmButton.setEnabled(true); confirmButton.setEnabled(true);
// 取消按钮 // 取消按钮
UIButton cancelButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Cancel")); UIButton cancelButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Cancel"));
cancelButton.addActionListener(new ActionListener() { cancelButton.addActionListener(e -> dispose());
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
this.add(row(8, flex(), cell(confirmButton), cell(cancelButton)) JPanel buttonPane = FineComponentsFactory.createConfirmCancelButtonPane(confirmButton, cancelButton);
.with(it -> it.setBorder(new ScaledEmptyBorder(0, 0, 10, 10))).getComponent(), BorderLayout.SOUTH); buttonPane.setBorder(new ScaledEmptyBorder(0, 10, 10, 10));
this.add(buttonPane, BorderLayout.SOUTH);
this.setSize(FineUIScale.scale(new Dimension(660, 600))); this.setSize(FineUIScale.scale(new Dimension(660, 600)));
this.setTitle(Toolkit.i18nText("Fine-Design_Basic_Move")); this.setTitle(Toolkit.i18nText("Fine-Design_Basic_Move"));

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

@ -33,6 +33,7 @@ import com.fr.design.worker.save.CallbackSaveWorker;
import com.fr.file.FILE; import com.fr.file.FILE;
import com.fr.file.FileNodeFILE; import com.fr.file.FileNodeFILE;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.IOUtils;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.stable.collections.combination.Pair; import com.fr.stable.collections.combination.Pair;
import com.fr.third.javax.annotation.Nonnull; import com.fr.third.javax.annotation.Nonnull;
@ -357,6 +358,7 @@ public class MultiTemplateTabPane extends Row {
public RightMenuCloseAction(CloseOption option, int tplIndex) { public RightMenuCloseAction(CloseOption option, int tplIndex) {
this.option = option; this.option = option;
this.setName(option.optionName); this.setName(option.optionName);
this.setSmallIcon(IOUtils.readIcon("/com/fr/base/images/cell/blank.gif"));
this.tplIndex = tplIndex; this.tplIndex = tplIndex;
} }

5
designer-base/src/main/java/com/fr/design/file/TemplateDirTreePane.java

@ -1,6 +1,7 @@
package com.fr.design.file; package com.fr.design.file;
import com.fr.base.FRContext; import com.fr.base.FRContext;
import com.fr.design.border.FineBorderFactory;
import com.fr.design.gui.itree.filetree.TemplateDirTree; import com.fr.design.gui.itree.filetree.TemplateDirTree;
import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
@ -11,11 +12,9 @@ import com.fr.file.filetree.IOFileNodeFilter;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import javax.swing.BorderFactory;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.tree.TreePath; import javax.swing.tree.TreePath;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Color;
/** /**
* 目录树面板 * 目录树面板
@ -35,7 +34,7 @@ public class TemplateDirTreePane extends JPanel {
public TemplateDirTreePane() { public TemplateDirTreePane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(BorderFactory.createLineBorder(Color.gray)); this.setBorder(FineBorderFactory.createWrappedRoundBorder());
templateDirTree = new TemplateDirTree(); templateDirTree = new TemplateDirTree();
remindPane = new TemplateDirSearchRemindPane(getTemplateDirTree()); remindPane = new TemplateDirSearchRemindPane(getTemplateDirTree());

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

@ -56,6 +56,6 @@ public class DefaultTinyFormulaPane extends TinyFormulaPane{
} }
private Component createDefaultTinyFormulaPane() { private Component createDefaultTinyFormulaPane() {
return row(cell(formulaTextField).weight(2), flex(0.1), cell(formulaTextFieldButton).weight(0.4)).getComponent(); return row(cell(formulaTextField).weight(1), flex(0.1), cell(formulaTextFieldButton)).getComponent();
} }
} }

21
designer-base/src/main/java/com/fr/design/gui/frpane/FineTabbedPane.java

@ -6,12 +6,8 @@ import com.formdev.flatlaf.ui.FlatUIUtils;
import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.design.gui.ibutton.FitUIButtonGroup; import com.fr.design.gui.ibutton.FitUIButtonGroup;
import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.ibutton.UIToggleButton;
import com.fr.design.utils.ColorUtils; import com.fr.design.utils.ColorUtils;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
import javax.swing.JComponent; import javax.swing.JComponent;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
@ -185,23 +181,6 @@ public class FineTabbedPane extends Box {
}); });
tabGroup.setSelectedIndex(0); tabGroup.setSelectedIndex(0);
cards.show(centerPane, String.valueOf(tabGroup.getSelectedItem())); cards.show(centerPane, String.valueOf(tabGroup.getSelectedItem()));
if (!useFitTab) {
initTabListeners();
}
}
private void initTabListeners() {
List<UIToggleButton> tabs = tabGroup.getLabelButtonList();
for (UIToggleButton tab : tabs) {
tab.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
if (tab.getPreferredSize().width > tab.getWidth()) {
tab.setToolTipText(tab.getText());
}
}
});
}
} }
private void fireStateChanged() { private void fireStateChanged() {

7
designer-base/src/main/java/com/fr/design/gui/frpane/UIBubbleFloatPane.java

@ -3,6 +3,7 @@ package com.fr.design.gui.frpane;
import com.fine.theme.utils.FineUIUtils; import com.fine.theme.utils.FineUIUtils;
import com.formdev.flatlaf.util.SystemInfo; import com.formdev.flatlaf.util.SystemInfo;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.dialog.UIDialog; import com.fr.design.dialog.UIDialog;
import com.fr.design.utils.AWTUtilities; import com.fr.design.utils.AWTUtilities;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
@ -32,6 +33,9 @@ import java.awt.Window;
import java.awt.event.AWTEventListener; import java.awt.event.AWTEventListener;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import static com.fine.swing.ui.layout.Layouts.column;
import static com.fine.swing.ui.layout.Layouts.cell;
/** /**
* @author Jerry * @author Jerry
* 非模态悬浮对话框气泡形状 * 非模态悬浮对话框气泡形状
@ -226,8 +230,7 @@ public abstract class UIBubbleFloatPane<T> extends BasicBeanPane<T> {
} }
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
this.add(initTopOptionMenu(), BorderLayout.NORTH); this.add(column(LayoutConstants.VGAP_MEDIUM, cell(initTopOptionMenu()), cell(contentPane)).getComponent());
this.add(contentPane, BorderLayout.CENTER);
} }
protected JPanel initTopOptionMenu() { protected JPanel initTopOptionMenu() {

14
designer-base/src/main/java/com/fr/design/gui/ibutton/UIButtonGroup.java

@ -181,6 +181,7 @@ public class UIButtonGroup<T> extends Column implements GlobalNameObserver, UIOb
} }
setBorder(new FineRoundBorder()); setBorder(new FineRoundBorder());
initLayout(getCols()); initLayout(getCols());
initTabListeners();
} }
public UIButtonGroup(String[] textArray, T[] objects) { public UIButtonGroup(String[] textArray, T[] objects) {
@ -192,6 +193,19 @@ public class UIButtonGroup<T> extends Column implements GlobalNameObserver, UIOb
return UI_CLASS_ID; return UI_CLASS_ID;
} }
private void initTabListeners() {
for (UIToggleButton tab : labelButtonList) {
tab.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
if (tab.getPreferredSize().width > tab.getWidth()) {
tab.setToolTipText(tab.getText());
}
}
});
}
}
/** /**
* 计算按钮组的列布局;支持自定义布局 * 计算按钮组的列布局;支持自定义布局
* *

3
designer-base/src/main/java/com/fr/design/gui/ibutton/UIColorButtonWithAuto.java

@ -2,7 +2,6 @@ package com.fr.design.gui.ibutton;
import com.fine.theme.icon.LazyIcon; import com.fine.theme.icon.LazyIcon;
import com.fr.chart.base.ChartConstants; import com.fr.chart.base.ChartConstants;
import com.fr.design.constants.UIConstants;
import com.fr.design.style.color.ColorControlWindow; import com.fr.design.style.color.ColorControlWindow;
import com.fr.design.style.color.ColorControlWindowWithAuto; import com.fr.design.style.color.ColorControlWindowWithAuto;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
@ -17,7 +16,7 @@ public class UIColorButtonWithAuto extends UIColorButton {
} }
if (!ComparatorUtils.equals(oldColor, ChartConstants.AUTO_FONT_COLOR) && ComparatorUtils.equals(newColor, ChartConstants.AUTO_FONT_COLOR)) { if (!ComparatorUtils.equals(oldColor, ChartConstants.AUTO_FONT_COLOR) && ComparatorUtils.equals(newColor, ChartConstants.AUTO_FONT_COLOR)) {
setIcon(UIConstants.AUTO_FONT_ICON); setIcon(new LazyIcon("autoForeground"));
} }
super.checkColorChange(oldColor, newColor); super.checkColorChange(oldColor, newColor);

4
designer-base/src/main/java/com/fr/design/gui/itree/checkboxtree/CheckBoxTreeCellRenderer.java

@ -17,7 +17,6 @@ import javax.swing.JComponent;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JTree; import javax.swing.JTree;
import javax.swing.border.Border; import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreePath; import javax.swing.tree.TreePath;
import java.awt.BorderLayout; import java.awt.BorderLayout;
@ -65,6 +64,7 @@ public class CheckBoxTreeCellRenderer extends NullPanel implements TreeCellRende
add(_checkBox, BorderLayout.WEST); add(_checkBox, BorderLayout.WEST);
JPanel gapPanel = new JPanel(); JPanel gapPanel = new JPanel();
gapPanel.setPreferredSize(FineUIScale.scale(new Dimension(4, 20))); gapPanel.setPreferredSize(FineUIScale.scale(new Dimension(4, 20)));
gapPanel.setOpaque(false);
add(gapPanel, BorderLayout.CENTER); add(gapPanel, BorderLayout.CENTER);
_actualTreeRenderer = renderer; _actualTreeRenderer = renderer;
} }
@ -80,7 +80,7 @@ public class CheckBoxTreeCellRenderer extends NullPanel implements TreeCellRende
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
_checkBox.setPreferredSize(FineUIScale.scale(new Dimension(PROTOTYPE.getPreferredSize().width, 0))); _checkBox.setPreferredSize(FineUIScale.scale(new Dimension(PROTOTYPE.getPreferredSize().width, 0)));
setComponentOrientation(tree.getComponentOrientation()); setComponentOrientation(tree.getComponentOrientation());
setOpaque(false);
TreePath path = tree.getPathForRow(row); TreePath path = tree.getPathForRow(row);
handleCheckBox(tree, path); handleCheckBox(tree, path);

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

@ -1751,6 +1751,9 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
} }
private boolean checkJTemplateAuthority() { private boolean checkJTemplateAuthority() {
if (WorkContext.getCurrent().isRoot()) {
return true;
}
ConnectionAuthorityConfigBean bean = ConnectionRepository.getInstance().getConnectionAuthorityConfig(); ConnectionAuthorityConfigBean bean = ConnectionRepository.getInstance().getConnectionAuthorityConfig();
if (!(bean !=null && bean.isConnectionEditAuth())) { if (!(bean !=null && bean.isConnectionEditAuth())) {
return true; return true;

13
designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java

@ -59,13 +59,14 @@ public class PatternBackgroundQuickPane extends BackgroundQuickPane {
backgroundColorPane = new ColorSelectBox(FineUIScale.scale(60)); backgroundColorPane = new ColorSelectBox(FineUIScale.scale(60));
foregroundColorPane.setSelectObject(DEFAULT_FOREGROUND); foregroundColorPane.setSelectObject(DEFAULT_FOREGROUND);
foregroundColorPane.setSelectObject(DEFAULT_BACKGROUND); foregroundColorPane.setSelectObject(DEFAULT_BACKGROUND);
UILabel foregroundLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Foreground"), UILabel.LEFT);
foregroundLabel.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Foreground"));
UILabel backgroundLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Background"), UILabel.LEFT);
backgroundLabel.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Background"));
this.add(Layouts.column(LayoutConstants.VERTICAL_GAP, this.add(Layouts.column(LayoutConstants.VERTICAL_GAP,
row( row(cell(foregroundLabel).weight(1), cell(foregroundColorPane).weight(4)),
cell(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Foreground"), UILabel.LEFT)).weight(1), row(cell(backgroundLabel).weight(1), cell(backgroundColorPane).weight(4))
cell(foregroundColorPane).weight(4)),
row(
cell(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Background"), UILabel.LEFT)).weight(1),
cell(backgroundColorPane).weight(4))
).with(it -> it.setBorder(new ScaledEmptyBorder(LayoutConstants.VERTICAL_GAP, 0, 0, 0))).getComponent(), BorderLayout.CENTER); ).with(it -> it.setBorder(new ScaledEmptyBorder(LayoutConstants.VERTICAL_GAP, 0, 0, 0))).getComponent(), BorderLayout.CENTER);
foregroundColorPane.addSelectChangeListener(colorChangeListener); foregroundColorPane.addSelectChangeListener(colorChangeListener);
backgroundColorPane.addSelectChangeListener(colorChangeListener); backgroundColorPane.addSelectChangeListener(colorChangeListener);

18
designer-base/src/main/java/com/fr/design/mainframe/manager/search/searcher/control/pane/TemplateDirTreeSearchPane.java

@ -1,8 +1,8 @@
package com.fr.design.mainframe.manager.search.searcher.control.pane; package com.fr.design.mainframe.manager.search.searcher.control.pane;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.design.data.datapane.management.search.pane.FineSearchPane; import com.fr.design.data.datapane.management.search.pane.FineSearchPane;
import com.fr.design.file.TemplateDirTreePane; import com.fr.design.file.TemplateDirTreePane;
import com.fr.design.gui.itextfield.UITextField;
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.manager.search.TemplateDirTreeSearchManager; import com.fr.design.mainframe.manager.search.TemplateDirTreeSearchManager;
@ -10,15 +10,10 @@ import com.fr.design.search.event.TreeSearchStatusChangeEvent;
import com.fr.design.search.event.TreeSearchStatusChangeListener; import com.fr.design.search.event.TreeSearchStatusChangeListener;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.BorderFactory;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener; import javax.swing.event.DocumentListener;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Insets;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyAdapter; import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
@ -29,11 +24,6 @@ import java.awt.event.MouseEvent;
*/ */
public class TemplateDirTreeSearchPane extends JPanel implements TreeSearchStatusChangeListener { public class TemplateDirTreeSearchPane extends JPanel implements TreeSearchStatusChangeListener {
/**
* 搜索输入框
*/
private UITextField searchTextField;
/** /**
* 搜索面板 * 搜索面板
*/ */
@ -43,14 +33,14 @@ public class TemplateDirTreeSearchPane extends JPanel implements TreeSearchStatu
@Override @Override
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) { if (e.getKeyCode() == KeyEvent.VK_ENTER) {
TemplateDirTreeSearchManager.getInstance().startSearch(searchTextField.getText()); TemplateDirTreeSearchManager.getInstance().startSearch(searchPane.getText());
} }
} }
}; };
public TemplateDirTreeSearchPane() { public TemplateDirTreeSearchPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(10, 15, 0, 10)); this.setBorder(new ScaledEmptyBorder(10, 10, 0, 10));
initSearchPane(); initSearchPane();
add(searchPane, BorderLayout.CENTER); add(searchPane, BorderLayout.CENTER);
TemplateDirTreeSearchManager.getInstance().registerTreeSearchStatusChangeListener(this); TemplateDirTreeSearchManager.getInstance().registerTreeSearchStatusChangeListener(this);
@ -94,7 +84,7 @@ public class TemplateDirTreeSearchPane extends JPanel implements TreeSearchStatu
} }
private void dealWithTextChange() { private void dealWithTextChange() {
if (StringUtils.isEmpty(searchTextField.getText()) && TemplateDirTreeSearchManager.getInstance().isInSearchMode()) { if (StringUtils.isEmpty(searchPane.getText()) && TemplateDirTreeSearchManager.getInstance().isInSearchMode()) {
// 如果是搜索模式下,看作是用户删除输入框文字,仅复原TemplateTreePane // 如果是搜索模式下,看作是用户删除输入框文字,仅复原TemplateTreePane
TemplateDirTreeSearchManager.getInstance().restoreTreePane(); TemplateDirTreeSearchManager.getInstance().restoreTreePane();
TemplateDirTreePane.getInstance().refreshDockingView(); TemplateDirTreePane.getInstance().refreshDockingView();

36
designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/EditFileVersionDialog.java

@ -1,5 +1,11 @@
package com.fr.design.mainframe.vcs.ui; package com.fr.design.mainframe.vcs.ui;
import com.fine.swing.ui.layout.Column;
import com.fine.theme.utils.FineComponentsFactory;
import com.fine.theme.utils.FineLayoutBuilder;
import com.fine.theme.utils.FineUIScale;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.design.border.FineBorderFactory;
import com.fr.design.dialog.UIDialog; import com.fr.design.dialog.UIDialog;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.icontainer.UIScrollPane;
@ -10,7 +16,6 @@ import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.DesignerFrameFileDealerPane; import com.fr.design.mainframe.DesignerFrameFileDealerPane;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.report.entity.VcsEntity; import com.fr.report.entity.VcsEntity;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
@ -19,7 +24,7 @@ import com.fr.workspace.server.vcs.VcsOperator;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Component; import java.awt.Component;
import java.awt.FlowLayout; import java.awt.Dimension;
import java.awt.Frame; import java.awt.Frame;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
@ -47,7 +52,7 @@ public class EditFileVersionDialog extends UIDialog {
initComponents(); initComponents();
setModal(true); setModal(true);
setTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Vcs_Save_Version")); setTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Vcs_Save_Version"));
setSize(300, 220); setSize(FineUIScale.scale(new Dimension(300, 220)));
setResizable(false); setResizable(false);
GUICoreUtils.centerWindow(this); GUICoreUtils.centerWindow(this);
@ -55,15 +60,20 @@ public class EditFileVersionDialog extends UIDialog {
private void initComponents() { private void initComponents() {
Column centerColumn = new Column();
centerColumn.setSpacing(10);
add(centerColumn, BorderLayout.CENTER);
JPanel fontPane = new JPanel(new BorderLayout()); JPanel fontPane = new JPanel(new BorderLayout());
UILabel fontLabel = new UILabel(" " + Toolkit.i18nText("Fine-Design_Vcs_Version_Message") + ":");
UILabel fontLabel = new UILabel(Toolkit.i18nText("Fine-Design_Vcs_Version_Message"));
fontLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Vcs_Version_Message")); fontLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Vcs_Version_Message"));
fontPane.add(fontLabel, BorderLayout.NORTH); fontPane.add(fontLabel, BorderLayout.NORTH);
msgTestArea.setBorder(null); msgTestArea.setBorder(null);
UIScrollPane scrollPane = new UIScrollPane(msgTestArea); JPanel scrollPane = FineLayoutBuilder.asBorderLayoutWrapped(new UIScrollPane(msgTestArea));
scrollPane.setBorder(FineBorderFactory.createWrappedRoundBorder());
UILabel versionTip = new UILabel(" " + Toolkit.i18nText("Fine-Design_Vcs_Version_Number") + ":"); UILabel versionTip = new UILabel(Toolkit.i18nText("Fine-Design_Vcs_Version_Number"));
versionTip.setToolTipText(Toolkit.i18nText("Fine-Design_Vcs_Version_Number")); versionTip.setToolTipText(Toolkit.i18nText("Fine-Design_Vcs_Version_Number"));
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{versionTip, versionLabel}, new Component[]{versionTip, versionLabel},
@ -72,16 +82,16 @@ public class EditFileVersionDialog extends UIDialog {
double[] rowSizes = new double[]{25, 100}; double[] rowSizes = new double[]{25, 100};
double[] columnSizes = new double[]{70, 200}; double[] columnSizes = new double[]{70, 200};
add(TableLayoutHelper.createTableLayoutPane(components, rowSizes, columnSizes), BorderLayout.CENTER); JPanel pane = TableLayoutHelper.createTableLayoutPane(components, rowSizes, columnSizes);
JPanel buttonPane = new JPanel(new FlowLayout(FlowLayout.RIGHT));
add(buttonPane, BorderLayout.SOUTH);
UIButton ok = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_OK")); UIButton ok = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_OK"));
UIButton cancel = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Design_Action_Cancel")); UIButton cancel = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Design_Action_Cancel"));
JPanel buttonPane = FineComponentsFactory.createConfirmCancelButtonPane(ok, cancel);
centerColumn.add(pane);
centerColumn.add(buttonPane);
centerColumn.setBorder(new ScaledEmptyBorder(10, 10, 10, 10));
buttonPane.add(ok);
buttonPane.add(cancel);
ok.addActionListener(new ActionListener() { ok.addActionListener(new ActionListener() {
@Override @Override

4
designer-base/src/main/resources/com/fine/theme/icon/dataset/connection_locked.svg

@ -0,0 +1,4 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2 4C2 2.89543 2.89543 2 4 2H28C28.5523 2 29 2.44772 29 3V12H21.4H4V18H14.6617C14.6542 18.0108 14.6469 18.0216 14.6395 18.0324C13.707 18.2021 13 19.0185 13 20V20H4V26H13V28C13 28 13 28 13 28H4C2.89543 28 2 27.1046 2 26V4ZM4 4H27V10H4V4ZM7 8C7.55228 8 8 7.55228 8 7C8 6.44772 7.55228 6 7 6C6.44772 6 6 6.44772 6 7C6 7.55228 6.44772 8 7 8ZM11 8C11.5523 8 12 7.55228 12 7C12 6.44772 11.5523 6 11 6C10.4477 6 10 6.44772 10 7C10 7.55228 10.4477 8 11 8Z" fill="#0A1C38" fill-opacity="0.9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.2 18V19H20.8V18C20.8 16.785 21.785 15.8 23 15.8C24.215 15.8 25.2 16.785 25.2 18ZM28 19H27V18C27 15.7909 25.2091 14 23 14C20.7909 14 19 15.7909 19 18V19H18C16.8954 19 16 19.8954 16 21V27C16 28.1046 16.8954 29 18 29H28C29.1046 29 30 28.1046 30 27V21C30 19.8954 29.1046 19 28 19ZM28.2 21.8C28.2 21.2477 27.7523 20.8 27.2 20.8H18.8C18.2477 20.8 17.8 21.2477 17.8 21.8V26.2C17.8 26.7523 18.2477 27.2 18.8 27.2H27.2C27.7523 27.2 28.2 26.7523 28.2 26.2V21.8ZM23 22C22.4477 22 22 22.4477 22 23V25C22 25.5523 22.4477 26 23 26C23.5523 26 24 25.5523 24 25V23C24 22.4477 23.5523 22 23 22Z" fill="#F1393C"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

4
designer-base/src/main/resources/com/fine/theme/icon/dataset/connection_locked_disable.svg

@ -0,0 +1,4 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2 4C2 2.89543 2.89543 2 4 2H28C28.5523 2 29 2.44772 29 3V12H21.4H4V18H14.6617C14.6542 18.0108 14.6469 18.0216 14.6395 18.0324C13.707 18.2021 13 19.0185 13 20V20H4V26H13V28C13 28 13 28 13 28H4C2.89543 28 2 27.1046 2 26V4ZM4 4H27V10H4V4ZM7 8C7.55228 8 8 7.55228 8 7C8 6.44772 7.55228 6 7 6C6.44772 6 6 6.44772 6 7C6 7.55228 6.44772 8 7 8ZM11 8C11.5523 8 12 7.55228 12 7C12 6.44772 11.5523 6 11 6C10.4477 6 10 6.44772 10 7C10 7.55228 10.4477 8 11 8Z" fill="#A6ABB2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.2 18V19H20.8V18C20.8 16.785 21.785 15.8 23 15.8C24.215 15.8 25.2 16.785 25.2 18ZM28 19H27V18C27 15.7909 25.2091 14 23 14C20.7909 14 19 15.7909 19 18V19H18C16.8954 19 16 19.8954 16 21V27C16 28.1046 16.8954 29 18 29H28C29.1046 29 30 28.1046 30 27V21C30 19.8954 29.1046 19 28 19ZM28.2 21.8C28.2 21.2477 27.7523 20.8 27.2 20.8H18.8C18.2477 20.8 17.8 21.2477 17.8 21.8V26.2C17.8 26.7523 18.2477 27.2 18.8 27.2H27.2C27.7523 27.2 28.2 26.7523 28.2 26.2V21.8ZM23 22C22.4477 22 22 22.4477 22 23V25C22 25.5523 22.4477 26 23 26C23.5523 26 24 25.5523 24 25V23C24 22.4477 23.5523 22 23 22Z" fill="#A6ABB2"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

3
designer-base/src/main/resources/com/fine/theme/icon/editor/type_cursor.svg

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 5.66667C11.3137 5.66667 14 4.622 14 3.33333C14 2.04467 11.3137 1 8 1C4.68629 1 2 2.04467 2 3.33333C2 4.622 4.68629 5.66667 8 5.66667ZM14 4.5C14 5.78866 11.3137 6.83333 8 6.83333C4.68629 6.83333 2 5.78866 2 4.5V8C2 9.28866 4.68629 10.3333 8 10.3333C11.3137 10.3333 14 9.28866 14 8V4.5ZM8 11.5C11.3137 11.5 14 10.4553 14 9.16667V12.6667C14 13.9553 11.3137 15 8 15C4.68629 15 2 13.9553 2 12.6667V9.16667C2 10.4553 4.68629 11.5 8 11.5Z" fill="#0A1C38" fill-opacity="0.9"/>
</svg>

After

Width:  |  Height:  |  Size: 624 B

7
designer-base/src/main/resources/com/fine/theme/icon/font/autoForeground.svg

@ -0,0 +1,7 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.9488 22.9491C7.9488 22.3968 8.39651 21.9491 8.9488 21.9491H22.9488C23.5011 21.9491 23.9488 22.3968 23.9488 22.9491C23.9488 23.5014 23.5011 23.9491 22.9488 23.9491H8.9488C8.39651 23.9491 7.9488 23.5014 7.9488 22.9491Z" fill="#23334C"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.857 6.53016C16.6935 6.17601 16.3391 5.94922 15.949 5.94922C15.559 5.94922 15.2045 6.17601 15.0411 6.53016L9.04108 19.5302C8.80964 20.0316 9.02853 20.6257 9.52998 20.8572C10.0314 21.0886 10.6256 20.8697 10.857 20.3683L12.435 16.9492H19.4631L21.0411 20.3683C21.2725 20.8697 21.8666 21.0886 22.3681 20.8572C22.8696 20.6257 23.0884 20.0316 22.857 19.5302L16.857 6.53016ZM18.54 14.9492L15.949 9.33552L13.3581 14.9492H18.54Z" fill="#23334C"/>
<path d="M6.25704 23.3785C5.97259 24.16 5.10845 24.563 4.32693 24.2785L1.04351 23.0836C0.524528 22.8947 0.256941 22.3208 0.445833 21.8019C0.634726 21.2829 1.20857 21.0153 1.72755 21.2042L4.54661 22.2303L5.57271 19.4111C5.7616 18.8921 6.33545 18.6245 6.85443 18.8134C7.3734 19.0023 7.64099 19.5761 7.4521 20.0951L6.25704 23.3785Z" fill="#0A1C38" fill-opacity="0.9"/>
<path d="M30.8544 8.81349C31.3734 9.00238 31.641 9.57622 31.4521 10.0952C31.2632 10.6142 30.6894 10.8818 30.1704 10.6929L27.3513 9.66682L26.3252 12.486C26.1363 13.005 25.5625 13.2726 25.0435 13.0837C24.5245 12.8948 24.2569 12.3209 24.4458 11.802L25.8615 7.91257C26.0241 7.46574 26.5182 7.23535 26.965 7.39798L30.8544 8.81349Z" fill="#23334C"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M27.9487 15.9489C27.9487 22.5763 22.5761 27.9489 15.9487 27.9489C13.7838 27.9489 11.7528 27.3756 9.99928 26.3725C9.57918 26.1322 9.04509 26.1809 8.70287 26.5231C8.25873 26.9673 8.3201 27.7066 8.86151 28.025C10.9403 29.2477 13.3626 29.9489 15.9487 29.9489C23.6807 29.9489 29.9487 23.6808 29.9487 15.9489C29.9487 13.5032 29.3216 11.204 28.2194 9.20329C27.9623 8.73652 27.7557 9.3812 27.4487 8.94885L25.9343 9.29167C27.2068 11.1966 27.9487 13.4861 27.9487 15.9489ZM23.6967 4.28646C24.2 4.62148 24.2401 5.32909 23.8126 5.7566C23.4558 6.11336 22.8929 6.14803 22.4696 5.8735C20.5922 4.65593 18.353 3.94885 15.9487 3.94885C9.32131 3.94885 3.94873 9.32144 3.94873 15.9489C3.94873 18.2179 4.57851 20.3399 5.6728 22.1495C5.90663 22.5362 5.5839 23.056 5.1383 22.9808C5.01629 22.9603 4.91565 22.8769 4.80319 22.8253C4.44537 22.6611 4.11939 23.4635 3.82168 22.9489C2.63049 20.8896 1.94873 18.4989 1.94873 15.9489C1.94873 8.21687 8.21674 1.94885 15.9487 1.94885C18.8139 1.94885 21.478 2.80953 23.6967 4.28646Z" fill="#23334C"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

7
designer-base/src/main/resources/com/fine/theme/icon/font/autoForeground_disable.svg

@ -0,0 +1,7 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.9488 22.9491C7.9488 22.3968 8.39651 21.9491 8.9488 21.9491H22.9488C23.5011 21.9491 23.9488 22.3968 23.9488 22.9491C23.9488 23.5014 23.5011 23.9491 22.9488 23.9491H8.9488C8.39651 23.9491 7.9488 23.5014 7.9488 22.9491Z" fill="#B8BDC5"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.857 6.53016C16.6935 6.17601 16.3391 5.94922 15.949 5.94922C15.559 5.94922 15.2045 6.17601 15.0411 6.53016L9.04108 19.5302C8.80964 20.0316 9.02853 20.6257 9.52998 20.8572C10.0314 21.0886 10.6256 20.8697 10.857 20.3683L12.435 16.9492H19.4631L21.0411 20.3683C21.2725 20.8697 21.8666 21.0886 22.3681 20.8572C22.8696 20.6257 23.0884 20.0316 22.857 19.5302L16.857 6.53016ZM18.54 14.9492L15.949 9.33552L13.3581 14.9492H18.54Z" fill="#B8BDC5"/>
<path d="M6.25704 23.3785C5.97259 24.16 5.10845 24.563 4.32693 24.2785L1.04351 23.0836C0.524528 22.8947 0.256941 22.3208 0.445833 21.8019C0.634726 21.2829 1.20857 21.0153 1.72755 21.2042L4.54661 22.2303L5.57271 19.4111C5.7616 18.8921 6.33545 18.6245 6.85443 18.8134C7.3734 19.0023 7.64099 19.5761 7.4521 20.0951L6.25704 23.3785Z" fill="#B8BDC5"/>
<path d="M30.8544 8.81349C31.3734 9.00238 31.641 9.57622 31.4521 10.0952C31.2632 10.6142 30.6894 10.8818 30.1704 10.6929L27.3513 9.66682L26.3252 12.486C26.1363 13.005 25.5625 13.2726 25.0435 13.0837C24.5245 12.8948 24.2569 12.3209 24.4458 11.802L25.8615 7.91257C26.0241 7.46574 26.5182 7.23535 26.965 7.39798L30.8544 8.81349Z" fill="#B8BDC5"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M27.9487 15.9489C27.9487 22.5763 22.5761 27.9489 15.9487 27.9489C13.7838 27.9489 11.7528 27.3756 9.99928 26.3725C9.57918 26.1322 9.04509 26.1809 8.70287 26.5231C8.25873 26.9673 8.3201 27.7066 8.86151 28.025C10.9403 29.2477 13.3626 29.9489 15.9487 29.9489C23.6807 29.9489 29.9487 23.6808 29.9487 15.9489C29.9487 13.5032 29.3216 11.204 28.2194 9.20329C27.9623 8.73652 27.7557 9.3812 27.4487 8.94885L25.9343 9.29167C27.2068 11.1966 27.9487 13.4861 27.9487 15.9489ZM23.6967 4.28646C24.2 4.62148 24.2401 5.32909 23.8126 5.7566C23.4558 6.11336 22.8929 6.14803 22.4696 5.8735C20.5922 4.65593 18.353 3.94885 15.9487 3.94885C9.32131 3.94885 3.94873 9.32144 3.94873 15.9489C3.94873 18.2179 4.57851 20.3399 5.6728 22.1495C5.90663 22.5362 5.5839 23.056 5.1383 22.9808C5.01629 22.9603 4.91565 22.8769 4.80319 22.8253C4.44537 22.6611 4.11939 23.4635 3.82168 22.9489C2.63049 20.8896 1.94873 18.4989 1.94873 15.9489C1.94873 8.21687 8.21674 1.94885 15.9487 1.94885C18.8139 1.94885 21.478 2.80953 23.6967 4.28646Z" fill="#B8BDC5"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

3
designer-base/src/main/resources/com/fine/theme/light/ui/fine_light.icon.json

@ -43,6 +43,7 @@
"database_warning": "dataset/database_warning.svg", "database_warning": "dataset/database_warning.svg",
"preview": "dataset/preview.svg", "preview": "dataset/preview.svg",
"connection": "dataset/connection.svg", "connection": "dataset/connection.svg",
"connection_locked": "dataset/connection_locked.svg",
"class_table_data": "dataset/class_table_data.svg", "class_table_data": "dataset/class_table_data.svg",
"data_table": "dataset/data_table.svg", "data_table": "dataset/data_table.svg",
"multi": "dataset/multi.svg", "multi": "dataset/multi.svg",
@ -170,6 +171,7 @@
"underline": "font/underline.svg", "underline": "font/underline.svg",
"foreground": "font/foreground.svg", "foreground": "font/foreground.svg",
"background": "font/background.svg", "background": "font/background.svg",
"autoForeground": "font/autoForeground.svg",
"h_left": "cellstyle/h_left.svg", "h_left": "cellstyle/h_left.svg",
"h_center": "cellstyle/h_center.svg", "h_center": "cellstyle/h_center.svg",
"h_right": "cellstyle/h_right.svg", "h_right": "cellstyle/h_right.svg",
@ -384,6 +386,7 @@
"type_double_popup": "editor/type_double_popup.svg", "type_double_popup": "editor/type_double_popup.svg",
"type_boolean": "editor/type_boolean.svg", "type_boolean": "editor/type_boolean.svg",
"type_boolean_popup": "editor/type_boolean_popup.svg", "type_boolean_popup": "editor/type_boolean_popup.svg",
"type_cursor": "editor/type_cursor.svg",
"date_popup": "editor/date_popup.svg", "date_popup": "editor/date_popup.svg",
"param_popup": "editor/param_popup.svg", "param_popup": "editor/param_popup.svg",
"cellelement_popup": "editor/cellelement_popup.svg", "cellelement_popup": "editor/cellelement_popup.svg",

2
designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties

@ -1128,7 +1128,7 @@ Tree.selectionInactiveBackground = @selectionBackground
Tree.selectionInactiveForeground = @selectionForeground Tree.selectionInactiveForeground = @selectionForeground
Tree.textBackground = $Tree.background Tree.textBackground = $Tree.background
Tree.textForeground = $Tree.foreground Tree.textForeground = $Tree.foreground
Tree.selectionBorderColor = @cellFocusColor Tree.selectionBorderColor = #00000000
Tree.dropCellBackground = @dropCellBackground Tree.dropCellBackground = @dropCellBackground
Tree.dropCellForeground = @dropCellForeground Tree.dropCellForeground = @dropCellForeground
Tree.dropLineColor = @dropLineColor Tree.dropLineColor = @dropLineColor

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

@ -35,6 +35,8 @@ com.fr.design.mainframe.EastRegionContainerPane.minimum=340*400
com.fr.design.mainframe.EastRegionContainerPane.standard=480*400 com.fr.design.mainframe.EastRegionContainerPane.standard=480*400
com.fr.design.ds.column.cellEditor.pane=900*600 com.fr.design.ds.column.cellEditor.pane=900*600
com.fr.design.actions.reportWebAttr.dialog=800*630 com.fr.design.actions.reportWebAttr.dialog=800*630
com.fr.design.actions.printingSetting.dialog=800*600 com.fr.design.actions.printingSetting.dialog=700*600
com.fr.design.data.datapane.preview.dialog=700*600

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

@ -35,5 +35,7 @@ com.fr.design.mainframe.EastRegionContainerPane.standard=480*400
com.fr.design.ds.column.cellEditor.pane=900*600 com.fr.design.ds.column.cellEditor.pane=900*600
com.fr.design.actions.reportWebAttr.dialog=700*630 com.fr.design.actions.reportWebAttr.dialog=700*630
com.fr.design.actions.printingSetting.dialog=700*600 com.fr.design.actions.printingSetting.dialog=700*600
com.fr.design.data.datapane.preview.dialog=700*600

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

@ -35,5 +35,7 @@ com.fr.design.mainframe.EastRegionContainerPane.standard=340*400
com.fr.design.ds.column.cellEditor.pane=900*600 com.fr.design.ds.column.cellEditor.pane=900*600
com.fr.design.actions.reportWebAttr.dialog=700*630 com.fr.design.actions.reportWebAttr.dialog=700*630
com.fr.design.actions.printingSetting.dialog=700*600 com.fr.design.actions.printingSetting.dialog=700*600
com.fr.design.data.datapane.preview.dialog=700*600

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

@ -35,5 +35,7 @@ com.fr.design.mainframe.EastRegionContainerPane.standard=286*400
com.fr.design.ds.column.cellEditor.pane=700*600 com.fr.design.ds.column.cellEditor.pane=700*600
com.fr.design.actions.reportWebAttr.dialog=660*600 com.fr.design.actions.reportWebAttr.dialog=660*600
com.fr.design.actions.printingSetting.dialog=660*600 com.fr.design.actions.printingSetting.dialog=660*600
com.fr.design.data.datapane.preview.dialog=660*600

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

@ -34,5 +34,7 @@ com.fr.design.mainframe.EastRegionContainerPane.standard=286*400
com.fr.design.ds.column.cellEditor.pane=700*600 com.fr.design.ds.column.cellEditor.pane=700*600
com.fr.design.actions.reportWebAttr.dialog=700*630 com.fr.design.actions.reportWebAttr.dialog=700*630
com.fr.design.actions.printingSetting.dialog=700*600 com.fr.design.actions.printingSetting.dialog=700*600
com.fr.design.data.datapane.preview.dialog=700*600

6
designer-base/src/test/java/com/fr/design/data/DesignTableDataManagerTest.java

@ -51,9 +51,9 @@ public class DesignTableDataManagerTest {
EasyMock.expect(TableDataConfig.getInstance()).andReturn(config).once().andReturn(config2).once(); EasyMock.expect(TableDataConfig.getInstance()).andReturn(config).once().andReturn(config2).once();
PowerMock.mockStatic(TableDataFactory.class); PowerMock.mockStatic(TableDataFactory.class);
EasyMock.expect(TableDataFactory.getSortOfChineseNameOfServerData(config)) EasyMock.expect(TableDataFactory.getSortOfChineseNameOfServerData())
.andReturn(new String[]{"firstData", "secondData"}).once(); .andReturn(new String[]{"firstData", "secondData"}).once();
EasyMock.expect(TableDataFactory.getSortOfChineseNameOfServerData(config2)) EasyMock.expect(TableDataFactory.getSortOfChineseNameOfServerData())
.andReturn(new String[]{"firstData", "secondData"}).once(); .andReturn(new String[]{"firstData", "secondData"}).once();
@ -119,7 +119,7 @@ public class DesignTableDataManagerTest {
EasyMock.expect(dataSource.getTableData("ds2")).andReturn(td2).anyTimes(); EasyMock.expect(dataSource.getTableData("ds2")).andReturn(td2).anyTimes();
EasyMock.expect(TableDataConfig.getInstance()).andReturn(config).anyTimes(); EasyMock.expect(TableDataConfig.getInstance()).andReturn(config).anyTimes();
PowerMock.mockStatic(TableDataFactory.class); PowerMock.mockStatic(TableDataFactory.class);
EasyMock.expect(TableDataFactory.getSortOfChineseNameOfServerData(config)) EasyMock.expect(TableDataFactory.getSortOfChineseNameOfServerData())
.andReturn(new String[]{"ds1", "ds2"}).anyTimes(); .andReturn(new String[]{"ds1", "ds2"}).anyTimes();
EasyMock.expect(TableDataFactory.getSortOfChineseNameOfTemplateData(dataSource)) EasyMock.expect(TableDataFactory.getSortOfChineseNameOfTemplateData(dataSource))
.andReturn(new String[]{"ds1", "ds2"}); .andReturn(new String[]{"ds1", "ds2"});

24
designer-base/src/test/java/com/fr/design/mainframe/template/info/TemplateInfoTestHelper.java

@ -1,12 +1,7 @@
package com.fr.design.mainframe.template.info; package com.fr.design.mainframe.template.info;
import com.fr.config.BBSAttr;
import com.fr.config.MarketConfig;
import com.fr.design.DesignerEnvManager;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.json.JSONObject; import com.fr.json.JSONObject;
import org.easymock.EasyMock;
import org.powermock.api.easymock.PowerMock;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
@ -31,23 +26,4 @@ class TemplateInfoTestHelper {
field.set(null, newValue); field.set(null, newValue);
} }
static void setUpMockForNewInstance() throws Exception {
MarketConfig mockMarketConfig = EasyMock.mock(MarketConfig.class);
BBSAttr bbsAttr = EasyMock.mock(BBSAttr.class);
EasyMock.expect(bbsAttr.getBbsUid()).andReturn(71113).anyTimes();
EasyMock.expect(mockMarketConfig.getBBSAttr()).andReturn(bbsAttr).anyTimes();
PowerMock.mockStatic(MarketConfig.class);
EasyMock.expect(MarketConfig.getInstance()).andReturn(mockMarketConfig).anyTimes();
PowerMock.mockStatic(DesignerEnvManager.class);
DesignerEnvManager envManager = EasyMock.mock( DesignerEnvManager.class);
EasyMock.expect(envManager.getUUID()).andReturn("6b6699ff-ec63-43b0-9deb-b580a5f10411").anyTimes();
EasyMock.expect(envManager.isJoinProductImprove()).andReturn(true).anyTimes();
EasyMock.expect(DesignerEnvManager.getEnvManager()).andReturn(envManager).anyTimes();
EasyMock.replay(mockMarketConfig, bbsAttr, envManager);
PowerMock.replayAll();
}
} }

5
designer-base/src/test/java/com/fr/design/menu/SnapChatMenuDefTest.java

@ -9,9 +9,6 @@ import com.fr.design.i18n.Toolkit;
import com.fr.design.notification.SnapChatAllTypes; import com.fr.design.notification.SnapChatAllTypes;
import com.fr.design.notification.SnapChatConfig; import com.fr.design.notification.SnapChatConfig;
import com.fr.stable.xml.XMLableReader; import com.fr.stable.xml.XMLableReader;
import com.fr.store.StateHubManager;
import com.fr.store.impl.MemoryLock;
import com.fr.store.impl.MemoryStore;
import com.fr.transaction.Configurations; import com.fr.transaction.Configurations;
import com.fr.transaction.LocalConfigurationHelper; import com.fr.transaction.LocalConfigurationHelper;
import org.easymock.EasyMock; import org.easymock.EasyMock;
@ -41,8 +38,6 @@ public class SnapChatMenuDefTest {
DaoContext.setXmlEntityDao(new LocalXmlEntityDao()); DaoContext.setXmlEntityDao(new LocalXmlEntityDao());
DaoContext.setClassHelperDao(new LocalClassHelperDao()); DaoContext.setClassHelperDao(new LocalClassHelperDao());
DaoContext.setEntityDao(new LocalEntityDao()); DaoContext.setEntityDao(new LocalEntityDao());
StateHubManager.setLock(new MemoryLock());
StateHubManager.setStorage(new MemoryStore());
Configurations.setHelper(new LocalConfigurationHelper()); Configurations.setHelper(new LocalConfigurationHelper());
} }

16
designer-base/src/test/java/com/fr/design/os/impl/SupportOSImplTest.java

@ -1,16 +1,13 @@
package com.fr.design.os.impl; package com.fr.design.os.impl;
import com.fr.general.GeneralContext; import com.fr.general.GeneralContext;
import com.fr.third.org.apache.commons.math3.analysis.function.Pow;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import java.util.Locale;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import java.util.Locale;
/** /**
* @author hades * @author hades
@ -27,13 +24,4 @@ public class SupportOSImplTest extends TestCase {
Assert.assertFalse(SupportOSImpl.AUTOPUSHUPDATE.support()); Assert.assertFalse(SupportOSImpl.AUTOPUSHUPDATE.support());
} }
@Test
public void testGetMacOsVersion() throws Exception {
String backUp = System.getProperty("os.version");
System.setProperty("os.version", "10.16");
int number = Whitebox.invokeMethod(SupportOSImpl.MACOS_WEB_PLUGIN_MANAGEMENT, "getMacOsVersion");
Assert.assertEquals(16, number);
System.setProperty("os.version", backUp);
}
} }

2
designer-base/src/test/java/com/fr/design/ui/FineUIDemo.java

@ -20,7 +20,7 @@ public class FineUIDemo {
// 是否需要开启调试窗口 // 是否需要开启调试窗口
DesignerEnvManager.getEnvManager().setOpenDebug(true); DesignerEnvManager.getEnvManager().setOpenDebug(true);
final JxUIPane<ModernUIPaneTest.Model> pane = new JxUIPane.Builder<ModernUIPaneTest.Model>() final JxUIPane<Model> pane = new JxUIPane.Builder<Model>()
.withComponent(StartComponent.KEY).build(); .withComponent(StartComponent.KEY).build();
contentPane.add(pane, BorderLayout.CENTER); contentPane.add(pane, BorderLayout.CENTER);
frame.setVisible(true); frame.setVisible(true);

34
designer-base/src/test/java/com/fr/design/ui/Model.java

@ -0,0 +1,34 @@
package com.fr.design.ui;
/**
* 测试用
*
* @author vito
* @since 11.0
* Created on 2024/9/11
*/
public class Model {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void print(String message) {
System.out.println(message);
}
}

75
designer-base/src/test/java/com/fr/design/ui/ModernUIPaneTest.java

@ -1,75 +0,0 @@
package com.fr.design.ui;
import com.fr.design.DesignerEnvManager;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author richie
* @version 10.0
* Created by richie on 2019-03-05
*/
public class ModernUIPaneTest {
public static void main(String... args) {
final JFrame frame = new JFrame();
frame.setSize(1200, 800);
JPanel contentPane = (JPanel) frame.getContentPane();
// 是否需要开启调试窗口
DesignerEnvManager.getEnvManager().setOpenDebug(true);
final ModernUIPane<Model> pane = new ModernUIPane.Builder<Model>()
.withEMB("/com/fr/design/ui/demo.html").namespace("Pool").build();
contentPane.add(pane, BorderLayout.CENTER);
Model model = new Model();
model.setAge(20);
model.setName("Pick");
pane.populate(model);
JPanel panel = new JPanel(new FlowLayout());
contentPane.add(panel, BorderLayout.SOUTH);
JButton button = new JButton("点击我可以看到Swing的弹框,输出填写的信息");
panel.add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Model returnValue = pane.update();
if (returnValue != null) {
JOptionPane.showMessageDialog(frame, String.format("姓名为:%s,年龄为:%d", returnValue.getName(), returnValue.getAge()));
}
}
});
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static class Model {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void print(String message) {
System.out.println(message);
}
}
}

4
designer-base/src/test/java/com/fr/design/ui/report/TemplateWebSettingDemo.java

@ -2,7 +2,7 @@ package com.fr.design.ui.report;
import com.fr.design.DesignerEnvManager; import com.fr.design.DesignerEnvManager;
import com.fr.design.jxbrowser.JxUIPane; import com.fr.design.jxbrowser.JxUIPane;
import com.fr.design.ui.ModernUIPaneTest; import com.fr.design.ui.Model;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JPanel; import javax.swing.JPanel;
@ -21,7 +21,7 @@ public class TemplateWebSettingDemo {
// 是否需要开启调试窗口 // 是否需要开启调试窗口
DesignerEnvManager.getEnvManager().setOpenDebug(true); DesignerEnvManager.getEnvManager().setOpenDebug(true);
final JxUIPane<ModernUIPaneTest.Model> pane = new JxUIPane.Builder<ModernUIPaneTest.Model>() final JxUIPane<Model> pane = new JxUIPane.Builder<Model>()
.withComponent(TemplateWebSettingComponent.KEY).build(); .withComponent(TemplateWebSettingComponent.KEY).build();
contentPane.add(pane, BorderLayout.CENTER); contentPane.add(pane, BorderLayout.CENTER);
frame.setVisible(true); frame.setVisible(true);

8
designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java

@ -457,8 +457,9 @@ public class ChartTypeButtonPane extends BasicBeanPane<ChartCollection> implemen
private class ChartChangeButton extends UIToggleButton { private class ChartChangeButton extends UIToggleButton {
private static final double DEL_WIDTH = 9; private final double DEL_WIDTH = scale(9);
private Icon closeIcon = new LazyIcon("closeTag", 8); private final double DOWN_HEIGHT = scale(1);
private final Icon closeIcon = new LazyIcon("closeTag", 8);
private boolean isMoveOn = false; private boolean isMoveOn = false;
private String buttonName = ""; private String buttonName = "";
@ -506,7 +507,8 @@ public class ChartTypeButtonPane extends BasicBeanPane<ChartCollection> implemen
private void paintDeleteButton(Graphics g2d) { private void paintDeleteButton(Graphics g2d) {
Rectangle2D bounds = this.getBounds(); Rectangle2D bounds = this.getBounds();
int x = (int) (bounds.getWidth() - DEL_WIDTH); int x = (int) (bounds.getWidth() - DEL_WIDTH);
closeIcon.paintIcon(this, g2d, scale(x), scale(1)); int y = (int) DOWN_HEIGHT;
closeIcon.paintIcon(this, g2d, x, y);
} }
@Override @Override

23
designer-chart/src/main/java/com/fr/van/chart/custom/VanChartCustomPlotPane.java

@ -3,7 +3,6 @@ package com.fr.van.chart.custom;
import com.fr.base.chart.chartdata.TopDefinitionProvider; import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.base.DataSeriesCondition; import com.fr.chart.base.DataSeriesCondition;
import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.Plot; import com.fr.chart.chartattr.Plot;
import com.fr.chart.chartglyph.ConditionAttr; import com.fr.chart.chartglyph.ConditionAttr;
import com.fr.chart.chartglyph.ConditionCollection; import com.fr.chart.chartglyph.ConditionCollection;
@ -11,9 +10,7 @@ import com.fr.chartx.attr.ChartProvider;
import com.fr.chartx.data.AbstractDataDefinition; import com.fr.chartx.data.AbstractDataDefinition;
import com.fr.chartx.data.ChartDataDefinitionProvider; import com.fr.chartx.data.ChartDataDefinitionProvider;
import com.fr.chartx.data.CustomChartDataDefinition; import com.fr.chartx.data.CustomChartDataDefinition;
import com.fr.design.ChartTypeInterfaceManager; import com.fr.design.constants.LayoutConstants;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.design.mainframe.chart.gui.type.ChartImagePane;
import com.fr.design.mainframe.chart.mode.ChartEditContext; import com.fr.design.mainframe.chart.mode.ChartEditContext;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
@ -39,6 +36,9 @@ import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import static com.fine.swing.ui.layout.Layouts.cell;
import static com.fine.swing.ui.layout.Layouts.column;
/** /**
* Created by Mitisky on 16/2/16. * Created by Mitisky on 16/2/16.
*/ */
@ -88,22 +88,9 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane {
private void initContent() { private void initContent() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
autoPane = new JPanel(); autoPane = new JPanel();
customSelectPane = new VanChartCustomPlotSelectPane(); customSelectPane = new VanChartCustomPlotSelectPane();
customPane = column(LayoutConstants.VERTICAL_GAP, cell(new JSeparator()), cell(customSelectPane)).getComponent();
Component[][] components = new Component[][]{
new Component[]{new JSeparator()},
new Component[]{customSelectPane}
};
double[] columnSize = {p, f};
double[] rowSize = {p, p};
customPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
contentPane = new JPanel(new CardLayout()) { contentPane = new JPanel(new CardLayout()) {
@Override @Override
public Dimension getPreferredSize() { public Dimension getPreferredSize() {

14
designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartBeautyPaneWithGradientBar.java

@ -1,11 +1,11 @@
package com.fr.van.chart.designer.component; package com.fr.van.chart.designer.component;
import com.fine.theme.utils.FineLayoutBuilder;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.chart.base.GradientStyle; import com.fr.chart.base.GradientStyle;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.style.background.gradient.FixedGradientBar; import com.fr.design.style.background.gradient.FixedGradientBar;
import com.fr.plugin.chart.type.GradientType; import com.fr.plugin.chart.type.GradientType;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.awt.BorderLayout; import java.awt.BorderLayout;
@ -29,18 +29,12 @@ public class VanChartBeautyPaneWithGradientBar extends VanChartBeautyPane {
private JPanel initGradientBarPane() { private JPanel initGradientBarPane() {
colorGradient = new FixedGradientBar(4, 140); colorGradient = new FixedGradientBar(4, 140);
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double[] columnSize = {f, e};
double[] rowSize = {p, p};
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{null, null},
new Component[]{null, colorGradient}, new Component[]{null, colorGradient},
}; };
gradientBarPane = TableLayout4VanChartHelper.createGapTableLayoutPane(components, rowSize, columnSize); gradientBarPane = FineLayoutBuilder.commonLeftRightLayout(components);
gradientBarPane.setBorder(new ScaledEmptyBorder(10, 0, 0, 0));
return gradientBarPane; return gradientBarPane;
} }

5
designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartHtmlLabelPane.java

@ -14,6 +14,7 @@ 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.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.gui.UIComponentUtils; import com.fr.design.utils.gui.UIComponentUtils;
import com.fr.plugin.chart.base.VanChartHtmlLabel; import com.fr.plugin.chart.base.VanChartHtmlLabel;
@ -69,7 +70,7 @@ public class VanChartHtmlLabelPane extends JPanel {
JPanel contentPane = FineLayoutBuilder.compatibleTableLayout(10, components, new double[]{1}); JPanel contentPane = FineLayoutBuilder.compatibleTableLayout(10, components, new double[]{1});
this.setLayout(new BorderLayout()); this.setLayout(FRGUIPaneFactory.createScaledBorderLayout(0, 10));
this.add(contentPane, BorderLayout.NORTH); this.add(contentPane, BorderLayout.NORTH);
if (widthAndHeightPane != null) { if (widthAndHeightPane != null) {
this.add(widthAndHeightPane, BorderLayout.CENTER); this.add(widthAndHeightPane, BorderLayout.CENTER);
@ -150,7 +151,7 @@ public class VanChartHtmlLabelPane extends JPanel {
new Component[]{isCustomWidth, customWidth}, new Component[]{isCustomWidth, customWidth},
new Component[]{isCustomHeight, customHeight}, new Component[]{isCustomHeight, customHeight},
}; };
return FineLayoutBuilder.compatibleTableLayout(10, components, new double[]{1.2, 3}); return FineLayoutBuilder.compatibleTableLayout(10, components, new double[]{1, 1});
} }
private void checkWidth() { private void checkWidth() {

4
designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartLabelContentPane.java

@ -34,9 +34,7 @@ public class VanChartLabelContentPane extends VanChartTooltipContentPane {
if (isInCondition() || !ChartEditContext.supportTheme()) { if (isInCondition() || !ChartEditContext.supportTheme()) {
return super.createCommonStylePane(); return super.createCommonStylePane();
} }
// 颜色图标统一使用UIColorButton setTextAttrPane(new LabelAttrPaneWithThemeStyle());
setTextAttrPane(new ChartTextAttrPaneWithThemeStyle());
JPanel stylePanel = new JPanel(new BorderLayout()); JPanel stylePanel = new JPanel(new BorderLayout());
stylePanel.add(getTextAttrPane(), BorderLayout.CENTER); stylePanel.add(getTextAttrPane(), BorderLayout.CENTER);

7
designer-chart/src/main/java/com/fr/van/chart/designer/other/AutoRefreshPane.java

@ -84,10 +84,9 @@ public class AutoRefreshPane extends BasicBeanPane<RefreshMoreLabel> {
initTooltipSet(); initTooltipSet();
JPanel tipPane = getTooltipPane(); JPanel tipPane = getTooltipPane();
UILabel backgroundDetectionLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_More_Label"));
JPanel moreLabelPane = FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, backgroundDetectionLabel.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_More_Label"));
new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_More_Label")), moreLabel); JPanel moreLabelPane = FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, backgroundDetectionLabel, moreLabel);
Component[][] components = initComponent(tipPane); Component[][] components = initComponent(tipPane);
contentPane = new JPanel(new BorderLayout()); contentPane = new JPanel(new BorderLayout());

2
designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java

@ -69,7 +69,7 @@ public class VanChartCategoryStylePaneWithCheckBox extends JPanel {
Point comPoint = settingButton.getLocationOnScreen(); Point comPoint = settingButton.getLocationOnScreen();
Point arrowPoint = new Point(comPoint.x +settingButton.getWidth() - 25, comPoint.y + settingButton.getHeight()); Point arrowPoint = new Point(comPoint.x +settingButton.getWidth() - 25, comPoint.y + settingButton.getHeight());
Dimension size = settingPane.getPreferredSize(); Dimension size = settingPane.getPreferredSize();
ClosableBubbleFloatPane<VanChartAxisLabelStyle> pane = new ClosableBubbleFloatPane(Constants.LEFT, arrowPoint, settingPane, size.width, FineUIScale.scale(240)) { ClosableBubbleFloatPane<VanChartAxisLabelStyle> pane = new ClosableBubbleFloatPane(Constants.LEFT, arrowPoint, settingPane, size.width, FineUIScale.scale(260)) {
@Override @Override
public void updateContentPane() { public void updateContentPane() {

5
designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartGaugeLabelDetailPane.java

@ -22,7 +22,6 @@ import javax.swing.JPanel;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Component; import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
@ -62,7 +61,7 @@ public class VanChartGaugeLabelDetailPane extends VanChartPlotLabelDetailPane {
initStyleListener(); initStyleListener();
return FineLayoutBuilder.compatibleTableLayout(10, getLabelStyleComponents(plot),new double[]{1.2, 3}); return FineLayoutBuilder.commonLeftRightLayout(getLabelStyleComponents(plot));
} }
protected void initStyleListener() { protected void initStyleListener() {
@ -118,7 +117,7 @@ public class VanChartGaugeLabelDetailPane extends VanChartPlotLabelDetailPane {
} }
protected JPanel createTableLayoutPaneWithTitle(String title, JPanel panel) { protected JPanel createTableLayoutPaneWithTitle(String title, JPanel panel) {
return TableLayout4VanChartHelper.createGapTableLayoutPane(title, panel); return FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, new UILabel(title), panel);
} }
protected Component[][] getLabelPaneComponents(Plot plot, double p, double[] columnSize) { protected Component[][] getLabelPaneComponents(Plot plot, double p, double[] columnSize) {

12
designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPieCategoryLabelDetailPane.java

@ -1,13 +1,11 @@
package com.fr.van.chart.designer.style.label; package com.fr.van.chart.designer.style.label;
import com.fine.theme.utils.FineLayoutBuilder;
import com.fr.chart.chartattr.Plot; import com.fr.chart.chartattr.Plot;
import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.stable.Constants; import com.fr.stable.Constants;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.style.VanChartStylePane; import com.fr.van.chart.designer.style.VanChartStylePane;
import com.fr.van.chart.pie.style.VanChartPieCategoryLabelContentPane; import com.fr.van.chart.pie.style.VanChartPieCategoryLabelContentPane;
@ -40,18 +38,12 @@ public class VanChartPieCategoryLabelDetailPane extends VanChartPlotLabelDetailP
UIButtonGroup<Integer> position = new UIButtonGroup<>(positionName, positionValue); UIButtonGroup<Integer> position = new UIButtonGroup<>(positionName, positionValue);
setPosition(position); setPosition(position);
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double[] row = {p, p};
double[] col = {f, e};
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{null, null},
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Layout_Position")), position}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Layout_Position")), position},
}; };
return TableLayoutHelper.createTableLayoutPane(components, row, col); return FineLayoutBuilder.commonLeftRightLayout(components);
} }
protected void checkPositionPane(String title) { protected void checkPositionPane(String title) {

15
designer-chart/src/main/java/com/fr/van/chart/gauge/VanChartGaugeBeautyPane.java

@ -1,15 +1,14 @@
package com.fr.van.chart.gauge; package com.fr.van.chart.gauge;
import com.fine.theme.utils.FineLayoutBuilder;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.chart.base.ChartConstants; import com.fr.chart.base.ChartConstants;
import com.fr.chart.base.GradientStyle; import com.fr.chart.base.GradientStyle;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.style.background.gradient.FixedGradientBar; import com.fr.design.style.background.gradient.FixedGradientBar;
import com.fr.plugin.chart.type.GradientType; import com.fr.plugin.chart.type.GradientType;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.VanChartBeautyPane; import com.fr.van.chart.designer.component.VanChartBeautyPane;
import javax.swing.BorderFactory;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Component; import java.awt.Component;
@ -29,24 +28,18 @@ public class VanChartGaugeBeautyPane extends VanChartBeautyPane {
public VanChartGaugeBeautyPane() { public VanChartGaugeBeautyPane() {
super(); super();
this.add(initGradientBarPane(), BorderLayout.SOUTH); this.add(initGradientBarPane(), BorderLayout.SOUTH);
this.setBorder(BorderFactory.createEmptyBorder(0, 0, 5, 0));
initListener(); initListener();
} }
private JPanel initGradientBarPane() { private JPanel initGradientBarPane() {
colorGradient = new FixedGradientBar(4, 140); colorGradient = new FixedGradientBar(4, 140);
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double[] columnSize = {f, e};
double[] rowSize = {p, p};
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{null, null},
new Component[]{null, colorGradient}, new Component[]{null, colorGradient},
}; };
gradientBarPane = TableLayout4VanChartHelper.createGapTableLayoutPane(components, rowSize, columnSize); gradientBarPane = FineLayoutBuilder.commonLeftRightLayout(components);
gradientBarPane.setBorder(new ScaledEmptyBorder(10, 0, 0, 0));
colorGradient.updateColor(ChartConstants.GRADIENT_END, ChartConstants.GRADIENT_START); colorGradient.updateColor(ChartConstants.GRADIENT_END, ChartConstants.GRADIENT_START);
return gradientBarPane; return gradientBarPane;
} }

5
designer-chart/src/main/java/com/fr/van/chart/gauge/VanChartGaugeSeriesPane.java

@ -27,7 +27,6 @@ import com.fr.plugin.chart.gauge.VanChartGaugePlot;
import com.fr.plugin.chart.type.GaugeStyle; import com.fr.plugin.chart.type.GaugeStyle;
import com.fr.plugin.chart.type.GradientType; import com.fr.plugin.chart.type.GradientType;
import com.fr.stable.Constants; import com.fr.stable.Constants;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.VanChartFillStylePane; import com.fr.van.chart.designer.component.VanChartFillStylePane;
import com.fr.van.chart.designer.style.series.VanChartMultiColorSeriesPane; import com.fr.van.chart.designer.style.series.VanChartMultiColorSeriesPane;
@ -172,7 +171,7 @@ public class VanChartGaugeSeriesPane extends VanChartMultiColorSeriesPane {
} }
} }
JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(title, gaugeLayout); JPanel panel = FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, new UILabel(title), gaugeLayout);
gaugeLayout.addChangeListener(new ChangeListener() { gaugeLayout.addChangeListener(new ChangeListener() {
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
@ -211,7 +210,7 @@ public class VanChartGaugeSeriesPane extends VanChartMultiColorSeriesPane {
private JPanel createGaugeStylePane() { private JPanel createGaugeStylePane() {
JPanel panel = new JPanel(new BorderLayout(0, FineUIScale.scale(10))); JPanel panel = new JPanel(new BorderLayout(0, FineUIScale.scale(10)));
JPanel centerPanel = FineLayoutBuilder.compatibleTableLayout(10, getDiffComponentsWithGaugeStyle(), new double[]{1.2, 3}); JPanel centerPanel = FineLayoutBuilder.commonLeftRightLayout(getDiffComponentsWithGaugeStyle());
panel.add(centerPanel, BorderLayout.CENTER); panel.add(centerPanel, BorderLayout.CENTER);
if (rotate != null) { if (rotate != null) {
JPanel panel1 = FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, JPanel panel1 = FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3},

3
designer-realize/src/main/java/com/fanruan/boot/env/function/DesignComponent.java vendored

@ -60,6 +60,7 @@ import com.fr.design.javascript.EmailPane;
import com.fr.design.javascript.JavaScriptImplPane; import com.fr.design.javascript.JavaScriptImplPane;
import com.fr.design.javascript.ParameterJavaScriptPane; import com.fr.design.javascript.ParameterJavaScriptPane;
import com.fr.design.javascript.ProcessTransitionAdapter; import com.fr.design.javascript.ProcessTransitionAdapter;
import com.fr.design.lock.TemplateLockInfoReSave;
import com.fr.design.login.DesignerLoginType; import com.fr.design.login.DesignerLoginType;
import com.fr.design.login.guide.DesignerGuideHelper; import com.fr.design.login.guide.DesignerGuideHelper;
import com.fr.design.login.message.DesignerMessageHelper; import com.fr.design.login.message.DesignerMessageHelper;
@ -221,6 +222,7 @@ public class DesignComponent {
DesignerWorkspaceLoader.init(); DesignerWorkspaceLoader.init();
storePassport(); storePassport();
AlphaFineHelper.switchConfig4Locale(); AlphaFineHelper.switchConfig4Locale();
TemplateLockInfoReSave.startListener();
RPCConnectHandlerCenter.startListener(); RPCConnectHandlerCenter.startListener();
RecoverManager.register(new RecoverForDesigner()); RecoverManager.register(new RecoverForDesigner());
} }
@ -534,6 +536,7 @@ public class DesignComponent {
public void stop() { public void stop() {
unloadLogAppender(); unloadLogAppender();
DesignerSocketIO.close(); DesignerSocketIO.close();
TemplateLockInfoReSave.stopListener();
} }
/** /**

Loading…
Cancel
Save