|
|
|
@ -38,6 +38,7 @@ import com.fr.workspace.base.WorkspaceStatus;
|
|
|
|
|
|
|
|
|
|
import java.awt.Window; |
|
|
|
|
import java.lang.reflect.Method; |
|
|
|
|
import java.util.concurrent.atomic.AtomicBoolean; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The main class of Report Designer. |
|
|
|
@ -142,7 +143,33 @@ public abstract class BaseDesigner extends ToolBarMenuDock {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean openFile(final DesignerFrame df, boolean isException, FILE file) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AtomicBoolean isExWrapper = new AtomicBoolean(isException); |
|
|
|
|
openTemplate(df, isExWrapper, file); |
|
|
|
|
|
|
|
|
|
if (OperatingSystem.isMacOS()) { |
|
|
|
|
enableFullScreenMode(df); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
JTemplate<?, ?> selectedJTemplate = df.getSelectedJTemplate(); |
|
|
|
|
if (selectedJTemplate != null) { |
|
|
|
|
selectedJTemplate.requestGridFocus(); |
|
|
|
|
} |
|
|
|
|
return isExWrapper.get(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void openTemplate(DesignerFrame df, AtomicBoolean isException, FILE file) { |
|
|
|
|
|
|
|
|
|
// 如果是起始页启动中
|
|
|
|
|
if (openTemplateOnStartup(df, isException, file)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
openTemplate0(df, isException, file); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void openTemplate0(DesignerFrame df, AtomicBoolean isException, FILE file) { |
|
|
|
|
|
|
|
|
|
//启动时打开指定文件的接口
|
|
|
|
|
DesignerStartOpenFileProcessor processor = ExtraDesignClassManager.getInstance().getSingle(DesignerStartOpenFileProcessor.XML_TAG); |
|
|
|
|
// 如果插件没有,且又开启了启动时打开空文件,则使用启动时打开空文件
|
|
|
|
@ -154,24 +181,20 @@ public abstract class BaseDesigner extends ToolBarMenuDock {
|
|
|
|
|
if (f != null) { |
|
|
|
|
file = f;//避免null
|
|
|
|
|
} else { |
|
|
|
|
isException = true;//此时有文件nullpointer异常,执行打开空文件
|
|
|
|
|
isException.set(true);//此时有文件nullpointer异常,执行打开空文件
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
openTemplate(df, isException, file); |
|
|
|
|
|
|
|
|
|
if (OperatingSystem.isMacOS()) { |
|
|
|
|
enableFullScreenMode(df); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
JTemplate<?, ?> selectedJTemplate = df.getSelectedJTemplate(); |
|
|
|
|
if (selectedJTemplate != null) { |
|
|
|
|
selectedJTemplate.requestGridFocus(); |
|
|
|
|
if (file != null && file.exists() && !isException.get()) { |
|
|
|
|
df.openTemplate(file); |
|
|
|
|
} else { |
|
|
|
|
df.addAndActivateJTemplate(); |
|
|
|
|
// 如果没有模板,则需要确认一下
|
|
|
|
|
MutilTempalteTabPane.getInstance().setTemTemplate(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); |
|
|
|
|
} |
|
|
|
|
return isException; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void openTemplate(DesignerFrame df, boolean isException, FILE file) { |
|
|
|
|
private boolean openTemplateOnStartup(DesignerFrame df, AtomicBoolean isException, FILE file) { |
|
|
|
|
|
|
|
|
|
boolean onStartup = DesignerStartupContext.getInstance().isSupport(); |
|
|
|
|
if (onStartup) { |
|
|
|
@ -180,27 +203,20 @@ public abstract class BaseDesigner extends ToolBarMenuDock {
|
|
|
|
|
df.addAndActivateJTemplate(); |
|
|
|
|
// 如果没有模板,则需要确认一下
|
|
|
|
|
MutilTempalteTabPane.getInstance().setTemTemplate(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); |
|
|
|
|
return; |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
if (context.isOpenLastFile()) { |
|
|
|
|
if (file != null && file.exists() && !isException) { |
|
|
|
|
if (file != null && file.exists() && !isException.get()) { |
|
|
|
|
df.openTemplate(file); |
|
|
|
|
return; |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (context.isOpenEmpty()) { |
|
|
|
|
df.showEmptyJTemplate(); |
|
|
|
|
return; |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (file != null && file.exists() && !isException) { |
|
|
|
|
df.openTemplate(file); |
|
|
|
|
} else { |
|
|
|
|
df.addAndActivateJTemplate(); |
|
|
|
|
// 如果没有模板,则需要确认一下
|
|
|
|
|
MutilTempalteTabPane.getInstance().setTemTemplate(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void enableFullScreenMode(Window window) { |
|
|
|
|