From ba7b696fe22071796b6757cf59d7fba7c73a676e Mon Sep 17 00:00:00 2001 From: hzzz Date: Mon, 30 Jul 2018 20:12:07 +0800 Subject: [PATCH 1/4] =?UTF-8?q?REPORT-9221=2010.0=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E5=85=BC=E5=AE=B9-=E7=89=88=E6=9C=AC=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/DesignerFrame.java | 306 +++++++----------- 1 file changed, 117 insertions(+), 189 deletions(-) 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 9e9746ec2..9b93816ef 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 @@ -4,15 +4,18 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; +import com.fr.base.Env; +import com.fr.base.FRContext; +import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignModelAdapter; import com.fr.design.DesignState; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.core.ActionFactory; +import com.fr.design.actions.file.SwitchExistEnv; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.TableDataTreePane; -import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.event.DesignerOpenedListener; import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedListener; @@ -22,9 +25,9 @@ import com.fr.design.file.NewTemplatePane; import com.fr.design.file.SaveSomeTemplatePane; import com.fr.design.file.TemplateTreePane; import com.fr.design.fun.TitlePlaceProcessor; +import com.fr.design.fun.impl.AbstractTemplateTreeShortCutProvider; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.imenu.UIMenuHighLight; -import com.fr.design.gui.iprogressbar.ProgressDialog; import com.fr.design.gui.iscrollbar.UIScrollBar; import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.layout.FRGUIPaneFactory; @@ -32,6 +35,7 @@ import com.fr.design.mainframe.loghandler.LogMessageBar; import com.fr.design.mainframe.toolbar.ToolBarMenuDock; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; import com.fr.design.menu.MenuManager; +import com.fr.design.menu.ShortCut; import com.fr.design.utils.DesignUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.file.FILE; @@ -39,9 +43,10 @@ import com.fr.file.FILEFactory; import com.fr.file.FileFILE; import com.fr.file.FileNodeFILE; import com.fr.general.ComparatorUtils; +import com.fr.general.FRLogger; import com.fr.general.GeneralContext; - -import com.fr.log.FineLoggerFactory; +import com.fr.general.Inter; +import com.fr.general.env.EnvContext; import com.fr.plugin.context.PluginContext; import com.fr.plugin.injectable.PluginModule; import com.fr.plugin.manage.PluginFilter; @@ -51,30 +56,12 @@ import com.fr.stable.CoreConstants; import com.fr.stable.OperatingSystem; import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; import com.fr.stable.image4j.codec.ico.ICODecoder; import com.fr.stable.project.ProjectConstants; -import com.fr.workspace.WorkContext; -import com.fr.workspace.Workspace; -import com.fr.workspace.connect.WorkspaceConnection; - -import javax.swing.Icon; -import javax.swing.JComponent; -import javax.swing.JFrame; -import javax.swing.JLayeredPane; -import javax.swing.JMenuBar; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.WindowConstants; + +import javax.swing.*; import javax.swing.border.MatteBorder; -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.Graphics; -import java.awt.Insets; -import java.awt.Point; -import java.awt.Rectangle; -import java.awt.Toolkit; +import java.awt.*; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.dnd.DnDConstants; @@ -97,54 +84,41 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Set; +import java.util.logging.Level; public class DesignerFrame extends JFrame implements JTemplateActionListener, TargetModifiedListener { - public static final String DESIGNER_FRAME_NAME = "designer_frame"; - public static final Dimension MIN_SIZE = new Dimension(100, 100); - private static final long serialVersionUID = -8732559571067484460L; - private static final int LEFT_ALIGN_GAP = -5; - private static final int MENU_HEIGHT = 26; - private static final Integer SECOND_LAYER = new Integer(100); - private static final Integer TOP_LAYER = new Integer((200)); - private static java.util.List> appList = new java.util.ArrayList>(); private List designerOpenedListenerList = new ArrayList<>(); - private ToolBarMenuDock ad; + //顶部日志+登陆按钮 + private static final JPanel northEastPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + + private static ToolBarMenuDock ad; private DesktopCardPane centerTemplateCardPane; private JPanel toolbarPane; - private JComponent toolbarComponent; private JPanel menuPane; - private JMenuBar menuBar; - private JPanel eastCenterPane; - private UIToolbar combineUp; - private NewTemplatePane newWorkBookPane = null; - private Icon closeMode = UIConstants.CLOSE_OF_AUTHORITY; - private JLayeredPane layeredPane = this.getLayeredPane(); - private JPanel basePane = new JPanel(); - // 上面的虚线 private DottedLine upDottedLine; - // 下面的虚线 private DottedLine downDottedLine; @@ -155,18 +129,18 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta private DottedLine rightDottedLine; private int contentWidth = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth()); - private int contentHeight = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight()); private WindowAdapter windowAdapter = new WindowAdapter() { - public void windowOpened(WindowEvent e) { + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().setComposite(); + reCalculateFrameSize(); + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().doResize(); } @Override public void windowClosing(WindowEvent e) { - SaveSomeTemplatePane saveSomeTempaltePane = new SaveSomeTemplatePane(true); // 只有一个文件未保存时 if (HistoryTemplateListPane.getInstance().getHistoryCount() == 1) { @@ -184,9 +158,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta }; private JComponent closeButton = new JComponent() { - protected void paintComponent(Graphics g) { - g.setColor(UIConstants.NORMAL_BACKGROUND); g.fillArc(0, 0, UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH, UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH, 0, 360); @@ -195,32 +167,27 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta }; private MouseListener closeMouseListener = new MouseAdapter() { - public void mousePressed(MouseEvent e) { - closeMode = UIConstants.CLOSE_PRESS_AUTHORITY; closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); closeButton.repaint(); } public void mouseExited(MouseEvent e) { - closeMode = UIConstants.CLOSE_OF_AUTHORITY; closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); closeButton.repaint(); } public void mouseMoved(MouseEvent e) { - closeMode = UIConstants.CLOSE_OVER_AUTHORITY; closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); closeButton.repaint(); } public void mouseReleased(MouseEvent e) { - - if (BaseUtils.isAuthorityEditing()) { - BaseUtils.setAuthorityEditing(false); + if (DesignerMode.isAuthorityEditing()) { + DesignerMode.setMode(DesignerMode.NORMARL); WestRegionContainerPane.getInstance().replaceDownPane( TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter())); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshEastPropertiesPane(); @@ -233,15 +200,12 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } public void mouseEntered(MouseEvent e) { - closeMode = UIConstants.CLOSE_OVER_AUTHORITY; closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); closeButton.repaint(); } }; - private ProgressDialog progressDialog; - public DesignerFrame(ToolBarMenuDock ad) { setName(DESIGNER_FRAME_NAME); @@ -254,9 +218,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta // the content pane basePane.setLayout(new BorderLayout()); toolbarPane = new JPanel() { - public Dimension getPreferredSize() { - Dimension dim = super.getPreferredSize(); // dim.height = TOOLBAR_HEIGHT; return dim; @@ -299,32 +261,19 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta this.addWindowListeners(getFrameListeners()); this.addComponentListener(new ComponentAdapter() { - public void componentResized(ComponentEvent e) { - reCalculateFrameSize(); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { doResize(); } } }); - this.addDesignerOpenedListener(new DesignerOpenedListener() { - - @Override - public void designerOpened() { - - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().setComposite(); - reCalculateFrameSize(); - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().doResize(); - } - }); this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); this.setVisible(false); this.setExtendedState(JFrame.MAXIMIZED_BOTH); this.setDropTarget(new DropTarget(this, DnDConstants.ACTION_MOVE, new FileDropTargetListener(), true)); closeMode = UIConstants.CLOSE_OF_AUTHORITY; initMenuPane(); - this.progressDialog = new ProgressDialog(this); } /** @@ -333,7 +282,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param app 注册app. */ public static void registApp(App app) { - if (app != null) { appList.add(app); } @@ -350,7 +298,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 注册"设计器初始化完成"的监听 */ public void addDesignerOpenedListener(DesignerOpenedListener listener) { - designerOpenedListenerList.add(listener); } @@ -358,14 +305,12 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 触发"设计器初始化完成"事件 */ public void fireDesignerOpened() { - for (DesignerOpenedListener listener : designerOpenedListenerList) { listener.designerOpened(); } } protected DesktopCardPane getCenterTemplateCardPane() { - return centerTemplateCardPane; } @@ -373,45 +318,41 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 初始menuPane的方法 方便OEM时修改该组件 */ protected void initMenuPane() { - menuPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); menuPane.add(new UIMenuHighLight(), BorderLayout.SOUTH); - menuPane.add(initNorthEastPane(ad), BorderLayout.EAST); + menuPane.add(initNorthEastPane(), BorderLayout.EAST); basePane.add(menuPane, BorderLayout.NORTH); this.resetToolkitByPlus(null); } /** - * @param ad * @return */ - protected JPanel initNorthEastPane(final ToolBarMenuDock ad) { + protected JPanel initNorthEastPane() { //hugh: private修改为protected方便oem的时候修改右上的组件构成 - //顶部日志+登陆按钮 - final JPanel northEastPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + //优先级为-1,保证最后全面刷新一次 GeneralContext.listenPluginRunningChanged(new PluginEventListener(-1) { @Override public void on(PluginEvent event) { - refreshNorthEastPane(northEastPane, ad); - DesignUtils.refreshDesignerFrame(); + refreshNorthEastPane(); + DesignUtils.refreshDesignerFrame(FRContext.getCurrentEnv()); } }, new PluginFilter() { @Override public boolean accept(PluginContext context) { - - return context.contain(PluginModule.ExtraDesign); + return !SwitchExistEnv.isSwitching() + && context.contain(PluginModule.ExtraDesign); } }); - refreshNorthEastPane(northEastPane, ad); + refreshNorthEastPane(); return northEastPane; } - private void refreshNorthEastPane(JPanel northEastPane, ToolBarMenuDock ad) { - + public static void refreshNorthEastPane() { northEastPane.removeAll(); northEastPane.setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 0)); northEastPane.add(LogMessageBar.getInstance()); @@ -427,27 +368,24 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } public void initTitleIcon() { - try { @SuppressWarnings("unchecked") List image = ICODecoder.read(DesignerFrame.class .getResourceAsStream("/com/fr/base/images/oem/logo.ico")); this.setIconImages(image); } catch (IOException e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); + FRContext.getLogger().error(e.getMessage(), e); this.setIconImage(BaseUtils.readImage("/com/fr/base/images/oem/logo.png")); } } private void addWindowListeners(ArrayList listeners) { - for (WindowListener listener : listeners) { this.addWindowListener(listener); } } protected ArrayList getFrameListeners() { - ArrayList arrayList = new ArrayList(); arrayList.add(windowAdapter); return arrayList; @@ -455,13 +393,11 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta protected void laoyoutWestPane() { - basePane.add(WestRegionContainerPane.getInstance(), BorderLayout.WEST); } // 调整windows大小 private void reCalculateFrameSize() { - contentHeight = layeredPane.getHeight(); contentWidth = layeredPane.getWidth(); layeredPane.remove(basePane); @@ -474,7 +410,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 更新 */ public void populateAuthorityArea() { - int centerWidth = contentWidth - WestRegionContainerPane.getInstance().getContainerWidth() - EastRegionContainerPane.getInstance().getContainerWidth(); // 上面的虚线 @@ -499,7 +434,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } private void addDottedLine() { - layeredPane.add(upDottedLine, SECOND_LAYER); layeredPane.add(downDottedLine, SECOND_LAYER); layeredPane.add(leftDottedLine, SECOND_LAYER); @@ -508,7 +442,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } private void removeDottedLine() { - layeredPane.remove(upDottedLine); layeredPane.remove(downDottedLine); layeredPane.remove(leftDottedLine); @@ -517,7 +450,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } public JLayeredPane getContentFrame() { - return layeredPane; } @@ -525,8 +457,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 刷新 */ public void refreshDottedLine() { - - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { populateAuthorityArea(); populateCloseButton(); addDottedLine(); @@ -540,7 +471,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 刷新DottedLine */ public void doResize() { - removeDottedLine(); populateAuthorityArea(); populateCloseButton(); @@ -565,7 +495,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 退出权限编辑时,将所有的做过权限编辑的状态,作为一个状态赋给报、报表主体 */ private void fireAuthorityStateToNomal() { - java.util.List> opendedTemplate = HistoryTemplateListPane.getInstance().getHistoryList(); for (int i = 0; i < opendedTemplate.size(); i++) { // 如果在权限编辑时做过操作,则将做过的操作作为一个整体状态赋给正在报表 @@ -576,12 +505,10 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } public void setCloseMode(Icon closeMode) { - this.closeMode = closeMode; } private UIToolbar combineUpTooBar(JComponent[] toolbar4Form) { - combineUp = new UIToolbar(FlowLayout.LEFT); combineUp.setBorder(new MatteBorder(new Insets(0, LEFT_ALIGN_GAP, 1, 0), UIConstants.LINE_COLOR)); combineUp.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 2)); @@ -589,7 +516,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta for (int i = 0; i < fixButtons.length; i++) { combineUp.add(fixButtons[i]); } - if (!BaseUtils.isAuthorityEditing()) { + if (!DesignerMode.isAuthorityEditing()) { combineUp.addSeparator(new Dimension(2, 16)); if (toolbar4Form != null) { for (int i = 0; i < toolbar4Form.length; i++) { @@ -608,7 +535,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } private void addExtraButtons() { - JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (jt == null) { return; @@ -625,7 +551,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } private void addShareButton() { - JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (jt == null) { return; @@ -645,7 +570,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param al 组件名称 */ public void checkCombineUp(boolean flag, ArrayList al) { - combineUp.checkComponentsByNames(flag, al); } @@ -654,7 +578,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 刷新工具条. */ public void refreshToolbar() { - this.ad.updateToolBarDef(); } @@ -664,7 +587,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param plus 工具条中相关信息 */ public void resetToolkitByPlus(ToolBarMenuDockPlus plus) { - if (plus == null) { plus = ToolBarMenuDock.NULLAVOID; } @@ -697,7 +619,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } public JComponent getToolbarComponent() { - return this.toolbarComponent; } @@ -706,14 +627,22 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta */ public void needToAddAuhtorityPaint() { - newWorkBookPane.setButtonGray(BaseUtils.isAuthorityEditing()); + newWorkBookPane.setButtonGray(DesignerMode.isAuthorityEditing()); + + // 进入或退出权限编辑模式,通知插件 + Set extraShortCuts = ExtraDesignClassManager.getInstance().getExtraShortCuts(); + for (ShortCut shortCut : extraShortCuts) { + if (shortCut instanceof AbstractTemplateTreeShortCutProvider) { + ((AbstractTemplateTreeShortCutProvider) shortCut).notifyFromAuhtorityChange(DesignerMode.isAuthorityEditing()); + } + } + } /** * 检查工具条. */ private void checkToolbarMenuEnable() { - if (this.ad != null) { this.ad.updateMenuDef(); this.ad.updateToolBarDef(); @@ -724,34 +653,29 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 设置标题 */ public void setTitle() { - JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); StringBuilder defaultTitleSB = new StringBuilder(); defaultTitleSB.append(ProductConstants.PRODUCT_NAME); defaultTitleSB.append(" "); defaultTitleSB.append(ProductConstants.BRANCH); - defaultTitleSB.append(" "); // james:标识登录的用户和登录的ENV String envName = DesignerEnvManager.getEnvManager().getCurEnvName(); - Workspace workspace = WorkContext.getCurrent(); - DesignerWorkspaceInfo info = DesignerEnvManager.getEnvManager().getWorkspaceInfo(envName); - - String username = null; - if (info != null) { - WorkspaceConnection connection = info.getConnection(); - username = connection == null ? StringUtils.EMPTY : connection.getUserName(); - } - defaultTitleSB.append(username).append("@").append(envName).append("[").append(workspace.getDescription()).append("]"); - if (editingTemplate != null) { - String path = editingTemplate.getEditingFILE().getPath(); - if (!editingTemplate.getEditingFILE().exists()) { - path = FILEFactory.MEM_PREFIX + path; - } else if (path.startsWith(ProjectConstants.REPORTLETS_NAME)) { - path = workspace.getPath() + File.separator + path; + Env env = DesignerEnvManager.getEnvManager().getEnv(envName); + if (env != null) { + defaultTitleSB.append(env.getUser()).append('@').append(envName).append('['); + defaultTitleSB.append(env.getEnvDescription()); + defaultTitleSB.append(']'); + if (editingTemplate != null) { + String path = editingTemplate.getEditingFILE().getPath(); + if (!editingTemplate.getEditingFILE().exists()) { + path = FILEFactory.MEM_PREFIX + path; + } else if (path.startsWith(ProjectConstants.REPORTLETS_NAME)) { + path = env.getPath() + File.separator + path; + } + defaultTitleSB.append(" " + path); } - defaultTitleSB.append(" " + path); - } + } setTitle(defaultTitleSB.toString()); } @@ -788,22 +712,26 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta /** * 报表运行环境改变时,需要刷新某些面板 + * + * @param env 环境 */ - public void refreshEnv() { - + public void refreshEnv(Env env) { this.setTitle(); DesignerFrameFileDealerPane.getInstance().refreshDockingView(); TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()); TemplateTreePane.getInstance().refreshDockingView(); DesignTableDataManager.clearGlobalDs(); EastRegionContainerPane.getInstance().refreshDownPane(); + JTemplate template = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (template != null) { + template.refreshToolArea(); + } } /** * 返回选中的模板. */ public JTemplate getSelectedJTemplate() { - return this.centerTemplateCardPane.getSelectedJTemplate(); } @@ -812,7 +740,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta */ public void saveCurrentEditingTemplate() { - JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (editingTemplate == null) { return; @@ -825,19 +752,23 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta editingTemplate.stopEditing(); if (!editingTemplate.getEditingFILE().exists()) { int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), - com.fr.design.i18n.Toolkit.i18nText("Utils-Would_you_like_to_save") + " \"" + editingTemplate.getEditingFILE() + Inter.getLocText("Utils-Would_you_like_to_save") + " \"" + editingTemplate.getEditingFILE() + "\" ?", ProductConstants.PRODUCT_NAME, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (returnVal == JOptionPane.YES_OPTION && editingTemplate.saveTemplate()) { editingTemplate.saveTemplate(); - FineLoggerFactory.getLogger().info(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Template_Already_Saved", - editingTemplate.getEditingFILE().getName())); + FRLogger.getLogger().log( + Level.INFO, + Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{ + editingTemplate.getEditingFILE().getName(), "."})); } } else { if (editingTemplate.saveTemplate()) { editingTemplate.saveTemplate(); - FineLoggerFactory.getLogger().info(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Template_Already_Saved", - editingTemplate.getEditingFILE().getName())); + FRLogger.getLogger().log( + Level.INFO, + Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{ + editingTemplate.getEditingFILE().getName(), "."})); } } } @@ -847,7 +778,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 添加新建模板, 并激活. */ public void addAndActivateJTemplate() { - addAndActivateJTemplate(ad.createNewTemplate()); layeredPane.repaint(); } @@ -892,7 +822,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param e 事件 */ public void targetModified(TargetModifiedEvent e) { - this.checkToolbarMenuEnable(); } @@ -902,7 +831,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param jt 模板 */ public void templateClosed(JTemplate jt) { - } /** @@ -911,7 +839,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param jt 模板 */ public void templateOpened(JTemplate jt) { - } /** @@ -920,7 +847,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param jt 模板 */ public void templateSaved(JTemplate jt) { - this.checkToolbarMenuEnable(); } @@ -931,22 +857,22 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta */ public void openTemplate(FILE tplFile) { // 测试连接,如果连接失败,则提示 -// try { -// if (FRContext.getCommonOperator() != null -// && !FRContext.getCommonOperator().testServerConnectionWithOutShowMessagePane()) { -// JOptionPane.showMessageDialog( -// DesignerContext.getDesignerFrame(), -// com.fr.design.i18n.Toolkit.i18nText(new String[]{"FR-Chart-Server_disconnected", "FR-Server-Design_template_unopened"}, new String[]{ -// ",", "!"}), com.fr.design.i18n.Toolkit.i18nText("FR-Server-All_Error"), JOptionPane.ERROR_MESSAGE); -// return; -// } -// } catch (Exception e) { -// FineLoggerFactory.getLogger().error(e.getMessage()); -// } + try { + if (FRContext.getCurrentEnv() != null + && !FRContext.getCurrentEnv().testServerConnectionWithOutShowMessagePane()) { + JOptionPane.showMessageDialog( + DesignerContext.getDesignerFrame(), + Inter.getLocText(new String[]{"FR-Chart-Server_disconnected", "FR-Server-Design_template_unopened"}, new String[]{ + ",", "!"}), Inter.getLocText("FR-Server-All_Error"), JOptionPane.ERROR_MESSAGE); + return; + } + } catch (Exception e) { + FRLogger.getLogger().error(e.getMessage()); + } // p:判断一下,如何文件为空或者文件不存在,直接返回. if (tplFile == null || !tplFile.exists()) { - JOptionPane.showMessageDialog(this, com.fr.design.i18n.Toolkit.i18nText("Warning-Template_Do_Not_Exsit"), + JOptionPane.showMessageDialog(this, Inter.getLocText("Warning-Template_Do_Not_Exsit"), ProductConstants.PRODUCT_NAME, JOptionPane.INFORMATION_MESSAGE); DesignerFrameFileDealerPane.getInstance().refresh(); return; @@ -955,7 +881,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta try { openFile(tplFile); } catch (Throwable t) { - FineLoggerFactory.getLogger().error(t.getMessage(), t); + FRLogger.getLogger().error(t.getMessage(), t); addAndActivateJTemplate(); } @@ -969,7 +895,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @date 2014-10-14-下午6:30:37 */ private boolean inValidDesigner(JTemplate jt) { - return jt.isOldDesigner() || (!jt.isJWorkBook() && jt.isNewDesigner()); } @@ -980,7 +905,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @date 2014-10-14-下午6:31:05 */ private void openFile(FILE tplFile) { - String fileName = tplFile.getName(); int indexOfLastDot = fileName.lastIndexOf(CoreConstants.DOT); if (indexOfLastDot < 0) { @@ -989,13 +913,16 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta String fileExtention = fileName.substring(indexOfLastDot + 1); for (int i = 0, len = appList.size(); i < len; i++) { App app = appList.get(i); - String[] defaultAppExtentions = app.defaultExtensions(); + String[] defaultAppExtentions = app.defaultExtentions(); boolean opened = false; for (int j = 0; j < defaultAppExtentions.length; j++) { if (defaultAppExtentions[j].equalsIgnoreCase(fileExtention)) { - // 不要catch - JTemplate jt = app.openTemplate(tplFile); - + JTemplate jt = null; + try { + jt = app.openTemplate(tplFile); + } catch (Exception e) { + FRLogger.getLogger().error(e.getMessage(), e); + } if (jt == null) { return; } @@ -1026,7 +953,16 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta */ private void activeTemplate(FILE tplFile, JTemplate jt) { // 如果该模板已经打开,则进行激活就可以了 - int index = HistoryTemplateListPane.getInstance().contains(tplFile.getPath()); + String fullName = StableUtils.pathJoin(new String[]{ProjectConstants.REPORTLETS_NAME, tplFile.getName()}); + if (tplFile instanceof FileNodeFILE) { + fullName = ((FileNodeFILE) tplFile).getEnvPath() + "/" + tplFile.getPath(); + } + // 如果是从文件夹打开的文件,不是从设计器文件树打开的文件,则直接取path就行 + if (tplFile instanceof FileFILE) { + fullName = tplFile.getPath(); + } + fullName = OperatingSystem.isWindows() ? fullName.replaceAll("/", "\\\\") : fullName.replaceAll("\\\\", "/"); + int index = HistoryTemplateListPane.getInstance().contains(fullName); List> historyList = HistoryTemplateListPane.getInstance().getHistoryList(); if (index != -1) { historyList.get(index).activeJTemplate(index, jt); @@ -1039,12 +975,9 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * Exit退出 */ public void exit() { - Thread thread = new Thread() { - @Override public void run() { - DesignerEnvManager.doEndMapSaveWorkersIndesign(); } }; @@ -1053,7 +986,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta try { thread.join(); } catch (InterruptedException e) { - FineLoggerFactory.getLogger().error("Map Thread Error"); + FRLogger.getLogger().error("Map Thread Error"); } DesignerEnvManager.getEnvManager().setLastOpenFile( @@ -1070,8 +1003,14 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta DesignerEnvManager.getEnvManager().saveXMLFile(); - WorkContext.switchTo(null); - + Env currentEnv = FRContext.getCurrentEnv(); + try { + EnvContext.fireBeforeSignOut(); + currentEnv.signOut(); + EnvContext.fireAfterSignOut(); + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); + } this.setVisible(false); this.dispose(); @@ -1085,22 +1024,18 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta @Override public void dragEnter(DropTargetDragEvent event) { - } @Override public void dragExit(DropTargetEvent event) { - } @Override public void dragOver(DropTargetDragEvent event) { - } @Override public void dropActionChanged(DropTargetDragEvent event) { - if (!isDragAcceptable(event)) { event.rejectDrag(); return; @@ -1110,7 +1045,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta @SuppressWarnings("unchecked") @Override public void drop(DropTargetDropEvent event) { - if (!isDropAcceptable(event)) { event.rejectDrop(); return; @@ -1131,25 +1065,19 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } } } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); + FRContext.getLogger().error(e.getMessage(), e); } } event.dropComplete(true); } public boolean isDragAcceptable(DropTargetDragEvent event) { - return (event.getDropAction() & DnDConstants.ACTION_COPY_OR_MOVE) != 0; } public boolean isDropAcceptable(DropTargetDropEvent event) { - return (event.getDropAction() & DnDConstants.ACTION_COPY_OR_MOVE) != 0; } } - public ProgressDialog getProgressDialog() { - - return progressDialog; - } } \ No newline at end of file From e8a5d074a446bff3cb5bc978675751cbaa28cd3e Mon Sep 17 00:00:00 2001 From: hzzz Date: Tue, 31 Jul 2018 11:35:04 +0800 Subject: [PATCH 2/4] =?UTF-8?q?REPORT-9221=2010.0=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E5=85=BC=E5=AE=B9-=E7=89=88=E6=9C=AC=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/WebPreviewUtils.java | 10 +- .../fr/design/file/MutilTempalteTabPane.java | 26 +- .../com/fr/design/file/NewTemplatePane.java | 29 +- .../fun/TemplateTreeShortCutProvider.java | 14 + .../AbstractTemplateTreeShortCutProvider.java | 26 ++ .../fr/design/mainframe/DesignerFrame.java | 290 ++++++++++++------ .../DesignerFrameFileDealerPane.java | 38 ++- .../com/fr/design/mainframe/JTemplate.java | 8 +- .../mainframe/ToolBarNewTemplatePane.java | 36 +++ .../mainframe/toolbar/ToolBarMenuDock.java | 53 ++-- .../fr/design/mainframe/toolbar/VcsScene.java | 45 +++ .../java/com/fr/design/menu/ShortCut.java | 7 + .../java/com/fr/design/mainframe/JForm.java | 10 +- .../com/fr/design/mainframe/JWorkBook.java | 11 +- .../src/main/java/com/fr/start/Designer.java | 7 +- 15 files changed, 447 insertions(+), 163 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/fun/TemplateTreeShortCutProvider.java create mode 100644 designer-base/src/main/java/com/fr/design/fun/impl/AbstractTemplateTreeShortCutProvider.java create mode 100644 designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java create mode 100644 designer-base/src/main/java/com/fr/design/mainframe/toolbar/VcsScene.java diff --git a/designer-base/src/main/java/com/fr/design/actions/file/WebPreviewUtils.java b/designer-base/src/main/java/com/fr/design/actions/file/WebPreviewUtils.java index 5cb36f3df..e1c426eec 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/WebPreviewUtils.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/WebPreviewUtils.java @@ -1,6 +1,7 @@ package com.fr.design.actions.file; import com.fr.base.extension.FileExtension; +import com.fr.base.vcs.DesignerMode; import com.fr.design.fun.PreviewProvider; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; @@ -15,6 +16,7 @@ import com.fr.stable.web.AbstractWebletCreator; import javax.swing.JOptionPane; import java.util.Collections; +import java.util.HashMap; import java.util.Map; public final class WebPreviewUtils { @@ -34,6 +36,12 @@ public final class WebPreviewUtils { return; } + if (map == null || map == Collections.EMPTY_MAP) { + map = new HashMap<>(); + } + if (DesignerMode.isVcsMode()) { + map.put("mode", DesignerMode.getMode().toString()); + } DesignerContext.getDesignerFrame().refreshToolbar(); jt.stopEditing(); @@ -105,4 +113,4 @@ public final class WebPreviewUtils { } } } -} \ No newline at end of file +} diff --git a/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java b/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java index 2ebd5fe9c..0190e6078 100644 --- a/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java +++ b/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java @@ -3,6 +3,7 @@ package com.fr.design.file; import com.fr.base.BaseUtils; import com.fr.base.GraphHelper; +import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.gui.imenu.UIScrollPopUpMenu; @@ -313,6 +314,15 @@ public class MutilTempalteTabPane extends JComponent implements MouseListener, M } + public void paint(Graphics g) { + //不可见时,按钮.4f透明 + AlphaComposite composite = DesignerMode.isVcsMode() + ? AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.4f) + : (AlphaComposite) ((Graphics2D) g).getComposite(); + ((Graphics2D) g).setComposite(composite); + super.paint(g); + } + private void paintBackgroundAndLine(Graphics2D g2d, double maxWidth) { paintDefaultBackground(g2d); //最多能画的个数 @@ -359,7 +369,9 @@ public class MutilTempalteTabPane extends JComponent implements MouseListener, M templateStartX += realWidth; } + if (!DesignerMode.isVcsMode()) { paintListDown(g2d, maxWidth); + } paintUnderLine(templateStartX, maxWidth, g2d); } @@ -538,7 +550,9 @@ public class MutilTempalteTabPane extends JComponent implements MouseListener, M g2d.drawString(sheetName, (int) templateStartX + sheeticon.getIconWidth() + 2 * GAP, getHeight() - GAP * 2); int closePosition = (int) templateStartX + realWidth - CLOSE.getIconWidth() - SMALLGAP; int closeY = (getHeight() - closeIcon.getIconHeight()) / 2; + if (!DesignerMode.isVcsMode()) { closeIcon.paintIcon(this, g2d, closePosition, closeY); + } return closePosition; } @@ -594,7 +608,9 @@ public class MutilTempalteTabPane extends JComponent implements MouseListener, M g2d.drawString(sheetName, (int) templateStartX + sheeticon.getIconWidth() + 2 * GAP, getHeight() - GAP * 2); int closeY = (getHeight() - closeIcon.getIconHeight()) / 2; int closePosition = (int) templateStartX + realWidth - CLOSE.getIconWidth() - SMALLGAP; + if (!DesignerMode.isVcsMode()) { closeIcon.paintIcon(this, g2d, closePosition, closeY); + } return closePosition; } @@ -640,6 +656,10 @@ public class MutilTempalteTabPane extends JComponent implements MouseListener, M * @param e 鼠标事件 */ public void mousePressed(MouseEvent e) { + //如果在版本管理情况下,不允许切换tab + if (DesignerMode.isVcsMode()) { + return; + } int evtX = e.getX(); int evtY = e.getY(); @@ -672,7 +692,7 @@ public class MutilTempalteTabPane extends JComponent implements MouseListener, M openedTemplate.get(selectedIndex).stopEditing(); selectedIndex = getTemplateIndex(evtX); //如果在权限编辑情况下,不允许切换到表单类型的工作簿 - if (BaseUtils.isAuthorityEditing() && !openedTemplate.get(selectedIndex).isJWorkBook()) { + if (DesignerMode.isAuthorityEditing() && !openedTemplate.get(selectedIndex).isJWorkBook()) { DesignerContext.getDesignerFrame().addAndActivateJTemplate(openedTemplate.get(tempSelectedIndex)); JOptionPane.showMessageDialog(this, com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Form-AuthorityEdited_Cannot_be_Supported") + "!", com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); @@ -712,7 +732,7 @@ public class MutilTempalteTabPane extends JComponent implements MouseListener, M filename = OperatingSystem.isWindows() ? filename.replaceAll("/", "\\\\") : filename.replaceAll("\\\\", "/"); - if (!specifiedTemplate.isALLSaved()) { + if (!specifiedTemplate.isALLSaved() && !DesignerMode.isVcsMode()) { specifiedTemplate.stopEditing(); int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Utils-Would_you_like_to_save") + " \"" + specifiedTemplate.getEditingFILE() + "\" ?", ProductConstants.PRODUCT_NAME, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); @@ -951,4 +971,4 @@ public class MutilTempalteTabPane extends JComponent implements MouseListener, M } -} \ No newline at end of file +} diff --git a/designer-base/src/main/java/com/fr/design/file/NewTemplatePane.java b/designer-base/src/main/java/com/fr/design/file/NewTemplatePane.java index 47db76f4e..dae921a1c 100644 --- a/designer-base/src/main/java/com/fr/design/file/NewTemplatePane.java +++ b/designer-base/src/main/java/com/fr/design/file/NewTemplatePane.java @@ -1,6 +1,7 @@ package com.fr.design.file; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.DesignerContext; @@ -20,11 +21,10 @@ import java.awt.geom.Rectangle2D; public abstract class NewTemplatePane extends JComponent implements MouseListener, MouseMotionListener { private static final Icon GRAY_NEW_CPT = BaseUtils.readIcon("/com/fr/design/images/buttonicon/additicon_grey.png"); - private static final int PRE_GAP = 0; + private static final int ICON_START_X = 5; private static final int HEIGHT = 26; private Graphics2D g2d; private Icon newWorkBookIconMode = null; - private int newIconStartX = PRE_GAP; public NewTemplatePane() { @@ -49,7 +49,7 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene g2d.setColor(UIConstants.TEMPLATE_TAB_PANE_BACKGROUND); g2d.fill(new Rectangle2D.Double(0, 0, getWidth(),getHeight())); int sheetIconY = (getHeight() - newWorkBookIconMode.getIconHeight()) / 2; - newWorkBookIconMode.paintIcon(this, g2d, newIconStartX, sheetIconY); + newWorkBookIconMode.paintIcon(this, g2d, ICON_START_X, sheetIconY); // paintUnderLine(g2d); } @@ -65,7 +65,7 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene * @param e 事件 */ public void mouseClicked(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (needGrayNewCpt()) { newWorkBookIconMode = GRAY_NEW_CPT; } } @@ -76,12 +76,11 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene */ public void mousePressed(MouseEvent e) { int evtX = e.getX(); - if (BaseUtils.isAuthorityEditing()) { + if (needGrayNewCpt()) { newWorkBookIconMode = GRAY_NEW_CPT; } if (isOverNewIcon(evtX) && newWorkBookIconMode != GRAY_NEW_CPT) { newWorkBookIconMode = getMousePressNew(); - newIconStartX = 0; DesignerContext.getDesignerFrame().addAndActivateJTemplate(); } this.repaint(); @@ -92,7 +91,7 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene * @param e 事件 */ public void mouseReleased(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (needGrayNewCpt()) { newWorkBookIconMode = GRAY_NEW_CPT; } } @@ -102,7 +101,7 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene * @param e 事件 */ public void mouseEntered(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (needGrayNewCpt()) { newWorkBookIconMode = GRAY_NEW_CPT; } } @@ -112,8 +111,7 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene * @param e 事件 */ public void mouseExited(MouseEvent e) { - newIconStartX = PRE_GAP; - if (BaseUtils.isAuthorityEditing()) { + if (needGrayNewCpt()) { newWorkBookIconMode = GRAY_NEW_CPT; } else { newWorkBookIconMode = getNew(); @@ -135,10 +133,9 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene */ public void mouseMoved(MouseEvent e) { int evtX = e.getX(); - if (BaseUtils.isAuthorityEditing()) { + if (needGrayNewCpt()) { newWorkBookIconMode = GRAY_NEW_CPT; } else if (isOverNewIcon(evtX)) { - newIconStartX = 0; newWorkBookIconMode = getMouseOverNew(); } @@ -146,9 +143,13 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene } + private boolean needGrayNewCpt() { + return DesignerMode.isAuthorityEditing() || DesignerMode.isVcsMode(); + } + private boolean isOverNewIcon(int evtX) { - return (evtX >= PRE_GAP && evtX <= PRE_GAP + newWorkBookIconMode.getIconWidth()); + return (evtX >= ICON_START_X && evtX <= ICON_START_X + newWorkBookIconMode.getIconWidth()); } public void setButtonGray(boolean isGray) { @@ -161,4 +162,4 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene public abstract Icon getMousePressNew(); -} \ No newline at end of file +} diff --git a/designer-base/src/main/java/com/fr/design/fun/TemplateTreeShortCutProvider.java b/designer-base/src/main/java/com/fr/design/fun/TemplateTreeShortCutProvider.java new file mode 100644 index 000000000..f5c9e09c6 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/fun/TemplateTreeShortCutProvider.java @@ -0,0 +1,14 @@ +package com.fr.design.fun; + +import com.fr.stable.fun.mark.Aftermath; +import com.fr.stable.fun.mark.Mutable; + +/** + * 左上角目录树上边工具条的插件接口 + * Created by hzzz on 2017/11/30. + */ +public interface TemplateTreeShortCutProvider extends Mutable, Aftermath { + String XML_TAG = "TemplateTreeShortCut"; + + int CURRENT_LEVEL = 1; +} diff --git a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractTemplateTreeShortCutProvider.java b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractTemplateTreeShortCutProvider.java new file mode 100644 index 000000000..22fe8aa76 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractTemplateTreeShortCutProvider.java @@ -0,0 +1,26 @@ +package com.fr.design.fun.impl; + +import com.fr.design.actions.UpdateAction; +import com.fr.design.fun.TemplateTreeShortCutProvider; +import com.fr.stable.fun.mark.API; + +/** + * 左上角目录树上边工具条的插件接口 + * Created by hzzz on 2017/11/30. + */ +@API(level = TemplateTreeShortCutProvider.CURRENT_LEVEL) +public abstract class AbstractTemplateTreeShortCutProvider extends UpdateAction implements TemplateTreeShortCutProvider { + + @Override + public String mark4Provider() { + return getClass().getName(); + } + + @Override + public void process() { + } + + @Override + public void undo() { + } +} 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 9b93816ef..e2aaad44a 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 @@ -4,18 +4,16 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; -import com.fr.base.Env; -import com.fr.base.FRContext; import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignModelAdapter; import com.fr.design.DesignState; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.core.ActionFactory; -import com.fr.design.actions.file.SwitchExistEnv; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.TableDataTreePane; +import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.event.DesignerOpenedListener; import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedListener; @@ -28,6 +26,7 @@ import com.fr.design.fun.TitlePlaceProcessor; import com.fr.design.fun.impl.AbstractTemplateTreeShortCutProvider; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.imenu.UIMenuHighLight; +import com.fr.design.gui.iprogressbar.ProgressDialog; import com.fr.design.gui.iscrollbar.UIScrollBar; import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.layout.FRGUIPaneFactory; @@ -43,10 +42,9 @@ import com.fr.file.FILEFactory; import com.fr.file.FileFILE; import com.fr.file.FileNodeFILE; import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; import com.fr.general.GeneralContext; -import com.fr.general.Inter; -import com.fr.general.env.EnvContext; + +import com.fr.log.FineLoggerFactory; import com.fr.plugin.context.PluginContext; import com.fr.plugin.injectable.PluginModule; import com.fr.plugin.manage.PluginFilter; @@ -56,12 +54,30 @@ import com.fr.stable.CoreConstants; import com.fr.stable.OperatingSystem; import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; import com.fr.stable.image4j.codec.ico.ICODecoder; import com.fr.stable.project.ProjectConstants; - -import javax.swing.*; +import com.fr.workspace.WorkContext; +import com.fr.workspace.Workspace; +import com.fr.workspace.connect.WorkspaceConnection; + +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JLayeredPane; +import javax.swing.JMenuBar; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.WindowConstants; import javax.swing.border.MatteBorder; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Graphics; +import java.awt.Insets; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Toolkit; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.dnd.DnDConstants; @@ -85,40 +101,54 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; -import java.util.logging.Level; public class DesignerFrame extends JFrame implements JTemplateActionListener, TargetModifiedListener { + public static final String DESIGNER_FRAME_NAME = "designer_frame"; + public static final Dimension MIN_SIZE = new Dimension(100, 100); + private static final long serialVersionUID = -8732559571067484460L; + private static final int LEFT_ALIGN_GAP = -5; + private static final int MENU_HEIGHT = 26; + private static final Integer SECOND_LAYER = new Integer(100); + private static final Integer TOP_LAYER = new Integer((200)); + private static java.util.List> appList = new java.util.ArrayList>(); private List designerOpenedListenerList = new ArrayList<>(); - //顶部日志+登陆按钮 - private static final JPanel northEastPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - - private static ToolBarMenuDock ad; + private ToolBarMenuDock ad; private DesktopCardPane centerTemplateCardPane; private JPanel toolbarPane; + private JComponent toolbarComponent; private JPanel menuPane; + private JMenuBar menuBar; + private JPanel eastCenterPane; + private UIToolbar combineUp; + private NewTemplatePane newWorkBookPane = null; + private Icon closeMode = UIConstants.CLOSE_OF_AUTHORITY; + private JLayeredPane layeredPane = this.getLayeredPane(); + private JPanel basePane = new JPanel(); + // 上面的虚线 private DottedLine upDottedLine; + // 下面的虚线 private DottedLine downDottedLine; @@ -129,18 +159,18 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta private DottedLine rightDottedLine; private int contentWidth = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth()); + private int contentHeight = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight()); private WindowAdapter windowAdapter = new WindowAdapter() { + public void windowOpened(WindowEvent e) { - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().setComposite(); - reCalculateFrameSize(); - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().doResize(); } @Override public void windowClosing(WindowEvent e) { + SaveSomeTemplatePane saveSomeTempaltePane = new SaveSomeTemplatePane(true); // 只有一个文件未保存时 if (HistoryTemplateListPane.getInstance().getHistoryCount() == 1) { @@ -158,7 +188,9 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta }; private JComponent closeButton = new JComponent() { + protected void paintComponent(Graphics g) { + g.setColor(UIConstants.NORMAL_BACKGROUND); g.fillArc(0, 0, UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH, UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH, 0, 360); @@ -167,19 +199,23 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta }; private MouseListener closeMouseListener = new MouseAdapter() { + public void mousePressed(MouseEvent e) { + closeMode = UIConstants.CLOSE_PRESS_AUTHORITY; closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); closeButton.repaint(); } public void mouseExited(MouseEvent e) { + closeMode = UIConstants.CLOSE_OF_AUTHORITY; closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); closeButton.repaint(); } public void mouseMoved(MouseEvent e) { + closeMode = UIConstants.CLOSE_OVER_AUTHORITY; closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); closeButton.repaint(); @@ -200,12 +236,15 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } public void mouseEntered(MouseEvent e) { + closeMode = UIConstants.CLOSE_OVER_AUTHORITY; closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); closeButton.repaint(); } }; + private ProgressDialog progressDialog; + public DesignerFrame(ToolBarMenuDock ad) { setName(DESIGNER_FRAME_NAME); @@ -218,7 +257,9 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta // the content pane basePane.setLayout(new BorderLayout()); toolbarPane = new JPanel() { + public Dimension getPreferredSize() { + Dimension dim = super.getPreferredSize(); // dim.height = TOOLBAR_HEIGHT; return dim; @@ -261,19 +302,32 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta this.addWindowListeners(getFrameListeners()); this.addComponentListener(new ComponentAdapter() { + public void componentResized(ComponentEvent e) { + reCalculateFrameSize(); - if (DesignerMode.isAuthorityEditing()) { + if (BaseUtils.isAuthorityEditing()) { doResize(); } } }); + this.addDesignerOpenedListener(new DesignerOpenedListener() { + + @Override + public void designerOpened() { + + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().setComposite(); + reCalculateFrameSize(); + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().doResize(); + } + }); this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); this.setVisible(false); this.setExtendedState(JFrame.MAXIMIZED_BOTH); this.setDropTarget(new DropTarget(this, DnDConstants.ACTION_MOVE, new FileDropTargetListener(), true)); closeMode = UIConstants.CLOSE_OF_AUTHORITY; initMenuPane(); + this.progressDialog = new ProgressDialog(this); } /** @@ -282,6 +336,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param app 注册app. */ public static void registApp(App app) { + if (app != null) { appList.add(app); } @@ -298,6 +353,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 注册"设计器初始化完成"的监听 */ public void addDesignerOpenedListener(DesignerOpenedListener listener) { + designerOpenedListenerList.add(listener); } @@ -305,12 +361,14 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 触发"设计器初始化完成"事件 */ public void fireDesignerOpened() { + for (DesignerOpenedListener listener : designerOpenedListenerList) { listener.designerOpened(); } } protected DesktopCardPane getCenterTemplateCardPane() { + return centerTemplateCardPane; } @@ -318,41 +376,45 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 初始menuPane的方法 方便OEM时修改该组件 */ protected void initMenuPane() { + menuPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); menuPane.add(new UIMenuHighLight(), BorderLayout.SOUTH); - menuPane.add(initNorthEastPane(), BorderLayout.EAST); + menuPane.add(initNorthEastPane(ad), BorderLayout.EAST); basePane.add(menuPane, BorderLayout.NORTH); this.resetToolkitByPlus(null); } /** + * @param ad * @return */ - protected JPanel initNorthEastPane() { + protected JPanel initNorthEastPane(final ToolBarMenuDock ad) { //hugh: private修改为protected方便oem的时候修改右上的组件构成 - + //顶部日志+登陆按钮 + final JPanel northEastPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); //优先级为-1,保证最后全面刷新一次 GeneralContext.listenPluginRunningChanged(new PluginEventListener(-1) { @Override public void on(PluginEvent event) { - refreshNorthEastPane(); - DesignUtils.refreshDesignerFrame(FRContext.getCurrentEnv()); + refreshNorthEastPane(northEastPane, ad); + DesignUtils.refreshDesignerFrame(); } }, new PluginFilter() { @Override public boolean accept(PluginContext context) { - return !SwitchExistEnv.isSwitching() - && context.contain(PluginModule.ExtraDesign); + + return context.contain(PluginModule.ExtraDesign); } }); - refreshNorthEastPane(); + refreshNorthEastPane(northEastPane, ad); return northEastPane; } - public static void refreshNorthEastPane() { + private void refreshNorthEastPane(JPanel northEastPane, ToolBarMenuDock ad) { + northEastPane.removeAll(); northEastPane.setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 0)); northEastPane.add(LogMessageBar.getInstance()); @@ -368,24 +430,27 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } public void initTitleIcon() { + try { @SuppressWarnings("unchecked") List image = ICODecoder.read(DesignerFrame.class .getResourceAsStream("/com/fr/base/images/oem/logo.ico")); this.setIconImages(image); } catch (IOException e) { - FRContext.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); this.setIconImage(BaseUtils.readImage("/com/fr/base/images/oem/logo.png")); } } private void addWindowListeners(ArrayList listeners) { + for (WindowListener listener : listeners) { this.addWindowListener(listener); } } protected ArrayList getFrameListeners() { + ArrayList arrayList = new ArrayList(); arrayList.add(windowAdapter); return arrayList; @@ -393,11 +458,13 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta protected void laoyoutWestPane() { + basePane.add(WestRegionContainerPane.getInstance(), BorderLayout.WEST); } // 调整windows大小 private void reCalculateFrameSize() { + contentHeight = layeredPane.getHeight(); contentWidth = layeredPane.getWidth(); layeredPane.remove(basePane); @@ -410,6 +477,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 更新 */ public void populateAuthorityArea() { + int centerWidth = contentWidth - WestRegionContainerPane.getInstance().getContainerWidth() - EastRegionContainerPane.getInstance().getContainerWidth(); // 上面的虚线 @@ -434,6 +502,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } private void addDottedLine() { + layeredPane.add(upDottedLine, SECOND_LAYER); layeredPane.add(downDottedLine, SECOND_LAYER); layeredPane.add(leftDottedLine, SECOND_LAYER); @@ -442,6 +511,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } private void removeDottedLine() { + layeredPane.remove(upDottedLine); layeredPane.remove(downDottedLine); layeredPane.remove(leftDottedLine); @@ -450,6 +520,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } public JLayeredPane getContentFrame() { + return layeredPane; } @@ -457,7 +528,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 刷新 */ public void refreshDottedLine() { - if (DesignerMode.isAuthorityEditing()) { + + if (BaseUtils.isAuthorityEditing()) { populateAuthorityArea(); populateCloseButton(); addDottedLine(); @@ -471,6 +543,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 刷新DottedLine */ public void doResize() { + removeDottedLine(); populateAuthorityArea(); populateCloseButton(); @@ -495,6 +568,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 退出权限编辑时,将所有的做过权限编辑的状态,作为一个状态赋给报、报表主体 */ private void fireAuthorityStateToNomal() { + java.util.List> opendedTemplate = HistoryTemplateListPane.getInstance().getHistoryList(); for (int i = 0; i < opendedTemplate.size(); i++) { // 如果在权限编辑时做过操作,则将做过的操作作为一个整体状态赋给正在报表 @@ -505,10 +579,12 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } public void setCloseMode(Icon closeMode) { + this.closeMode = closeMode; } private UIToolbar combineUpTooBar(JComponent[] toolbar4Form) { + combineUp = new UIToolbar(FlowLayout.LEFT); combineUp.setBorder(new MatteBorder(new Insets(0, LEFT_ALIGN_GAP, 1, 0), UIConstants.LINE_COLOR)); combineUp.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 2)); @@ -516,7 +592,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta for (int i = 0; i < fixButtons.length; i++) { combineUp.add(fixButtons[i]); } - if (!DesignerMode.isAuthorityEditing()) { + if (!BaseUtils.isAuthorityEditing()) { combineUp.addSeparator(new Dimension(2, 16)); if (toolbar4Form != null) { for (int i = 0; i < toolbar4Form.length; i++) { @@ -535,6 +611,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } private void addExtraButtons() { + JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (jt == null) { return; @@ -551,6 +628,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } private void addShareButton() { + JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (jt == null) { return; @@ -570,6 +648,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param al 组件名称 */ public void checkCombineUp(boolean flag, ArrayList al) { + combineUp.checkComponentsByNames(flag, al); } @@ -578,6 +657,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 刷新工具条. */ public void refreshToolbar() { + this.ad.updateToolBarDef(); } @@ -587,6 +667,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param plus 工具条中相关信息 */ public void resetToolkitByPlus(ToolBarMenuDockPlus plus) { + if (plus == null) { plus = ToolBarMenuDock.NULLAVOID; } @@ -619,6 +700,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } public JComponent getToolbarComponent() { + return this.toolbarComponent; } @@ -627,22 +709,22 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta */ public void needToAddAuhtorityPaint() { - newWorkBookPane.setButtonGray(DesignerMode.isAuthorityEditing()); + newWorkBookPane.setButtonGray(BaseUtils.isAuthorityEditing()); // 进入或退出权限编辑模式,通知插件 Set extraShortCuts = ExtraDesignClassManager.getInstance().getExtraShortCuts(); for (ShortCut shortCut : extraShortCuts) { if (shortCut instanceof AbstractTemplateTreeShortCutProvider) { - ((AbstractTemplateTreeShortCutProvider) shortCut).notifyFromAuhtorityChange(DesignerMode.isAuthorityEditing()); + ((AbstractTemplateTreeShortCutProvider) shortCut).notifyFromAuhtorityChange(BaseUtils.isAuthorityEditing()); } } - } /** * 检查工具条. */ private void checkToolbarMenuEnable() { + if (this.ad != null) { this.ad.updateMenuDef(); this.ad.updateToolBarDef(); @@ -653,29 +735,34 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 设置标题 */ public void setTitle() { + JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); StringBuilder defaultTitleSB = new StringBuilder(); defaultTitleSB.append(ProductConstants.PRODUCT_NAME); defaultTitleSB.append(" "); defaultTitleSB.append(ProductConstants.BRANCH); + defaultTitleSB.append(" "); // james:标识登录的用户和登录的ENV String envName = DesignerEnvManager.getEnvManager().getCurEnvName(); - Env env = DesignerEnvManager.getEnvManager().getEnv(envName); - if (env != null) { - defaultTitleSB.append(env.getUser()).append('@').append(envName).append('['); - defaultTitleSB.append(env.getEnvDescription()); - defaultTitleSB.append(']'); - if (editingTemplate != null) { - String path = editingTemplate.getEditingFILE().getPath(); - if (!editingTemplate.getEditingFILE().exists()) { - path = FILEFactory.MEM_PREFIX + path; - } else if (path.startsWith(ProjectConstants.REPORTLETS_NAME)) { - path = env.getPath() + File.separator + path; - } - defaultTitleSB.append(" " + path); - } + Workspace workspace = WorkContext.getCurrent(); + DesignerWorkspaceInfo info = DesignerEnvManager.getEnvManager().getWorkspaceInfo(envName); + String username = null; + if (info != null) { + WorkspaceConnection connection = info.getConnection(); + username = connection == null ? StringUtils.EMPTY : connection.getUserName(); } + defaultTitleSB.append(username).append("@").append(envName).append("[").append(workspace.getDescription()).append("]"); + if (editingTemplate != null) { + String path = editingTemplate.getEditingFILE().getPath(); + if (!editingTemplate.getEditingFILE().exists()) { + path = FILEFactory.MEM_PREFIX + path; + } else if (path.startsWith(ProjectConstants.REPORTLETS_NAME)) { + path = workspace.getPath() + File.separator + path; + } + defaultTitleSB.append(" " + path); + } + setTitle(defaultTitleSB.toString()); } @@ -712,16 +799,16 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta /** * 报表运行环境改变时,需要刷新某些面板 - * - * @param env 环境 */ - public void refreshEnv(Env env) { + public void refreshEnv() { + this.setTitle(); DesignerFrameFileDealerPane.getInstance().refreshDockingView(); TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()); TemplateTreePane.getInstance().refreshDockingView(); DesignTableDataManager.clearGlobalDs(); EastRegionContainerPane.getInstance().refreshDownPane(); + JTemplate template = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (template != null) { template.refreshToolArea(); @@ -732,6 +819,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 返回选中的模板. */ public JTemplate getSelectedJTemplate() { + return this.centerTemplateCardPane.getSelectedJTemplate(); } @@ -740,6 +828,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta */ public void saveCurrentEditingTemplate() { + JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (editingTemplate == null) { return; @@ -752,23 +841,19 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta editingTemplate.stopEditing(); if (!editingTemplate.getEditingFILE().exists()) { int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), - Inter.getLocText("Utils-Would_you_like_to_save") + " \"" + editingTemplate.getEditingFILE() + com.fr.design.i18n.Toolkit.i18nText("Utils-Would_you_like_to_save") + " \"" + editingTemplate.getEditingFILE() + "\" ?", ProductConstants.PRODUCT_NAME, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (returnVal == JOptionPane.YES_OPTION && editingTemplate.saveTemplate()) { editingTemplate.saveTemplate(); - FRLogger.getLogger().log( - Level.INFO, - Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{ - editingTemplate.getEditingFILE().getName(), "."})); + FineLoggerFactory.getLogger().info(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Template_Already_Saved", + editingTemplate.getEditingFILE().getName())); } } else { if (editingTemplate.saveTemplate()) { editingTemplate.saveTemplate(); - FRLogger.getLogger().log( - Level.INFO, - Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{ - editingTemplate.getEditingFILE().getName(), "."})); + FineLoggerFactory.getLogger().info(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Template_Already_Saved", + editingTemplate.getEditingFILE().getName())); } } } @@ -778,6 +863,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 添加新建模板, 并激活. */ public void addAndActivateJTemplate() { + addAndActivateJTemplate(ad.createNewTemplate()); layeredPane.repaint(); } @@ -822,6 +908,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param e 事件 */ public void targetModified(TargetModifiedEvent e) { + this.checkToolbarMenuEnable(); } @@ -831,6 +918,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param jt 模板 */ public void templateClosed(JTemplate jt) { + } /** @@ -839,6 +927,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param jt 模板 */ public void templateOpened(JTemplate jt) { + } /** @@ -847,6 +936,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param jt 模板 */ public void templateSaved(JTemplate jt) { + this.checkToolbarMenuEnable(); } @@ -857,22 +947,22 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta */ public void openTemplate(FILE tplFile) { // 测试连接,如果连接失败,则提示 - try { - if (FRContext.getCurrentEnv() != null - && !FRContext.getCurrentEnv().testServerConnectionWithOutShowMessagePane()) { - JOptionPane.showMessageDialog( - DesignerContext.getDesignerFrame(), - Inter.getLocText(new String[]{"FR-Chart-Server_disconnected", "FR-Server-Design_template_unopened"}, new String[]{ - ",", "!"}), Inter.getLocText("FR-Server-All_Error"), JOptionPane.ERROR_MESSAGE); - return; - } - } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); - } +// try { +// if (FRContext.getCommonOperator() != null +// && !FRContext.getCommonOperator().testServerConnectionWithOutShowMessagePane()) { +// JOptionPane.showMessageDialog( +// DesignerContext.getDesignerFrame(), +// com.fr.design.i18n.Toolkit.i18nText(new String[]{"FR-Chart-Server_disconnected", "FR-Server-Design_template_unopened"}, new String[]{ +// ",", "!"}), com.fr.design.i18n.Toolkit.i18nText("FR-Server-All_Error"), JOptionPane.ERROR_MESSAGE); +// return; +// } +// } catch (Exception e) { +// FineLoggerFactory.getLogger().error(e.getMessage()); +// } // p:判断一下,如何文件为空或者文件不存在,直接返回. if (tplFile == null || !tplFile.exists()) { - JOptionPane.showMessageDialog(this, Inter.getLocText("Warning-Template_Do_Not_Exsit"), + JOptionPane.showMessageDialog(this, com.fr.design.i18n.Toolkit.i18nText("Warning-Template_Do_Not_Exsit"), ProductConstants.PRODUCT_NAME, JOptionPane.INFORMATION_MESSAGE); DesignerFrameFileDealerPane.getInstance().refresh(); return; @@ -881,7 +971,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta try { openFile(tplFile); } catch (Throwable t) { - FRLogger.getLogger().error(t.getMessage(), t); + FineLoggerFactory.getLogger().error(t.getMessage(), t); addAndActivateJTemplate(); } @@ -895,6 +985,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @date 2014-10-14-下午6:30:37 */ private boolean inValidDesigner(JTemplate jt) { + return jt.isOldDesigner() || (!jt.isJWorkBook() && jt.isNewDesigner()); } @@ -905,6 +996,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @date 2014-10-14-下午6:31:05 */ private void openFile(FILE tplFile) { + String fileName = tplFile.getName(); int indexOfLastDot = fileName.lastIndexOf(CoreConstants.DOT); if (indexOfLastDot < 0) { @@ -913,16 +1005,13 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta String fileExtention = fileName.substring(indexOfLastDot + 1); for (int i = 0, len = appList.size(); i < len; i++) { App app = appList.get(i); - String[] defaultAppExtentions = app.defaultExtentions(); + String[] defaultAppExtentions = app.defaultExtensions(); boolean opened = false; for (int j = 0; j < defaultAppExtentions.length; j++) { if (defaultAppExtentions[j].equalsIgnoreCase(fileExtention)) { - JTemplate jt = null; - try { - jt = app.openTemplate(tplFile); - } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage(), e); - } + // 不要catch + JTemplate jt = app.openTemplate(tplFile); + if (jt == null) { return; } @@ -953,16 +1042,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta */ private void activeTemplate(FILE tplFile, JTemplate jt) { // 如果该模板已经打开,则进行激活就可以了 - String fullName = StableUtils.pathJoin(new String[]{ProjectConstants.REPORTLETS_NAME, tplFile.getName()}); - if (tplFile instanceof FileNodeFILE) { - fullName = ((FileNodeFILE) tplFile).getEnvPath() + "/" + tplFile.getPath(); - } - // 如果是从文件夹打开的文件,不是从设计器文件树打开的文件,则直接取path就行 - if (tplFile instanceof FileFILE) { - fullName = tplFile.getPath(); - } - fullName = OperatingSystem.isWindows() ? fullName.replaceAll("/", "\\\\") : fullName.replaceAll("\\\\", "/"); - int index = HistoryTemplateListPane.getInstance().contains(fullName); + int index = HistoryTemplateListPane.getInstance().contains(tplFile.getPath()); List> historyList = HistoryTemplateListPane.getInstance().getHistoryList(); if (index != -1) { historyList.get(index).activeJTemplate(index, jt); @@ -975,9 +1055,12 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * Exit退出 */ public void exit() { + Thread thread = new Thread() { + @Override public void run() { + DesignerEnvManager.doEndMapSaveWorkersIndesign(); } }; @@ -986,7 +1069,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta try { thread.join(); } catch (InterruptedException e) { - FRLogger.getLogger().error("Map Thread Error"); + FineLoggerFactory.getLogger().error("Map Thread Error"); } DesignerEnvManager.getEnvManager().setLastOpenFile( @@ -1003,14 +1086,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta DesignerEnvManager.getEnvManager().saveXMLFile(); - Env currentEnv = FRContext.getCurrentEnv(); - try { - EnvContext.fireBeforeSignOut(); - currentEnv.signOut(); - EnvContext.fireAfterSignOut(); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - } + WorkContext.switchTo(null); + this.setVisible(false); this.dispose(); @@ -1024,18 +1101,22 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta @Override public void dragEnter(DropTargetDragEvent event) { + } @Override public void dragExit(DropTargetEvent event) { + } @Override public void dragOver(DropTargetDragEvent event) { + } @Override public void dropActionChanged(DropTargetDragEvent event) { + if (!isDragAcceptable(event)) { event.rejectDrag(); return; @@ -1045,6 +1126,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta @SuppressWarnings("unchecked") @Override public void drop(DropTargetDropEvent event) { + if (!isDropAcceptable(event)) { event.rejectDrop(); return; @@ -1065,19 +1147,25 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } } } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } event.dropComplete(true); } public boolean isDragAcceptable(DropTargetDragEvent event) { + return (event.getDropAction() & DnDConstants.ACTION_COPY_OR_MOVE) != 0; } public boolean isDropAcceptable(DropTargetDropEvent event) { + return (event.getDropAction() & DnDConstants.ACTION_COPY_OR_MOVE) != 0; } } -} \ No newline at end of file + public ProgressDialog getProgressDialog() { + + return progressDialog; + } +} 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 137d0bf4d..c09e6e846 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 @@ -31,21 +31,30 @@ import com.fr.file.FILE; import com.fr.file.FileNodeFILE; import com.fr.file.filetree.FileNode; import com.fr.general.ComparatorUtils; - import com.fr.io.utils.ResourceIOUtils; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; import com.fr.stable.project.ProjectConstants; import com.fr.workspace.WorkContext; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JDialog; +import javax.swing.JPanel; +import javax.swing.SwingConstants; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; +import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -59,9 +68,13 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt private CardLayout card; private JPanel cardPane; + private java.util.List otherToobarStateChangeListeners= new ArrayList<>(); - private FileOperations selectedOperation; + public FileOperations getSelectedOperation() { + return selectedOperation; + } + private FileOperations selectedOperation; private UIToolbar toolBar; private OpenReportAction openReportAction = new OpenReportAction(); @@ -244,6 +257,21 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt selectedOperation.refresh(); stateChange(); + + } + } + + public void addToobarStateChangeListener(FileToolbarStateChangeListener toobarStateChangeListener) { + this.otherToobarStateChangeListeners.add(toobarStateChangeListener); + } + + public void removeToobarStateChangeListener(FileToolbarStateChangeListener toobarStateChangeListener) { + this.otherToobarStateChangeListeners.remove(toobarStateChangeListener); + } + + private void otherStateChange() { + for (FileToolbarStateChangeListener toobarStateChangeListener : otherToobarStateChangeListeners) { + toobarStateChangeListener.stateChange(); } } @@ -578,4 +606,4 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt return null; } -} \ No newline at end of file +} 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 9f03ddcf6..d896c1364 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 @@ -6,6 +6,7 @@ import com.fr.base.Parameter; import com.fr.base.ScreenResolution; import com.fr.base.io.BaseBook; import com.fr.base.iofile.attr.TemplateIdAttrMark; +import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignModelAdapter; import com.fr.design.DesignState; import com.fr.design.DesignerEnvManager; @@ -32,6 +33,7 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.templateinfo.TemplateInfoCollector; import com.fr.design.mainframe.templateinfo.TemplateProcessInfo; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; +import com.fr.design.mainframe.toolbar.VcsScene; import com.fr.design.menu.MenuDef; import com.fr.design.menu.NameSeparator; import com.fr.design.menu.ShortCut; @@ -699,7 +701,9 @@ public abstract class JTemplate> */ @Override public ShortCut[] shortcut4FileMenu() { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isVcsMode()) { + return VcsScene.shortcut4FileMenu(this); + } else if (DesignerMode.isAuthorityEditing()) { return new ShortCut[]{new SaveTemplateAction(this), new UndoAction(this), new RedoAction(this)}; } else { return new ShortCut[]{new SaveTemplateAction(this), new SaveAsTemplateAction(this), new UndoAction(this), new RedoAction(this)}; @@ -721,7 +725,9 @@ public abstract class JTemplate> tplMenu.addShortCut(new TableDataSourceAction(this)); tplMenu.addShortCut(shortcut4TemplateMenu()); } + if (!DesignerMode.isVcsMode()) { tplMenu.addShortCut(shortCuts4Authority()); + } return new MenuDef[]{tplMenu}; } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java b/designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java new file mode 100644 index 000000000..1f7cab6d6 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java @@ -0,0 +1,36 @@ +package com.fr.design.mainframe; + +import com.fr.base.BaseUtils; +import com.fr.design.file.NewTemplatePane; + +import javax.swing.Icon; + +/** + * Created by hzzz on 2017/12/26. + */ +public class ToolBarNewTemplatePane extends NewTemplatePane { + + private static final ToolBarNewTemplatePane instance = new ToolBarNewTemplatePane(); + + private ToolBarNewTemplatePane() { + } + + public static NewTemplatePane getInstance() { + return instance; + } + + @Override + public Icon getNew() { + return BaseUtils.readIcon("/com/fr/design/images/buttonicon/addicon.png"); + } + + @Override + public Icon getMouseOverNew() { + return BaseUtils.readIcon("/com/fr/design/images/buttonicon/add_press.png"); + } + + @Override + public Icon getMousePressNew() { + return BaseUtils.readIcon("/com/fr/design/images/buttonicon/add_press.png"); + } +} diff --git a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index fcf8b7ddc..5b7d561ab 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -3,8 +3,8 @@ */ package com.fr.design.mainframe.toolbar; -import com.fr.base.BaseUtils; import com.fr.base.FRContext; +import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignState; import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.UpdateAction; @@ -42,6 +42,7 @@ import com.fr.design.gui.imenu.UIMenuBar; import com.fr.design.gui.itoolbar.UILargeToolbar; import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.ToolBarNewTemplatePane; import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; import com.fr.design.menu.ShortCut; @@ -50,7 +51,6 @@ import com.fr.design.remote.action.RemoteDesignAuthorityManagerAction; import com.fr.design.utils.ThemeUtils; import com.fr.general.ComparatorUtils; import com.fr.general.GeneralContext; - import com.fr.plugin.context.PluginContext; import com.fr.plugin.context.PluginRuntime; import com.fr.plugin.manage.PluginFilter; @@ -61,8 +61,17 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; import com.fr.workspace.WorkContext; -import javax.swing.*; -import java.awt.*; +import javax.swing.JComponent; +import javax.swing.JMenuBar; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import javax.swing.UIManager; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -320,10 +329,15 @@ public abstract class ToolBarMenuDock { } public MenuDef createFileMenuDef(ToolBarMenuDockPlus plus) { + if (DesignerMode.isVcsMode()) { + MenuDef menuDef = VcsScene.createFileMenuDef(plus); + insertMenu(menuDef, MenuHandler.FILE); + return menuDef; + } MenuDef menuDef = new MenuDef(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_File"), 'F'); ShortCut[] scs = new ShortCut[0]; - if (!BaseUtils.isAuthorityEditing()) { + if (!DesignerMode.isAuthorityEditing()) { scs = createNewFileShortCuts(); } if (!ArrayUtils.isEmpty(scs)) { @@ -354,13 +368,13 @@ public abstract class ToolBarMenuDock { } protected void addCloseCurrentTemplateAction(MenuDef menuDef) { - if (!BaseUtils.isAuthorityEditing()) { + if (!DesignerMode.isAuthorityEditing()) { menuDef.addShortCut(new CloseCurrentTemplateAction()); } } protected void addPreferenceAction(MenuDef menuDef) { - if (!BaseUtils.isAuthorityEditing()) { + if (!DesignerMode.isAuthorityEditing()) { menuDef.addShortCut(new PreferenceAction()); } } @@ -396,7 +410,7 @@ public abstract class ToolBarMenuDock { protected MenuDef createServerMenuDef(ToolBarMenuDockPlus plus) { MenuDef menuDef = new MenuDef(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_M-Server"), 'S'); - if (!BaseUtils.isAuthorityEditing()) { + if (!DesignerMode.isAuthorityEditing()) { menuDef.addShortCut( new ConnectionListAction(), createGlobalTDAction() @@ -412,7 +426,7 @@ public abstract class ToolBarMenuDock { menuDef.addShortCut(new RemoteDesignAuthorityManagerAction()); } - if (!BaseUtils.isAuthorityEditing()) { + if (!DesignerMode.isAuthorityEditing()) { if (shouldShowPlugin()) { menuDef.addShortCut( new PluginManagerAction() @@ -434,7 +448,7 @@ public abstract class ToolBarMenuDock { } private boolean shouldShowRemotePermission() { - + return WorkContext.getCurrent() != null && !WorkContext.getCurrent().isLocal() && WorkContext.getCurrent().isRoot(); } @@ -588,22 +602,7 @@ public abstract class ToolBarMenuDock { } public NewTemplatePane getNewTemplatePane() { - return new NewTemplatePane() { - @Override - public Icon getNew() { - return BaseUtils.readIcon("/com/fr/design/images/buttonicon/addicon.png"); - } - - @Override - public Icon getMouseOverNew() { - return BaseUtils.readIcon("/com/fr/design/images/buttonicon/add_press.png"); - } - - @Override - public Icon getMousePressNew() { - return BaseUtils.readIcon("/com/fr/design/images/buttonicon/add_press.png"); - } - }; + return ToolBarNewTemplatePane.getInstance(); } protected void insertMenu(MenuDef menuDef, String anchor) { @@ -751,4 +750,4 @@ public abstract class ToolBarMenuDock { return handler.shortcut(plus); } } -} \ No newline at end of file +} diff --git a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/VcsScene.java b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/VcsScene.java new file mode 100644 index 000000000..d3e3631a6 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/VcsScene.java @@ -0,0 +1,45 @@ +package com.fr.design.mainframe.toolbar; + +import com.fr.base.vcs.DesignerMode; +import com.fr.design.actions.edit.RedoAction; +import com.fr.design.actions.edit.UndoAction; +import com.fr.design.actions.file.ExitDesignerAction; +import com.fr.design.actions.file.PreferenceAction; +import com.fr.design.mainframe.JTemplate; +import com.fr.design.menu.MenuDef; +import com.fr.design.menu.SeparatorDef; +import com.fr.design.menu.ShortCut; +import com.fr.stable.ArrayUtils; + +/** + * Created by hzzz on 2017/12/28. + */ +public class VcsScene { + + public static MenuDef createFileMenuDef(ToolBarMenuDockPlus plus) { + MenuDef menuDef = new MenuDef(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_File"), 'F'); + + ShortCut[] scs = new ShortCut[0]; + if (!ArrayUtils.isEmpty(scs)) { + menuDef.addShortCut(scs); + } + + scs = plus.shortcut4FileMenu(); + if (!ArrayUtils.isEmpty(scs)) { + menuDef.addShortCut(SeparatorDef.DEFAULT); + menuDef.addShortCut(scs); + menuDef.addShortCut(SeparatorDef.DEFAULT); + } + + if (!DesignerMode.isAuthorityEditing()) { + menuDef.addShortCut(new PreferenceAction()); + } + + menuDef.addShortCut(new ExitDesignerAction()); + return menuDef; + } + + public static ShortCut[] shortcut4FileMenu(JTemplate jTemplate) { + return new ShortCut[]{new UndoAction(jTemplate), new RedoAction(jTemplate)}; + } +} diff --git a/designer-base/src/main/java/com/fr/design/menu/ShortCut.java b/designer-base/src/main/java/com/fr/design/menu/ShortCut.java index a2f8e943c..beca4ae72 100644 --- a/designer-base/src/main/java/com/fr/design/menu/ShortCut.java +++ b/designer-base/src/main/java/com/fr/design/menu/ShortCut.java @@ -71,4 +71,11 @@ public abstract class ShortCut extends AbstractProvider implements Mutable { public void setMenuKeySet(MenuKeySet menuKeySet) { this.menuKeySet = menuKeySet; } + + /** + * 权限编辑模式变更时候会调用这个方法 + * @param isAuhtority + */ + public void notifyFromAuhtorityChange(boolean isAuhtority) { + } } \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java index b219f6396..e5fdfc9a5 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java @@ -3,6 +3,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; import com.fr.base.PaperSize; import com.fr.base.Parameter; +import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignState; import com.fr.design.actions.core.WorkBookSupportable; import com.fr.design.actions.file.WebPreviewUtils; @@ -55,7 +56,6 @@ import com.fr.form.ui.Widget; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WLayout; import com.fr.general.ComparatorUtils; - import com.fr.log.FineLoggerFactory; import com.fr.page.PaperSettingProvider; import com.fr.report.worksheet.FormElementCase; @@ -141,7 +141,7 @@ public class JForm extends JTemplate implements BaseJForm { return processInfo; } - public FormECCompositeProvider getReportComposite(){ + public FormECCompositeProvider getReportComposite() { return this.reportComposite; } @@ -204,7 +204,8 @@ public class JForm extends JTemplate implements BaseJForm { */ public ShortCut[] shortcut4FileMenu() { return (ShortCut[]) ArrayUtils.addAll( - super.shortcut4FileMenu(), new ShortCut[]{this.createWorkBookExportMenu()} + super.shortcut4FileMenu(), + DesignerMode.isVcsMode() ? new ShortCut[0] : new ShortCut[]{this.createWorkBookExportMenu()} ); } @@ -257,6 +258,7 @@ public class JForm extends JTemplate implements BaseJForm { }); formDesign.addDesignerEditListener(new DesignerEditListener() { private XComponent lastAffectedCreator; + @Override public void fireCreatorModified(DesignerEvent evt) { if (evt.getCreatorEventID() == DesignerEvent.CREATOR_CUTED) { @@ -843,7 +845,7 @@ public class JForm extends JTemplate implements BaseJForm { Object[] designerArg = new Object[]{formDesign.getElementCase(), getTarget()}; FormECDesignerProvider formECDesigner = StableFactory.getMarkedInstanceObjectFromClass(FormECDesignerProvider.XML_TAG, designerArg, designerClass, FormECDesignerProvider.class); // 如果是移动端专属模版,需要修改页面大小并显示边缘线 - PaperSettingProvider paperSetting = ((FormElementCase)formECDesigner.getEditingElementCase()).getReportSettings().getPaperSetting(); + PaperSettingProvider paperSetting = ((FormElementCase) formECDesigner.getEditingElementCase()).getReportSettings().getPaperSetting(); paperSetting.setPaperSize(getTarget().getFormMobileAttr().isMobileOnly() ? PaperSize.PAPERSIZE_MOBILE : new PaperSize()); return formECDesigner; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java b/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java index 0fd66e40f..b85ecedd7 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java @@ -5,6 +5,7 @@ import com.fr.base.DynamicUnitList; import com.fr.base.FRContext; import com.fr.base.Parameter; import com.fr.base.ScreenResolution; +import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignModelAdapter; import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.AllowAuthorityEditAction; @@ -632,9 +633,11 @@ public class JWorkBook extends JTemplate { */ @Override public ShortCut[] shortcut4FileMenu() { - return (ShortCut[]) ArrayUtils.addAll( - super.shortcut4FileMenu(), - BaseUtils.isAuthorityEditing() || (!WorkContext.getCurrent().isLocal()) ? new ShortCut[0] : new ShortCut[]{this.createWorkBookExportMenu()} + boolean showWorkBookExportMenu = DesignerMode.isVcsMode() + || DesignerMode.isAuthorityEditing() + || !WorkContext.getCurrent().isLocal(); + return (ShortCut[]) ArrayUtils.addAll(super.shortcut4FileMenu(), + showWorkBookExportMenu ? new ShortCut[0] : new ShortCut[]{this.createWorkBookExportMenu()} ); } @@ -1161,4 +1164,4 @@ public class JWorkBook extends JTemplate { public String route() { return ViewRequestConstants.REPORT_VIEW_PATH; } -} \ No newline at end of file +} diff --git a/designer-realize/src/main/java/com/fr/start/Designer.java b/designer-realize/src/main/java/com/fr/start/Designer.java index 29e84d031..d02fcb016 100644 --- a/designer-realize/src/main/java/com/fr/start/Designer.java +++ b/designer-realize/src/main/java/com/fr/start/Designer.java @@ -2,6 +2,7 @@ package com.fr.start; import com.fr.base.BaseUtils; import com.fr.base.FRContext; +import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignerEnvManager; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.file.WebPreviewUtils; @@ -192,7 +193,7 @@ public class Designer extends BaseDesigner { return menuDef; } - if (!BaseUtils.isAuthorityEditing()) { + if (!DesignerMode.isAuthorityEditing()) { menuDef.addShortCut(SeparatorDef.DEFAULT); if (WorkContext.getCurrent().isRoot()) { @@ -362,7 +363,7 @@ public class Designer extends BaseDesigner { if (jt == null) { return; } - saveButton.setEnabled(!jt.isSaved()); + saveButton.setEnabled(!jt.isSaved() && !DesignerMode.isVcsMode()); MutilTempalteTabPane.getInstance().refreshOpenedTemplate(HistoryTemplateListPane.getInstance().getHistoryList()); MutilTempalteTabPane.getInstance().repaint(); if (DesignerEnvManager.getEnvManager().isSupportUndo()) { @@ -387,7 +388,7 @@ public class Designer extends BaseDesigner { @Override public JComponent resetToolBar(JComponent toolbarComponent, ToolBarMenuDockPlus plus) { //如果是处于权限编辑状态 - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { if (plus instanceof JWorkBook && plus.toolbars4Target() == null) { //聚合块编辑 return super.polyToolBar(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Privilege_Poly_Block_Edit")); From eca7394dbcbed217ce2ae7d10e59582d3452d95e Mon Sep 17 00:00:00 2001 From: hzzz Date: Tue, 31 Jul 2018 18:07:40 +0800 Subject: [PATCH 3/4] =?UTF-8?q?REPORT-9221=2010.0=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E5=85=BC=E5=AE=B9-=E7=89=88=E6=9C=AC=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/DesignState.java | 3 +- .../actions/AllowAuthorityEditAction.java | 82 ++++++++++++++++++- .../actions/ExitAuthorityEditAction.java | 5 +- .../design/gui/ibutton/UISliderButtonUI.java | 7 +- .../icontainer/UIEastResizableContainer.java | 3 +- .../icontainer/UIModeControlContainer.java | 9 +- .../gui/icontainer/UIResizableContainer.java | 5 +- .../fr/design/mainframe/DesignerFrame.java | 10 +-- .../DesignerFrameFileDealerPane.java | 15 ++-- .../com/fr/design/mainframe/JTemplate.java | 12 +-- .../fr/design/mainframe/UndoStateEdit.java | 5 +- .../mainframe/toolbar/ToolBarMenuDock.java | 1 + .../fr/design/mainframe/toolbar/VcsScene.java | 1 + .../roleAuthority/ReportAndFSManagePane.java | 3 +- .../fr/design/utils/gui/GUIPaintUtils.java | 9 +- .../fr/design/designer/creator/XCreator.java | 1 + .../com/fr/design/mainframe/FormDesigner.java | 1 + .../fr/design/mainframe/FormDesignerUI.java | 3 +- .../design/mainframe/FormToolBarButton.java | 3 +- .../java/com/fr/design/mainframe/JForm.java | 8 +- .../design/mainframe/ShareWidgetButton.java | 3 +- .../fr/design/mainframe/ToolBarButton.java | 3 +- .../design/mainframe/WidgetToolBarPane.java | 5 +- .../fr/design/mainframe/ElementCasePane.java | 9 +- .../mainframe/ElementCasePaneDelegate.java | 7 +- .../com/fr/design/mainframe/JWorkBook.java | 10 +-- .../fr/design/mainframe/ReportComponent.java | 3 +- .../mainframe/ReportComponentCardPane.java | 3 +- .../fr/design/mainframe/SheetNameTabPane.java | 3 +- .../form/FormElementCaseDesigner.java | 3 +- .../parameter/ParameterDefinitePane.java | 5 +- .../com/fr/design/webattr/ToolBarButton.java | 3 +- .../grid/AbstractGridHeaderMouseHandler.java | 5 +- .../main/java/com/fr/grid/GridColumnUI.java | 3 +- .../java/com/fr/grid/GridMouseAdapter.java | 13 +-- .../src/main/java/com/fr/grid/GridRowUI.java | 3 +- .../src/main/java/com/fr/grid/GridUI.java | 3 +- .../com/fr/grid/selection/CellSelection.java | 3 +- .../com/fr/grid/selection/FloatSelection.java | 3 +- .../java/com/fr/poly/PolyComponetsBar.java | 3 +- .../main/java/com/fr/poly/PolyDesigner.java | 7 +- .../fr/poly/actions/DeleteBlockAction.java | 3 +- .../com/fr/poly/creator/ChartBlockEditor.java | 7 +- .../com/fr/poly/creator/ECBlockEditor.java | 3 +- .../java/com/fr/poly/creator/ECBlockPane.java | 5 +- .../hanlder/BottomCornerMouseHanlder.java | 7 +- .../hanlder/ColumnOperationMouseHandler.java | 5 +- .../poly/hanlder/PolyDesignerDropTarget.java | 3 +- .../hanlder/RowOperationMouseHandler.java | 5 +- 49 files changed, 225 insertions(+), 99 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignState.java b/designer-base/src/main/java/com/fr/design/DesignState.java index fc7130aa2..fcc971b7e 100644 --- a/designer-base/src/main/java/com/fr/design/DesignState.java +++ b/designer-base/src/main/java/com/fr/design/DesignState.java @@ -1,6 +1,7 @@ package com.fr.design; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; import com.fr.workspace.WorkContext; @@ -43,7 +44,7 @@ public class DesignState { // designState += REMOTE; // } // isRoot = env != null && env.isRoot(); - isAuthority = BaseUtils.isAuthorityEditing(); + isAuthority = DesignerMode.isAuthorityEditing(); } public int getDesignState() { diff --git a/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java b/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java index 4d7369205..507632c72 100644 --- a/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java @@ -1 +1,81 @@ -package com.fr.design.actions; import com.fr.base.BaseUtils; import com.fr.design.constants.UIConstants; import com.fr.design.menu.KeySetUtils; import com.fr.design.roleAuthority.ReportAndFSManagePane; import com.fr.design.roleAuthority.RolesAlreadyEditedPane; import com.fr.design.designer.TargetComponent; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.mainframe.*; /** * Author : daisy * Date: 13-8-30 * Time: 上午10:12 */ public class AllowAuthorityEditAction extends TemplateComponentAction { public AllowAuthorityEditAction(TargetComponent t) { super(t); this.setMenuKeySet(KeySetUtils.ALLOW_AUTHORITY_EDIT); this.setName(getMenuKeySet().getMenuName()); this.setMnemonic(getMenuKeySet().getMnemonic()); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_report/allow_authority_edit.png")); } /** * 撤销 */ public void prepare4Undo() { HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().iniAuthorityUndoState(); } /** * 执行动作 * * @return 是否执行成功 */ public boolean executeActionReturnUndoRecordNeeded() { TargetComponent tc = getEditingComponent(); if (tc == null) { return false; } cleanAuthorityCondition(); //进入时是格式刷则取消格式刷 if (DesignerContext.getFormatState() != DesignerContext.FORMAT_STATE_NULL) { tc.cancelFormat(); } BaseUtils.setAuthorityEditing(true); ReportAndFSManagePane.getInstance().refreshDockingView(); RolesAlreadyEditedPane.getInstance().refreshDockingView(); WestRegionContainerPane.getInstance().replaceDownPane(ReportAndFSManagePane.getInstance()); DesignerContext.getDesignerFrame().setCloseMode(UIConstants.CLOSE_OF_AUTHORITY); DesignerContext.getDesignerFrame().resetToolkitByPlus(tc.getToolBarMenuDockPlus()); DesignerContext.getDesignerFrame().needToAddAuhtorityPaint(); EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.AUTHORITY_EDITION); EastRegionContainerPane.getInstance().replaceAuthorityEditionPane(tc.getEastUpPane()); DesignerContext.getDesignerFrame().refreshDottedLine(); EastRegionContainerPane.getInstance().replaceConfiguredRolesPane(RolesAlreadyEditedPane.getInstance()); EastRegionContainerPane.getInstance().removeParameterPane(); //画虚线 return true; } /** * 进入权限编辑之前将权限编辑界面重置一下工具栏 */ private void cleanAuthorityCondition() { java.util.List> opendedTemplate = HistoryTemplateListPane.getInstance().getHistoryList(); for (int i = 0; i < opendedTemplate.size(); i++) { opendedTemplate.get(i).cleanAuthorityUndo(); } } } \ No newline at end of file +package com.fr.design.actions; + +import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; +import com.fr.design.constants.UIConstants; +import com.fr.design.menu.KeySetUtils; +import com.fr.design.roleAuthority.ReportAndFSManagePane; +import com.fr.design.roleAuthority.RolesAlreadyEditedPane; +import com.fr.design.designer.TargetComponent; +import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.mainframe.*; + +/** + * Author : daisy + * Date: 13-8-30 + * Time: 上午10:12 + */ +public class AllowAuthorityEditAction extends TemplateComponentAction { + + public AllowAuthorityEditAction(TargetComponent t) { + super(t); + this.setMenuKeySet(KeySetUtils.ALLOW_AUTHORITY_EDIT); + this.setName(getMenuKeySet().getMenuName()); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_report/allow_authority_edit.png")); + } + + /** + * 撤销 + */ + public void prepare4Undo() { + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().iniAuthorityUndoState(); + } + + /** + * 执行动作 + * + * @return 是否执行成功 + */ + public boolean executeActionReturnUndoRecordNeeded() { + TargetComponent tc = getEditingComponent(); + if (tc == null) { + return false; + } + + cleanAuthorityCondition(); + + //进入时是格式刷则取消格式刷 + if (DesignerContext.getFormatState() != DesignerContext.FORMAT_STATE_NULL) { + tc.cancelFormat(); + } + DesignerMode.setMode(DesignerMode.AUTHORITY); + ReportAndFSManagePane.getInstance().refreshDockingView(); + RolesAlreadyEditedPane.getInstance().refreshDockingView(); + WestRegionContainerPane.getInstance().replaceDownPane(ReportAndFSManagePane.getInstance()); + DesignerContext.getDesignerFrame().setCloseMode(UIConstants.CLOSE_OF_AUTHORITY); + DesignerContext.getDesignerFrame().resetToolkitByPlus(tc.getToolBarMenuDockPlus()); + DesignerContext.getDesignerFrame().needToAddAuhtorityPaint(); + EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.AUTHORITY_EDITION); + EastRegionContainerPane.getInstance().replaceAuthorityEditionPane(tc.getEastUpPane()); + DesignerContext.getDesignerFrame().refreshDottedLine(); + EastRegionContainerPane.getInstance().replaceConfiguredRolesPane(RolesAlreadyEditedPane.getInstance()); + EastRegionContainerPane.getInstance().removeParameterPane(); + + //画虚线 + return true; + } + + + /** + * 进入权限编辑之前将权限编辑界面重置一下工具栏 + */ + private void cleanAuthorityCondition() { + + java.util.List> opendedTemplate = HistoryTemplateListPane.getInstance().getHistoryList(); + for (int i = 0; i < opendedTemplate.size(); i++) { + opendedTemplate.get(i).cleanAuthorityUndo(); + } + } + +} \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/actions/ExitAuthorityEditAction.java b/designer-base/src/main/java/com/fr/design/actions/ExitAuthorityEditAction.java index a90f7923c..4d2b1d40a 100644 --- a/designer-base/src/main/java/com/fr/design/actions/ExitAuthorityEditAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/ExitAuthorityEditAction.java @@ -1,6 +1,7 @@ package com.fr.design.actions; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.data.datapane.TableDataTreePane; import com.fr.design.DesignModelAdapter; import com.fr.design.designer.TargetComponent; @@ -33,8 +34,8 @@ public class ExitAuthorityEditAction extends TemplateComponentAction { return false; } - if (BaseUtils.isAuthorityEditing()) { - BaseUtils.setAuthorityEditing(false); + if (DesignerMode.isAuthorityEditing()) { + DesignerMode.setMode(DesignerMode.NORMARL); WestRegionContainerPane.getInstance().replaceDownPane(TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter())); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshEastPropertiesPane(); DesignerContext.getDesignerFrame().resetToolkitByPlus(tc.getToolBarMenuDockPlus()); diff --git a/designer-base/src/main/java/com/fr/design/gui/ibutton/UISliderButtonUI.java b/designer-base/src/main/java/com/fr/design/gui/ibutton/UISliderButtonUI.java index be6f570ac..6da878d8d 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ibutton/UISliderButtonUI.java +++ b/designer-base/src/main/java/com/fr/design/gui/ibutton/UISliderButtonUI.java @@ -13,6 +13,7 @@ import javax.swing.plaf.basic.BasicHTML; import javax.swing.text.View; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.roleAuthority.ReportAndFSManagePane; import com.fr.stable.Constants; @@ -174,7 +175,7 @@ public class UISliderButtonUI extends BasicButtonUI { private void fillNormal(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited, boolean isPressedPainted) { GradientPaint gp; - if (BaseUtils.isAuthorityEditing() && isAuthorityEdited) { + if (DesignerMode.isAuthorityEditing() && isAuthorityEdited) { gp = new GradientPaint(1, 1, UIConstants.AUTHORITY_BLUE, 1, height - 1, UIConstants.AUTHORITY_DARK_BLUE); } else if (isPressedPainted) { gp = new GradientPaint(1, 1, UIConstants.SELECT_TAB, 1, height - 1, UIConstants.SELECT_TAB); @@ -187,7 +188,7 @@ public class UISliderButtonUI extends BasicButtonUI { private void fillRollOver(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited, boolean isPressedPainted) { GradientPaint gp; - if (BaseUtils.isAuthorityEditing() && isAuthorityEdited) { + if (DesignerMode.isAuthorityEditing() && isAuthorityEdited) { gp = new GradientPaint(1, 1, UIConstants.AUTHORITY_BLUE, 1, height - 1, UIConstants.HOVER_BLUE); } else if (isPressedPainted) { gp = new GradientPaint(1, 1, UIConstants.POP_DIALOG_BORDER, 1, height - 1, UIConstants.POP_DIALOG_BORDER); @@ -199,7 +200,7 @@ public class UISliderButtonUI extends BasicButtonUI { private void fillPressed(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited) { Color oldColor = g2d.getColor(); - if (BaseUtils.isAuthorityEditing() && isAuthorityEdited) { + if (DesignerMode.isAuthorityEditing() && isAuthorityEdited) { g2d.setColor(UIConstants.AUTHORITY_PRESS_BLUE); } else { g2d.setColor(UIConstants.POP_DIALOG_BORDER); diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java index 81b291f41..1513eb6e9 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java @@ -1,6 +1,7 @@ package com.fr.design.gui.icontainer; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; @@ -281,7 +282,7 @@ public class UIEastResizableContainer extends JPanel { } onResize(); refreshContainer(); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { DesignerContext.getDesignerFrame().doResize(); } } diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIModeControlContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIModeControlContainer.java index 2492a6c36..51bdba985 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIModeControlContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIModeControlContainer.java @@ -1,6 +1,7 @@ package com.fr.design.gui.icontainer; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ilable.UILabel; @@ -72,7 +73,7 @@ public class UIModeControlContainer extends JLayeredPane { public void needToShowCoverAndHidPane() { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { this.remove(coverPane); this.remove(hidePane); } else { @@ -115,7 +116,7 @@ public class UIModeControlContainer extends JLayeredPane { if (isHideMode || !upEditMode) { return; } - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { return; } setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR)); @@ -142,7 +143,7 @@ public class UIModeControlContainer extends JLayeredPane { @Override public void mouseDragged(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { return; } boolean notUpEditMode = isHideMode || !upEditMode; @@ -183,7 +184,7 @@ public class UIModeControlContainer extends JLayeredPane { setUpPaneHeight(0); } - if (BaseUtils.isAuthorityEditing() && isSheeetCovered) { + if (DesignerMode.isAuthorityEditing() && isSheeetCovered) { sheetInvisibleCoverPane.setBounds(0, toolPaneY + toolPaneHeight + UIConstants.SIZE, getWidth(), getHeight() - toolPaneY - toolPaneHeight - sheetCorverGap); UIModeControlContainer.this.add(sheetInvisibleCoverPane); UIModeControlContainer.this.setLayer(sheetInvisibleCoverPane, 2); diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java index 09d95f843..73199d2ab 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -1,6 +1,7 @@ package com.fr.design.gui.icontainer; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.DesignerContext; import com.fr.stable.Constants; @@ -443,7 +444,7 @@ public class UIResizableContainer extends JPanel { containerWidth = toolPaneHeight; } refreshContainer(); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { DesignerContext.getDesignerFrame().doResize(); } @@ -476,7 +477,7 @@ public class UIResizableContainer extends JPanel { containerWidth = toolPaneHeight; } refreshContainer(); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { DesignerContext.getDesignerFrame().doResize(); } } 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 e2aaad44a..81e1ccfe8 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 @@ -306,7 +306,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta public void componentResized(ComponentEvent e) { reCalculateFrameSize(); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { doResize(); } } @@ -529,7 +529,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta */ public void refreshDottedLine() { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { populateAuthorityArea(); populateCloseButton(); addDottedLine(); @@ -592,7 +592,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta for (int i = 0; i < fixButtons.length; i++) { combineUp.add(fixButtons[i]); } - if (!BaseUtils.isAuthorityEditing()) { + if (!DesignerMode.isAuthorityEditing()) { combineUp.addSeparator(new Dimension(2, 16)); if (toolbar4Form != null) { for (int i = 0; i < toolbar4Form.length; i++) { @@ -709,13 +709,13 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta */ public void needToAddAuhtorityPaint() { - newWorkBookPane.setButtonGray(BaseUtils.isAuthorityEditing()); + newWorkBookPane.setButtonGray(DesignerMode.isAuthorityEditing()); // 进入或退出权限编辑模式,通知插件 Set extraShortCuts = ExtraDesignClassManager.getInstance().getExtraShortCuts(); for (ShortCut shortCut : extraShortCuts) { if (shortCut instanceof AbstractTemplateTreeShortCutProvider) { - ((AbstractTemplateTreeShortCutProvider) shortCut).notifyFromAuhtorityChange(BaseUtils.isAuthorityEditing()); + ((AbstractTemplateTreeShortCutProvider) shortCut).notifyFromAuhtorityChange(DesignerMode.isAuthorityEditing()); } } } 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 c09e6e846..55ba067c1 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 @@ -2,6 +2,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; import com.fr.base.FRContext; +import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignModelAdapter; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; @@ -68,13 +69,11 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt private CardLayout card; private JPanel cardPane; - private java.util.List otherToobarStateChangeListeners= new ArrayList<>(); - public FileOperations getSelectedOperation() { - return selectedOperation; - } + private java.util.List otherToobarStateChangeListeners = new ArrayList<>(); private FileOperations selectedOperation; + private UIToolbar toolBar; private OpenReportAction openReportAction = new OpenReportAction(); @@ -143,7 +142,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt HistoryTemplateListPane.getInstance().setCurrentEditingTemplate(jt); //处理自动新建的模板 MutilTempalteTabPane.getInstance().doWithtemTemplate(); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { RolesAlreadyEditedPane.getInstance().refreshDockingView(); } @@ -263,7 +262,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt public void addToobarStateChangeListener(FileToolbarStateChangeListener toobarStateChangeListener) { this.otherToobarStateChangeListeners.add(toobarStateChangeListener); - } + } public void removeToobarStateChangeListener(FileToolbarStateChangeListener toobarStateChangeListener) { this.otherToobarStateChangeListeners.remove(toobarStateChangeListener); @@ -341,6 +340,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt delFileAction.setEnabled(true); } + otherStateChange(); } /** @@ -606,4 +606,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt return null; } + public FileOperations getSelectedOperation() { + return selectedOperation; + } } 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 d896c1364..b9cc68da4 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 @@ -276,7 +276,7 @@ public abstract class JTemplate> * @return 是则返回true */ public boolean isSaved() { - return BaseUtils.isAuthorityEditing() ? this.authoritySaved : this.saved; + return DesignerMode.isAuthorityEditing() ? this.authoritySaved : this.saved; } /** @@ -299,7 +299,7 @@ public abstract class JTemplate> } public void setSaved(boolean isSaved) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { authoritySaved = isSaved; } else { saved = isSaved; @@ -310,7 +310,7 @@ public abstract class JTemplate> * @return */ public UndoManager getUndoManager() { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { if (this.authorityUndoManager == null) { this.authorityUndoManager = new UndoManager(); int limit = DesignerEnvManager.getEnvManager().getUndoLimit(); @@ -385,7 +385,7 @@ public abstract class JTemplate> return; } //如果是在不同的模式下产生的 - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { this.getUndoManager().addEdit(new UndoStateEdit(authorityUndoState, newState)); authorityUndoState = newState; } else { @@ -414,7 +414,7 @@ public abstract class JTemplate> } private void fireSuperTargetModified() { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { this.authoritySaved = false; } else { this.saved = false; @@ -720,7 +720,7 @@ public abstract class JTemplate> public MenuDef[] menus4Target() { MenuDef tplMenu = new MenuDef(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_M-Template"), 'T'); tplMenu.setAnchor(MenuHandler.TEMPLATE); - if (!BaseUtils.isAuthorityEditing()) { + if (!DesignerMode.isAuthorityEditing()) { tplMenu.addShortCut(new NameSeparator(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_WorkBook"))); tplMenu.addShortCut(new TableDataSourceAction(this)); tplMenu.addShortCut(shortcut4TemplateMenu()); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/UndoStateEdit.java b/designer-base/src/main/java/com/fr/design/mainframe/UndoStateEdit.java index 60421dcad..62cfb7fd0 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/UndoStateEdit.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/UndoStateEdit.java @@ -2,6 +2,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.roleAuthority.RolesAlreadyEditedPane; @@ -52,7 +53,7 @@ public class UndoStateEdit extends AbstractUndoableEdit { if (this.old != null) { this.old.applyState(); } - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { RolesAlreadyEditedPane.getInstance().refreshDockingView(); } } @@ -67,7 +68,7 @@ public class UndoStateEdit extends AbstractUndoableEdit { if (this.cur != null) { this.cur.applyState(); } - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { RolesAlreadyEditedPane.getInstance().refreshDockingView(); } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index 5b7d561ab..552b17e1f 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -3,6 +3,7 @@ */ package com.fr.design.mainframe.toolbar; +import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignState; diff --git a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/VcsScene.java b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/VcsScene.java index d3e3631a6..34fed3a86 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/VcsScene.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/VcsScene.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.toolbar; +import com.fr.base.BaseUtils; import com.fr.base.vcs.DesignerMode; import com.fr.design.actions.edit.RedoAction; import com.fr.design.actions.edit.UndoAction; diff --git a/designer-base/src/main/java/com/fr/design/roleAuthority/ReportAndFSManagePane.java b/designer-base/src/main/java/com/fr/design/roleAuthority/ReportAndFSManagePane.java index 18ed104fe..a26d01e45 100644 --- a/designer-base/src/main/java/com/fr/design/roleAuthority/ReportAndFSManagePane.java +++ b/designer-base/src/main/java/com/fr/design/roleAuthority/ReportAndFSManagePane.java @@ -1,6 +1,7 @@ package com.fr.design.roleAuthority; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.actions.UpdateAction; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; @@ -265,7 +266,7 @@ public class ReportAndFSManagePane extends DockingView implements Prepare4DataSo DesignTableDataManager.addDsChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { roleTree.refreshTreeNode(); expandTree(roleTree, true); roleTree.updateUI(); diff --git a/designer-base/src/main/java/com/fr/design/utils/gui/GUIPaintUtils.java b/designer-base/src/main/java/com/fr/design/utils/gui/GUIPaintUtils.java index 94131a5ff..30984197c 100644 --- a/designer-base/src/main/java/com/fr/design/utils/gui/GUIPaintUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/gui/GUIPaintUtils.java @@ -1,6 +1,7 @@ package com.fr.design.utils.gui; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.stable.Constants; @@ -17,7 +18,7 @@ public class GUIPaintUtils { public static final void drawBorder(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited) { Color oldColor = g2d.getColor(); Shape oldClip = g2d.getClip(); - if (BaseUtils.isAuthorityEditing() && isAuthorityEdited) { + if (DesignerMode.isAuthorityEditing() && isAuthorityEdited) { g2d.setColor(UIConstants.AUTHORITY_LINE_COLOR); } else { g2d.setColor(UIConstants.POP_DIALOG_BORDER); @@ -67,7 +68,7 @@ public class GUIPaintUtils { public static final void fillNormal(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited, boolean isPressedPainted, Color color) { GradientPaint gp; - if (BaseUtils.isAuthorityEditing() && isAuthorityEdited) { + if (DesignerMode.isAuthorityEditing() && isAuthorityEdited) { gp = new GradientPaint(1, 1, UIConstants.AUTHORITY_BLUE, 1, height - 1, UIConstants.AUTHORITY_DARK_BLUE); } else if (isPressedPainted) { gp = new GradientPaint(1, 1, color, 1, height - 1, color); @@ -99,7 +100,7 @@ public class GUIPaintUtils { GradientPaint gp; if (hoverColor != null) { gp = new GradientPaint(1, 1, hoverColor, 1, height - 1, hoverColor); - } else if (BaseUtils.isAuthorityEditing() && isAuthorityEdited) { + } else if (DesignerMode.isAuthorityEditing() && isAuthorityEdited) { gp = new GradientPaint(1, 1, UIConstants.AUTHORITY_BLUE, 1, height - 1, UIConstants.HOVER_BLUE); } else if (isPressedPainted) { gp = new GradientPaint(1, 1, UIConstants.ATTRIBUTE_HOVER, 1, height - 1, UIConstants.ATTRIBUTE_HOVER); @@ -129,7 +130,7 @@ public class GUIPaintUtils { Color oldColor = g2d.getColor(); if (pressedColor != null) { g2d.setColor(pressedColor); - } else if (BaseUtils.isAuthorityEditing() && isAuthorityEdited) { + } else if (DesignerMode.isAuthorityEditing() && isAuthorityEdited) { g2d.setColor(UIConstants.AUTHORITY_PRESS_BLUE); } else { g2d.setColor(UIConstants.ATTRIBUTE_PRESS); diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java b/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java index d71f81387..b7d7b3a45 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java @@ -3,6 +3,7 @@ */ package com.fr.design.designer.creator; +import com.fr.base.BaseUtils; import com.fr.base.GraphHelper; import com.fr.base.vcs.DesignerMode; import com.fr.design.actions.UpdateAction; diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index abff9a9c8..56579a1a3 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe; +import com.fr.base.BaseUtils; import com.fr.base.Parameter; import com.fr.base.ScreenResolution; import com.fr.base.vcs.DesignerMode; diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java index 0f1ccf33c..be1980d24 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java @@ -5,6 +5,7 @@ import com.fr.base.GraphHelper; import com.fr.base.ScreenResolution; import com.fr.base.Utils; import com.fr.base.iofile.attr.WatermarkAttr; +import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; @@ -84,7 +85,7 @@ public class FormDesignerUI extends ComponentUI { paintSelection(g); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { paintAuthorityDetails(g, designer.getRootComponent()); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormToolBarButton.java b/designer-form/src/main/java/com/fr/design/mainframe/FormToolBarButton.java index 211c3ef3d..b28d5c253 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormToolBarButton.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormToolBarButton.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.gui.core.WidgetOption; @@ -102,7 +103,7 @@ public class FormToolBarButton extends JButton implements MouseListener { //该button只在报表块工具栏中使用, //parent只有FormToolBarPane一种,故可以直接强转 final FormToolBarPane toolBarPane = (FormToolBarPane) this.getParent(); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { auhtorityMouseAction(); return; } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java index e5fdfc9a5..3165d08c5 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java @@ -342,7 +342,7 @@ public class JForm extends JTemplate implements BaseJForm { } ParameterPropertyPane.getInstance().setAddParaPaneVisible(isAddParaPaneVisible(comp), this); editingComponent = comp.createToolPane(this, formDesign); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { EastRegionContainerPane.getInstance().replaceWidgetSettingsPane( ComparatorUtils.equals(editingComponent.getClass(), NoSupportAuthorityEdit.class) ? editingComponent : createAuthorityEditPane()); } else { @@ -580,7 +580,7 @@ public class JForm extends JTemplate implements BaseJForm { throw new RuntimeException(e); } - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { this.authorityUndoState = u; } else { this.undoState = u; @@ -655,7 +655,7 @@ public class JForm extends JTemplate implements BaseJForm { public JPanel getEastUpPane() { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { if (formDesign.isSupportAuthority()) { return new AuthorityPropertyPane(this); } else { @@ -719,7 +719,7 @@ public class JForm extends JTemplate implements BaseJForm { DesignerContext.getDesignerFrame().resetToolkitByPlus(JForm.this); //表单切换后拖不进去组件是因为找不到designer WidgetToolBarPane.getInstance(formDesign); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { if (formDesign.isSupportAuthority()) { EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.AUTHORITY_EDITION); EastRegionContainerPane.getInstance().replaceAuthorityEditionPane(new AuthorityPropertyPane(this)); diff --git a/designer-form/src/main/java/com/fr/design/mainframe/ShareWidgetButton.java b/designer-form/src/main/java/com/fr/design/mainframe/ShareWidgetButton.java index cbca8c4f8..a79ac17a5 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/ShareWidgetButton.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/ShareWidgetButton.java @@ -2,6 +2,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; import com.fr.base.iofile.attr.SharableAttrMark; +import com.fr.base.vcs.DesignerMode; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; import com.fr.design.gui.ilable.UILabel; @@ -199,7 +200,7 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot @Override public void mouseDragged(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { return; } if (lastPressEvent == null) { diff --git a/designer-form/src/main/java/com/fr/design/mainframe/ToolBarButton.java b/designer-form/src/main/java/com/fr/design/mainframe/ToolBarButton.java index b152f6f4b..baf69fa87 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/ToolBarButton.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/ToolBarButton.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.core.WidgetOption; import com.fr.design.designer.creator.XCreatorUtils; @@ -70,7 +71,7 @@ public class ToolBarButton extends UIButton implements MouseListener, MouseMotio @Override public void mouseDragged(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { return; } if (lastPressEvent == null) { diff --git a/designer-form/src/main/java/com/fr/design/mainframe/WidgetToolBarPane.java b/designer-form/src/main/java/com/fr/design/mainframe/WidgetToolBarPane.java index c6dfdd9ed..bde1367c4 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/WidgetToolBarPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/WidgetToolBarPane.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.bridge.DesignToolbarProvider; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.core.FormWidgetOption; @@ -122,7 +123,7 @@ public class WidgetToolBarPane extends BasicPane implements DesignToolbarProvide private void checkEnable() { for (JComponent comp : componentsList4Form) { - comp.setEnabled(!BaseUtils.isAuthorityEditing()); + comp.setEnabled(!DesignerMode.isAuthorityEditing()); } } @@ -149,7 +150,7 @@ public class WidgetToolBarPane extends BasicPane implements DesignToolbarProvide chartButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { return; } if (chartWindow == null) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java b/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java index e0efed649..b5f78ef60 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java @@ -10,6 +10,7 @@ import com.fr.base.FRContext; import com.fr.base.Formula; import com.fr.base.ScreenResolution; import com.fr.base.Style; +import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignState; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; @@ -756,7 +757,7 @@ public abstract class ElementCasePane extends Tar * @return 返回是否清除内容. */ public boolean clearContents() { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { return false; } boolean b = this.selection.clear(Clear.CONTENTS, this); @@ -1043,7 +1044,7 @@ public abstract class ElementCasePane extends Tar */ public UIPopupMenu createRowPopupMenu(MouseEvent evt, int selectedRows) { UIPopupMenu popupMenu = new UIPopupMenu(); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { popupMenu.add(new CleanAuthorityAction(this).createMenuItem()); return popupMenu; } @@ -1136,7 +1137,7 @@ public abstract class ElementCasePane extends Tar public UIPopupMenu createColumnPopupMenu(MouseEvent evt, int selectedColumn) { UIPopupMenu popupMenu = new UIPopupMenu(); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { popupMenu.add(new CleanAuthorityAction(this).createMenuItem()); return popupMenu; } @@ -1237,7 +1238,7 @@ public abstract class ElementCasePane extends Tar public ShortCut[] shortCuts4Authority() { return new ShortCut[]{ new NameSeparator(com.fr.design.i18n.Toolkit.i18nTextArray(new String[]{"DashBoard-Potence", "Edit"})), - BaseUtils.isAuthorityEditing() ? new ExitAuthorityEditAction(this) : new AllowAuthorityEditAction(this), + DesignerMode.isAuthorityEditing() ? new ExitAuthorityEditAction(this) : new AllowAuthorityEditAction(this), }; } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePaneDelegate.java b/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePaneDelegate.java index a1902d6fb..543268ea2 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePaneDelegate.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePaneDelegate.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignState; import com.fr.design.actions.UpdateAction; import com.fr.design.actions.cell.CellAttributeAction; @@ -51,7 +52,7 @@ public class ElementCasePaneDelegate extends ElementCasePane { this.addSelectionChangeListener(new SelectionListener() { @Override public void selectionChanged(SelectionEvent e) { - if (!isEditable() && !BaseUtils.isAuthorityEditing()) { + if (!isEditable() && !DesignerMode.isAuthorityEditing()) { return; } refreshPropertyPanes(); @@ -71,7 +72,7 @@ public class ElementCasePaneDelegate extends ElementCasePane { private void refreshPropertyPanes() { //在编辑权限,所以要更新权限编辑面板 - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { AuthorityPropertyPane authorityPropertyPane = new AuthorityPropertyPane(ElementCasePaneDelegate.this); authorityPropertyPane.populate(); EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.AUTHORITY_EDITION); @@ -124,7 +125,7 @@ public class ElementCasePaneDelegate extends ElementCasePane { * @return 返回MenuDef数组. */ public MenuDef[] menus4Target() { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { return super.menus4Target(); } return (MenuDef[]) ArrayUtils.addAll(super.menus4Target(), new MenuDef[]{createInsertMenuDef(), createCellMenuDef()}); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java b/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java index b85ecedd7..a300b835e 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java @@ -286,7 +286,7 @@ public class JWorkBook extends JTemplate { if (this.getEditingElementCasePane() == null) { return JWorkBook.this; } - this.getEditingElementCasePane().getGrid().setEditable(!BaseUtils.isAuthorityEditing()); + this.getEditingElementCasePane().getGrid().setEditable(!DesignerMode.isAuthorityEditing()); centerPane.needToShowCoverAndHidPane(); if (centerPane.isUpEditMode()) { return parameterPane; @@ -317,7 +317,7 @@ public class JWorkBook extends JTemplate { @Override public JPanel getEastUpPane() { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { return allowAuthorityUpPane(); } else { return exitEastUpPane(); @@ -682,7 +682,7 @@ public class JWorkBook extends JTemplate { public ShortCut[] shortCuts4Authority() { return new ShortCut[]{ new NameSeparator(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Permissions_Edition")), - BaseUtils.isAuthorityEditing() ? new ExitAuthorityEditAction(this) : new AllowAuthorityEditAction(this), + DesignerMode.isAuthorityEditing() ? new ExitAuthorityEditAction(this) : new AllowAuthorityEditAction(this), }; } @@ -728,7 +728,7 @@ public class JWorkBook extends JTemplate { protected void applyUndoState(WorkBookUndoState u) { try { this.setTarget((WorkBook) u.getWorkBook().clone()); - if (!BaseUtils.isAuthorityEditing()) { + if (!DesignerMode.isAuthorityEditing()) { if (u.getAuthorityType() != BaseUndoState.NORMAL_STATE) { applyAll(u); this.undoState = u; @@ -993,7 +993,7 @@ public class JWorkBook extends JTemplate { } } } - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.AUTHORITY_EDITION); EastRegionContainerPane.getInstance().replaceAuthorityEditionPane(allowAuthorityUpPane()); EastRegionContainerPane.getInstance().replaceConfiguredRolesPane(RolesAlreadyEditedPane.getInstance()); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/ReportComponent.java b/designer-realize/src/main/java/com/fr/design/mainframe/ReportComponent.java index 775bfae17..ea74cc7b3 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/ReportComponent.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/ReportComponent.java @@ -4,6 +4,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.actions.AllowAuthorityEditAction; import com.fr.design.actions.ExitAuthorityEditAction; import com.fr.design.actions.report.ReportBackgroundAction; @@ -68,7 +69,7 @@ public abstract class ReportComponent= 2 && !BaseUtils.isAuthorityEditing()) { + if (clickCount >= 2 && !DesignerMode.isAuthorityEditing()) { grid.startEditing(); } - if (clickCount == 1 && cellElement != null && cellElement.getWidget() != null && !BaseUtils.isAuthorityEditing()) { + if (clickCount == 1 && cellElement != null && cellElement.getWidget() != null && !DesignerMode.isAuthorityEditing()) { showWidetWindow(cellElement, report); } reportPane.repaint(); @@ -362,12 +363,12 @@ public class GridMouseAdapter implements MouseListener, MouseWheelListener, Mous } Selection selection = reportPane.getSelection(); - if (selection instanceof FloatSelection && !BaseUtils.isAuthorityEditing()) { + if (selection instanceof FloatSelection && !DesignerMode.isAuthorityEditing()) { doWithFloatElementDragged(evtX, evtY, (FloatSelection) selection); grid.setDragType(GridUtils.DRAG_FLOAT); - } else if (grid.getDragType() == GridUtils.DRAG_CELLSELECTION_BOTTOMRIGHT_CORNER && !BaseUtils.isAuthorityEditing()) { + } else if (grid.getDragType() == GridUtils.DRAG_CELLSELECTION_BOTTOMRIGHT_CORNER && !DesignerMode.isAuthorityEditing()) { doWithCellElementDragged(evtX, evtY, (CellSelection) selection); - } else if (grid.getDragType() == GridUtils.DRAG_CELLSELECTION && !BaseUtils.isAuthorityEditing()) { + } else if (grid.getDragType() == GridUtils.DRAG_CELLSELECTION && !DesignerMode.isAuthorityEditing()) { // peter:获得调整过的Selected Column Row. ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow_withresolution(reportPane, evtX, evtY, resolution); if (selectedCellPoint.getColumn() != grid.getDragRectangle().x || selectedCellPoint.getRow() != grid.getDragRectangle().y) { diff --git a/designer-realize/src/main/java/com/fr/grid/GridRowUI.java b/designer-realize/src/main/java/com/fr/grid/GridRowUI.java index 303752e71..44f1fe874 100644 --- a/designer-realize/src/main/java/com/fr/grid/GridRowUI.java +++ b/designer-realize/src/main/java/com/fr/grid/GridRowUI.java @@ -12,6 +12,7 @@ import com.fr.base.BaseUtils; import com.fr.base.DynamicUnitList; import com.fr.base.GraphHelper; import com.fr.base.ScreenResolution; +import com.fr.base.vcs.DesignerMode; import com.fr.cache.list.IntList; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.ElementCasePane; @@ -137,7 +138,7 @@ public class GridRowUI extends ComponentUI { } private void drawAuthority(ElementCase elementCase, Graphics2D g2d, double tmpHeight1, double tmpIncreaseHeight, Dimension size, int i) { - boolean isAuthorityEdited = BaseUtils.isAuthorityEditing(); + boolean isAuthorityEdited = DesignerMode.isAuthorityEditing(); if (isAuthorityEdited) { ColumnRowPrivilegeControl cpc = elementCase.getRowPrivilegeControl(i); String selectedRoles = ReportAndFSManagePane.getInstance().getRoleTree().getSelectedRoleName(); diff --git a/designer-realize/src/main/java/com/fr/grid/GridUI.java b/designer-realize/src/main/java/com/fr/grid/GridUI.java index 45d8143c8..f64fa0864 100644 --- a/designer-realize/src/main/java/com/fr/grid/GridUI.java +++ b/designer-realize/src/main/java/com/fr/grid/GridUI.java @@ -11,6 +11,7 @@ import com.fr.base.Utils; import com.fr.base.background.ColorBackground; import com.fr.base.background.ImageFileBackground; import com.fr.base.iofile.attr.WatermarkAttr; +import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.mainframe.DesignerContext; @@ -1060,7 +1061,7 @@ public class GridUI extends ComponentUI { throw new IllegalArgumentException("The component c to paint must be a Grid!"); } - isAuthority = BaseUtils.isAuthorityEditing(); + isAuthority = DesignerMode.isAuthorityEditing(); Graphics2D g2d = (Graphics2D) g; diff --git a/designer-realize/src/main/java/com/fr/grid/selection/CellSelection.java b/designer-realize/src/main/java/com/fr/grid/selection/CellSelection.java index 3bbf8e952..cff3f5ddc 100644 --- a/designer-realize/src/main/java/com/fr/grid/selection/CellSelection.java +++ b/designer-realize/src/main/java/com/fr/grid/selection/CellSelection.java @@ -4,6 +4,7 @@ import com.fr.base.BaseFormula; import com.fr.base.BaseUtils; import com.fr.base.NameStyle; import com.fr.base.Utils; +import com.fr.base.vcs.DesignerMode; import com.fr.cache.list.IntList; import com.fr.config.ServerPreferenceConfig; import com.fr.design.actions.UpdateAction; @@ -463,7 +464,7 @@ public class CellSelection extends Selection { */ public UIPopupMenu createPopupMenu(ElementCasePane ePane) { UIPopupMenu popup = new UIPopupMenu(); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { popup.add(new CleanAuthorityAction(ePane).createMenuItem()); return popup; } diff --git a/designer-realize/src/main/java/com/fr/grid/selection/FloatSelection.java b/designer-realize/src/main/java/com/fr/grid/selection/FloatSelection.java index eaad78306..da6f1d45a 100644 --- a/designer-realize/src/main/java/com/fr/grid/selection/FloatSelection.java +++ b/designer-realize/src/main/java/com/fr/grid/selection/FloatSelection.java @@ -2,6 +2,7 @@ package com.fr.grid.selection; import com.fr.base.BaseUtils; import com.fr.base.FRContext; +import com.fr.base.vcs.DesignerMode; import com.fr.design.actions.cell.CleanAuthorityAction; import com.fr.design.actions.cell.FloatStyleAction; import com.fr.design.actions.core.ActionFactory; @@ -125,7 +126,7 @@ public class FloatSelection extends Selection { @Override public JPopupMenu createPopupMenu(ElementCasePane ePane) { UIPopupMenu popup = new UIPopupMenu(); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { popup.add(new CleanAuthorityAction(ePane).createMenuItem()); return popup; } diff --git a/designer-realize/src/main/java/com/fr/poly/PolyComponetsBar.java b/designer-realize/src/main/java/com/fr/poly/PolyComponetsBar.java index ef48594d0..3a7fc58b3 100644 --- a/designer-realize/src/main/java/com/fr/poly/PolyComponetsBar.java +++ b/designer-realize/src/main/java/com/fr/poly/PolyComponetsBar.java @@ -5,6 +5,7 @@ import com.fr.base.FRContext; import com.fr.base.chart.BaseChart; import com.fr.base.chart.BaseChartGetter; import com.fr.base.chart.BaseChartNameID; +import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.itooltip.MultiLineToolTip; @@ -53,7 +54,7 @@ public class PolyComponetsBar extends JToolBar { */ public void checkEnable() { for (SerIcon serIcon : serIcons) { - serIcon.setEnabled(!BaseUtils.isAuthorityEditing()); + serIcon.setEnabled(!DesignerMode.isAuthorityEditing()); } } diff --git a/designer-realize/src/main/java/com/fr/poly/PolyDesigner.java b/designer-realize/src/main/java/com/fr/poly/PolyDesigner.java index eefff3e1e..2307765e3 100644 --- a/designer-realize/src/main/java/com/fr/poly/PolyDesigner.java +++ b/designer-realize/src/main/java/com/fr/poly/PolyDesigner.java @@ -7,6 +7,7 @@ import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.base.GraphHelper; import com.fr.base.ScreenResolution; +import com.fr.base.vcs.DesignerMode; import com.fr.common.inputevent.InputEventBaseOnOS; import com.fr.design.DesignState; import com.fr.design.DesignerEnvManager; @@ -355,7 +356,7 @@ public class PolyDesigner extends ReportComponent { */ public void resetSelectionAndChooseState() { designer.setChooseType(SelectionType.INNER); - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (jTemplate.isJWorkBook()) { //清参数面板 diff --git a/designer-realize/src/main/java/com/fr/poly/creator/ECBlockPane.java b/designer-realize/src/main/java/com/fr/poly/creator/ECBlockPane.java index 1d211189a..0f3c489c5 100644 --- a/designer-realize/src/main/java/com/fr/poly/creator/ECBlockPane.java +++ b/designer-realize/src/main/java/com/fr/poly/creator/ECBlockPane.java @@ -4,6 +4,7 @@ package com.fr.poly.creator; import com.fr.base.BaseUtils; +import com.fr.base.vcs.DesignerMode; import com.fr.design.actions.edit.HyperlinkAction; import com.fr.design.menu.KeySetUtils; @@ -55,7 +56,7 @@ public class ECBlockPane extends PolyElementCasePane { if (!isEditable()) { return; } - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { if (designer.getSelection().getEditingElementCasePane() == null) { EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.AUTHORITY_EDITION_DISABLED); EastRegionContainerPane.getInstance().replaceAuthorityEditionPane(new NoSupportAuthorityEdit()); @@ -106,7 +107,7 @@ public class ECBlockPane extends PolyElementCasePane { * @return 返回MenuDef数组. */ public MenuDef[] menus4Target() { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { return super.menus4Target(); } return (MenuDef[]) ArrayUtils.addAll(super.menus4Target(), new MenuDef[]{createInsertMenuDef(), createCellMenuDef()}); diff --git a/designer-realize/src/main/java/com/fr/poly/hanlder/BottomCornerMouseHanlder.java b/designer-realize/src/main/java/com/fr/poly/hanlder/BottomCornerMouseHanlder.java index b55916e77..0985667eb 100644 --- a/designer-realize/src/main/java/com/fr/poly/hanlder/BottomCornerMouseHanlder.java +++ b/designer-realize/src/main/java/com/fr/poly/hanlder/BottomCornerMouseHanlder.java @@ -11,6 +11,7 @@ import javax.swing.event.MouseInputAdapter; import com.fr.base.BaseUtils; import com.fr.base.ScreenResolution; +import com.fr.base.vcs.DesignerMode; import com.fr.design.beans.location.Absorptionline; import com.fr.design.beans.location.MoveUtils; import com.fr.design.beans.location.MoveUtils.RectangleDesigner; @@ -49,7 +50,7 @@ public class BottomCornerMouseHanlder extends MouseInputAdapter { * */ public void mousePressed(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { designer.noAuthorityEdit(); } pressed = e.getPoint(); @@ -66,7 +67,7 @@ public class BottomCornerMouseHanlder extends MouseInputAdapter { * */ public void mouseReleased(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { designer.noAuthorityEdit(); } editor.setDragging(false); @@ -92,7 +93,7 @@ public class BottomCornerMouseHanlder extends MouseInputAdapter { * */ public void mouseDragged(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { designer.noAuthorityEdit(); return; } diff --git a/designer-realize/src/main/java/com/fr/poly/hanlder/ColumnOperationMouseHandler.java b/designer-realize/src/main/java/com/fr/poly/hanlder/ColumnOperationMouseHandler.java index 39b4c1321..6704e0628 100644 --- a/designer-realize/src/main/java/com/fr/poly/hanlder/ColumnOperationMouseHandler.java +++ b/designer-realize/src/main/java/com/fr/poly/hanlder/ColumnOperationMouseHandler.java @@ -8,6 +8,7 @@ import java.awt.event.MouseEvent; import com.fr.base.BaseUtils; import com.fr.base.ScreenResolution; +import com.fr.base.vcs.DesignerMode; import com.fr.general.ComparatorUtils; import com.fr.poly.PolyDesigner; import com.fr.poly.PolyDesigner.SelectionType; @@ -57,7 +58,7 @@ public abstract class ColumnOperationMouseHandler extends * */ public void mousePressed(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { designer.noAuthorityEdit(); } startPoint = e.getPoint(); @@ -74,7 +75,7 @@ public abstract class ColumnOperationMouseHandler extends * */ public void mouseDragged(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { return; } TemplateBlock block = editor.getValue(); diff --git a/designer-realize/src/main/java/com/fr/poly/hanlder/PolyDesignerDropTarget.java b/designer-realize/src/main/java/com/fr/poly/hanlder/PolyDesignerDropTarget.java index bc105c684..7317e3ecd 100644 --- a/designer-realize/src/main/java/com/fr/poly/hanlder/PolyDesignerDropTarget.java +++ b/designer-realize/src/main/java/com/fr/poly/hanlder/PolyDesignerDropTarget.java @@ -19,6 +19,7 @@ import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.base.ScreenResolution; import com.fr.base.chart.BaseChart; +import com.fr.base.vcs.DesignerMode; import com.fr.design.mainframe.DesignerContext; import com.fr.grid.Grid; import com.fr.poly.PolyDesigner; @@ -55,7 +56,7 @@ public class PolyDesignerDropTarget extends DropTargetAdapter { */ public void dragEnter(DropTargetDragEvent dtde) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { return; } // richer:避免在一次拖拽过程中重复查找 diff --git a/designer-realize/src/main/java/com/fr/poly/hanlder/RowOperationMouseHandler.java b/designer-realize/src/main/java/com/fr/poly/hanlder/RowOperationMouseHandler.java index eeef42e62..96c8bf519 100644 --- a/designer-realize/src/main/java/com/fr/poly/hanlder/RowOperationMouseHandler.java +++ b/designer-realize/src/main/java/com/fr/poly/hanlder/RowOperationMouseHandler.java @@ -8,6 +8,7 @@ import java.awt.event.MouseEvent; import com.fr.base.BaseUtils; import com.fr.base.ScreenResolution; +import com.fr.base.vcs.DesignerMode; import com.fr.general.ComparatorUtils; import com.fr.poly.PolyDesigner; import com.fr.poly.PolyDesigner.SelectionType; @@ -55,7 +56,7 @@ public abstract class RowOperationMouseHandler extends Bl * */ public void mousePressed(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { designer.noAuthorityEdit(); } startPoint = e.getPoint(); @@ -72,7 +73,7 @@ public abstract class RowOperationMouseHandler extends Bl * */ public void mouseDragged(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { + if (DesignerMode.isAuthorityEditing()) { return; } TemplateBlock block = editor.getValue(); From 588f9ed08b4448537b72b6a6a2b7df356287a10a Mon Sep 17 00:00:00 2001 From: vito Date: Tue, 31 Jul 2018 18:42:04 +0800 Subject: [PATCH 4/4] =?UTF-8?q?REPORT-10160=2010.0=E5=86=92=E7=83=9F=20Mac?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=90=AF=E5=8A=A8,=20=E5=AD=97?= =?UTF-8?q?=E4=BD=93=E7=B3=8A=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer-realize/src/main/java/com/fr/start/Designer.java | 5 +++++ .../src/main/java/com/fr/start/jni/SplashMac.java | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/designer-realize/src/main/java/com/fr/start/Designer.java b/designer-realize/src/main/java/com/fr/start/Designer.java index e4c119f7d..29e84d031 100644 --- a/designer-realize/src/main/java/com/fr/start/Designer.java +++ b/designer-realize/src/main/java/com/fr/start/Designer.java @@ -150,6 +150,11 @@ public class Designer extends BaseDesigner { private static SplashStrategy createSplash() { // 这里可以开接口加载自定义启动画面 + if (OperatingSystem.isWindows()) { + return new SplashFx(); + } else if (OperatingSystem.isMacOS()) { + return new SplashMac(); + } return new SplashFx(); } diff --git a/designer-realize/src/main/java/com/fr/start/jni/SplashMac.java b/designer-realize/src/main/java/com/fr/start/jni/SplashMac.java index f4e900aec..964cf17a4 100644 --- a/designer-realize/src/main/java/com/fr/start/jni/SplashMac.java +++ b/designer-realize/src/main/java/com/fr/start/jni/SplashMac.java @@ -7,6 +7,7 @@ import com.fr.stable.StringUtils; import com.fr.start.SplashContext; import com.fr.start.SplashStrategy; +import javax.swing.*; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -24,6 +25,7 @@ public class SplashMac implements SplashStrategy { private SplashJNI jni; + private static final int EXILE = 10000; public SplashMac() { jni = new SplashJNI(); @@ -62,6 +64,11 @@ public class SplashMac implements SplashStrategy { @Override public void show() { if (jni != null) { + // mac下安装版模糊的hack + JFrame jFrame = new JFrame(); + jFrame.setLocation(EXILE, EXILE); + jFrame.setVisible(true); + jFrame.setVisible(false); File splash = new File(StableUtils.pathJoin(ProductConstants.getEnvHome(), SplashContext.SPLASH_CACHE_NAME)); String path = splash.exists() ? splash.getAbsolutePath() : loadResFromJar(); jni.show(path);