Browse Source
* commit '5e5b339a569712a9645e1e77b3b9900df73d4640': (50 commits) REPORT-84965 插件-插件管理-插件id里有下划线,安装之后无法删除 【问题原因】后端解析'_'时,仅考虑有一个'_' 【改动思路】使用最后出现的'_'分隔id和version 【review建议】无 REPORT-85960 起始页,点击最近打开的fvs模板,模板打开失败--更改一下工具类 REPORT-86023 起始页先进入本地目录,再进入次管远程目录,会有服务器选项 默认是不会刷新工具栏的。这里刷新一下。 (吐槽一下:权限管理有点太散了 REPORT-85960 起始页,点击最近打开的fvs模板,模板打开失败 REPORT-85960 起始页,点击最近打开的fvs模板,模板打开失败 模板助手打开模板时会获取 path, 如果当前是使用空页面打开,则会 npe, 在主JAR兼容一下 REPORT-85774 sqlserver死锁 REPORT-85902 fix:字段名数据面板多了下拉栏 REPORT-85880 数据表现与处理-公式-公式编辑区域显示不正常 REPORT-85880 数据表现与处理-公式-公式编辑区域显示不正常 nojira fvs plugin 打包报错 REPORT-85600修复一下错误的名称 顺带着改个名字,看着难受 REPORT-85293【启动优化】起始页新增加载进度条视觉效果确认 全屏效果在 windows 上需要处理一下。 REPORT-75091 && REPORT-80693 数据脱敏一期&二期 【问题原因】迭代延期,屏蔽功能入口 【改动思路】同上 【review建议】 REPORT-85293【启动优化】起始页新增加载进度条视觉效果确认 ProgressDialog 用错了,这个只能是使用的时候才创建 不然大小有问题 REPORT-84427 【查找与替换】切换查找内容会出现无法定位的情况(特殊场景) REPORT-85210 && REPORT-85293 1-加载条样式优化 2-启动异常报错优化 3-给异步加载 envmanager 提供配置 REPORT-84428 设置像&模板内容频繁切换会出现空白或全选的异常情况 fix:格式化 REPORT-84617 模板认证卡慢更新迭代 fix: REPORT-83197【设计器】启动页性能优化 处理一部分问题 ...new-design
superman
2 years ago
74 changed files with 2715 additions and 1665 deletions
@ -0,0 +1,120 @@
|
||||
package com.fr.design.data.datapane.preview.desensitization.view; |
||||
|
||||
import com.fr.base.svg.IconUtils; |
||||
import com.fr.design.constants.UIConstants; |
||||
import com.fr.design.data.datapane.preview.PreviewTablePane; |
||||
import com.fr.design.gui.ibutton.UIToggleButton; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.gui.itoolbar.UIToolbar; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.menu.SeparatorDef; |
||||
import com.fr.design.menu.ToolBarDef; |
||||
|
||||
import javax.swing.Icon; |
||||
import javax.swing.JPanel; |
||||
import java.awt.Component; |
||||
import java.awt.FlowLayout; |
||||
import java.awt.event.MouseAdapter; |
||||
import java.awt.event.MouseEvent; |
||||
|
||||
/** |
||||
* 数据集预览-脱敏配置面板,主要展示当前脱敏开启状态、当前脱敏设定数量等 |
||||
* |
||||
* @author Yvan |
||||
* @version 11.0 |
||||
* Created by Yvan on 2022/11/14 |
||||
*/ |
||||
public class PreviewTableDesensitizationPane extends JPanel { |
||||
|
||||
private static final String DATA_DESENSITIZATION_CONFIG = Toolkit.i18nText("Fine-Design_Report_Desensitization_Config"); |
||||
private static final String LEFT_BRACKET = "("; |
||||
private static final String RIGHT_BRACKET = ")"; |
||||
private static final String COUNT = Toolkit.i18nText("Fine-Design_Report_Desensitization_Count"); |
||||
|
||||
/** |
||||
* 预览面板 |
||||
*/ |
||||
private PreviewTablePane previewTablePane; |
||||
|
||||
/** |
||||
* "数据脱敏设置"-标签 |
||||
*/ |
||||
private UILabel desensitizationLabel; |
||||
|
||||
/** |
||||
* 脱敏效果预览按钮 |
||||
*/ |
||||
private UIToggleButton previewToggle; |
||||
|
||||
|
||||
public PreviewTableDesensitizationPane(PreviewTablePane previewTablePane) { |
||||
this.previewTablePane = previewTablePane; |
||||
initComponents(); |
||||
} |
||||
|
||||
/** |
||||
* 初始化面板 |
||||
*/ |
||||
private void initComponents() { |
||||
this.setLayout(new FlowLayout(FlowLayout.LEFT)); |
||||
this.add(initDesensitizationLabel()); |
||||
this.add(initToolBar()); |
||||
this.add(initPreviewButton()); |
||||
} |
||||
|
||||
/** |
||||
* 初始化Label |
||||
* |
||||
* @return |
||||
*/ |
||||
private Component initDesensitizationLabel() { |
||||
// 初始化Label
|
||||
desensitizationLabel = new UILabel(DATA_DESENSITIZATION_CONFIG); |
||||
desensitizationLabel.setForeground(UIConstants.NORMAL_BLUE); |
||||
desensitizationLabel.addMouseListener(new MouseAdapter() { |
||||
@Override |
||||
public void mouseClicked(MouseEvent e) { |
||||
previewTablePane.clickDesensitizationLabel(); |
||||
} |
||||
}); |
||||
return desensitizationLabel; |
||||
} |
||||
|
||||
/** |
||||
* 初始化分隔符 |
||||
* |
||||
* @return |
||||
*/ |
||||
private UIToolbar initToolBar() { |
||||
ToolBarDef toolbarDef = new ToolBarDef(); |
||||
toolbarDef.addShortCut(SeparatorDef.DEFAULT); |
||||
UIToolbar toolBar = ToolBarDef.createJToolBar(); |
||||
toolBar.setBorderPainted(false); |
||||
toolbarDef.updateToolBar(toolBar); |
||||
return toolBar; |
||||
} |
||||
|
||||
/** |
||||
* 初始化脱敏效果预览按钮 |
||||
* |
||||
* @return |
||||
*/ |
||||
private UIToggleButton initPreviewButton() { |
||||
previewToggle = new UIToggleButton(new Icon[]{IconUtils.readIcon("/com/fr/design/images/m_file/preview"), IconUtils.readIcon("/com/fr/design/images/m_file/preview")}, true); |
||||
previewToggle.setToolTipText(Toolkit.i18nText("Fine-Design_Report_Desensitization_Preview")); |
||||
previewToggle.setSelected(false); |
||||
previewToggle.addActionListener(e -> { |
||||
// 切换TableModel的脱敏状态
|
||||
previewTablePane.togglePreviewTableModelDesensitizeStatus(); |
||||
// 刷新预览页面,展示
|
||||
previewTablePane.refreshTable(); |
||||
}); |
||||
return previewToggle; |
||||
} |
||||
|
||||
public void setDesensitizationCount(boolean desensitizeOpen, int count) { |
||||
desensitizationLabel.setText(desensitizeOpen ? |
||||
DATA_DESENSITIZATION_CONFIG + LEFT_BRACKET + count + RIGHT_BRACKET + COUNT : |
||||
DATA_DESENSITIZATION_CONFIG); |
||||
} |
||||
} |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,118 @@
|
||||
package com.fr.startup.ui; |
||||
|
||||
import com.fr.concurrent.FineExecutors; |
||||
import com.fr.concurrent.NamedThreadFactory; |
||||
import com.fr.design.gui.iprogressbar.ProgressDialog; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.ui.util.UIUtil; |
||||
import com.fr.event.Event; |
||||
import com.fr.event.EventDispatcher; |
||||
import com.fr.event.Listener; |
||||
import com.fr.module.ModuleEvent; |
||||
|
||||
import java.awt.Frame; |
||||
import java.util.concurrent.ScheduledExecutorService; |
||||
import java.util.concurrent.TimeUnit; |
||||
|
||||
/** |
||||
* 启动加载面板 |
||||
* |
||||
* @author Harrison |
||||
* @version 11.0 |
||||
* created by Harrison on 2022/11/08 |
||||
**/ |
||||
public class StartupLoadingPanel { |
||||
|
||||
/** |
||||
* 每次更新的步伐 |
||||
*/ |
||||
private static final int STEP = 1; |
||||
|
||||
/** |
||||
* 40ms更新进度 |
||||
*/ |
||||
private static final int STEP_HEARTBEAT = 40; |
||||
|
||||
private final Listener<String> MODULE_LISTENER = new Listener<String>() { |
||||
@Override |
||||
public void on(Event event, String param) { |
||||
moduleId = param; |
||||
} |
||||
}; |
||||
|
||||
private ProgressDialog progressDialog; |
||||
private String moduleId; |
||||
private int progress; |
||||
|
||||
public StartupLoadingPanel(Frame frame) { |
||||
this.progressDialog = new ProgressDialog(frame); |
||||
this.moduleId = Toolkit.i18nText("Fine-Design_Basic_Initializing"); |
||||
|
||||
initListeners(); |
||||
} |
||||
|
||||
/** |
||||
* 隐藏 |
||||
*/ |
||||
public void hide() { |
||||
this.progress = progressDialog.getProgressMaximum(); |
||||
} |
||||
|
||||
/** |
||||
* 展示 |
||||
*/ |
||||
public void show() { |
||||
|
||||
final ScheduledExecutorService scheduler = FineExecutors.newScheduledThreadPool(1, |
||||
new NamedThreadFactory("StartupLoadingPanel")); |
||||
scheduler.scheduleAtFixedRate(new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
UIUtil.invokeAndWaitIfNeeded(() -> { |
||||
if (isComplete()) { |
||||
scheduler.shutdown(); |
||||
progressDialog.dispose(); |
||||
resetListeners(); |
||||
return; |
||||
} |
||||
if (!progressDialog.isVisible()) { |
||||
progressDialog.setVisible(true); |
||||
String moduleId = getModuleId(); |
||||
progressDialog.updateLoadingText(moduleId); |
||||
} |
||||
progressDialog.setProgressValue(incrementProgress()); |
||||
}); |
||||
} |
||||
}, 0, STEP_HEARTBEAT, TimeUnit.MILLISECONDS); |
||||
|
||||
} |
||||
|
||||
private void initListeners() { |
||||
|
||||
EventDispatcher.listen(ModuleEvent.MajorModuleStarting, MODULE_LISTENER); |
||||
} |
||||
|
||||
private void resetListeners() { |
||||
|
||||
EventDispatcher.stopListen(MODULE_LISTENER); |
||||
} |
||||
|
||||
private boolean isComplete() { |
||||
return this.progress >= progressDialog.getProgressMaximum(); |
||||
} |
||||
|
||||
private String getModuleId() { |
||||
|
||||
return this.moduleId; |
||||
} |
||||
|
||||
private int incrementProgress() { |
||||
|
||||
if (progress != progressDialog.getProgressMaximum()) { |
||||
progress += STEP; |
||||
} |
||||
return progress; |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,55 @@
|
||||
package com.fr.design.gui.iprogressbar; |
||||
|
||||
import com.fr.design.utils.DevUtils; |
||||
|
||||
import java.awt.Dimension; |
||||
import java.awt.Frame; |
||||
import java.util.function.Consumer; |
||||
|
||||
/** |
||||
* @author Harrison |
||||
* @version 11.0 |
||||
* Created by Harrison on 2022/11/23 |
||||
*/ |
||||
public class ProgressDialogTest { |
||||
|
||||
public static void main(String[] args) { |
||||
|
||||
mockInitSize(); |
||||
} |
||||
|
||||
/** |
||||
* 模拟 frame 的大小未初始化好的情况 |
||||
*/ |
||||
private static void mockNotInitSize() { |
||||
|
||||
DevUtils.show(new Consumer<Frame>() { |
||||
@Override |
||||
public void accept(Frame frame) { |
||||
|
||||
Dimension origin = frame.getSize(); |
||||
frame.setSize(0, 0); |
||||
ProgressDialog progressDialog = new ProgressDialog(frame); |
||||
progressDialog.setVisible(true); |
||||
progressDialog.updateLoadingText("test"); |
||||
frame.setSize(origin); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
/** |
||||
* 模拟 frame 的大小初始化好的情况 |
||||
*/ |
||||
private static void mockInitSize() { |
||||
|
||||
DevUtils.show(new Consumer<Frame>() { |
||||
@Override |
||||
public void accept(Frame frame) { |
||||
|
||||
ProgressDialog progressDialog = new ProgressDialog(frame); |
||||
progressDialog.setVisible(true); |
||||
progressDialog.updateLoadingText("test"); |
||||
} |
||||
}); |
||||
} |
||||
} |
Loading…
Reference in new issue