neil 7 years ago
parent
commit
041918a62e
  1. 342
      designer_base/src/com/fr/design/mainframe/DesignerFrame.java

342
designer_base/src/com/fr/design/mainframe/DesignerFrame.java

@ -15,17 +15,14 @@ import com.fr.design.data.DesignTableDataManager;
import com.fr.design.data.datapane.TableDataTreePane;
import com.fr.design.event.TargetModifiedEvent;
import com.fr.design.event.TargetModifiedListener;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.file.MutilTempalteTabPane;
import com.fr.design.file.NewTemplatePane;
import com.fr.design.file.SaveSomeTemplatePane;
import com.fr.design.file.TemplateTreePane;
import com.fr.design.file.*;
import com.fr.design.fun.TitlePlaceProcessor;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.imenu.UIMenuHighLight;
import com.fr.design.gui.iscrollbar.UIScrollBar;
import com.fr.design.gui.itoolbar.UIToolbar;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.hold.DefaultTitlePlace;
import com.fr.design.mainframe.loghandler.LogMessageBar;
import com.fr.design.mainframe.toolbar.ToolBarMenuDock;
import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus;
@ -40,7 +37,6 @@ 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.plugin.context.PluginContext;
import com.fr.plugin.injectable.PluginModule;
import com.fr.plugin.manage.PluginFilter;
@ -58,20 +54,8 @@ import javax.swing.border.MatteBorder;
import java.awt.*;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.dnd.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
@ -81,13 +65,15 @@ import java.util.List;
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));
public static final String DESIGNER_FRAME_NAME = "designer_frame";
public static final Dimension MIN_SIZE = new Dimension(100, 100);
private static java.util.List<App<?>> appList = new java.util.ArrayList<App<?>>();
private ToolBarMenuDock ad;
@ -153,45 +139,82 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
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();
/**
* 注册app.
*
* @param app
* 注册app.
*/
public static void registApp(App<?> app) {
if (app != null) {
appList.add(app);
}
}
public void mouseExited(MouseEvent e) {
closeMode = UIConstants.CLOSE_OF_AUTHORITY;
closeButton.setBackground(UIConstants.NORMAL_BACKGROUND);
closeButton.repaint();
public static void removeApp(App<?> app) {
if (app != null) {
appList.remove(app);
}
}
public void mouseMoved(MouseEvent e) {
closeMode = UIConstants.CLOSE_OVER_AUTHORITY;
closeButton.setBackground(UIConstants.NORMAL_BACKGROUND);
closeButton.repaint();
protected DesktopCardPane getCenterTemplateCardPane() {
return centerTemplateCardPane;
}
public void mouseReleased(MouseEvent e) {
if (BaseUtils.isAuthorityEditing()) {
BaseUtils.setAuthorityEditing(false);
WestRegionContainerPane.getInstance().replaceDownPane(
TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()));
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshEastPropertiesPane();
DesignerContext.getDesignerFrame().resetToolkitByPlus(
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getToolBarMenuDockPlus());
needToAddAuhtorityPaint();
refreshDottedLine();
fireAuthorityStateToNomal();
/**
* 初始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
*/
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(northEastPane, ad);
DesignUtils.refreshDesignerFrame(FRContext.getCurrentEnv());
}
}, new PluginFilter() {
public void mouseEntered(MouseEvent e) {
closeMode = UIConstants.CLOSE_OVER_AUTHORITY;
closeButton.setBackground(UIConstants.NORMAL_BACKGROUND);
closeButton.repaint();
@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();
TitlePlaceProcessor processor = ExtraDesignClassManager.getInstance().getSingle(TitlePlaceProcessor.MARK_STRING);
if (processor == null) {
processor = new DefaultTitlePlace();
}
processor.hold(northEastPane, LogMessageBar.getInstance(), ad.createBBSLoginPane());
if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isEnabled()) {
northEastPane.add(ad.createAlphafinePane(), BorderLayout.CENTER);
}
}
};
public DesignerFrame(ToolBarMenuDock ad) {
@ -217,7 +240,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
eastCenterPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
eastCenterPane.add(combineUp = combineUpTooBar(null), BorderLayout.NORTH);
JPanel panel = FRGUIPaneFactory.createBorderLayout_S_Pane();
panel.add(newWorkBookPane = ad.getNewTemplatePane(), BorderLayout.WEST);
panel.add(newWorkBookPane =ad.getNewTemplatePane(), BorderLayout.WEST);
panel.add(MutilTempalteTabPane.getInstance(), BorderLayout.CENTER);
eastCenterPane.add(panel, BorderLayout.CENTER);
@ -232,6 +255,11 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
basePane.add(centerPane, BorderLayout.CENTER);
laoyoutWestPane();
// JPanel eastRegionPane = new JPanel(new BorderLayout());
// eastRegionPane.add(EastRegionContainerPane.getInstance(), BorderLayout.CENTER);
// eastRegionPane.add(JSliderPane.getInstance(), BorderLayout.SOUTH);
// basePane.add(eastRegionPane, BorderLayout.EAST);
basePane.add(EastRegionContainerPane.getInstance(), BorderLayout.EAST);
basePane.setBounds(0, 0, contentWidth, contentHeight);
@ -241,6 +269,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
modWindowBounds();
// p:检查所有按钮的可见性和是否可以编辑性.
checkToolbarMenuEnable();
@ -263,84 +292,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
initMenuPane();
}
/**
* 注册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);
}
}
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
*/
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(northEastPane, ad);
DesignUtils.refreshDesignerFrame(FRContext.getCurrentEnv());
}
}, 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());
TitlePlaceProcessor processor = ExtraDesignClassManager.getInstance().getSingle(TitlePlaceProcessor.MARK_STRING);
if (processor != null) {
processor.hold(northEastPane, LogMessageBar.getInstance(), ad.createBBSLoginPane());
}
northEastPane.add(ad.createAlphaFinePane());
if (!DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isEnabled()) {
ad.createAlphaFinePane().setVisible(false);
}
northEastPane.add(ad.createBBSLoginPane());
}
public void initTitleIcon() {
try {
@SuppressWarnings("unchecked")
@ -353,19 +304,20 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
}
}
private void addWindowListeners(ArrayList<WindowListener> listeners) {
for (WindowListener listener : listeners) {
private void addWindowListeners(ArrayList<WindowListener> listeners){
for(WindowListener listener : listeners){
this.addWindowListener(listener);
}
}
protected ArrayList<WindowListener> getFrameListeners() {
protected ArrayList<WindowListener> getFrameListeners(){
ArrayList<WindowListener> arrayList = new ArrayList<WindowListener>();
arrayList.add(windowAdapter);
return arrayList;
}
protected void laoyoutWestPane() {
protected void laoyoutWestPane(){
basePane.add(WestRegionContainerPane.getInstance(), BorderLayout.WEST);
}
@ -450,6 +402,46 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
addDottedLine();
}
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()));
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshEastPropertiesPane();
DesignerContext.getDesignerFrame().resetToolkitByPlus(
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getToolBarMenuDockPlus());
needToAddAuhtorityPaint();
refreshDottedLine();
fireAuthorityStateToNomal();
}
}
public void mouseEntered(MouseEvent e) {
closeMode = UIConstants.CLOSE_OVER_AUTHORITY;
closeButton.setBackground(UIConstants.NORMAL_BACKGROUND);
closeButton.repaint();
}
};
/**
* 刷新CloseButton
*/
@ -507,9 +499,9 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
return combineUp;
}
private void addExtraButtons() {
private void addExtraButtons(){
JTemplate<?, ?> jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
if (jt == null) {
if(jt == null){
return;
}
@ -523,9 +515,9 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
}
}
private void addShareButton() {
private void addShareButton(){
JTemplate<?, ?> jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
if (jt == null) {
if(jt == null){
return;
}
@ -539,8 +531,10 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
/**
* 检查
*
* @param flag 组件是否可见
* @param al 组件名称
* @param flag
* 组件是否可见
* @param al
* 组件名称
*/
public void checkCombineUp(boolean flag, ArrayList<String> al) {
combineUp.checkComponentsByNames(flag, al);
@ -557,7 +551,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
/**
* 重置相关的工具条.
*
* @param plus 工具条中相关信息
* @param plus
* 工具条中相关信息
*/
public void resetToolkitByPlus(ToolBarMenuDockPlus plus) {
if (plus == null) {
@ -720,16 +715,16 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
editingTemplate.saveTemplate();
FRLogger.getLogger().log(
Level.INFO,
Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{
editingTemplate.getEditingFILE().getName(), "."}));
Inter.getLocText(new String[] { "Template", "already-saved" }, new String[] {
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(), "."}));
Inter.getLocText(new String[] { "Template", "already-saved" }, new String[] {
editingTemplate.getEditingFILE().getName(), "." }));
}
}
}
@ -746,7 +741,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
/**
* 添加 模板, 并激活.
*
* @param jt 添加的模板.
* @param jt
* 添加的模板.
*/
public void addAndActivateJTemplate(JTemplate<?, ?> jt) {
if (jt == null || jt.getEditingFILE() == null) {
@ -762,7 +758,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
/**
* 激活已经存在的模板
*
* @param jt 模板
* @param jt
* 模板
*/
public void activateJTemplate(JTemplate<?, ?> jt) {
if (jt == null || jt.getEditingFILE() == null) {
@ -776,7 +773,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
/**
* 对象侦听
*
* @param e 事件
* @param e
* 事件
*/
public void targetModified(TargetModifiedEvent e) {
this.checkToolbarMenuEnable();
@ -785,7 +783,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
/**
* 模板关闭时 处理.
*
* @param jt 模板
* @param jt
* 模板
*/
public void templateClosed(JTemplate<?, ?> jt) {
}
@ -793,7 +792,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
/**
* 模板打开时 处理.
*
* @param jt 模板
* @param jt
* 模板
*/
public void templateOpened(JTemplate<?, ?> jt) {
}
@ -801,7 +801,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
/**
* 模板保存时 处理.
*
* @param jt 模板
* @param jt
* 模板
*/
public void templateSaved(JTemplate<?, ?> jt) {
this.checkToolbarMenuEnable();
@ -810,7 +811,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
/**
* 打开模板文件,如果是已经打开的就激活此模板所对应的JInternalFrame
*
* @param tplFile 文件
* @param tplFile
* 文件
*/
public void openTemplate(FILE tplFile) {
// 测试连接,如果连接失败,则提示
@ -819,8 +821,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
&& !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);
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) {
@ -847,8 +849,12 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
/**
* 是否不合版本的设计器
*
* @param jt 当前模板
* @param jt
* 当前模板
*
* @return 是否不合版本
*
*
* @date 2014-10-14-下午6:30:37
*/
private boolean inValidDesigner(JTemplate jt) {
@ -858,7 +864,10 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
/**
* 打开指定的文件
*
* @param tplFile 指定的文件
* @param tplFile
* 指定的文件
*
*
* @date 2014-10-14-下午6:31:05
*/
private void openFile(FILE tplFile) {
@ -904,13 +913,17 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
/**
* 激活指定的模板
*
* @param tplFile 模板文件
* @param jt 当前报表
* @param tplFile
* 模板文件
* @param jt
* 当前报表
*
*
* @date 2014-10-14-下午6:31:23
*/
private void activeTemplate(FILE tplFile, JTemplate jt) {
// 如果该模板已经打开,则进行激活就可以了
String fullName = StableUtils.pathJoin(new String[]{ProjectConstants.REPORTLETS_NAME, tplFile.getName()});
String fullName = StableUtils.pathJoin(new String[] { ProjectConstants.REPORTLETS_NAME, tplFile.getName() });
if (tplFile instanceof FileNodeFILE) {
fullName = ((FileNodeFILE) tplFile).getEnvPath() + "/" + tplFile.getPath();
}
@ -918,15 +931,15 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
if (tplFile instanceof FileFILE) {
fullName = tplFile.getPath();
}
fullName = OperatingSystem.isWindows() ? fullName.replaceAll("/", "\\\\") : fullName.replaceAll("\\\\", "/");
fullName = fullName.replaceAll("/", "\\\\");
int index = HistoryTemplateListPane.getInstance().contains(fullName);
List<JTemplate<?, ?>> historyList = HistoryTemplateListPane.getInstance().getHistoryList();
if (index != -1) {
this.activateJTemplate(HistoryTemplateListPane.getInstance().getHistoryList().get(index));
historyList.get(index).activeJTemplate(index, jt);
} else {
this.addAndActivateJTemplate(jt);
}
//REPORT-5084:激活后刷新一下右側面板
jt.refreshEastPropertiesPane();
}
/**
@ -963,9 +976,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
Env currentEnv = FRContext.getCurrentEnv();
try {
EnvContext.fireBeforeSignOut();
currentEnv.signOut();
EnvContext.fireAfterSignOut();
GeneralContext.fireEnvSignOutListener();
} catch (Exception e) {
FRContext.getLogger().error(e.getMessage(), e);
}

Loading…
Cancel
Save