diff --git a/designer-base/src/main/java/com/fine/theme/light/ui/FineLightIconSet.java b/designer-base/src/main/java/com/fine/theme/light/ui/FineLightIconSet.java index 3bb48ea05..e716e0446 100644 --- a/designer-base/src/main/java/com/fine/theme/light/ui/FineLightIconSet.java +++ b/designer-base/src/main/java/com/fine/theme/light/ui/FineLightIconSet.java @@ -39,6 +39,7 @@ public class FineLightIconSet extends AbstractIconSet { new SvgIconSource("down_arrow_12", "com/fine/theme/icon/down_arrow.svg", true, 12), new SvgIconSource("up_arrow_12", "com/fine/theme/icon/up_arrow.svg", true, 12), new SvgIconSource("select", "com/fine/theme/icon/select.svg", true), + new SvgIconSource("recycle", "com/fine/theme/icon/recycle.svg", true), // 数据集相关Icon new SvgIconSource("database", "com/fine/theme/icon/dataset/database.svg", true), diff --git a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java index 10c010187..ef9fb8fcc 100644 --- a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java +++ b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java @@ -14,7 +14,6 @@ import com.fr.design.gui.ibutton.UIButton; 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.i18n.DesignSizeI18nManager; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; @@ -31,12 +30,10 @@ import com.fr.third.javax.annotation.Nonnull; import com.fr.workspace.WorkContext; import com.fr.workspace.server.lock.TplOperator; -import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JOptionPane; import javax.swing.JSeparator; -import javax.swing.MenuElement; import javax.swing.SwingUtilities; import javax.swing.ToolTipManager; import java.awt.AWTEvent; @@ -166,26 +163,15 @@ public class MultiTemplateTabPane extends Row { int tplIndex = getTemplateIndex(e.getX()); if (tplIndex > -1) { UIPopupMenu menu = new UIPopupMenu(); - menu.setBorder(BorderFactory.createEmptyBorder(-3, 3, 3, 0)); - for (CloseOption option : CloseOption.values()) { menu.add(new UIMenuItem(new RightMenuCloseAction(option, tplIndex))); } menu.add(new CloseMenuItemJSeparator()); menu.add(new UIMenuItem(new OpenInTemplateTreeAction(tplIndex))); - - int height = 0; - for (MenuElement subElement : menu.getSubElements()) { - if (subElement instanceof CloseMenuItemJSeparator) { - height += 10; - } else { - height += 25; - } - } - //根据当前i18n语言环境,动态调整popupMenu的宽度 - menu.setPreferredSize(new Dimension((int) DesignSizeI18nManager.getInstance(). - i18nDimension("com.fr.design.file.MultiTemplateTabPane.popUpMenu").getWidth(), height)); - GUICoreUtils.showPopupMenu(menu, MultiTemplateTabPane.getInstance(), e.getX(), MultiTemplateTabPane.getInstance().getY() - 1 + MultiTemplateTabPane.getInstance().getHeight()); + GUICoreUtils.showPopupMenu(menu, + MultiTemplateTabPane.getInstance(), + e.getX(), + MultiTemplateTabPane.getInstance().getY() + MultiTemplateTabPane.getInstance().getHeight()); } } } diff --git a/designer-base/src/main/java/com/fr/design/gui/itree/refreshabletree/RefreshableJTree.java b/designer-base/src/main/java/com/fr/design/gui/itree/refreshabletree/RefreshableJTree.java index 6a8433225..b649cf3c1 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itree/refreshabletree/RefreshableJTree.java +++ b/designer-base/src/main/java/com/fr/design/gui/itree/refreshabletree/RefreshableJTree.java @@ -104,23 +104,21 @@ public abstract class RefreshableJTree extends CheckBoxTree { @Override protected Long doInBackground() throws Exception { long startTime = System.currentTimeMillis(); - - return System.currentTimeMillis() - startTime; - } - - @Override - protected void done() { ExpandMutableTreeNode[] nodes = RefreshableJTree.this.loadChildTreeNodes(treeNode); for (int i = 0; i < nodes.length; i++) { treeNode.add(nodes[i]); } - + DefaultTreeModel treeModel = (DefaultTreeModel) RefreshableJTree.this.getModel(); // 主要耗时是用在了treeUI的渲染上了,所以把这个放到工作线程里面 if (treeNode.getChildCount() >= 1 && ((ExpandMutableTreeNode) treeNode.getFirstChild()).getUserObject() == PENDING) { treeNode.remove(0); } - DefaultTreeModel treeModel = (DefaultTreeModel) RefreshableJTree.this.getModel(); treeModel.nodeStructureChanged(treeNode); + return System.currentTimeMillis() - startTime; + } + + @Override + protected void done() { RefreshableJTree.this.updateUI(); // 恢复Tree的可用性 RefreshableJTree.this.setEnabled(true); diff --git a/designer-base/src/main/java/com/fr/design/gui/style/TextFormatPane.java b/designer-base/src/main/java/com/fr/design/gui/style/TextFormatPane.java index c2fc1fddd..d8263af1a 100644 --- a/designer-base/src/main/java/com/fr/design/gui/style/TextFormatPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/style/TextFormatPane.java @@ -1,5 +1,6 @@ package com.fr.design.gui.style; +import com.fine.theme.utils.FineUIStyle; import com.fine.theme.utils.FineUIUtils; import com.fr.base.CoreDecimalFormat; import com.fr.base.GraphHelper; @@ -116,23 +117,10 @@ public class TextFormatPane extends AbstractBasicStylePane implements GlobalName Border interBorder = new UIRoundedBorder(UIConstants.LINE_COLOR, 0, 4); String title = Toolkit.i18nText("Fine-Design_Report_Base_StyleFormat_Sample"); Border border = BorderFactory.createTitledBorder(interBorder, title, TitledBorder.ABOVE_TOP, 0, null, labelColor); - previewLabel = new UILabel(FormatField.getInstance().getFormatValue()) { - @Override - public void paint(Graphics g) { - super.paint(g); - int width = getWidth(); - Color original = g.getColor(); - g.setColor(getBackground()); - g.fillRect(LABEL_X, LABEL_Y, width - LABEL_DELTA_WIDTH, LABEL_HEIGHT); - g.setColor(labelColor); - FontMetrics cellFM = g.getFontMetrics(); - int textWidth = cellFM.stringWidth(getText()); - GraphHelper.drawString(g, getText(), (width - textWidth) / 2F, 26); - g.setColor(original); - } - }; + previewLabel = new UILabel(FormatField.getInstance().getFormatValue()); previewLabel.setHorizontalAlignment(UILabel.CENTER); previewLabel.setBorder(border); + FineUIStyle.setStyle(previewLabel, FineUIStyle.LABEL_TIP); } protected void initLayout() { @@ -286,7 +274,7 @@ public class TextFormatPane extends AbstractBasicStylePane implements GlobalName */ private void refreshPreviewLabel() { this.previewLabel.setText(FormatField.getInstance().getFormatValue()); - this.previewLabel.setForeground(UIManager.getColor("Label.foreground")); + FineUIStyle.setStyle(previewLabel, FineUIStyle.LABEL_TIP); try { isRightFormat = true; if (StringUtils.isEmpty(String.valueOf(textField.getSelectedItem()))) { diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index 387dfece1..49fd53304 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -324,7 +324,6 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt */ private void addVcsAction(ToolBarDef toolbarDef) { if (VcsHelper.getInstance().needInit()) { - vcsAction = new VcsAction(); if (!isLegacyOnCluster()) { vcsAction.setName(Toolkit.i18nText("Fine-Design_Vcs_Title")); @@ -334,7 +333,6 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt toolbarDef.addShortCut(vcsAction); //11.0.19及其之后加入回收站逻辑 if (VcsHelper.getInstance().checkV2FunctionSupport()) { - recycleAction = new RecycleAction(); toolbarDef.addShortCut(recycleAction); } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java index acd89f668..b6da53589 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.vcs; +import com.fine.theme.icon.LazyIcon; import com.fr.design.actions.UpdateAction; import com.fr.design.dialog.BasicDialog; import com.fr.design.i18n.Toolkit; @@ -18,7 +19,7 @@ import java.awt.event.ActionEvent; public class RecycleAction extends UpdateAction { public RecycleAction() { - this.setSmallIcon("/com/fr/design/standard/vcslist/vcs_recycle", false); + this.setSmallIcon(new LazyIcon("recycle")); this.setName(Toolkit.i18nText("Fine-Design_Vcs_Recycle")); } diff --git a/designer-base/src/main/resources/com/fine/theme/icon/recycle.svg b/designer-base/src/main/resources/com/fine/theme/icon/recycle.svg new file mode 100644 index 000000000..ab3b97e70 --- /dev/null +++ b/designer-base/src/main/resources/com/fine/theme/icon/recycle.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/designer-realize/src/main/java/com/fr/design/expand/ExpandFatherPane.java b/designer-realize/src/main/java/com/fr/design/expand/ExpandFatherPane.java index 5a32b0e61..ac226425b 100644 --- a/designer-realize/src/main/java/com/fr/design/expand/ExpandFatherPane.java +++ b/designer-realize/src/main/java/com/fr/design/expand/ExpandFatherPane.java @@ -1,12 +1,10 @@ package com.fr.design.expand; -import com.fine.swing.ui.layout.Layouts; import com.fine.theme.icon.LazyIcon; import com.fr.design.constants.LayoutConstants; import com.fr.design.event.GlobalNameListener; import com.fr.design.event.GlobalNameObserver; import com.fr.design.gui.columnrow.ColumnRowPane; -import com.fr.design.gui.core.ReactiveCardPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.mainframe.ElementCasePane; @@ -18,12 +16,13 @@ import com.fr.grid.selection.Selection; import com.fr.report.cell.cellattr.CellExpandAttr; import com.fr.stable.ColumnRow; -import javax.swing.*; -import java.awt.*; +import javax.swing.JPanel; +import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.column; public abstract class ExpandFatherPane extends JPanel implements GlobalNameObserver { @@ -35,7 +34,6 @@ public abstract class ExpandFatherPane extends JPanel implements GlobalNameObser private String expandFatherName = ""; private GlobalNameListener globalNameListener = null; private boolean isAlreadyAddListener = false; - private ReactiveCardPane cardPane; public ExpandFatherPane() { this.setLayout(new BorderLayout()); @@ -55,20 +53,12 @@ public abstract class ExpandFatherPane extends JPanel implements GlobalNameObser JPanel cc = new JPanel(new BorderLayout(LayoutConstants.HGAP_SMALL, 0)); cc.add(customParentColumnRowPane, BorderLayout.CENTER); cc.add(imageButton, BorderLayout.EAST); - cardPane = ReactiveCardPane.create() - .addSupplier("content", () -> Layouts.column(LayoutConstants.VERTICAL_GAP, - cell(comboBox), - cell(cc)).getComponent()) - .addSupplier("none", () -> Layouts.cell(comboBox).getComponent()); - cardPane.select("none").populate(); - this.add(cardPane); + this.add(column(LayoutConstants.VERTICAL_GAP, + cell(comboBox), + cell(cc) + ).getComponent()); comboBox.addItemListener(e -> { - if (comboBox.getSelectedIndex() == 2) { - cardPane.select("content").populate(); - } else { - cardPane.select("none").populate(); - - } + cc.setVisible(comboBox.getSelectedIndex() == 2); if (globalNameListener != null && shouldResponseNameListener()) { globalNameListener.setGlobalName(expandFatherName); } diff --git a/designer-realize/src/main/java/com/fr/design/widget/CellWidgetCardPane.java b/designer-realize/src/main/java/com/fr/design/widget/CellWidgetCardPane.java index 3a88feb36..71dbd5260 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/CellWidgetCardPane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/CellWidgetCardPane.java @@ -23,7 +23,6 @@ import java.util.ArrayList; import static com.fine.swing.ui.layout.Layouts.cell; import static com.fine.swing.ui.layout.Layouts.column; import static com.fine.swing.ui.layout.Layouts.fix; -import static com.fine.swing.ui.layout.Layouts.row; /* * carl :单独弄出来 @@ -76,14 +75,11 @@ public class CellWidgetCardPane extends BasicPane { } }; - this.add(column( - row( - fix(10), - cell(tabsHeaderIconPane).weight(1), - fix(10) - ), - cell(center).with(it -> it.setBorder(new ScaledEmptyBorder(0, 10, 0, 10))) - ).getComponent()); + JPanel wrapperPane = new JPanel(new BorderLayout()); + wrapperPane.add(tabsHeaderIconPane, BorderLayout.NORTH); + wrapperPane.add(center, BorderLayout.CENTER); + wrapperPane.setBorder(new ScaledEmptyBorder(0, 10, 0, 10)); + this.add(wrapperPane, BorderLayout.CENTER); // 属性 attriTabPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); diff --git a/designer-realize/src/main/java/com/fr/design/widget/WidgetEventPane.java b/designer-realize/src/main/java/com/fr/design/widget/WidgetEventPane.java index 41e5a9901..47db0235f 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/WidgetEventPane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/WidgetEventPane.java @@ -1,6 +1,7 @@ package com.fr.design.widget; +import com.fine.theme.utils.FineUIScale; import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.controlpane.NameableCreator; @@ -24,6 +25,7 @@ import com.fr.stable.AssistUtils; import com.fr.stable.Nameable; import com.fr.write.JavaScriptResourceInfo; +import java.awt.Dimension; import java.lang.reflect.Constructor; public class WidgetEventPane extends UIListGroupControlPane { @@ -203,6 +205,11 @@ public class WidgetEventPane extends UIListGroupControlPane { } } + @Override + public Dimension getPreferredSize() { + return FineUIScale.scale(new Dimension(200, 950)); + } + protected String getWrapperLabelText() { return Toolkit.i18nText("Fine-Design_Report_Event"); }