Browse Source

Pull request #14430: REPORT-127437 feat: fvs 适配

Merge in DESIGN/design from ~ZONGYU.WANG/design:newui to newui

* commit '2e9a4c6ee102f7efe0c3bd9a2d6cb4e64babbe9e':
  REPORT-127437 feat:响应插件安装卸载事件
  REPORT-127437 fix:【fvs 适配】根据 mr 意见调整
  REPORT-127437 fix:纸张背景布局调整
  REPORT-127437 feat:翻新预览界面 & 纸张背景,渐变色布局调整
  REPORT-127437 fix: 解决 fvs 适配的 UI 问题 & 适配 TemplateTabStoryBoard
  REPORT-127437 feat: 增加工具按钮插件适配抽象类
  REPORT-127437 feat: fvs 适配
newui
Zongyu.Wang-王宗雨 6 months ago
parent
commit
3e81cbe948
  1. 12
      designer-base/src/main/java/com/fine/theme/light/ui/FineTemplateTabPaneUI.java
  2. 31
      designer-base/src/main/java/com/fr/design/actions/template/NewWorkBookToolButtonAction.java
  3. 2
      designer-base/src/main/java/com/fr/design/data/datapane/preview/CopyableJTable.java
  4. 34
      designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java
  5. 15
      designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/PreviewTableDesensitizationPane.java
  6. 122
      designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java
  7. 47
      designer-base/src/main/java/com/fr/design/fun/MultiTemplateTabPaneHandler.java
  8. 38
      designer-base/src/main/java/com/fr/design/fun/impl/AbstractMultiTemplateTabPaneHandler.java
  9. 1
      designer-base/src/main/java/com/fr/design/gui/itable/SortableJTable.java
  10. 3
      designer-base/src/main/java/com/fr/design/gui/style/FollowingThemePane.java
  11. 12
      designer-base/src/main/java/com/fr/design/mainframe/CenterRegionContainerPane.java
  12. 2
      designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java
  13. 2
      designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java
  14. 2
      designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/FileVersionsPanel.java
  15. 12
      designer-base/src/main/java/com/fr/design/menu/ToolBarDef.java
  16. 11
      designer-base/src/main/java/com/fr/design/style/background/gradient/GradientBackgroundPane.java
  17. 1
      designer-base/src/test/java/com/fr/design/gui/storybook/components/TemplateTabStoryBoard.java
  18. 31
      designer-realize/src/main/java/com/fr/design/report/NewReportBackgroundPane.java

12
designer-base/src/main/java/com/fine/theme/light/ui/FineTemplateTabPaneUI.java

