From c09f84a5106b3199aed01293103dca79d9dccda6 Mon Sep 17 00:00:00 2001 From: Harrison Date: Mon, 8 Aug 2022 16:32:14 +0800 Subject: [PATCH 01/11] =?UTF-8?q?REPORT-76079=E3=80=90=E8=BF=AD=E4=BB=A3?= =?UTF-8?q?=E3=80=91=E3=80=90=E8=B5=B7=E5=A7=8B=E9=A1=B5=E3=80=91=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E9=97=AE=E9=A2=98=201.=20=E8=B5=B7=E5=A7=8B=E9=A1=B5?= =?UTF-8?q?=E6=A0=87=E9=A2=98=E7=BC=BA=E5=A4=B1=203.=20=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=85=A8=E9=83=A8=E5=A4=84=E7=90=86=204.=20=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=205.=20=E6=82=AC=E6=B5=AE=E6=9C=89=E7=82=B9=E8=99=9A=E7=9A=84?= =?UTF-8?q?=E6=95=88=E6=9E=9C=206.=20=E5=8F=AA=E6=98=BE=E7=A4=BA=E5=89=8D?= =?UTF-8?q?=E5=85=AD=E5=BC=A0=E5=8D=B3=E5=8F=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/startup/ui/StartupPageWindow.java | 18 +++++++++- .../startup/ui/StartupPageWorkspacePanel.java | 35 +++++++++++++------ .../fr/startup/ui/StartupPageWindowTest.java | 8 ++--- 3 files changed, 45 insertions(+), 16 deletions(-) diff --git a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java index fefe6e8ec..40a1cb554 100644 --- a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java +++ b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java @@ -12,7 +12,9 @@ import com.fr.design.layout.VerticalFlowLayout; import com.fr.design.ui.util.UIUtil; import com.fr.design.utils.ColorUtils; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.GeneralUtils; import com.fr.log.FineLoggerFactory; +import com.fr.stable.ProductConstants; import com.fr.stable.collections.CollectionUtils; import org.jetbrains.annotations.NotNull; @@ -135,6 +137,7 @@ public class StartupPageWindow extends JFrame { // Workspace-detail setSize(SCREEN_SIZE); + setDefaultTitle(); repaint(); validate(); @@ -143,6 +146,19 @@ public class StartupPageWindow extends JFrame { GUICoreUtils.centerWindow(this); } + private void setDefaultTitle() { + + StringBuilder sb = new StringBuilder(); + sb.append(ProductConstants.APP_NAME); + sb.append(" "); + sb.append(GeneralUtils.getVersion()); + sb.append(" "); + sb.append(ProductConstants.BRANCH); + sb.append(" "); + sb.append(Toolkit.i18nText("Fine-Design_Startup_Page_Title")); + setTitle(sb.toString()); + } + private void patchUIAction(StartupPageModel pageModel) { Runnable selectAndOpenLastTemplateRunnable = pageModel.getOpenLastTemplateRunnable(); @@ -317,7 +333,7 @@ public class StartupPageWindow extends JFrame { recentOpenGroupPanel.setPreferredSize(new Dimension(GROUP_WIDTH, (int) preferredSize.getHeight())); if (needScroll) { - int scrollHeight = (int) Math.round(itemHeight * RECENT_FILE_LIMIT + ITEM_VERTICAL_GAP * (RECENT_FILE_SCROLL)); + int scrollHeight = (int) Math.round(itemHeight * RECENT_FILE_LIMIT + ITEM_VERTICAL_GAP * (RECENT_FILE_LIMIT)); UIScrollPane scrollPane = new UIScrollPane(recentOpenGroupPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane.setBorder(new EmptyBorder(0, 0, 0, 0)); scrollPane.setPreferredSize(new Dimension(GROUP_WIDTH, scrollHeight)); diff --git a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java index a22c32b03..297feaa25 100644 --- a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java +++ b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java @@ -95,12 +95,14 @@ public class StartupPageWorkspacePanel extends JPanel { this.contentPanel = generateLimitContentPanel(partitions); this.add(contentPanel, BorderLayout.NORTH); - this.tailPanel = generateTailPanel(); + if (partitions.size() > 2) { + this.tailPanel = generateTailPanel(); + this.add(tailPanel, BorderLayout.SOUTH); + } this.createNewTemplateRunnable = pageModel.getCreateNewTemplateRunnable(); this.openEmptyTemplateRunnable = pageModel.getOpenEmptyTemplateRunnable(); - this.add(tailPanel, BorderLayout.SOUTH); this.repaint(); } @@ -293,10 +295,8 @@ public class StartupPageWorkspacePanel extends JPanel { int roundOffset = 15; // 画一个圆角 int fixRoundWidth = getWidth() - rectOffset; - int fixRoundHeight = getHeight() - BORDER_THIN; - g2d.drawRoundRect(strokeOffset, strokeOffset, fixRoundWidth, fixRoundHeight, ARC_DIAMETER, ARC_DIAMETER); - // 画一个直角 - g2d.drawRoundRect(getWidth() - roundOffset, strokeOffset, roundOffset - strokeOffset, getHeight() - BORDER_THIN, 0, 0); + int fixRoundHeight = getHeight() - BORDER_THIN * 2; + g2d.drawRoundRect(BORDER_THIN, BORDER_THIN, fixRoundWidth, fixRoundHeight, ARC_DIAMETER, ARC_DIAMETER); g2d.setColor(backColor); @@ -306,8 +306,13 @@ public class StartupPageWorkspacePanel extends JPanel { // 偏左一点的 fixedX int fixedX = getWidth() - roundOffset - BORDER_THIN; // 圆角和直角相交的区域 - int coverWidth = 10; + int coverWidth = 15; g2d.fillRect(fixedX, BORDER_THIN, coverWidth, coverHeight); + + g2d.setColor(borderColor); + g2d.drawLine(getWidth() / 2, BORDER_THIN, getWidth(), BORDER_THIN); + g2d.drawLine(getWidth() / 2, getHeight() - BORDER_THIN, getWidth(), getHeight() - BORDER_THIN); + g2d.drawLine(getWidth() - strokeOffset, BORDER_THIN, getWidth() - strokeOffset, getHeight() - BORDER_THIN); } } }; @@ -335,6 +340,7 @@ public class StartupPageWorkspacePanel extends JPanel { Font font = nameLabel.getFont(); Font newSizeFont = font.deriveFont(font.getStyle(), NAME_LABEL_SIZE); nameLabel.setFont(newSizeFont); + nameLabel.setPreferredSize(PATH_DIMENSION); Color nameForeground = nameLabel.getForeground(); simpleDescPanel.add(nameLabel,BorderLayout.NORTH); @@ -450,12 +456,19 @@ public class StartupPageWorkspacePanel extends JPanel { if (borderColor != null) { g2d.setColor(borderColor); g2d.setStroke(new BasicStroke(BORDER_THIN)); + + int borderOffset = BORDER_THIN * 2; // 画画的笔触需要调整一下 - g2d.drawRoundRect(strokeOffset, strokeOffset, getWidth() - rectOffset, getHeight() - BORDER_THIN, 0, 0); - g2d.drawRoundRect(getWidth() - fixedRoundOffset, strokeOffset, roundOffset - strokeOffset, getHeight() - BORDER_THIN, ARC_DIAMETER, ARC_DIAMETER); + //g2d.drawRoundRect(strokeOffset, strokeOffset, getWidth() - rectOffset, getHeight() - BORDER_THIN, 0, 0); + g2d.drawRoundRect(BORDER_THIN, BORDER_THIN, getWidth() - borderOffset, getHeight() - borderOffset, ARC_DIAMETER, ARC_DIAMETER); g2d.setColor(backColor); - int fillWidth = 11; - g2d.fillRect(getWidth() - fixedRoundOffset - BORDER_THIN, BORDER_THIN, fillWidth, getHeight() - BORDER_THIN * 2); + int fillWidth = 15; + g2d.fillRect(0, 0, fillWidth, getHeight()); + + g2d.setColor(borderColor); + g2d.drawLine(BORDER_THIN, BORDER_THIN, fillWidth, BORDER_THIN); + g2d.drawLine(BORDER_THIN, getHeight() - BORDER_THIN, fillWidth, getHeight() - BORDER_THIN); + g2d.drawLine(BORDER_THIN, BORDER_THIN, BORDER_THIN, getHeight() - BORDER_THIN); } } diff --git a/designer-base/src/test/java/com/fr/startup/ui/StartupPageWindowTest.java b/designer-base/src/test/java/com/fr/startup/ui/StartupPageWindowTest.java index c1d33a66a..804bb7d3f 100644 --- a/designer-base/src/test/java/com/fr/startup/ui/StartupPageWindowTest.java +++ b/designer-base/src/test/java/com/fr/startup/ui/StartupPageWindowTest.java @@ -16,13 +16,13 @@ public class StartupPageWindowTest { @Override public void run() { HashMap> recentOpenFileMap = new HashMap<>(); - recentOpenFileMap.put("111", Lists.newArrayList("111.cpt", "222//3333.cpt","333.cpt", "444.cpt", "555.cpt", "666.cpt")); + recentOpenFileMap.put("111", Lists.newArrayList("111.cpt", "222//3333.cpt","333.cpt", "444.cpt", "555.cpt", "666.cpt", "777.cpt")); StartupPageModel model = new StartupPageModel(Stream.of( StartupWorkspaceBean.create("111", "222333344455556663333444555566633334445555666"), StartupWorkspaceBean.create("113", "222"), StartupWorkspaceBean.create("114", "222"), StartupWorkspaceBean.create("115", "222"), StartupWorkspaceBean.create("116", "222"), - StartupWorkspaceBean.create("117", "222"), StartupWorkspaceBean.create("118", "222"), StartupWorkspaceBean.create("119", "222"), - StartupWorkspaceBean.create("121", "222"), StartupWorkspaceBean.create("122", "222"), StartupWorkspaceBean.create("123", "222"), - StartupWorkspaceBean.create("124", "222"), StartupWorkspaceBean.create("125", "222"), StartupWorkspaceBean.create("126", "222") + //StartupWorkspaceBean.create("117", "222"), StartupWorkspaceBean.create("118", "222"), StartupWorkspaceBean.create("119", "222"), + //StartupWorkspaceBean.create("121", "222"), StartupWorkspaceBean.create("122", "222"), StartupWorkspaceBean.create("123", "222"), + StartupWorkspaceBean.create("1245678888888", "222"), StartupWorkspaceBean.create("125", "222"), StartupWorkspaceBean.create("126", "222") ).collect(Collectors.toList()), recentOpenFileMap); StartupPageWindow window = new StartupPageWindow(model); window.setVisible(true); From ec842468f8634e82d5465c65a358bf6dc1723973 Mon Sep 17 00:00:00 2001 From: Harrison Date: Mon, 8 Aug 2022 16:40:34 +0800 Subject: [PATCH 02/11] =?UTF-8?q?REPORT-76040=20=E3=80=90=E8=BF=AD?= =?UTF-8?q?=E4=BB=A3=E3=80=91=E3=80=90=E8=B5=B7=E5=A7=8B=E9=A1=B5=E3=80=91?= =?UTF-8?q?=E6=89=93=E5=BC=80=E8=B5=B7=E5=A7=8B=E9=A1=B5=E5=86=8D=E5=85=B3?= =?UTF-8?q?=E9=97=AD=EF=BC=8C=E4=B8=8A=E6=AC=A1=E7=9A=84=E8=BF=9B=E7=A8=8B?= =?UTF-8?q?=E5=BA=94=E8=AF=A5=E6=9D=80=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/startup/ui/StartupPageWindow.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java index 40a1cb554..b73d13d9f 100644 --- a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java +++ b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java @@ -12,6 +12,7 @@ import com.fr.design.layout.VerticalFlowLayout; import com.fr.design.ui.util.UIUtil; import com.fr.design.utils.ColorUtils; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.exit.DesignerExiter; import com.fr.general.GeneralUtils; import com.fr.log.FineLoggerFactory; import com.fr.stable.ProductConstants; @@ -41,6 +42,8 @@ import java.awt.LayoutManager; import java.awt.RenderingHints; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.util.List; import java.util.Map; @@ -138,6 +141,7 @@ public class StartupPageWindow extends JFrame { // Workspace-detail setSize(SCREEN_SIZE); setDefaultTitle(); + addDefaultListeners(); repaint(); validate(); @@ -146,6 +150,16 @@ public class StartupPageWindow extends JFrame { GUICoreUtils.centerWindow(this); } + private void addDefaultListeners() { + + addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + DesignerExiter.getInstance().execute(); + } + }); + } + private void setDefaultTitle() { StringBuilder sb = new StringBuilder(); From 2beab53c22b5d8cd410c4e34230302d701d3c00b Mon Sep 17 00:00:00 2001 From: Harrison Date: Tue, 9 Aug 2022 09:48:12 +0800 Subject: [PATCH 03/11] =?UTF-8?q?REPORT-76091=20&&=20REPORT-76041=201-?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E5=86=B3=E7=AD=96=E6=8A=A5=E8=A1=A8=202-fvs?= =?UTF-8?q?=20npe=20=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/data/DesignTableDataManager.java | 2 +- .../design/file/HistoryTemplateListCache.java | 6 +- .../fr/design/mainframe/DesignerFrame.java | 7 + .../fr/design/mainframe/JNullTemplate.java | 207 ++++++++++++++++++ .../com/fr/design/mainframe/JTemplate.java | 11 +- 5 files changed, 229 insertions(+), 4 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/mainframe/JNullTemplate.java diff --git a/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java b/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java index 468982d96..a756a544b 100644 --- a/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java +++ b/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java @@ -188,7 +188,7 @@ public abstract class DesignTableDataManager { public static void addDsChangeListener(ChangeListener l) { JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); String key = StringUtils.EMPTY; - if (template != null) { + if (JTemplate.isValid(template)) { key = template.getPath(); } List dsListeners = dsListenersMap.get(key); diff --git a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java index 296c1f2de..b21519513 100644 --- a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java +++ b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java @@ -26,7 +26,6 @@ import java.util.HashMap; import java.util.List; import java.util.ListIterator; import java.util.Map; -import java.util.Set; /** * 历史模板缓存 @@ -109,8 +108,11 @@ public class HistoryTemplateListCache implements CallbackEvent { */ public void setCurrentEditingTemplate(JTemplate jt) { this.editingTemplate = jt; + + if (!JTemplate.isValid(jt)) { + return; + } //如果当前历史面板中没有 - if (contains(jt) == -1) { addHistory(); } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java index da8f28f60..aa6d4873e 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java @@ -815,6 +815,13 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta basePane.remove(layout.getLayoutComponent(BorderLayout.EAST)); basePane.add(designerOpenEmptyPanel, BorderLayout.CENTER); + resetToolkitByPlus(ToolBarMenuDock.NULLAVOID); + + // 这里挺恶心的,是为了保证对插件的兼容性适配 + // 不然的话,插件就会 npe + // 见 https://work.fineres.com/browse/REPORT-76091 + HistoryTemplateListCache.getInstance().setCurrentEditingTemplate(JNullTemplate.NULL); + layeredPane.repaint(); } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JNullTemplate.java b/designer-base/src/main/java/com/fr/design/mainframe/JNullTemplate.java new file mode 100644 index 000000000..d10df810a --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mainframe/JNullTemplate.java @@ -0,0 +1,207 @@ +package com.fr.design.mainframe; + +import com.fr.design.DesignModelAdapter; +import com.fr.design.designer.TargetComponent; +import com.fr.design.gui.frpane.HyperlinkGroupPane; +import com.fr.design.gui.frpane.HyperlinkGroupPaneActionProvider; +import com.fr.design.gui.imenu.UIMenuItem; +import com.fr.design.mainframe.template.info.TemplateProcessInfo; +import com.fr.design.menu.ShortCut; +import com.fr.design.menu.ToolBarDef; + +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.JPanel; + +/** + * created by Harrison on 2022/08/09 + **/ +public class JNullTemplate extends JTemplate { + + public static final JTemplate NULL = new JNullTemplate(); + + @Override + public void copy() { + + } + + @Override + public boolean paste() { + return false; + } + + @Override + public boolean cut() { + return false; + } + + @Override + public AuthorityEditPane createAuthorityEditPane() { + return null; + } + + @Override + public JPanel getEastUpPane() { + return null; + } + + @Override + public JPanel getEastDownPane() { + return null; + } + + @Override + public ToolBarDef[] toolbars4Target() { + return new ToolBarDef[0]; + } + + @Override + public JComponent[] toolBarButton4Form() { + return new JComponent[0]; + } + + @Override + public void refreshEastPropertiesPane() { + + } + + @Override + public TargetComponent getCurrentElementCasePane() { + return null; + } + + @Override + public JComponent getCurrentReportComponentPane() { + return null; + } + + @Override + public TemplateProcessInfo getProcessInfo() { + return null; + } + + @Override + public void setJTemplateResolution(int resolution) { + + } + + @Override + public int getJTemplateResolution() { + return 0; + } + + @Override + protected JComponent createCenterPane() { + return null; + } + + @Override + public void removeTemplateSelection() { + + } + + @Override + public void refreshContainer() { + + } + + @Override + public void removeParameterPaneSelection() { + + } + + @Override + public void setScale(int resolution) { + + } + + @Override + public int getScale() { + return 0; + } + + @Override + public int selfAdaptUpdate() { + return 0; + } + + @Override + protected DesignModelAdapter createDesignModel() { + return null; + } + + @Override + public UIMenuItem[] createMenuItem4Preview() { + return new UIMenuItem[0]; + } + + @Override + protected BaseUndoState createUndoState() { + return null; + } + + @Override + protected void applyUndoState(BaseUndoState baseUndoState) { + + } + + @Override + public String suffix() { + return null; + } + + @Override + public ShortCut[] shortcut4TemplateMenu() { + return new ShortCut[0]; + } + + @Override + public ShortCut[] shortCuts4Authority() { + return new ShortCut[0]; + } + + @Override + public boolean isJWorkBook() { + return false; + } + + @Override + public HyperlinkGroupPane getHyperLinkPane(HyperlinkGroupPaneActionProvider hyperlinkGroupPaneActionProvider) { + return null; + } + + @Override + public HyperlinkGroupPane getHyperLinkPaneNoPop(HyperlinkGroupPaneActionProvider hyperlinkGroupPaneActionProvider) { + return null; + } + + @Override + public void setAuthorityMode(boolean isUpMode) { + + } + + @Override + public Icon getIcon() { + return null; + } + + @Override + public String route() { + return null; + } + + @Override + public JPanel[] toolbarPanes4Form() { + return new JPanel[0]; + } + + @Override + public JComponent toolBar4Authority() { + return null; + } + + @Override + public int getToolBarHeight() { + return 0; + } +} diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java index eaf4b84bf..29cfcadbb 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java @@ -1973,5 +1973,14 @@ public abstract class JTemplate> public void setDesignerUIMode() { DesignerUIModeConfig.getInstance().setAbsoluteMeasureUIMode(); } - + + /** + * 判断当前的模板是否是有效的模板 + * + * @param jt 模板 + * @return 是/否 + */ + public static boolean isValid(JTemplate jt) { + return jt != null && jt != JNullTemplate.NULL; + } } From 2afb8c3d2af2c18c230350a0f0978c6e993b8926 Mon Sep 17 00:00:00 2001 From: Harrison Date: Tue, 9 Aug 2022 09:57:42 +0800 Subject: [PATCH 04/11] =?UTF-8?q?REPORT-76086=20=E3=80=90=E8=BF=AD?= =?UTF-8?q?=E4=BB=A3=E3=80=91=E3=80=90=E8=B5=B7=E5=A7=8B=E9=A1=B5=E3=80=91?= =?UTF-8?q?=E5=9C=A8=E8=B5=B7=E5=A7=8B=E9=A1=B5=E4=B8=8D=E5=81=9A=E4=BB=BB?= =?UTF-8?q?=E4=BD=95=E6=93=8D=E4=BD=9C=EF=BC=8C=E4=BC=9A=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E9=A2=84=E6=9C=9F=E5=A4=96=E7=9A=84=E5=90=AF=E5=8A=A8=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=20=E5=9C=A8=E5=AD=90=E8=BF=9B=E7=A8=8B=E7=9A=84?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E4=B8=AD=E5=B1=8F=E8=94=BD=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E9=A1=B5=E7=9A=84=E5=BD=B1=E5=93=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/start/DesignerSubListener.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/designer-realize/src/main/java/com/fr/start/DesignerSubListener.java b/designer-realize/src/main/java/com/fr/start/DesignerSubListener.java index 52d364f6c..50134622d 100644 --- a/designer-realize/src/main/java/com/fr/start/DesignerSubListener.java +++ b/designer-realize/src/main/java/com/fr/start/DesignerSubListener.java @@ -8,6 +8,7 @@ import com.fr.exit.DesignerExiter; import com.fr.process.engine.core.CarryMessageEvent; import com.fr.process.engine.core.FineProcessContext; import com.fr.process.engine.core.FineProcessEngineEvent; +import com.fr.start.common.DesignerStartupContext; /** * @author hades @@ -31,6 +32,10 @@ public class DesignerSubListener { FineProcessContext.getParentPipe().listen(FineProcessEngineEvent.READY, new Listener() { @Override public void on(Event event, Null param) { + // 如果是在起始页的等待过程中 + if (DesignerStartupContext.getInstance().isOnWaiting()) { + return; + } if (DesignerContext.getDesignerFrame() == null || !DesignerContext.getDesignerFrame().isShowing()) { DesignerExiter.getInstance().exitUnexpectedly(() -> { From b02e8fd991e060b30349402a9fdcf5962b0e5341 Mon Sep 17 00:00:00 2001 From: Harrison Date: Tue, 9 Aug 2022 10:30:29 +0800 Subject: [PATCH 05/11] =?UTF-8?q?REPORT-76098=20=E3=80=90=E8=BF=AD?= =?UTF-8?q?=E4=BB=A3=E3=80=91=E3=80=90=E8=B5=B7=E5=A7=8B=E9=A1=B5=E3=80=91?= =?UTF-8?q?=E8=B5=B7=E5=A7=8B=E9=A1=B5=E5=92=8C=E7=A9=BA=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E9=85=8D=E7=BD=AE=E9=A1=B9=E5=9D=87=E5=BC=80?= =?UTF-8?q?=E5=90=AF=EF=BC=8C=E7=82=B9=E5=87=BB=E6=9C=80=E8=BF=91=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=9A=84=E6=A8=A1=E6=9D=BF=E5=90=AF=E5=8A=A8=EF=BC=8C?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E6=89=93=E5=BC=80=E5=AF=B9=E5=BA=94=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=20=E4=BC=98=E5=85=88=E5=88=A4=E6=96=AD=E8=B5=B7?= =?UTF-8?q?=E5=A7=8B=E9=A1=B5=EF=BC=8C=E5=86=8D=E5=88=A4=E6=96=AD=E8=80=81?= =?UTF-8?q?=E7=9A=84=E6=89=93=E5=BC=80=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/start/BaseDesigner.java | 66 ++++++++++++------- 1 file changed, 41 insertions(+), 25 deletions(-) diff --git a/designer-base/src/main/java/com/fr/start/BaseDesigner.java b/designer-base/src/main/java/com/fr/start/BaseDesigner.java index 89c928e2c..674f38168 100644 --- a/designer-base/src/main/java/com/fr/start/BaseDesigner.java +++ b/designer-base/src/main/java/com/fr/start/BaseDesigner.java @@ -38,6 +38,7 @@ import com.fr.workspace.base.WorkspaceStatus; import java.awt.Window; import java.lang.reflect.Method; +import java.util.concurrent.atomic.AtomicBoolean; /** * The main class of Report Designer. @@ -142,7 +143,33 @@ public abstract class BaseDesigner extends ToolBarMenuDock { } private boolean openFile(final DesignerFrame df, boolean isException, FILE file) { - + + AtomicBoolean isExWrapper = new AtomicBoolean(isException); + openTemplate(df, isExWrapper, file); + + if (OperatingSystem.isMacOS()) { + enableFullScreenMode(df); + } + + JTemplate selectedJTemplate = df.getSelectedJTemplate(); + if (selectedJTemplate != null) { + selectedJTemplate.requestGridFocus(); + } + return isExWrapper.get(); + } + + private void openTemplate(DesignerFrame df, AtomicBoolean isException, FILE file) { + + // 如果是起始页启动中 + if (openTemplateOnStartup(df, isException, file)) { + return; + } + + openTemplate0(df, isException, file); + } + + private void openTemplate0(DesignerFrame df, AtomicBoolean isException, FILE file) { + //启动时打开指定文件的接口 DesignerStartOpenFileProcessor processor = ExtraDesignClassManager.getInstance().getSingle(DesignerStartOpenFileProcessor.XML_TAG); // 如果插件没有,且又开启了启动时打开空文件,则使用启动时打开空文件 @@ -154,24 +181,20 @@ public abstract class BaseDesigner extends ToolBarMenuDock { if (f != null) { file = f;//避免null } else { - isException = true;//此时有文件nullpointer异常,执行打开空文件 + isException.set(true);//此时有文件nullpointer异常,执行打开空文件 } } - openTemplate(df, isException, file); - - if (OperatingSystem.isMacOS()) { - enableFullScreenMode(df); - } - - JTemplate selectedJTemplate = df.getSelectedJTemplate(); - if (selectedJTemplate != null) { - selectedJTemplate.requestGridFocus(); + if (file != null && file.exists() && !isException.get()) { + df.openTemplate(file); + } else { + df.addAndActivateJTemplate(); + // 如果没有模板,则需要确认一下 + MutilTempalteTabPane.getInstance().setTemTemplate(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); } - return isException; } - private void openTemplate(DesignerFrame df, boolean isException, FILE file) { + private boolean openTemplateOnStartup(DesignerFrame df, AtomicBoolean isException, FILE file) { boolean onStartup = DesignerStartupContext.getInstance().isSupport(); if (onStartup) { @@ -180,27 +203,20 @@ public abstract class BaseDesigner extends ToolBarMenuDock { df.addAndActivateJTemplate(); // 如果没有模板,则需要确认一下 MutilTempalteTabPane.getInstance().setTemTemplate(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); - return; + return true; } if (context.isOpenLastFile()) { - if (file != null && file.exists() && !isException) { + if (file != null && file.exists() && !isException.get()) { df.openTemplate(file); - return; + return true; } } if (context.isOpenEmpty()) { df.showEmptyJTemplate(); - return; + return true; } } - - if (file != null && file.exists() && !isException) { - df.openTemplate(file); - } else { - df.addAndActivateJTemplate(); - // 如果没有模板,则需要确认一下 - MutilTempalteTabPane.getInstance().setTemTemplate(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); - } + return false; } private void enableFullScreenMode(Window window) { From 90a2f720954c14ea216be646a02fdc9bf4f4acf8 Mon Sep 17 00:00:00 2001 From: Harrison Date: Tue, 9 Aug 2022 14:33:47 +0800 Subject: [PATCH 06/11] =?UTF-8?q?REPORT-76079=E3=80=90=E8=BF=AD=E4=BB=A3?= =?UTF-8?q?=E3=80=91=E3=80=90=E8=B5=B7=E5=A7=8B=E9=A1=B5=E3=80=91=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E9=97=AE=E9=A2=98=207.=20=E5=B1=95=E7=A4=BA=E7=9A=84?= =?UTF-8?q?=E6=95=88=E6=9E=9C=E4=B8=8D=E5=A4=9F=E5=B1=85=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/start/common/DesignerOpenEmptyPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/start/common/DesignerOpenEmptyPanel.java b/designer-base/src/main/java/com/fr/start/common/DesignerOpenEmptyPanel.java index e89598ae2..41ab4edff 100644 --- a/designer-base/src/main/java/com/fr/start/common/DesignerOpenEmptyPanel.java +++ b/designer-base/src/main/java/com/fr/start/common/DesignerOpenEmptyPanel.java @@ -68,7 +68,7 @@ public class DesignerOpenEmptyPanel extends JPanel { this.body.add(createIcon, BorderLayout.NORTH); this.body.add(createButtonPanel, BorderLayout.SOUTH); - setLayout(FRGUIPaneFactory.createCenterLayout(this.body)); + setLayout(FRGUIPaneFactory.createCenterLayout(this.body, 0.4d)); ColorUtils.syncBackground(this, Color.WHITE); From 6bb2e7c4caa793e84de2b35427678d199e987ddd Mon Sep 17 00:00:00 2001 From: Harrison Date: Tue, 9 Aug 2022 14:34:09 +0800 Subject: [PATCH 07/11] =?UTF-8?q?REPORT-76079=E3=80=90=E8=BF=AD=E4=BB=A3?= =?UTF-8?q?=E3=80=91=E3=80=90=E8=B5=B7=E5=A7=8B=E9=A1=B5=E3=80=91=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E9=97=AE=E9=A2=98=207.=20=E5=B1=95=E7=A4=BA=E7=9A=84?= =?UTF-8?q?=E6=95=88=E6=9E=9C=E4=B8=8D=E5=A4=9F=E5=B1=85=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/layout/FRGUIPaneFactory.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/layout/FRGUIPaneFactory.java b/designer-base/src/main/java/com/fr/design/layout/FRGUIPaneFactory.java index 401fae849..3a2e56d22 100644 --- a/designer-base/src/main/java/com/fr/design/layout/FRGUIPaneFactory.java +++ b/designer-base/src/main/java/com/fr/design/layout/FRGUIPaneFactory.java @@ -152,15 +152,18 @@ public class FRGUIPaneFactory { return new FRGridLayout(nColumn); } + public static LayoutManager createCenterLayout(JComponent centerBody) { + return createCenterLayout(centerBody, 0.3d); + } + /** * 将 centerBody 为中心,创建一个布局 * 注:只有当且仅当有一个组件,且希望组件 上下左右 居中时使用 * @param centerBody 中心组件 * @return 布局方式 */ - public static LayoutManager createCenterLayout(JComponent centerBody) { + public static LayoutManager createCenterLayout(JComponent centerBody, double factor) { - final double yFactor = 0.30; return new LayoutManager() { @Override @@ -186,7 +189,7 @@ public class FRGUIPaneFactory { int bodyWidth = centerBody.getPreferredSize().width; int bodyHeight = centerBody.getPreferredSize().height; int labelX = (width - bodyWidth) / 2; - int labelY = (int) ((height - bodyHeight) * yFactor); + int labelY = (int) ((height - bodyHeight) * factor); centerBody.setBounds(labelX, labelY, bodyWidth, bodyHeight); } From 7c5328b14b13d912f60e0848da189f06bae2c061 Mon Sep 17 00:00:00 2001 From: Harrison Date: Tue, 9 Aug 2022 14:35:02 +0800 Subject: [PATCH 08/11] =?UTF-8?q?REPORT-76091=20=E3=80=90=E8=BF=AD?= =?UTF-8?q?=E4=BB=A3=E3=80=91=E3=80=90=E8=B5=B7=E5=A7=8B=E9=A1=B5=E3=80=91?= =?UTF-8?q?=E4=B8=8D=E6=89=93=E5=BC=80=E4=BB=BB=E4=BD=95=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=EF=BC=8C=E5=90=AF=E5=8A=A8=EF=BC=8C=E4=B8=8D=E8=83=BD=E6=96=B0?= =?UTF-8?q?=E5=BB=BAfvs=20=E5=85=BC=E5=AE=B9=20fvs=20=E7=9A=84=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E5=B9=B6=E4=B8=94=E8=A7=84=E9=81=BF=20npe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/file/HistoryTemplateListCache.java | 2 ++ .../src/main/java/com/fr/design/mainframe/DesignerFrame.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java index b21519513..61093401f 100644 --- a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java +++ b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java @@ -19,6 +19,7 @@ import com.fr.plugin.context.PluginContext; import com.fr.stable.CoreConstants; import com.fr.stable.StringUtils; import com.fr.third.org.apache.commons.io.FilenameUtils; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collections; @@ -98,6 +99,7 @@ public class HistoryTemplateListCache implements CallbackEvent { } + @Nullable public JTemplate getCurrentEditingTemplate() { return this.editingTemplate; } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java index aa6d4873e..ec6a98248 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java @@ -1088,7 +1088,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } JTemplate jt = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - if (jt != null) { + if (JTemplate.isValid(jt)) { DesignerEnvManager.getEnvManager().setLastOpenFile(jt.getEditingFILE().getPath()); } From 85e779da5efe3738a5338777de04d1d15acad41b Mon Sep 17 00:00:00 2001 From: Harrison Date: Tue, 9 Aug 2022 14:51:05 +0800 Subject: [PATCH 09/11] =?UTF-8?q?REPORT-76057=E3=80=90=E8=BF=AD=E4=BB=A3?= =?UTF-8?q?=E3=80=91=E3=80=90=E8=B5=B7=E5=A7=8B=E9=A1=B5=E3=80=91=E8=BF=9B?= =?UTF-8?q?=E5=85=A5=E7=9A=84=E4=B8=80=E7=9B=B4=E9=83=BD=E6=98=AF=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=B7=A5=E4=BD=9C=E7=9B=AE=E5=BD=95=20=E8=BF=9B?= =?UTF-8?q?=E5=85=A5=E5=B7=A5=E4=BD=9C=E7=9B=AE=E5=BD=95=E5=89=8D=EF=BC=8C?= =?UTF-8?q?=E5=85=88=E5=B0=86=E7=8E=AF=E5=A2=83=E5=87=86=E5=A4=87=E5=A5=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/startup/ui/StartupPageWorkspacePanel.java | 7 ++++--- .../optimized/DesignerStartupPageActivator.java | 12 ++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java index 297feaa25..c20f623f8 100644 --- a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java +++ b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java @@ -223,7 +223,7 @@ public class StartupPageWorkspacePanel extends JPanel { layoutSelectWorkspacePanel(workspaceInfo, workspaceItemDesc); - layoutSelectAndCreatePanel(workspaceItemDesc); + layoutSelectAndCreatePanel(workspaceInfo, workspaceItemDesc); partitionPanel.add(workspaceItemDesc); @@ -378,7 +378,7 @@ public class StartupPageWorkspacePanel extends JPanel { public void mousePressed(MouseEvent e) { int clickCount = e.getClickCount(); - if (clickCount == BORDER_THIN) { + if (clickCount == 2) { pageModel.setSelectWorkspaceInfo(workspaceInfo); openEmptyTemplateRunnable.run(); return; @@ -426,7 +426,7 @@ public class StartupPageWorkspacePanel extends JPanel { workspaceItemDesc.add(selectWorkspacePanel, BorderLayout.WEST); } - private void layoutSelectAndCreatePanel(JPanel workspaceItemDesc) { + private void layoutSelectAndCreatePanel(StartupWorkspaceBean workspaceInfo, JPanel workspaceItemDesc) { // 选择并新建 AtomicReference borderColorRef = new AtomicReference<>(null); @@ -497,6 +497,7 @@ public class StartupPageWorkspacePanel extends JPanel { } @Override public void mousePressed(MouseEvent e) { + pageModel.setSelectWorkspaceInfo(workspaceInfo); createNewTemplateRunnable.run(); } }); diff --git a/designer-realize/src/main/java/com/fr/start/module/optimized/DesignerStartupPageActivator.java b/designer-realize/src/main/java/com/fr/start/module/optimized/DesignerStartupPageActivator.java index 12e1e1f7c..98ff33466 100644 --- a/designer-realize/src/main/java/com/fr/start/module/optimized/DesignerStartupPageActivator.java +++ b/designer-realize/src/main/java/com/fr/start/module/optimized/DesignerStartupPageActivator.java @@ -1,5 +1,6 @@ package com.fr.start.module.optimized; +import com.fr.design.DesignerEnvManager; import com.fr.design.ui.util.UIUtil; import com.fr.log.FineLoggerFactory; import com.fr.module.Activator; @@ -10,6 +11,7 @@ import com.fr.start.util.DesignerStartupPageUtil; import com.fr.start.warmup.DesignerPreWarmTask; import com.fr.startup.ui.StartupPageModel; import com.fr.startup.ui.StartupPageWindow; +import com.fr.startup.ui.StartupWorkspaceBean; import com.fr.third.org.apache.commons.lang3.time.StopWatch; import com.fr.value.NotNullLazyValue; import org.jetbrains.annotations.NotNull; @@ -66,18 +68,21 @@ public class DesignerStartupPageActivator extends Activator { // selectAndOpenLast model.setOpenLastTemplateRunnable(() -> { context.setOpenLastFile(true); + handleModel(model); launchAfterWarmup(warmTask); }); // selectAndOpenEmpty model.setOpenEmptyTemplateRunnable(() -> { context.setOpenEmpty(true); + handleModel(model); launchAfterWarmup(warmTask); }); // selectAndCreateNew model.setCreateNewTemplateRunnable(() -> { context.setCreateNew(true); + handleModel(model); launchAfterWarmup(warmTask); }); @@ -87,6 +92,13 @@ public class DesignerStartupPageActivator extends Activator { }); } + private void handleModel(StartupPageModel model) { + + // 将选中的环境设置为当前环境 + StartupWorkspaceBean selectWorkspaceInfo = model.getSelectWorkspaceInfo(); + DesignerEnvManager.getEnvManager().setCurEnvName(selectWorkspaceInfo.getName()); + } + private void launchAfterWarmup(DesignerPreWarmTask warmTask) { StopWatch stopWatch = StopWatch.createStarted(); From 234b828b4d2d05d77bbac6791ea27851c15f4841 Mon Sep 17 00:00:00 2001 From: Harrison Date: Thu, 11 Aug 2022 15:12:41 +0800 Subject: [PATCH 10/11] =?UTF-8?q?REPORT-76049=E3=80=90=E8=BF=AD=E4=BB=A3?= =?UTF-8?q?=E3=80=91=E3=80=90=E8=B5=B7=E5=A7=8B=E9=A1=B5=E3=80=91=E4=BA=91?= =?UTF-8?q?=E7=AB=AF=E8=BF=90=E7=BB=B4=E6=8F=92=E4=BB=B6=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=9B=B4=E6=96=B0=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=EF=BC=8C=E9=A2=84=E7=83=AD=E8=BF=87=E7=A8=8B=E4=B8=AD?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E8=87=AA=E5=8A=A8=E6=9B=B4=E6=96=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/DesignerFrame.java | 2 +- .../start/common/DesignerStartupExecutor.java | 10 -------- .../com/fr/startup/ui/StartupPageModel.java | 15 +++++++++++ .../optimized/DesignUpdateActivator.java | 25 +++++++++++++++++++ 4 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 designer-realize/src/main/java/com/fr/start/module/optimized/DesignUpdateActivator.java diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java index ec6a98248..dfd2a20cd 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java @@ -696,7 +696,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta username = connection == null ? StringUtils.EMPTY : connection.getUserName(); } defaultTitleSB.append(username).append("@").append(envName).append("[").append(workspace.getDescription()).append("]"); - if (editingTemplate != null) { + if (JTemplate.isValid(editingTemplate)) { String path = editingTemplate.getPath(); if (!editingTemplate.getEditingFILE().exists()) { path = FILEFactory.MEM_PREFIX + path; diff --git a/designer-base/src/main/java/com/fr/start/common/DesignerStartupExecutor.java b/designer-base/src/main/java/com/fr/start/common/DesignerStartupExecutor.java index 1a033e8cd..b4358f047 100644 --- a/designer-base/src/main/java/com/fr/start/common/DesignerStartupExecutor.java +++ b/designer-base/src/main/java/com/fr/start/common/DesignerStartupExecutor.java @@ -1,15 +1,10 @@ package com.fr.start.common; -import java.util.ArrayList; -import java.util.List; - /** * created by Harrison on 2022/07/03 **/ public class DesignerStartupExecutor { - private List warmupTasks = new ArrayList<>(); - public void execute(Runnable runnable) { if (!DesignerStartupContext.getInstance().onWarmup()) { @@ -17,11 +12,6 @@ public class DesignerStartupExecutor { } } - public void reset() { - - warmupTasks.clear(); - } - public static DesignerStartupExecutor getInstance() { return DesignerStartupExecutorHolder.INSTANCE; } diff --git a/designer-base/src/main/java/com/fr/startup/ui/StartupPageModel.java b/designer-base/src/main/java/com/fr/startup/ui/StartupPageModel.java index 4b82545a0..0f71e4932 100644 --- a/designer-base/src/main/java/com/fr/startup/ui/StartupPageModel.java +++ b/designer-base/src/main/java/com/fr/startup/ui/StartupPageModel.java @@ -3,10 +3,12 @@ package com.fr.startup.ui; import com.fr.design.DesignerEnvManager; import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.env.DesignerWorkspaceType; +import com.fr.stable.StringUtils; import com.fr.third.guava.collect.Lists; import com.fr.workspace.connect.WorkspaceConnectionInfo; import java.util.ArrayList; +import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -33,6 +35,7 @@ public class StartupPageModel { public static StartupPageModel create() { DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); + String curEnvName = envManager.getCurEnvName(); Iterator envNameIterator = envManager.getEnvNameIterator(); List infos = Lists.newArrayList(envNameIterator) .stream() @@ -45,6 +48,18 @@ public class StartupPageModel { return new StartupWorkspaceBean(e, workspaceInfo.getPath(), workspaceInfo.getType()); } }) + .sorted(new Comparator() { + @Override + public int compare(StartupWorkspaceBean o1, StartupWorkspaceBean o2) { + if (StringUtils.equals(curEnvName, o1.getName())) { + return -1; + } + if (StringUtils.equals(curEnvName, o2.getName())) { + return 1; + } + return 0; + } + }) .collect(Collectors.toList()); Map> recentFileMap = new HashMap<>(); for (StartupWorkspaceBean info : infos) { diff --git a/designer-realize/src/main/java/com/fr/start/module/optimized/DesignUpdateActivator.java b/designer-realize/src/main/java/com/fr/start/module/optimized/DesignUpdateActivator.java new file mode 100644 index 000000000..b6ad5ce2a --- /dev/null +++ b/designer-realize/src/main/java/com/fr/start/module/optimized/DesignUpdateActivator.java @@ -0,0 +1,25 @@ +package com.fr.start.module.optimized; + +import com.fr.start.common.DesignerStartupContext; +import com.fr.update.activator.BasicUpdateActivator; +import com.fr.update.base.FineUpdateUnit; + +/** + * created by Harrison on 2022/08/11 + **/ +public class DesignUpdateActivator extends BasicUpdateActivator { + + @Override + public void start() { + + if (DesignerStartupContext.getInstance().onWarmup()) { + try { + prepare4Start(); + FineUpdateUnit.makeNew(); + } catch (Throwable ignore) { + } + } else { + super.start(); + } + } +} From d896eaca451fa19fbc8284e5de8fee48f5c906ed Mon Sep 17 00:00:00 2001 From: Harrison Date: Thu, 11 Aug 2022 17:44:51 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E6=97=A0=20JIRA=20=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=E5=A4=84=E7=90=86=E5=9C=88=E5=A4=8D=E6=9D=82=E5=BA=A6?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/start/BaseDesigner.java | 59 +++++++++++++------ .../com/fr/startup/ui/StartupPageModel.java | 28 +++++---- .../startup/ui/StartupPageWorkspacePanel.java | 9 ++- 3 files changed, 62 insertions(+), 34 deletions(-) diff --git a/designer-base/src/main/java/com/fr/start/BaseDesigner.java b/designer-base/src/main/java/com/fr/start/BaseDesigner.java index 674f38168..68cb616e1 100644 --- a/designer-base/src/main/java/com/fr/start/BaseDesigner.java +++ b/designer-base/src/main/java/com/fr/start/BaseDesigner.java @@ -169,6 +169,19 @@ public abstract class BaseDesigner extends ToolBarMenuDock { } private void openTemplate0(DesignerFrame df, AtomicBoolean isException, FILE file) { + + file = getExtraFILE(isException, file); + + if (file != null && file.exists() && !isException.get()) { + df.openTemplate(file); + } else { + df.addAndActivateJTemplate(); + // 如果没有模板,则需要确认一下 + MutilTempalteTabPane.getInstance().setTemTemplate(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); + } + } + + private FILE getExtraFILE(AtomicBoolean isException, FILE file) { //启动时打开指定文件的接口 DesignerStartOpenFileProcessor processor = ExtraDesignClassManager.getInstance().getSingle(DesignerStartOpenFileProcessor.XML_TAG); @@ -184,14 +197,7 @@ public abstract class BaseDesigner extends ToolBarMenuDock { isException.set(true);//此时有文件nullpointer异常,执行打开空文件 } } - - if (file != null && file.exists() && !isException.get()) { - df.openTemplate(file); - } else { - df.addAndActivateJTemplate(); - // 如果没有模板,则需要确认一下 - MutilTempalteTabPane.getInstance().setTemTemplate(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); - } + return file; } private boolean openTemplateOnStartup(DesignerFrame df, AtomicBoolean isException, FILE file) { @@ -200,25 +206,40 @@ public abstract class BaseDesigner extends ToolBarMenuDock { if (onStartup) { DesignerStartupContext context = DesignerStartupContext.getInstance(); if (context.isCreateNew()) { - df.addAndActivateJTemplate(); - // 如果没有模板,则需要确认一下 - MutilTempalteTabPane.getInstance().setTemTemplate(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); - return true; + return createNewTemplate(df); } - if (context.isOpenLastFile()) { - if (file != null && file.exists() && !isException.get()) { - df.openTemplate(file); - return true; - } + if (isOpenTemplate(isException, file, context)) { + return openTemplate(df, file); } if (context.isOpenEmpty()) { - df.showEmptyJTemplate(); - return true; + return openEmpty(df); } } return false; } + private boolean isOpenTemplate(AtomicBoolean isException, FILE file, DesignerStartupContext context) { + + return context.isOpenLastFile() && file != null && file.exists() && !isException.get(); + } + + private boolean openEmpty(DesignerFrame df) { + df.showEmptyJTemplate(); + return true; + } + + private boolean openTemplate(DesignerFrame df, FILE file) { + df.openTemplate(file); + return true; + } + + private boolean createNewTemplate(DesignerFrame df) { + df.addAndActivateJTemplate(); + // 如果没有模板,则需要确认一下 + MutilTempalteTabPane.getInstance().setTemTemplate(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); + return true; + } + private void enableFullScreenMode(Window window) { String className = "com.apple.eawt.FullScreenUtilities"; String methodName = "setWindowCanFullScreen"; diff --git a/designer-base/src/main/java/com/fr/startup/ui/StartupPageModel.java b/designer-base/src/main/java/com/fr/startup/ui/StartupPageModel.java index 0f71e4932..c345c8991 100644 --- a/designer-base/src/main/java/com/fr/startup/ui/StartupPageModel.java +++ b/designer-base/src/main/java/com/fr/startup/ui/StartupPageModel.java @@ -37,6 +37,8 @@ public class StartupPageModel { DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); String curEnvName = envManager.getCurEnvName(); Iterator envNameIterator = envManager.getEnvNameIterator(); + + Comparator startupWorkspaceBeanComparator = convertComparator(curEnvName); List infos = Lists.newArrayList(envNameIterator) .stream() .map((e) -> { @@ -48,18 +50,7 @@ public class StartupPageModel { return new StartupWorkspaceBean(e, workspaceInfo.getPath(), workspaceInfo.getType()); } }) - .sorted(new Comparator() { - @Override - public int compare(StartupWorkspaceBean o1, StartupWorkspaceBean o2) { - if (StringUtils.equals(curEnvName, o1.getName())) { - return -1; - } - if (StringUtils.equals(curEnvName, o2.getName())) { - return 1; - } - return 0; - } - }) + .sorted(startupWorkspaceBeanComparator) .collect(Collectors.toList()); Map> recentFileMap = new HashMap<>(); for (StartupWorkspaceBean info : infos) { @@ -123,4 +114,17 @@ public class StartupPageModel { public void setOpenEmptyTemplateRunnable(Runnable openEmptyTemplateRunnable) { this.openEmptyTemplateRunnable = openEmptyTemplateRunnable; } + + private static Comparator convertComparator(String curEnvName) { + + return (o1, o2) -> { + if (StringUtils.equals(curEnvName, o1.getName())) { + return -1; + } + if (StringUtils.equals(curEnvName, o2.getName())) { + return 1; + } + return 0; + }; + } } diff --git a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java index c20f623f8..5251509d3 100644 --- a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java +++ b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java @@ -63,7 +63,10 @@ public class StartupPageWorkspacePanel extends JPanel { private static final Dimension PATH_DIMENSION = new Dimension(100, 20); private static final Dimension SELECT_WORKSPACE_DIMENSION = new Dimension(210, 72); private static final Dimension SELECT_CREATE_DIMENSION = new Dimension(60, 72); - public static final int COLUMN_LIMIT = 3; + + private static final int COLUMN_LIMIT = 3; + private static final int DOUBLE_CLICK_COUNT = 2; + public static final int PARTITION_LIMIT = 2; /* model */ @@ -95,7 +98,7 @@ public class StartupPageWorkspacePanel extends JPanel { this.contentPanel = generateLimitContentPanel(partitions); this.add(contentPanel, BorderLayout.NORTH); - if (partitions.size() > 2) { + if (partitions.size() > PARTITION_LIMIT) { this.tailPanel = generateTailPanel(); this.add(tailPanel, BorderLayout.SOUTH); } @@ -378,7 +381,7 @@ public class StartupPageWorkspacePanel extends JPanel { public void mousePressed(MouseEvent e) { int clickCount = e.getClickCount(); - if (clickCount == 2) { + if (clickCount == DOUBLE_CLICK_COUNT) { pageModel.setSelectWorkspaceInfo(workspaceInfo); openEmptyTemplateRunnable.run(); return;