diff --git a/designer-base/src/com/fr/design/env/RemoteWorkspace.java b/designer-base/src/com/fr/design/env/RemoteWorkspace.java index 4994dcc5f..a2b8bd94f 100644 --- a/designer-base/src/com/fr/design/env/RemoteWorkspace.java +++ b/designer-base/src/com/fr/design/env/RemoteWorkspace.java @@ -1,6 +1,7 @@ package com.fr.design.env; import com.fr.env.operator.decision.DecisionOperator; +import com.fr.locale.InterProviderFactory; import com.fr.workspace.WorkContext; import com.fr.workspace.Workspace; import com.fr.workspace.connect.WorkspaceClient; @@ -28,6 +29,12 @@ public class RemoteWorkspace implements Workspace { return address; } + @Override + public String getDescription() { + + return InterProviderFactory.getProvider().getLocText("Fine-Designer_Basic_Remote_Env"); + } + @Override public boolean isWarDeploy() { diff --git a/designer-base/src/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/com/fr/design/mainframe/DesignerFrame.java index 13b40ef53..be8aa97bf 100644 --- a/designer-base/src/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/com/fr/design/mainframe/DesignerFrame.java @@ -41,7 +41,6 @@ import com.fr.file.FileNodeFILE; import com.fr.general.ComparatorUtils; import com.fr.general.GeneralContext; import com.fr.general.Inter; -import com.fr.locale.InterProviderFactory; import com.fr.log.FineLoggerFactory; import com.fr.plugin.context.PluginContext; import com.fr.plugin.injectable.PluginModule; @@ -84,53 +83,74 @@ import java.util.Iterator; import java.util.List; 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 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; - + // 左边的虚线 private DottedLine leftDottedLine; - + // 右边的虚线 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) { - + } - + @Override public void windowClosing(WindowEvent e) { + SaveSomeTemplatePane saveSomeTempaltePane = new SaveSomeTemplatePane(true); // 只有一个文件未保存时 if (HistoryTemplateListPane.getInstance().getHistoryCount() == 1) { @@ -144,72 +164,83 @@ 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); + 0, 360); closeMode.paintIcon(this, g, 0, 0); } }; - + 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); WestRegionContainerPane.getInstance().replaceDownPane( - TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter())); + TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter())); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshEastPropertiesPane(); DesignerContext.getDesignerFrame().resetToolkitByPlus( - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getToolBarMenuDockPlus()); + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getToolBarMenuDockPlus()); needToAddAuhtorityPaint(); refreshDottedLine(); fireAuthorityStateToNomal(); } } - + 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); this.ad = ad; this.initTitleIcon(); this.setTitle();// james:因为有默认的了 // set this to context. DesignerContext.setDesignerFrame(this); - + // the content pane basePane.setLayout(new BorderLayout()); toolbarPane = new JPanel() { + public Dimension getPreferredSize() { + Dimension dim = super.getPreferredSize(); // dim.height = TOOLBAR_HEIGHT; return dim; @@ -224,35 +255,37 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta panel.add(newWorkBookPane = ad.getNewTemplatePane(), BorderLayout.WEST); panel.add(MutilTempalteTabPane.getInstance(), BorderLayout.CENTER); eastCenterPane.add(panel, BorderLayout.CENTER); - + eastPane.add(eastCenterPane, BorderLayout.CENTER); toolbarPane.add(eastPane, BorderLayout.NORTH); toolbarPane.add(new UIMenuHighLight(), BorderLayout.SOUTH); - + JPanel centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); centerPane.add(centerTemplateCardPane = new DesktopCardPane(), BorderLayout.CENTER); centerPane.add(toolbarPane, BorderLayout.NORTH); - - + + basePane.add(centerPane, BorderLayout.CENTER); laoyoutWestPane(); basePane.add(EastRegionContainerPane.getInstance(), BorderLayout.EAST); basePane.setBounds(0, 0, contentWidth, contentHeight); - + // 数值越小。越在底层 layeredPane.add(basePane); // 调整Window大小 modWindowBounds(); - - + + // p:检查所有按钮的可见性和是否可以编辑性. checkToolbarMenuEnable(); - + // window close listener. this.addWindowListeners(getFrameListeners()); - + this.addComponentListener(new ComponentAdapter() { + public void componentResized(ComponentEvent e) { + reCalculateFrameSize(); if (BaseUtils.isAuthorityEditing()) { doResize(); @@ -260,8 +293,10 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } }); this.addDesignerOpenedListener(new DesignerOpenedListener() { + @Override public void designerOpened() { + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().setComposite(); reCalculateFrameSize(); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().doResize(); @@ -275,56 +310,61 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta initMenuPane(); this.progressDialog = new ProgressDialog(this); } - + /** * 注册app. * * @param app 注册app. */ public static void registApp(App app) { + if (app != null) { appList.add(app); } } - + public static void removeApp(App app) { - + if (app != null) { appList.remove(app); } } - + /** * 注册"设计器初始化完成"的监听 */ public void addDesignerOpenedListener(DesignerOpenedListener listener) { + designerOpenedListenerList.add(listener); } - + /** * 触发"设计器初始化完成"事件 */ public void fireDesignerOpened() { + for (DesignerOpenedListener listener : designerOpenedListenerList) { listener.designerOpened(); } } - + protected DesktopCardPane getCenterTemplateCardPane() { + return centerTemplateCardPane; } - + /** * 初始menuPane的方法 方便OEM时修改该组件 */ protected void initMenuPane() { + menuPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); menuPane.add(new UIMenuHighLight(), BorderLayout.SOUTH); menuPane.add(initNorthEastPane(ad), BorderLayout.EAST); basePane.add(menuPane, BorderLayout.NORTH); this.resetToolkitByPlus(null); } - + /** * @param ad * @return @@ -335,26 +375,27 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta final JPanel northEastPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); //优先级为-1,保证最后全面刷新一次 GeneralContext.listenPluginRunningChanged(new PluginEventListener(-1) { - + @Override public void on(PluginEvent event) { - + refreshNorthEastPane(northEastPane, ad); DesignUtils.refreshDesignerFrame(); } }, new PluginFilter() { - + @Override public boolean accept(PluginContext context) { - + return context.contain(PluginModule.ExtraDesign); } }); refreshNorthEastPane(northEastPane, ad); return northEastPane; } - + private void refreshNorthEastPane(JPanel northEastPane, ToolBarMenuDock ad) { + northEastPane.removeAll(); northEastPane.setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 0)); northEastPane.add(LogMessageBar.getInstance()); @@ -368,38 +409,43 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } northEastPane.add(ad.createBBSLoginPane()); } - + public void initTitleIcon() { + try { @SuppressWarnings("unchecked") List image = ICODecoder.read(DesignerFrame.class - .getResourceAsStream("/com/fr/base/images/oem/logo.ico")); + .getResourceAsStream("/com/fr/base/images/oem/logo.ico")); this.setIconImages(image); } catch (IOException 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; } - - + + protected void laoyoutWestPane() { + basePane.add(WestRegionContainerPane.getInstance(), BorderLayout.WEST); } - + // 调整windows大小 private void reCalculateFrameSize() { + contentHeight = layeredPane.getHeight(); contentWidth = layeredPane.getWidth(); layeredPane.remove(basePane); @@ -407,58 +453,63 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta layeredPane.add(basePane); layeredPane.repaint(); } - + /** * 更新 */ public void populateAuthorityArea() { + int centerWidth = contentWidth - WestRegionContainerPane.getInstance().getContainerWidth() - - EastRegionContainerPane.getInstance().getContainerWidth(); + - EastRegionContainerPane.getInstance().getContainerWidth(); // 上面的虚线 upDottedLine = new DottedLine(UIScrollBar.HORIZONTAL, centerWidth); upDottedLine.setBounds(WestRegionContainerPane.getInstance().getContainerWidth(), MENU_HEIGHT - 1, centerWidth, - 3); - + 3); + // 下面的虚线 downDottedLine = new DottedLine(UIScrollBar.HORIZONTAL, centerWidth); downDottedLine.setBounds(WestRegionContainerPane.getInstance().getContainerWidth(), contentHeight - 3, - centerWidth, 3); - + centerWidth, 3); + // 左边的虚线 leftDottedLine = new DottedLine(UIScrollBar.VERTICAL, contentHeight - MENU_HEIGHT); leftDottedLine.setBounds(WestRegionContainerPane.getInstance().getContainerWidth(), MENU_HEIGHT, 3, - contentHeight - MENU_HEIGHT); - + contentHeight - MENU_HEIGHT); + rightDottedLine = new DottedLine(UIScrollBar.VERTICAL, contentHeight - MENU_HEIGHT); rightDottedLine.setBounds(contentWidth - EastRegionContainerPane.getInstance().getContainerWidth() - 3, - MENU_HEIGHT, 3, contentHeight - MENU_HEIGHT); - + MENU_HEIGHT, 3, contentHeight - MENU_HEIGHT); + } - + private void addDottedLine() { + layeredPane.add(upDottedLine, SECOND_LAYER); layeredPane.add(downDottedLine, SECOND_LAYER); layeredPane.add(leftDottedLine, SECOND_LAYER); layeredPane.add(rightDottedLine, SECOND_LAYER); layeredPane.add(closeButton, TOP_LAYER); } - + private void removeDottedLine() { + layeredPane.remove(upDottedLine); layeredPane.remove(downDottedLine); layeredPane.remove(leftDottedLine); layeredPane.remove(rightDottedLine); layeredPane.remove(closeButton); } - + public JLayeredPane getContentFrame() { + return layeredPane; } - + /** * 刷新 */ public void refreshDottedLine() { + if (BaseUtils.isAuthorityEditing()) { populateAuthorityArea(); populateCloseButton(); @@ -468,35 +519,37 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } layeredPane.repaint(); } - + /** * 刷新DottedLine */ public void doResize() { + removeDottedLine(); populateAuthorityArea(); populateCloseButton(); addDottedLine(); } - + /** * 刷新CloseButton */ public void populateCloseButton() { - + closeButton.addMouseListener(closeMouseListener); closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); closeButton.setBorder(null); int x = contentWidth - EastRegionContainerPane.getInstance().getContainerWidth() - closeMode.getIconWidth() / 2; int y = MENU_HEIGHT - closeMode.getIconHeight() / 2; closeButton.setBounds(x, y, UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH, - UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH); + UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH); } - + /** * 退出权限编辑时,将所有的做过权限编辑的状态,作为一个状态赋给报、报表主体 */ private void fireAuthorityStateToNomal() { + java.util.List> opendedTemplate = HistoryTemplateListPane.getInstance().getHistoryList(); for (int i = 0; i < opendedTemplate.size(); i++) { // 如果在权限编辑时做过操作,则将做过的操作作为一个整体状态赋给正在报表 @@ -505,12 +558,14 @@ 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)); @@ -526,23 +581,24 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } } } - + //添加分享按钮 addShareButton(); - + //添加插件中的按钮 addExtraButtons(); - + return combineUp; } - + private void addExtraButtons() { + JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (jt == null) { return; } - - + + UIButton[] extraButtons = jt.createExtraButtons(); for (int i = 0; i < extraButtons.length; i++) { combineUp.add(extraButtons[i]); @@ -551,20 +607,21 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta combineUp.addSeparator(new Dimension(2, 16)); } } - + private void addShareButton() { + JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (jt == null) { return; } - + combineUp.addSeparator(new Dimension(2, 16)); UIButton[] shareButtons = jt.createShareButton(); for (int i = 0; i < shareButtons.length; i++) { combineUp.add(shareButtons[i]); } } - + /** * 检查 * @@ -572,80 +629,86 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param al 组件名称 */ public void checkCombineUp(boolean flag, ArrayList al) { + combineUp.checkComponentsByNames(flag, al); - + } - + /** * 刷新工具条. */ public void refreshToolbar() { + this.ad.updateToolBarDef(); } - + /** * 重置相关的工具条. * * @param plus 工具条中相关信息 */ public void resetToolkitByPlus(ToolBarMenuDockPlus plus) { + if (plus == null) { plus = ToolBarMenuDock.NULLAVOID; } - + DesignState designState = new DesignState(plus); MenuManager.getInstance().setMenus4Designer(designState); if (menuBar != null) { menuPane.remove(menuBar); } menuPane.add(menuBar = ad.createJMenuBar(plus), BorderLayout.CENTER); - + if (combineUp != null) { eastCenterPane.remove(combineUp); combineUp = null; } - + // 保存撤销那些按钮的面板 eastCenterPane.add(combineUp = combineUpTooBar(ad.resetUpToolBar(plus)), BorderLayout.NORTH); - + if (toolbarComponent != null) { toolbarPane.remove(toolbarComponent); } - + // 颜色,字体那些按钮的工具栏 toolbarPane.add(toolbarComponent = ad.resetToolBar(toolbarComponent, plus), BorderLayout.CENTER); - + this.checkToolbarMenuEnable(); this.validate(); layeredPane.repaint(); } - + public JComponent getToolbarComponent() { + return this.toolbarComponent; } - + /** * 判断是否在权限编辑状态,若是在权限编辑状态,则需要有虚线框和关闭突变 */ public void needToAddAuhtorityPaint() { - + newWorkBookPane.setButtonGray(BaseUtils.isAuthorityEditing()); } - + /** * 检查工具条. */ private void checkToolbarMenuEnable() { + if (this.ad != null) { this.ad.updateMenuDef(); this.ad.updateToolBarDef(); } } - + /** * 设置标题 */ public void setTitle() { + JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); StringBuilder defaultTitleSB = new StringBuilder(); defaultTitleSB.append(ProductConstants.PRODUCT_NAME); @@ -655,27 +718,21 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta // james:标识登录的用户和登录的ENV String envName = DesignerEnvManager.getEnvManager().getCurEnvName(); Workspace workspace = WorkContext.getCurrent(); - if (workspace != null) { - if (workspace.isLocal()) { - defaultTitleSB.append("@").append(envName).append("[").append(InterProviderFactory.getProvider().getLocText("FR-Engine-Local_Workspace")).append("]"); - } else { - DesignerWorkspaceInfo info = DesignerEnvManager.getEnvManager().getWorkspaceInfo(envName); - defaultTitleSB.append(info.getName()).append("@").append(envName).append("[").append(InterProviderFactory.getProvider().getLocText("Fine-Designer_Basic_Remote_Env")).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); + DesignerWorkspaceInfo info = DesignerEnvManager.getEnvManager().getWorkspaceInfo(envName); + defaultTitleSB.append(info.getName()).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()); } - + /** * modify window bounds. */ @@ -686,14 +743,14 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta if (windowBounds != null) { int locX = windowBounds.x; int locY = windowBounds.y; - + if (!OperatingSystem.isWindows()) { locX = Math.max(1, locX); locY = Math.max(1, locY); } - + this.setLocation(new Point(locX, locY)); - + int width = windowBounds.width; int height = windowBounds.height; if (width > MIN_SIZE.width && height > MIN_SIZE.height) { @@ -705,13 +762,13 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta GUICoreUtils.setWindowFullScreen(this); } } - - + + /** * 报表运行环境改变时,需要刷新某些面板 */ public void refreshEnv() { - + this.setTitle(); DesignerFrameFileDealerPane.getInstance().refreshDockingView(); TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()); @@ -719,19 +776,21 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta DesignTableDataManager.clearGlobalDs(); EastRegionContainerPane.getInstance().refreshDownPane(); } - + /** * 返回选中的模板. */ public JTemplate getSelectedJTemplate() { + return this.centerTemplateCardPane.getSelectedJTemplate(); } - + /** * 保存当前编辑的模板 */ - + public void saveCurrentEditingTemplate() { + JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (editingTemplate == null) { return; @@ -744,32 +803,33 @@ 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() - + "\" ?", ProductConstants.PRODUCT_NAME, JOptionPane.YES_NO_OPTION, - JOptionPane.QUESTION_MESSAGE); + 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(Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{ - editingTemplate.getEditingFILE().getName(), "."})); + editingTemplate.getEditingFILE().getName(), "."})); } } else { if (editingTemplate.saveTemplate()) { editingTemplate.saveTemplate(); FineLoggerFactory.getLogger().info(Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{ - editingTemplate.getEditingFILE().getName(), "."})); + editingTemplate.getEditingFILE().getName(), "."})); } } } } - + /** * 添加新建模板, 并激活. */ public void addAndActivateJTemplate() { + addAndActivateJTemplate(ad.createNewTemplate()); layeredPane.repaint(); } - + /** * 添加 模板, 并激活. * @@ -787,7 +847,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta setTitle(); layeredPane.repaint(); } - + /** * 激活已经存在的模板 * @@ -803,41 +863,45 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta setTitle(); layeredPane.repaint(); } - + /** * 对象侦听 * * @param e 事件 */ public void targetModified(TargetModifiedEvent e) { + this.checkToolbarMenuEnable(); } - + /** * 模板关闭时 处理. * * @param jt 模板 */ public void templateClosed(JTemplate jt) { + } - + /** * 模板打开时 处理. * * @param jt 模板 */ public void templateOpened(JTemplate jt) { + } - + /** * 模板保存时 处理. * * @param jt 模板 */ public void templateSaved(JTemplate jt) { + this.checkToolbarMenuEnable(); } - + /** * 打开模板文件,如果是已经打开的就激活此模板所对应的JInternalFrame * @@ -857,24 +921,24 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta // } catch (Exception e) { // FineLoggerFactory.getLogger().error(e.getMessage()); // } - + // p:判断一下,如何文件为空或者文件不存在,直接返回. if (tplFile == null || !tplFile.exists()) { JOptionPane.showMessageDialog(this, Inter.getLocText("Warning-Template_Do_Not_Exsit"), - ProductConstants.PRODUCT_NAME, JOptionPane.INFORMATION_MESSAGE); + ProductConstants.PRODUCT_NAME, JOptionPane.INFORMATION_MESSAGE); DesignerFrameFileDealerPane.getInstance().refresh(); return; } - + try { openFile(tplFile); } catch (Throwable t) { FineLoggerFactory.getLogger().error(t.getMessage(), t); addAndActivateJTemplate(); } - + } - + /** * 是否不合版本的设计器 * @@ -883,9 +947,10 @@ 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()); } - + /** * 打开指定的文件 * @@ -893,6 +958,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) { @@ -907,7 +973,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta if (defaultAppExtentions[j].equalsIgnoreCase(fileExtention)) { // 不要catch JTemplate jt = app.openTemplate(tplFile); - + if (jt == null) { return; } @@ -915,7 +981,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta if (inValidDesigner(jt)) { this.addAndActivateJTemplate(); MutilTempalteTabPane.getInstance().setTemTemplate( - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); } else { activeTemplate(tplFile, jt); } @@ -928,7 +994,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } } } - + /** * 激活指定的模板 * @@ -955,80 +1021,88 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta this.addAndActivateJTemplate(jt); } } - + /** * Exit退出 */ public void exit() { + Thread thread = new Thread() { + @Override public void run() { + DesignerEnvManager.doEndMapSaveWorkersIndesign(); } }; thread.start(); - + try { thread.join(); } catch (InterruptedException e) { FineLoggerFactory.getLogger().error("Map Thread Error"); } - + DesignerEnvManager.getEnvManager().setLastOpenFile( - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getEditingFILE().getPath()); - + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getEditingFILE().getPath()); + DesignerEnvManager.getEnvManager().setLastWestRegionToolPaneY( - WestRegionContainerPane.getInstance().getToolPaneY()); + WestRegionContainerPane.getInstance().getToolPaneY()); DesignerEnvManager.getEnvManager().setLastWestRegionContainerWidth( - WestRegionContainerPane.getInstance().getContainerWidth()); + WestRegionContainerPane.getInstance().getContainerWidth()); DesignerEnvManager.getEnvManager().setLastEastRegionToolPaneY( - EastRegionContainerPane.getInstance().getToolPaneY()); + EastRegionContainerPane.getInstance().getToolPaneY()); DesignerEnvManager.getEnvManager().setLastEastRegionContainerWidth( - EastRegionContainerPane.getInstance().getContainerWidth()); - + EastRegionContainerPane.getInstance().getContainerWidth()); + DesignerEnvManager.getEnvManager().saveXMLFile(); WorkContext.switchTo(null); - + this.setVisible(false); this.dispose(); - + this.ad.shutDown(); - + System.exit(0); } - + // harry:添加程序外拖拽文件进来打开的功能 class FileDropTargetListener implements DropTargetListener { - + @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; } } - + @SuppressWarnings("unchecked") @Override public void drop(DropTargetDropEvent event) { + if (!isDropAcceptable(event)) { event.rejectDrop(); return; } - + event.acceptDrop(DnDConstants.ACTION_MOVE); Transferable transferable = event.getTransferable(); DataFlavor[] flavors = transferable.getTransferDataFlavors(); @@ -1049,17 +1123,20 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } 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