@ -26,7 +26,7 @@ import java.awt.geom.Rectangle2D;
import static com.fine.theme.utils.FineUIScale.scale;
import static com.fine.theme.utils.FineUIUtils.paintRoundTabBorder;
import static com.formdev.flatlaf.ui.FlatStylingSupport.Styleable;
import static com.fr.design.file.MultiTemplateTabPane.LEADING_WIDTH;
import static com.fr.design.file.MultiTemplateTabPane.leadingWidth;
import static com.fr.design.file.MultiTemplateTabPane.TRAILING_WIDTH;
/**
@ -85,7 +85,6 @@ public class FineTemplateTabPaneUI extends PanelUI {
private Icon closeHoverIcon;
private int leadingWidth;
private int trailingWidth;
protected FineTemplateTabPaneUI() {
@ -112,7 +111,6 @@ public class FineTemplateTabPaneUI extends PanelUI {
moreAction = new LazyIcon("tool_more");
moreHoverAction = new LazyIcon("tool_more_hover");
fileIcon = new LazyIcon("cpt_icon");
leadingWidth = scale(LEADING_WIDTH);
trailingWidth = scale(TRAILING_WIDTH);
borderWidth = FineUIUtils.getUIInt("TemplateTabPane.borderWidth", "TemplateTabPane.borderWidth");
@ -138,7 +136,7 @@ public class FineTemplateTabPaneUI extends PanelUI {
@Override
public void update(Graphics g, JComponent c) {
super.update(g, c);
double maxWidth = c.getWidth() - leadingWidth - trailingWidth;
double maxWidth = c.getWidth() - scale(leadingWidth) - trailingWidth;
Graphics2D g2d = (Graphics2D) g;
paintDefaultBackground(g2d);
paintPaneUnderLine(c.getWidth(), g2d);
@ -170,7 +168,7 @@ public class FineTemplateTabPaneUI extends PanelUI {
if (tabPane.getSelectedIndex() < 0) {
tabPane.setSelectedIndex(0);
}
double templateStartX = leadingWidth;
double templateStartX = scale(leadingWidth);
//从可以开始展示在tab面板上的tab开始画
@ -203,7 +201,7 @@ public class FineTemplateTabPaneUI extends PanelUI {
private void paintSeparators(Graphics2D g2d) {
g2d.setPaint(borderColor);
float x = leadingWidth;
float x = scale(leadingWidth);
Pair<Integer, Integer> viewRange = tabPane.getViewRange();
for (int i = viewRange.getFirst(); i <= viewRange.getSecond(); i++) {
if (i != tabPane.getSelectedIndex()
@ -216,7 +214,7 @@ public class FineTemplateTabPaneUI extends PanelUI {
private void paintTrailingAction(Graphics2D g2d, double tabPaneWidth) {
int x = leadingWidth + (int) tabPaneWidth + (trailingWidth - moreAction.getIconWidth()) / 2;
int x = scale(leadingWidth) + (int) tabPaneWidth + (trailingWidth - moreAction.getIconWidth()) / 2;
int y = (tabHeight - moreAction.getIconHeight()) / 2;
if (tabPane.isHoverMoreAction()) {
moreHoverAction.paintIcon(tabPane, g2d, x, y);

31
designer-base/src/main/java/com/fr/design/actions/template/NewWorkBookToolButtonAction.java

@ -0,0 +1,31 @@
package com.fr.design.actions.template;
import com.fine.theme.icon.LazyIcon;
import com.fr.design.actions.UpdateAction;
import com.fr.design.mainframe.DesignerContext;
import javax.swing.Icon;
import java.awt.event.ActionEvent;
/**
* 工具按钮 - 新建报表文件
*
* @author lemon
* @since
* Created on
*/
public class NewWorkBookToolButtonAction extends UpdateAction {
public NewWorkBookToolButtonAction() {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_M_New_WorkBook"));
this.setSmallIcon(icon());
}
protected Icon icon() {
return new LazyIcon("add_worksheet");
}
@Override
public void actionPerformed(ActionEvent e) {
DesignerContext.getDesignerFrame().addAndActivateJTemplate();
}
}

2
designer-base/src/main/java/com/fr/design/data/datapane/preview/CopyableJTable.java

