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.Row;
import com.fine.swing.ui.layout.Spacer;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.foldablepane.UIExpandablePane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.collections.combination.Pair;
@ -75,7 +75,7 @@ public class FineLayoutBuilder {
Row row = new Row();
List<Component> visibleComponents = Arrays.stream(componentArray)
.filter(com -> com != null && com.isVisible()).collect(Collectors.toList());
if (visibleComponents.size() >= 1) {
if (!visibleComponents.isEmpty()) {
// 仅当存在可见组件时处理布局
dealWithVisibleComponents(weight, column, componentArray, row, visibleComponents);
}
@ -87,6 +87,17 @@ public class FineLayoutBuilder {
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) {
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, TableData> tableDataMap = new HashMap<>();
try {
TransmissionEncryptionManager.setTransEncryptionLevel(1);
for (ServerDataSetBean bean : beans) {
tableDataMap.put(bean.getDatasetName() , TableDataBeanHelper.getTableDataSet(connectionMap, bean.getDatasetType(), bean.getDatasetData()));
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
TransmissionEncryptionManager.removeTransEncryptionLevel();
}
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.local.LocalConfigRepositoryBuilder;
import com.fr.design.ConfigHelper;
import com.fr.design.env.RemoteWorkspace;
import com.fr.design.mem.MemConfigBackupManager;
import com.fr.design.mem.MemConfigRepositoryBuilder;
import com.fr.log.FineLoggerFactory;
import com.fr.workspace.WorkContext;
import com.fr.workspace.Workspace;
import com.fr.workspace.server.repository.connect.FineWorkspaceHttpClient;
import java.util.Properties;
@ -42,11 +44,13 @@ public class EnvBackupHelper {
FineLoggerFactory.getLogger().info("[EnvBackup] 1.back start...");
this.swtiching = true;
local = WorkContext.getCurrent().isLocal();
origin = WorkContext.getCurrent();
if (local) {
properties = ConfigHelper.getEnvProperties();
path = ConfigHelper.getEnvPropertiesPath();
} else {
closeEnv();
}
origin = WorkContext.getCurrent();
}
/**
@ -107,10 +111,30 @@ public class EnvBackupHelper {
} else {
// 如果是远程,则新环境的配置全部弃用,直接走老的
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() {
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.utils.FineUIUtils;
import com.fr.data.driver.DriverLoader;
import com.fr.data.driver.config.DriverLoaderConfig;
import com.fr.data.impl.JDBCDatabaseConnection;
import com.fr.data.solution.entity.DriverClasses;
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)
).getComponent())
.addSupplier("define", () -> row(
cell(driverLoaderBox).weight(3), cell(driverManageLabel).weight(2)
cell(driverLoaderBox).weight(3), flex(0.2), cell(driverManageLabel).weight(1.8)
).getComponent());
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
public String[] testConnection(ConnectionInfoBean database) throws Exception {
try {
// 暂时这么处理,后续最好拉到外层包装一下
TransmissionEncryptionManager.setTransEncryptionLevel(1);
return ConnectionProcessorFactory.testConnectionWithSchemaReturn(database);
} catch (DriverNotFoundException e) {
throw new DriverUnExistException();
} finally {
TransmissionEncryptionManager.removeTransEncryptionLevel();
}
}
@Override
public void add(ConnectionInfoBean bean) throws Exception {
try {
TransmissionEncryptionManager.setTransEncryptionLevel(1);
Connection connection = ConnectionProcessorFactory.createConnection(bean);
validate(bean.getConnectionName(), connection);
ConnectionProcessorFactory.addConnection(bean);
} catch (DriverNotFoundException e) {
throw new DriverUnExistException();
} finally {
TransmissionEncryptionManager.removeTransEncryptionLevel();
}
}
@ -84,14 +77,11 @@ public class LocalConnectionSource extends BaseConnectionSource {
@Override
public void update(ConnectionInfoBean bean) throws Exception {
try {
TransmissionEncryptionManager.setTransEncryptionLevel(1);
Connection connection = ConnectionProcessorFactory.createConnection(bean);
validate(bean.getConnectionName(), connection);
ConnectionProcessorFactory.updateConnection(bean.getConnectionName(), bean);
} catch (DriverNotFoundException e) {
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())
.driver(jdbcConnection.getDriver())
// 关键中的关键,由设计器发出的请求如果要携带密码,不能传明文,必须必须必须传加密后的密码
.password(withPassword ? encrypt(jdbcConnection.getPassword()) : DecisionServiceConstants.DEFAULT_PASSWORD)
.password(withPassword ? DataEncryptionHelper.encrypt(jdbcConnection.getPassword()) : DecisionServiceConstants.DEFAULT_PASSWORD)
.schema(jdbcConnection.getSchema())
.url(jdbcConnection.getURL())
.creator(jdbcConnection.getCreator())
@ -188,14 +188,6 @@ public class ConnectionInfoBeanHelper {
.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 {
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.TableSorter;
import com.fr.design.gui.itextfield.UINumberField;
import com.fr.design.i18n.DesignSizeI18nManager;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.DesignerContext;
@ -44,7 +45,6 @@ import com.fr.function.TIME;
import com.fr.general.FRFont;
import com.fr.general.data.DataModel;
import com.fr.log.FineLoggerFactory;
import com.fr.workspace.server.entity.connection.ConnectionBean;
import com.fr.workspace.server.repository.connection.ConnectionRepository;
import javax.swing.BorderFactory;
@ -53,8 +53,6 @@ import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
@ -258,7 +256,7 @@ public class PreviewTablePane extends BasicPane {
public void doCancel() {
}
}, BasicDialog.DEFAULT);
}, DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.data.datapane.preview.dialog"));
dialog.setVisible(true);
// 关闭预览页面
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, TableData> tableDataMap = new HashMap<>();
try {
TransmissionEncryptionManager.setTransEncryptionLevel(1);
for (ServerDataSetBean bean : beans) {
tableDataMap.put(bean.getDatasetName() , TableDataBeanHelper.getTableDataSet(connectionMap, bean.getDatasetType(), bean.getDatasetData()));
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
TransmissionEncryptionManager.removeTransEncryptionLevel();
}
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(DesensitizationRuleStatusPane.class, new DesensitizationRuleStatusPane());
this.setDefaultRenderer(DesensitizationRuleStatusPane.class, new DesensitizationRuleStatusPane());
this.createTable().getColumnModel().getColumn(TableSequences.DesensitizationRuleStatus.getNum()).setMaxWidth(60);
}
@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() {
JPanel jpanel = new JPanel();
jpanel.setPreferredSize(new Dimension(-1, 150));
jpanel.setPreferredSize(new Dimension(super.getPreferredSize().width, FineUIScale.scale(150)));
jpanel.setLayout(new BorderLayout());
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;
import com.fr.base.svg.IconUtils;
import com.fine.theme.icon.LazyIcon;
import com.fr.base.svg.SVGLoader;
import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.i18n.Toolkit;
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.workspace.server.repository.connection.ConnectionRepository;
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;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.data.DesignTableDataManager;
import com.fr.data.SimpleDSColumn;
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.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();
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

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";
}
@Override
public String getIconId() {
return "type_cursor";
}
@Override
public boolean accept(Object object) {
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;
import com.fine.theme.icon.LazyIcon;
import com.fine.theme.utils.FineComponentsFactory;
import com.fine.theme.utils.FineUIScale;
import com.fine.theme.utils.FineUIStyle;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.design.actions.UpdateAction;
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.project.ProjectConstants;
import javax.swing.BorderFactory;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
@ -42,15 +41,11 @@ import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
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.YES_NO_OPTION;
@ -380,28 +375,16 @@ public class DefaultTemplateTreeDefineProcessor extends AbstractTemplateTreeDefi
// 确认按钮,默认就可用
confirmButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Confirm"));
FineUIStyle.setStyle(confirmButton, FineUIStyle.STYLE_PRIMARY);
confirmButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
confirmClose();
}
});
confirmButton.addActionListener(e -> confirmClose());
confirmButton.setEnabled(true);
// 取消按钮
UIButton cancelButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Cancel"));
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
cancelButton.addActionListener(e -> dispose());
this.add(row(8, flex(), cell(confirmButton), cell(cancelButton))
.with(it -> it.setBorder(new ScaledEmptyBorder(0, 0, 10, 10))).getComponent(), BorderLayout.SOUTH);
JPanel buttonPane = FineComponentsFactory.createConfirmCancelButtonPane(confirmButton, cancelButton);
buttonPane.setBorder(new ScaledEmptyBorder(0, 10, 10, 10));
this.add(buttonPane, BorderLayout.SOUTH);
this.setSize(FineUIScale.scale(new Dimension(660, 600)));
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.FileNodeFILE;
import com.fr.general.ComparatorUtils;
import com.fr.general.IOUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.collections.combination.Pair;
import com.fr.third.javax.annotation.Nonnull;
@ -357,6 +358,7 @@ public class MultiTemplateTabPane extends Row {
public RightMenuCloseAction(CloseOption option, int tplIndex) {
this.option = option;
this.setName(option.optionName);
this.setSmallIcon(IOUtils.readIcon("/com/fr/base/images/cell/blank.gif"));
this.tplIndex = tplIndex;
}

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

@ -1,6 +1,7 @@
package com.fr.design.file;
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.refreshabletree.ExpandMutableTreeNode;
import com.fr.design.i18n.Toolkit;
@ -11,11 +12,9 @@ import com.fr.file.filetree.IOFileNodeFilter;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.ArrayUtils;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.tree.TreePath;
import java.awt.BorderLayout;
import java.awt.Color;
/**
* 目录树面板
@ -35,7 +34,7 @@ public class TemplateDirTreePane extends JPanel {
public TemplateDirTreePane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(BorderFactory.createLineBorder(Color.gray));
this.setBorder(FineBorderFactory.createWrappedRoundBorder());
templateDirTree = new TemplateDirTree();
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() {
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.fr.design.gui.ibutton.FitUIButtonGroup;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.ibutton.UIToggleButton;
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.JPanel;
import javax.swing.event.ChangeEvent;
@ -185,23 +181,6 @@ public class FineTabbedPane extends Box {
});
tabGroup.setSelectedIndex(0);
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() {

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.formdev.flatlaf.util.SystemInfo;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.dialog.UIDialog;
import com.fr.design.utils.AWTUtilities;
import com.fr.log.FineLoggerFactory;
@ -32,6 +33,9 @@ import java.awt.Window;
import java.awt.event.AWTEventListener;
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
* 非模态悬浮对话框气泡形状
@ -226,8 +230,7 @@ public abstract class UIBubbleFloatPane<T> extends BasicBeanPane<T> {
}
this.setLayout(new BorderLayout());
this.add(initTopOptionMenu(), BorderLayout.NORTH);
this.add(contentPane, BorderLayout.CENTER);
this.add(column(LayoutConstants.VGAP_MEDIUM, cell(initTopOptionMenu()), cell(contentPane)).getComponent());
}
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());
initLayout(getCols());
initTabListeners();
}
public UIButtonGroup(String[] textArray, T[] objects) {
@ -192,6 +193,19 @@ public class UIButtonGroup<T> extends Column implements GlobalNameObserver, UIOb
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.fr.chart.base.ChartConstants;
import com.fr.design.constants.UIConstants;
import com.fr.design.style.color.ColorControlWindow;
import com.fr.design.style.color.ColorControlWindowWithAuto;
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)) {
setIcon(UIConstants.AUTO_FONT_ICON);
setIcon(new LazyIcon("autoForeground"));
}
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.JTree;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreePath;
import java.awt.BorderLayout;
@ -65,6 +64,7 @@ public class CheckBoxTreeCellRenderer extends NullPanel implements TreeCellRende
add(_checkBox, BorderLayout.WEST);
JPanel gapPanel = new JPanel();
gapPanel.setPreferredSize(FineUIScale.scale(new Dimension(4, 20)));
gapPanel.setOpaque(false);
add(gapPanel, BorderLayout.CENTER);
_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) {
_checkBox.setPreferredSize(FineUIScale.scale(new Dimension(PROTOTYPE.getPreferredSize().width, 0)));
setComponentOrientation(tree.getComponentOrientation());
setOpaque(false);
TreePath path = tree.getPathForRow(row);
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() {
if (WorkContext.getCurrent().isRoot()) {
return true;
}
ConnectionAuthorityConfigBean bean = ConnectionRepository.getInstance().getConnectionAuthorityConfig();
if (!(bean !=null && bean.isConnectionEditAuth())) {
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));
foregroundColorPane.setSelectObject(DEFAULT_FOREGROUND);
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,
row(
cell(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Foreground"), UILabel.LEFT)).weight(1),
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))
row(cell(foregroundLabel).weight(1), cell(foregroundColorPane).weight(4)),
row(cell(backgroundLabel).weight(1), cell(backgroundColorPane).weight(4))
).with(it -> it.setBorder(new ScaledEmptyBorder(LayoutConstants.VERTICAL_GAP, 0, 0, 0))).getComponent(), BorderLayout.CENTER);
foregroundColorPane.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;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.design.data.datapane.management.search.pane.FineSearchPane;
import com.fr.design.file.TemplateDirTreePane;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
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.stable.StringUtils;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
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.KeyEvent;
import java.awt.event.MouseAdapter;
@ -29,11 +24,6 @@ import java.awt.event.MouseEvent;
*/
public class TemplateDirTreeSearchPane extends JPanel implements TreeSearchStatusChangeListener {
/**
* 搜索输入框
*/
private UITextField searchTextField;
/**
* 搜索面板
*/
@ -43,14 +33,14 @@ public class TemplateDirTreeSearchPane extends JPanel implements TreeSearchStatu
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
TemplateDirTreeSearchManager.getInstance().startSearch(searchTextField.getText());
TemplateDirTreeSearchManager.getInstance().startSearch(searchPane.getText());
}
}
};
public TemplateDirTreeSearchPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(10, 15, 0, 10));
this.setBorder(new ScaledEmptyBorder(10, 10, 0, 10));
initSearchPane();
add(searchPane, BorderLayout.CENTER);
TemplateDirTreeSearchManager.getInstance().registerTreeSearchStatusChangeListener(this);
@ -94,7 +84,7 @@ public class TemplateDirTreeSearchPane extends JPanel implements TreeSearchStatu
}
private void dealWithTextChange() {
if (StringUtils.isEmpty(searchTextField.getText()) && TemplateDirTreeSearchManager.getInstance().isInSearchMode()) {
if (StringUtils.isEmpty(searchPane.getText()) && TemplateDirTreeSearchManager.getInstance().isInSearchMode()) {
// 如果是搜索模式下,看作是用户删除输入框文字,仅复原TemplateTreePane
TemplateDirTreeSearchManager.getInstance().restoreTreePane();
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;
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.gui.ibutton.UIButton;
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.DesignerFrameFileDealerPane;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.report.entity.VcsEntity;
import com.fr.stable.StringUtils;
import com.fr.workspace.WorkContext;
@ -19,7 +24,7 @@ import com.fr.workspace.server.vcs.VcsOperator;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@ -47,7 +52,7 @@ public class EditFileVersionDialog extends UIDialog {
initComponents();
setModal(true);
setTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Vcs_Save_Version"));
setSize(300, 220);
setSize(FineUIScale.scale(new Dimension(300, 220)));
setResizable(false);
GUICoreUtils.centerWindow(this);
@ -55,15 +60,20 @@ public class EditFileVersionDialog extends UIDialog {
private void initComponents() {
Column centerColumn = new Column();
centerColumn.setSpacing(10);
add(centerColumn, BorderLayout.CENTER);
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"));
fontPane.add(fontLabel, BorderLayout.NORTH);
msgTestArea.setBorder(null);
UIScrollPane scrollPane = new UIScrollPane(msgTestArea);
UILabel versionTip = new UILabel(" " + Toolkit.i18nText("Fine-Design_Vcs_Version_Number") + ":");
JPanel scrollPane = FineLayoutBuilder.asBorderLayoutWrapped(new UIScrollPane(msgTestArea));
scrollPane.setBorder(FineBorderFactory.createWrappedRoundBorder());
UILabel versionTip = new UILabel(Toolkit.i18nText("Fine-Design_Vcs_Version_Number"));
versionTip.setToolTipText(Toolkit.i18nText("Fine-Design_Vcs_Version_Number"));
Component[][] components = new Component[][]{
new Component[]{versionTip, versionLabel},
@ -72,16 +82,16 @@ public class EditFileVersionDialog extends UIDialog {
double[] rowSizes = new double[]{25, 100};
double[] columnSizes = new double[]{70, 200};
add(TableLayoutHelper.createTableLayoutPane(components, rowSizes, columnSizes), BorderLayout.CENTER);
JPanel buttonPane = new JPanel(new FlowLayout(FlowLayout.RIGHT));
add(buttonPane, BorderLayout.SOUTH);
JPanel pane = TableLayoutHelper.createTableLayoutPane(components, rowSizes, columnSizes);
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"));
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() {
@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",
"preview": "dataset/preview.svg",
"connection": "dataset/connection.svg",
"connection_locked": "dataset/connection_locked.svg",
"class_table_data": "dataset/class_table_data.svg",
"data_table": "dataset/data_table.svg",
"multi": "dataset/multi.svg",
@ -170,6 +171,7 @@
"underline": "font/underline.svg",
"foreground": "font/foreground.svg",
"background": "font/background.svg",
"autoForeground": "font/autoForeground.svg",
"h_left": "cellstyle/h_left.svg",
"h_center": "cellstyle/h_center.svg",
"h_right": "cellstyle/h_right.svg",
@ -384,6 +386,7 @@
"type_double_popup": "editor/type_double_popup.svg",
"type_boolean": "editor/type_boolean.svg",
"type_boolean_popup": "editor/type_boolean_popup.svg",
"type_cursor": "editor/type_cursor.svg",
"date_popup": "editor/date_popup.svg",
"param_popup": "editor/param_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.textBackground = $Tree.background
Tree.textForeground = $Tree.foreground
Tree.selectionBorderColor = @cellFocusColor
Tree.selectionBorderColor = #00000000
Tree.dropCellBackground = @dropCellBackground
Tree.dropCellForeground = @dropCellForeground
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.ds.column.cellEditor.pane=900*600
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.actions.reportWebAttr.dialog=700*630
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.actions.reportWebAttr.dialog=700*630
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.actions.reportWebAttr.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.actions.reportWebAttr.dialog=700*630
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();
PowerMock.mockStatic(TableDataFactory.class);
EasyMock.expect(TableDataFactory.getSortOfChineseNameOfServerData(config))
EasyMock.expect(TableDataFactory.getSortOfChineseNameOfServerData())
.andReturn(new String[]{"firstData", "secondData"}).once();
EasyMock.expect(TableDataFactory.getSortOfChineseNameOfServerData(config2))
EasyMock.expect(TableDataFactory.getSortOfChineseNameOfServerData())
.andReturn(new String[]{"firstData", "secondData"}).once();
@ -119,7 +119,7 @@ public class DesignTableDataManagerTest {
EasyMock.expect(dataSource.getTableData("ds2")).andReturn(td2).anyTimes();
EasyMock.expect(TableDataConfig.getInstance()).andReturn(config).anyTimes();
PowerMock.mockStatic(TableDataFactory.class);
EasyMock.expect(TableDataFactory.getSortOfChineseNameOfServerData(config))
EasyMock.expect(TableDataFactory.getSortOfChineseNameOfServerData())
.andReturn(new String[]{"ds1", "ds2"}).anyTimes();
EasyMock.expect(TableDataFactory.getSortOfChineseNameOfTemplateData(dataSource))
.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;
import com.fr.config.BBSAttr;
import com.fr.config.MarketConfig;
import com.fr.design.DesignerEnvManager;
import com.fr.general.ComparatorUtils;
import com.fr.json.JSONObject;
import org.easymock.EasyMock;
import org.powermock.api.easymock.PowerMock;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
@ -31,23 +26,4 @@ class TemplateInfoTestHelper {
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.SnapChatConfig;
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.LocalConfigurationHelper;
import org.easymock.EasyMock;
@ -41,8 +38,6 @@ public class SnapChatMenuDefTest {
DaoContext.setXmlEntityDao(new LocalXmlEntityDao());
DaoContext.setClassHelperDao(new LocalClassHelperDao());
DaoContext.setEntityDao(new LocalEntityDao());
StateHubManager.setLock(new MemoryLock());
StateHubManager.setStorage(new MemoryStore());
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;
import com.fr.general.GeneralContext;
import com.fr.third.org.apache.commons.math3.analysis.function.Pow;
import junit.framework.TestCase;
import org.junit.Assert;
import org.junit.Test;
import java.util.Locale;
import org.junit.runner.RunWith;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import java.util.Locale;
/**
* @author hades
@ -27,13 +24,4 @@ public class SupportOSImplTest extends TestCase {
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);
final JxUIPane<ModernUIPaneTest.Model> pane = new JxUIPane.Builder<ModernUIPaneTest.Model>()
final JxUIPane<Model> pane = new JxUIPane.Builder<Model>()
.withComponent(StartComponent.KEY).build();
contentPane.add(pane, BorderLayout.CENTER);
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.jxbrowser.JxUIPane;
import com.fr.design.ui.ModernUIPaneTest;
import com.fr.design.ui.Model;
import javax.swing.JFrame;
import javax.swing.JPanel;
@ -21,7 +21,7 @@ public class TemplateWebSettingDemo {
// 是否需要开启调试窗口
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();
contentPane.add(pane, BorderLayout.CENTER);
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 static final double DEL_WIDTH = 9;
private Icon closeIcon = new LazyIcon("closeTag", 8);
private final double DEL_WIDTH = scale(9);
private final double DOWN_HEIGHT = scale(1);
private final Icon closeIcon = new LazyIcon("closeTag", 8);
private boolean isMoveOn = false;
private String buttonName = "";
@ -506,7 +507,8 @@ public class ChartTypeButtonPane extends BasicBeanPane<ChartCollection> implemen
private void paintDeleteButton(Graphics g2d) {
Rectangle2D bounds = this.getBounds();
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

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.chart.base.DataSeriesCondition;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.Plot;
import com.fr.chart.chartglyph.ConditionAttr;
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.ChartDataDefinitionProvider;
import com.fr.chartx.data.CustomChartDataDefinition;
import com.fr.design.ChartTypeInterfaceManager;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.mainframe.chart.gui.type.ChartImagePane;
import com.fr.design.mainframe.chart.mode.ChartEditContext;
import com.fr.log.FineLoggerFactory;
@ -39,6 +36,9 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
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.
*/
@ -88,22 +88,9 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane {
private void initContent() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
autoPane = new JPanel();
customSelectPane = new VanChartCustomPlotSelectPane();
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);
customPane = column(LayoutConstants.VERTICAL_GAP, cell(new JSeparator()), cell(customSelectPane)).getComponent();
contentPane = new JPanel(new CardLayout()) {
@Override
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;
import com.fine.theme.utils.FineLayoutBuilder;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.chart.base.GradientStyle;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.style.background.gradient.FixedGradientBar;
import com.fr.plugin.chart.type.GradientType;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import javax.swing.JPanel;
import java.awt.BorderLayout;
@ -29,18 +29,12 @@ public class VanChartBeautyPaneWithGradientBar extends VanChartBeautyPane {
private JPanel initGradientBarPane() {
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[][]{
new Component[]{null, null},
new Component[]{null, colorGradient},
};
gradientBarPane = TableLayout4VanChartHelper.createGapTableLayoutPane(components, rowSize, columnSize);
gradientBarPane = FineLayoutBuilder.commonLeftRightLayout(components);
gradientBarPane.setBorder(new ScaledEmptyBorder(10, 0, 0, 0));
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.SyntaxConstants;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.gui.UIComponentUtils;
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});
this.setLayout(new BorderLayout());
this.setLayout(FRGUIPaneFactory.createScaledBorderLayout(0, 10));
this.add(contentPane, BorderLayout.NORTH);
if (widthAndHeightPane != null) {
this.add(widthAndHeightPane, BorderLayout.CENTER);
@ -150,7 +151,7 @@ public class VanChartHtmlLabelPane extends JPanel {
new Component[]{isCustomWidth, customWidth},
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() {

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()) {
return super.createCommonStylePane();
}
// 颜色图标统一使用UIColorButton
setTextAttrPane(new ChartTextAttrPaneWithThemeStyle());
setTextAttrPane(new LabelAttrPaneWithThemeStyle());
JPanel stylePanel = new JPanel(new BorderLayout());
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();
JPanel tipPane = getTooltipPane();
JPanel moreLabelPane = FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3},
new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_More_Label")), moreLabel);
UILabel backgroundDetectionLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_More_Label"));
backgroundDetectionLabel.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_More_Label"));
JPanel moreLabelPane = FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, backgroundDetectionLabel, moreLabel);
Component[][] components = initComponent(tipPane);
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 arrowPoint = new Point(comPoint.x +settingButton.getWidth() - 25, comPoint.y + settingButton.getHeight());
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
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 java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@ -62,7 +61,7 @@ public class VanChartGaugeLabelDetailPane extends VanChartPlotLabelDetailPane {
initStyleListener();
return FineLayoutBuilder.compatibleTableLayout(10, getLabelStyleComponents(plot),new double[]{1.2, 3});
return FineLayoutBuilder.commonLeftRightLayout(getLabelStyleComponents(plot));
}
protected void initStyleListener() {
@ -118,7 +117,7 @@ public class VanChartGaugeLabelDetailPane extends VanChartPlotLabelDetailPane {
}
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) {

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;
import com.fine.theme.utils.FineLayoutBuilder;
import com.fr.chart.chartattr.Plot;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.ilable.UILabel;
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.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.style.VanChartStylePane;
import com.fr.van.chart.pie.style.VanChartPieCategoryLabelContentPane;
@ -40,18 +38,12 @@ public class VanChartPieCategoryLabelDetailPane extends VanChartPlotLabelDetailP
UIButtonGroup<Integer> position = new UIButtonGroup<>(positionName, positionValue);
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[][]{
new Component[]{null, null},
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) {

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

@ -1,15 +1,14 @@
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.GradientStyle;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.style.background.gradient.FixedGradientBar;
import com.fr.plugin.chart.type.GradientType;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.VanChartBeautyPane;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
@ -29,24 +28,18 @@ public class VanChartGaugeBeautyPane extends VanChartBeautyPane {
public VanChartGaugeBeautyPane() {
super();
this.add(initGradientBarPane(), BorderLayout.SOUTH);
this.setBorder(BorderFactory.createEmptyBorder(0, 0, 5, 0));
initListener();
}
private JPanel initGradientBarPane() {
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[][]{
new Component[]{null, null},
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);
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.GradientType;
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.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() {
@Override
public void stateChanged(ChangeEvent e) {
@ -211,7 +210,7 @@ public class VanChartGaugeSeriesPane extends VanChartMultiColorSeriesPane {
private JPanel createGaugeStylePane() {
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);
if (rotate != null) {
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.ParameterJavaScriptPane;
import com.fr.design.javascript.ProcessTransitionAdapter;
import com.fr.design.lock.TemplateLockInfoReSave;
import com.fr.design.login.DesignerLoginType;
import com.fr.design.login.guide.DesignerGuideHelper;
import com.fr.design.login.message.DesignerMessageHelper;
@ -221,6 +222,7 @@ public class DesignComponent {
DesignerWorkspaceLoader.init();
storePassport();
AlphaFineHelper.switchConfig4Locale();
TemplateLockInfoReSave.startListener();
RPCConnectHandlerCenter.startListener();
RecoverManager.register(new RecoverForDesigner());
}
@ -534,6 +536,7 @@ public class DesignComponent {
public void stop() {
unloadLogAppender();
DesignerSocketIO.close();
TemplateLockInfoReSave.stopListener();
}
/**

Loading…
Cancel
Save