@ -72,7 +72,7 @@ public class CopyableJTable extends SortableJTable {
public CopyableJTable(TableSorter tableModel) {
super(tableModel);
initListener();
this.getTableHeader().setDefaultRenderer(new CopyableTableHeaderCellRenderer(this.getTableHeader().getDefaultRenderer()));
setShowGrid(true);
}
private void initListener() {

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

@ -3,8 +3,10 @@
*/
package com.fr.design.data.datapane.preview;
import com.fine.theme.icon.LazyIcon;
import com.fine.theme.utils.FineUIScale;
import com.fine.theme.utils.FineUIUtils;
import com.fr.base.TableData;
import com.fr.base.svg.IconUtils;
import com.fr.data.TableDataSource;
import com.fr.data.desensitize.base.DesensitizationTableData;
import com.fr.data.impl.DBTableData;
@ -67,6 +69,9 @@ import java.util.List;
import java.util.Objects;
import java.util.concurrent.CancellationException;
import static com.fine.swing.ui.layout.Layouts.cell;
import static com.fine.swing.ui.layout.Layouts.row;
/**
* august PreviewTablePane一共提供5个共有的静态方法用来预览
*/
@ -143,9 +148,9 @@ public class PreviewTablePane extends BasicPane {
}
private PreviewTablePane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setLayout(new BorderLayout(0, FineUIScale.scale(10)));
// northPane
this.add(initNorthPane(), BorderLayout.NORTH);
this.add(FineUIUtils.wrapComponentWithTitle(initNorthPane(), Toolkit.i18nText("Fine-Design_Basic_Data")), BorderLayout.NORTH);
// centerPane
this.add(initCenterPane(), BorderLayout.CENTER);
// dialog
@ -174,20 +179,14 @@ public class PreviewTablePane extends BasicPane {
* @return
*/
private JComponent initPreviewNumberPane() {
JPanel previewNumberPanel = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
JPanel previewNumberPanel = new JPanel(new BorderLayout());
// 当前行数
JPanel currentPreviewPanel = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
currentPreviewPanel.add(new UILabel(Toolkit.i18nText("Fine-Design_Basic_Current_Preview_Rows") + ":"));
currentRowsField = new UINumberField();
currentPreviewPanel.add(currentRowsField);
currentRowsField.setEditable(false);
currentRowsField.setColumns(4);
currentRowsField.setInteger(true);
// 最大行数
JPanel maxPanel = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
maxPanel.add(new UILabel(Toolkit.i18nText("Fine-Design_Basic_Datasource_Maximum_Number_of_Preview_Rows") + ":"));
maxPreviewNumberField = new UINumberField();
maxPanel.add(maxPreviewNumberField);
maxPreviewNumberField.setColumns(4);
maxPreviewNumberField.setInteger(true);
maxPreviewNumberField.setValue(DesignerEnvManager.getEnvManager().getMaxNumberOrPreviewRow());
@ -198,14 +197,17 @@ public class PreviewTablePane extends BasicPane {
// 刷新按钮
initRefreshLabel();
previewNumberPanel.add(currentPreviewPanel);
previewNumberPanel.add(maxPanel);
previewNumberPanel.add(refreshLabel);
previewNumberPanel.add(row(20,
row(4, cell(new UILabel(Toolkit.i18nText("Fine-Design_Basic_Current_Preview_Rows") + ":")), cell(currentRowsField)),
row(4, cell(new UILabel(Toolkit.i18nText("Fine-Design_Basic_Datasource_Maximum_Number_of_Preview_Rows") + ":")), cell(maxPreviewNumberField)),
cell(refreshLabel)
).getComponent());
return previewNumberPanel;
}
private void initRefreshLabel() {
Icon refreshImage = IconUtils.readIcon("/com/fr/design/images/control/refresh");
Icon refreshImage = new LazyIcon("refresh");
refreshLabel = new UILabel(refreshImage);
refreshLabel.addMouseListener(refreshLabelMouseAdapter);
}
@ -434,7 +436,6 @@ public class PreviewTablePane extends BasicPane {
*/
public static EmbeddedTableData previewTableData(TableData tableData, final int keyIndex, final int valueIndex) {
PreviewTablePane previewTablePane = new PreviewTablePane();
previewTablePane.setBorder(BorderFactory.createTitledBorder(Toolkit.i18nText("Fine-Design_Basic_Data")));
try {
previewTablePane.populate(tableData);
previewTablePane.resetPreviewTableColumnColor();
@ -646,7 +647,6 @@ public class PreviewTablePane extends BasicPane {
public static void previewDataModel(final DataModel dataModel, final int keyIndex, final int valueIndex) {
final PreviewTablePane previewTablePane = new PreviewTablePane();
previewTablePane.dataModel = dataModel;
previewTablePane.setBorder(BorderFactory.createTitledBorder(Toolkit.i18nText("Fine-Design_Basic_Data")));
try {
previewTablePane.setRowsLimitTableModel();
@ -675,8 +675,6 @@ public class PreviewTablePane extends BasicPane {
// 单个结果集的展示面板
PreviewTablePane previewTablePane = new PreviewTablePane();
previewTablePane.dataModel = nameDataModel;
// 数据
previewTablePane.setBorder(BorderFactory.createTitledBorder(Toolkit.i18nText("Fine-Design_Basic_Data")));
try {
// 带行数限制的数据集结果预览对象
previewTablePane.setRowsLimitTableModel();

15
designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/PreviewTableDesensitizationPane.java

@ -1,6 +1,6 @@
package com.fr.design.data.datapane.preview.desensitization.view;
import com.fr.base.svg.IconUtils;
import com.fine.theme.icon.LazyIcon;
import com.fr.design.constants.UIConstants;
import com.fr.design.data.datapane.preview.PreviewTablePane;
import com.fr.design.gui.ibutton.UIToggleButton;
@ -12,11 +12,14 @@ import com.fr.design.menu.ToolBarDef;
import javax.swing.Icon;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import static com.fine.swing.ui.layout.Layouts.cell;
import static com.fine.swing.ui.layout.Layouts.row;
/**
* 数据集预览-脱敏配置面板主要展示当前脱敏开启状态当前脱敏设定数量等
*
@ -56,10 +59,8 @@ public class PreviewTableDesensitizationPane extends JPanel {
* 初始化面板
*/
private void initComponents() {
this.setLayout(new FlowLayout(FlowLayout.LEFT));
this.add(initDesensitizationLabel());
this.add(initToolBar());
this.add(initPreviewButton());
this.setLayout(new BorderLayout());
this.add(row(cell(initDesensitizationLabel()), cell(initToolBar()), cell(initPreviewButton())).getComponent());
}
/**
@ -100,7 +101,7 @@ public class PreviewTableDesensitizationPane extends JPanel {
* @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 = new UIToggleButton(new Icon[]{new LazyIcon("preview"), new LazyIcon("preview")}, true);
previewToggle.setToolTipText(Toolkit.i18nText("Fine-Design_Report_Desensitization_Preview"));
previewToggle.setSelected(false);
previewToggle.addActionListener(e -> {

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

@ -4,20 +4,28 @@ package com.fr.design.file;
import com.fine.swing.ui.layout.Layouts;
import com.fine.swing.ui.layout.Row;
import com.fine.theme.icon.LazyIcon;
import com.fine.theme.utils.FineUIScale;
import com.fine.theme.utils.FineUIStyle;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.base.vcs.DesignerMode;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.actions.UpdateAction;
import com.fr.design.actions.file.LocateAction;
import com.fr.design.actions.template.NewWorkBookToolButtonAction;
import com.fr.design.constants.UIConstants;
import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.fun.MenuHandler;
import com.fr.design.fun.MultiTemplateTabPaneHandler;
import com.fr.design.gui.imenu.UIMenuItem;
import com.fr.design.gui.imenu.UIPopupMenu;
import com.fr.design.gui.imenu.UIScrollPopUpMenu;
import com.fr.design.gui.itoolbar.UIToolbar;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.mainframe.manager.search.TemplateTreeSearchManager;
import com.fr.design.menu.ShortCut;
import com.fr.design.menu.ToolBarDef;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.design.worker.WorkerManager;
import com.fr.design.worker.save.CallbackSaveWorker;
@ -39,14 +47,17 @@ import javax.swing.ToolTipManager;
import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import static com.fine.theme.utils.FineClientProperties.BUTTON_TYPE_TOOLBAR_BUTTON;
import static com.fine.theme.utils.FineUIScale.scale;
@ -79,8 +90,11 @@ public class MultiTemplateTabPane extends Row {
/**
* 前导动作区宽度
* 最终宽度 = {@linkplain #SINGLE_BUTTON_WIDTH} * {@literal toolBar.getComponentCount()}
*/
public static final int LEADING_WIDTH = 38;
public static int leadingWidth;
// 每个按钮固定宽度大小
public static int SINGLE_BUTTON_WIDTH = 38;
//每个标签页的最大的长度和最小长度。这些长度均为均分
@ -114,6 +128,7 @@ public class MultiTemplateTabPane extends Row {
private Icon clodeIcon = new LazyIcon("clear");
private boolean isShowList = false;
private JButton leadingActionButton;
private final UIToolbar leadingToolBar = new UIToolbar();
//自动新建的模板B若没有进行任何编辑,切换到其他
//
@ -176,16 +191,29 @@ public class MultiTemplateTabPane extends Row {
}
}
});
preProcessMultiTemplateTabPane();
add(
Layouts.cell(new UIButton(new LazyIcon("add_worksheet"))).with(it -> {
Layouts.cell(getLeadingToolBar()).with(it -> {
it.putClientProperty(BUTTON_TYPE, BUTTON_TYPE_TOOLBAR_BUTTON);
it.setOpaque(false);
it.setBorder(new ScaledEmptyBorder(3, -7, 3, -7));
FineUIStyle.setStyle(it, BUTTON_TAB_ACTION);
it.setFocusPainted(false);
leadingActionButton = it;
})
);
}
/**
* 重置多工作簿面板
*/
public void resetMultiTemplateTabPane() {
preProcessMultiTemplateTabPane();
MultiTemplateTabPane.getInstance().repaint();
}
private void preProcessMultiTemplateTabPane() {
updateLeadingToolBar();
}
/**
* 为前导动作添加监听
*
@ -197,8 +225,8 @@ public class MultiTemplateTabPane extends Row {
leadingActionButton.addActionListener(newTemplateAction);
}
public void setLeadingActionEnable(boolean enable) {
leadingActionButton.setEnabled(enable);
public void setToolBarEnable(boolean enable) {
leadingToolBar.setEnabled(enable);
}
@ -484,7 +512,7 @@ public class MultiTemplateTabPane extends Row {
@Override
public void paintComponent(Graphics g) {
double maxWidth = getWidth() - scale(TRAILING_WIDTH) - scale(LEADING_WIDTH); //最大宽度
double maxWidth = getWidth() - scale(TRAILING_WIDTH) - scale(leadingWidth); //最大宽度
int maxTemplateNum = (int) (maxWidth) / scale(MINWIDTH);
calMinAndMaxIndex(maxTemplateNum);
calculateRealAverageWidth(maxWidth, maxTemplateNum);
@ -494,7 +522,7 @@ public class MultiTemplateTabPane extends Row {
private void calculateClosePosition() {
startX = new int[maxPaintIndex - minPaintIndex + 1];
double templateStartX = scale(LEADING_WIDTH);
double templateStartX = scale(leadingWidth);
for (int i = getViewRange().getFirst(); i <= getViewRange().getSecond(); i++) {
int closePosition = (int) templateStartX + getTabWidth() - clodeIcon.getIconWidth() - GAP;
startX[i - minPaintIndex] = closePosition;
@ -682,7 +710,7 @@ public class MultiTemplateTabPane extends Row {
private boolean isOverListDown(int evtX) {
int maxWidth = getWidth() - scale(LEADING_WIDTH);
int maxWidth = getWidth() - scale(leadingWidth);
return evtX >= (maxWidth + SMALLGAP) && evtX <= (getWidth() - SMALLGAP);
}
@ -694,13 +722,13 @@ public class MultiTemplateTabPane extends Row {
*/
private boolean isOverBlank(int evtX) {
int tabWidths = (maxPaintIndex - minPaintIndex + 1) * tabWidth;
int leftX = tabWidths + scale(LEADING_WIDTH);
int leftX = tabWidths + scale(leadingWidth);
return evtX >= leftX && evtX <= getWidth() - scale(TRAILING_WIDTH);
}
private int getTemplateIndex(int evtX) {
int textX = scale(LEADING_WIDTH);
int textX = scale(leadingWidth);
for (int i = minPaintIndex; i <= maxPaintIndex; i++) {
int textWidth = tabWidth;
if (evtX >= textX && evtX < textX + textWidth) {
@ -963,4 +991,74 @@ public class MultiTemplateTabPane extends Row {
public Pair<Integer, Integer> getViewRange() {
return new Pair<>(minPaintIndex, maxPaintIndex);
}
/**
* 获取前导区多模板工具按钮
*
* @return 工具按钮
*/
public UIToolbar getLeadingToolBar() {
return this.leadingToolBar;
}
/**
* 生成前导区多模板工具按钮
*/
public void updateLeadingToolBar() {
createLeadingToolBarDef().updateToolBar(getLeadingToolBar());
leadingWidth = getLeadingToolBar().getComponentCount() * SINGLE_BUTTON_WIDTH;
getLeadingToolBar().setLayout(new FlowLayout(FlowLayout.LEFT, FineUIScale.scale(14), 0));
}
/**
* 创建新建模板的前导区工具按钮
* @return
*/
private ToolBarDef createLeadingToolBarDef() {
ToolBarDef toolBarDef = ShortCut.asToolBarDef(createNewTemplateShortCuts());
insertLeadingToolButton(toolBarDef, MultiTemplateTabPaneHandler.LEADING_LOCATION);
return toolBarDef;
}
/**
* 创建新建文件的按钮数组
* @return
*/
public ShortCut[] createNewTemplateShortCuts() {
ArrayList<ShortCut> shortCuts = new ArrayList<ShortCut>();
shortCuts.add(new NewWorkBookToolButtonAction());
return shortCuts.toArray(new ShortCut[0]);
}
/**
* 插入插件中的按钮
* @return
*/
protected void insertLeadingToolButton(ToolBarDef toolBarDef, String anchor) {
Set<MultiTemplateTabPaneHandler> set = ExtraDesignClassManager.getInstance().getArray(MultiTemplateTabPaneHandler.MARK_STRING);
List<MultiTemplateTabPaneHandler> target = new ArrayList<>();
for (MultiTemplateTabPaneHandler handler : set) {
if (ComparatorUtils.equals(handler.category(), anchor)) {
target.add(handler);
}
}
for (MultiTemplateTabPaneHandler handler : target) {
int insertPosition = handler.insertPosition(toolBarDef.getShortCutCount());
if (insertPosition == MenuHandler.HIDE) {
return;
}
ShortCut shortCut = handler.shortcut();
if (shortCut == null) {
continue;
}
if (insertPosition == MenuHandler.LAST) {
toolBarDef.addShortCut(shortCut);
} else {
toolBarDef.insertShortCut(insertPosition, shortCut);
}
}
}
}

47
designer-base/src/main/java/com/fr/design/fun/MultiTemplateTabPaneHandler.java

@ -0,0 +1,47 @@
package com.fr.design.fun;
import com.fr.design.menu.ShortCut;
import com.fr.stable.fun.mark.Mutable;
/**
* 设计器 Multi_template 按钮插件接口
*
* @author lemon
* @since
* Created on
*/
public interface MultiTemplateTabPaneHandler extends Mutable {
String MARK_STRING = "MultiTemplateToolButtonHandler";
int CURRENT_LEVEL = 1;
int LAST = -1;
int HIDE =-2;
String LEADING_LOCATION = "leading_location";
String TRAILING_LOCATION = "trailing_location";
/**
* 插入工具按钮的位置
*
* @param total 插入的位置
* @return 插入位置如果想放到最后则返回-1
*/
int insertPosition(int total);
/**
* 所属的工具按钮分类
*
* @return 分类工具按钮名
*/
String category();
/**
* 具体的工具按钮项内容
*
* @return 工具按钮项内容
*/
ShortCut shortcut();
}

38
designer-base/src/main/java/com/fr/design/fun/impl/AbstractMultiTemplateTabPaneHandler.java

@ -0,0 +1,38 @@
package com.fr.design.fun.impl;
import com.fr.design.fun.MultiTemplateTabPaneHandler;
import com.fr.design.menu.ShortCut;
import com.fr.stable.fun.impl.AbstractProvider;
import com.fr.stable.fun.mark.API;
/**
* 多模板工具按钮插件适配抽象类
*
* @author lemon
* @since
* Created on
*/
@API(level = MultiTemplateTabPaneHandler.CURRENT_LEVEL)
public abstract class AbstractMultiTemplateTabPaneHandler extends AbstractProvider implements MultiTemplateTabPaneHandler {
/**
* 当前接口的API等级,用于判断是否需要升级插件
* @return API等级
*/
public int currentAPILevel() {
return CURRENT_LEVEL;
}
@Override
public String mark4Provider() {
return this.getClass().getName();
}
/**
* 获取当前工具按钮对应的Action
*
* @return 工具按钮 Action
*/
public ShortCut shortcut() {
return null;
}
}

1
designer-base/src/main/java/com/fr/design/gui/itable/SortableJTable.java

@ -6,5 +6,6 @@ public class SortableJTable extends JTable{
public SortableJTable(TableSorter tableModel){
super(tableModel);
tableModel.setTableHeader(getTableHeader());
setShowGrid(true);
}
}

3
designer-base/src/main/java/com/fr/design/gui/style/FollowingThemePane.java

@ -17,10 +17,10 @@ import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.widget.FRWidgetFactory;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
@ -78,6 +78,7 @@ public class FollowingThemePane extends BasicPane implements UIObserver {
TableLayoutHelper.createGapTableLayoutPane( new Component[][]{new Component[] { followingThemeLabel, FRGUIPaneFactory.createBorderLayoutNorthPaneWithComponent(followingThemeButtonGroup)}},
new double[] { p }, new double[] {FineUIScale.scale(SETTING_LABEL_WIDTH), f }, 10, 0);
followingThemePane.setVisible(false);
followingThemePane.setPreferredSize(new Dimension(FineUIScale.scale(275), (int) followingThemePane.getPreferredSize().getHeight()));
add(followingThemePane, BorderLayout.NORTH);
container = FRGUIPaneFactory.createBorderLayout_S_Pane();

12
designer-base/src/main/java/com/fr/design/mainframe/CenterRegionContainerPane.java

@ -93,8 +93,6 @@ public class CenterRegionContainerPane extends JPanel {
private MultiTemplateTabPane initTemplateTabPane() {
MultiTemplateTabPane templateTabPane = MultiTemplateTabPane.getInstance();
templateTabPane.addLeadingAction(e ->
DesignerContext.getDesignerFrame().addAndActivateJTemplate());
return templateTabPane;
}
@ -123,6 +121,13 @@ public class CenterRegionContainerPane extends JPanel {
plus.insertToCombineUpToolbar(combineUp);
}
/**
* 重置多工作簿面板
*/
private void resetMultiTemplateTablePane() {
MultiTemplateTabPane.getInstance().resetMultiTemplateTabPane();
}
/**
* 填充上工具栏的中的工具
@ -221,6 +226,7 @@ public class CenterRegionContainerPane extends JPanel {
*/
protected void resetToolkitByPlus(ToolBarMenuDockPlus plus, ToolBarMenuDock ad, ToolKitConfigStrategy strategy) {
resetMultiTemplateTablePane();
resetCombineUpTooBar(ad.resetUpToolBar(plus), plus);
if (toolbarComponent != null) {
@ -275,7 +281,7 @@ public class CenterRegionContainerPane extends JPanel {
* 判断是否在权限编辑状态若是在权限编辑状态则需要有虚线框和关闭突变
*/
protected void needToAddAuhtorityPaint() {
MultiTemplateTabPane.getInstance().setLeadingActionEnable(DesignModeContext.isAuthorityEditing());
MultiTemplateTabPane.getInstance().setToolBarEnable(DesignModeContext.isAuthorityEditing());
}

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

@ -620,7 +620,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
this.ad.updateToolBarDef();
}
ToolBarMenuDock getToolBarMenuDock() {
public ToolBarMenuDock getToolBarMenuDock() {
return this.ad;
}

2
designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java

@ -1,5 +1,6 @@
package com.fr.design.mainframe.backgroundpane;
import com.formdev.flatlaf.ui.FlatUIUtils;
import com.fr.base.background.ColorBackground;
import com.fr.design.event.UIObserverListener;
import com.fr.design.layout.FRGUIPaneFactory;
@ -29,6 +30,7 @@ public class ColorBackgroundQuickPane extends BackgroundQuickPane {
return false;
}
};
colorSelectBox.setBackground(FlatUIUtils.getUIColor("background.normal", Color.WHITE));
this.add(colorSelectBox, BorderLayout.NORTH);
}

2
designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/FileVersionsPanel.java

@ -155,7 +155,7 @@ public class FileVersionsPanel extends BasicPane {
DesignModeContext.switchTo(isExit ? DesignerMode.NORMAL : DesignerMode.VCS);
// MutilTempalteTabPane & NewTemplatePane 是否可点
MultiTemplateTabPane.getInstance().setLeadingActionEnable(!isExit);
MultiTemplateTabPane.getInstance().setToolBarEnable(!isExit);
JTemplate<?, ?> currentEditingTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate();
if (currentEditingTemplate.isJWorkBook()) {

12
designer-base/src/main/java/com/fr/design/menu/ToolBarDef.java

@ -38,6 +38,18 @@ public class ToolBarDef {
public ToolBarDef() {
}
/**
* 插入工具按钮项
*
* @param index 插入的位置
* @param shortCut 工具按钮信息
*/
public void insertShortCut(int index, ShortCut shortCut) {
int size = this.shortcutList.size();
index = Math.min(index, size);
this.shortcutList.add(index, shortCut);
}
public int getShortCutCount() {
return this.shortcutList.size();
}

11
designer-base/src/main/java/com/fr/design/style/background/gradient/GradientBackgroundPane.java

@ -11,14 +11,11 @@ import com.fr.design.utils.gui.UIComponentUtils;
import com.fr.design.widget.FRWidgetFactory;
import com.fr.general.Background;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@ -56,20 +53,20 @@ public class GradientBackgroundPane extends BackgroundDetailPane {
toggle.add(top2bottom);
JPanel jpanel = column(
10,
row(
cell(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Drag_To_Select_Gradient"))),
flex()
),
fix(100),
row(
flex(),
cell(gradientBar),
flex()
),
fix(100),
fix(10),
row(
5,
cell(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Gradient_Direction") + ":")),
fix(20),
cell(left2right),
cell(top2bottom),
flex()
@ -77,7 +74,7 @@ public class GradientBackgroundPane extends BackgroundDetailPane {
)
).getComponent();
jpanel.setPreferredSize(FineUIScale.scale(new Dimension(600, 450)));
this.setLayout(new BorderLayout());
this.add(FineUIUtils.wrapComponentWithTitle(jpanel, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Style_Background_Choose_Gradient_Color")));
}

1
designer-base/src/test/java/com/fr/design/gui/storybook/components/TemplateTabStoryBoard.java

@ -32,5 +32,4 @@ public class TemplateTabStoryBoard extends StoryBoard {
add(MultiTemplateTabPane.getInstance());
}
}

31
designer-realize/src/main/java/com/fr/design/report/NewReportBackgroundPane.java

@ -19,14 +19,12 @@ import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.theme.ui.BorderUtils;
import com.fr.general.Background;
import com.fr.page.ReportSettingsProvider;
import com.fr.report.stable.ReportSettings;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.border.CompoundBorder;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
@ -36,6 +34,9 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
import static com.fine.swing.ui.layout.Layouts.cell;
import static com.fine.swing.ui.layout.Layouts.column;
public class NewReportBackgroundPane extends BasicPane {
private final UICheckBox isPrintBackgroundCheckBox;
private final UICheckBox isExportBackgroundCheckBox;
@ -44,14 +45,12 @@ public class NewReportBackgroundPane extends BasicPane {
public NewReportBackgroundPane() {
setLayout(FRGUIPaneFactory.createBorderLayout());
setBorder(BorderFactory.createEmptyBorder());
setPreferredSize(FineUIScale.scale(new Dimension(600, 570)));
profilePane = new BackgroundProfilePane();
isPrintBackgroundCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Print_Background"));
isExportBackgroundCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Export_Background"));
add(profilePane, BorderLayout.CENTER);
add(createBottomPane(), BorderLayout.SOUTH);
add(column(10, cell(profilePane).weight(1), cell(createBottomPane())).getComponent());
}
private JPanel createBottomPane() {
@ -122,7 +121,7 @@ public class NewReportBackgroundPane extends BasicPane {
uiLabelPane.add(uiLabel, BorderLayout.NORTH);
uiLabelPane.setBorder(new ScaledEmptyBorder(10, 0, 0, 0));
backgroundPane = new ReportBackgroundSpecialPane();
backgroundPane.setBorder(new ScaledEmptyBorder(10, 0, 0, 10));
backgroundPane.setBorder(new ScaledEmptyBorder(10, 0, 0, 0));
backgroundLabeledPane = TableLayoutHelper.createCommonTableLayoutPane(
new Component[][]{ new Component[] { uiLabelPane, backgroundPane } },
new double[] { p }, new double[] { FineUIScale.scale(SETTING_LABEL_WIDTH), f}, IntervalConstants.INTERVAL_L1
@ -144,9 +143,9 @@ public class NewReportBackgroundPane extends BasicPane {
}
});
JPanel contentContainer = Layouts.column(
JPanel contentContainer = column(
10,
Layouts.row(10, Layouts.cell(createLeftPane()), Layouts.cell(createRightPane()))
Layouts.row(10, cell(createLeftPane()).weight(1), cell(createRightPane())).weight(1)
).getComponent();
contentContainer.setPreferredSize(FineUIScale.scale(new Dimension(600, 540)));
@ -167,23 +166,19 @@ public class NewReportBackgroundPane extends BasicPane {
}
private JPanel createLeftPane() {
JPanel panel = new JPanel();
panel.add(previewPane, BorderLayout.NORTH);
previewPane.setBorder(new FineRoundBorder());
JPanel titledPane = Layouts.column(
JPanel panel = new JPanel(new BorderLayout());
panel.add(previewPane, BorderLayout.CENTER);
return column(
10,
Layouts.cell(new UILabel(Toolkit.i18nText("Fine-Design_Basic_Preview"))),
Layouts.cell(previewPane)
cell(new UILabel(Toolkit.i18nText("Fine-Design_Basic_Preview"))),
cell(panel).weight(1).with(it -> it.setBorder(new FineRoundBorder()))
).getComponent();
previewPane.setPreferredSize(FineUIScale.scale(new Dimension(367, 480)));
return titledPane;
}
private JPanel createRightPane() {
JPanel container = FRGUIPaneFactory.createBorderLayout_S_Pane();
container.setBorder(BorderFactory.createEmptyBorder());
container.setPreferredSize(FineUIScale.scale(new Dimension(263, 502)));
container.add(themePane, BorderLayout.NORTH);
return container;
}

Loading…
Cancel
Save