Browse Source

Merge branch 'release/10.0' of http://cloud.finedevelop.com:2015/scm/~mata.li/design into feature/10.0

research/10.0
Mata.Li 6 years ago
parent
commit
eed55b55af
  1. 23
      designer-base/src/main/java/com/fr/design/dialog/UIDialog.java
  2. 144
      designer-base/src/main/java/com/fr/design/file/HistoryTemplateListPane.java
  3. 27
      designer-base/src/main/java/com/fr/design/javascript/JSContentPane.java
  4. 4
      designer-base/src/main/java/com/fr/design/javascript/JavaScriptImplPane.java
  5. 9
      designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java
  6. 2
      designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java
  7. 29
      designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java
  8. 15
      designer-form/src/main/java/com/fr/design/mainframe/WidgetPropertyPane.java
  9. 2
      designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java
  10. BIN
      designer-realize/src/main/resources/com/fr/start/jni/splash.dylib

23
designer-base/src/main/java/com/fr/design/dialog/UIDialog.java

@ -73,7 +73,7 @@ public abstract class UIDialog extends JDialog {
} }
this.setName(pane.title4PopupWindow()); this.setName(pane.title4PopupWindow());
this.setModal(true); this.setModal(true);
this.pack();
GUICoreUtils.centerWindow(this); GUICoreUtils.centerWindow(this);
} }
@ -90,12 +90,10 @@ public abstract class UIDialog extends JDialog {
//取消 //取消
addCancelButton(buttonsPane); addCancelButton(buttonsPane);
this.getRootPane().setDefaultButton(okButton);
return controlPane; return controlPane;
} }
protected void addCustomButton(JPanel buttonsPane){ protected void addCustomButton(JPanel buttonsPane) {
} }
@ -110,6 +108,18 @@ public abstract class UIDialog extends JDialog {
doCancel(); doCancel();
} }
}); });
JPanel defaultPane = (JPanel) this.getContentPane();
InputMap inputMapAncestor = defaultPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
ActionMap actionMap = defaultPane.getActionMap();
// transfer focus to CurrentEditor
inputMapAncestor.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "dialogOK");
actionMap.put("dialogOK", new AbstractAction() {
public void actionPerformed(ActionEvent evt) {
doOK();
}
});
} }
private void addOkButton(JPanel buttonsPane) { private void addOkButton(JPanel buttonsPane) {
@ -130,7 +140,6 @@ public abstract class UIDialog extends JDialog {
* 添加监听器 * 添加监听器
* *
* @param l 监听器 * @param l 监听器
*
*/ */
public void addDialogActionListener(DialogActionListener l) { public void addDialogActionListener(DialogActionListener l) {
listeners.add(l); listeners.add(l);
@ -138,7 +147,6 @@ public abstract class UIDialog extends JDialog {
/** /**
* 清除所有监听器 * 清除所有监听器
*
*/ */
public void clearDialogActionListeners() { public void clearDialogActionListeners() {
listeners.clear(); listeners.clear();
@ -146,7 +154,6 @@ public abstract class UIDialog extends JDialog {
/** /**
* 确定操作 * 确定操作
*
*/ */
public void doOK() { public void doOK() {
try { try {
@ -177,7 +184,6 @@ public abstract class UIDialog extends JDialog {
/** /**
* 取消操作 * 取消操作
*
*/ */
public void doCancel() { public void doCancel() {
@ -224,7 +230,6 @@ public abstract class UIDialog extends JDialog {
/** /**
* 检测结果是否合法 * 检测结果是否合法
*
*/ */
public abstract void checkValid() throws Exception; public abstract void checkValid() throws Exception;

144
designer-base/src/main/java/com/fr/design/file/HistoryTemplateListPane.java

@ -1,16 +1,154 @@
package com.fr.design.file; package com.fr.design.file;
import com.fr.base.chart.chartdata.CallbackEvent;
import com.fr.design.mainframe.JTemplate;
import com.fr.file.FILE;
import com.fr.file.FileNodeFILE;
import java.util.List;
/** /**
* 历史模板缓存 * 历史模板缓存
* * <p>
* 为可能存在的插件做兼容处理 * 为可能存在的插件做兼容处理
* *
* @see HistoryTemplateListCache * @see HistoryTemplateListCache
* @deprecated use HistoryTemplateListCache instead * @deprecated use HistoryTemplateListCache instead
*/ */
@Deprecated @Deprecated
public class HistoryTemplateListPane { public class HistoryTemplateListPane implements CallbackEvent {
public static HistoryTemplateListCache getInstance() {
private static volatile HistoryTemplateListPane THIS;
public static HistoryTemplateListPane getInstance() {
if (THIS == null) {
synchronized (HistoryTemplateListPane.class) {
if (THIS == null) {
THIS = new HistoryTemplateListPane();
}
}
}
return THIS;
}
private static HistoryTemplateListCache instead() {
return HistoryTemplateListCache.getInstance(); return HistoryTemplateListCache.getInstance();
} }
/**
* 关闭选择的文件
*
* @param selected 选择的
*/
public void closeSelectedReport(JTemplate<?, ?> selected) {
instead().closeSelectedReport(selected);
}
/**
* 临时关闭选择的文件
*
* @param selected 选择的
*/
public void closeVirtualSelectedReport(JTemplate<?, ?> selected) {
instead().closeVirtualSelectedReport(selected);
}
public JTemplate<?, ?> getCurrentEditingTemplate() {
return instead().getCurrentEditingTemplate();
}
public void setCurrentEditingTemplate(JTemplate<?, ?> jt) {
instead().setCurrentEditingTemplate(jt);
}
/**
* 添加历史记录
*/
public void addHistory() {
instead().addHistory();
}
public List<JTemplate<?, ?>> getHistoryList() {
return instead().getHistoryList();
}
/**
* 清空历史记录
*/
public void removeAllHistory() {
instead().removeAllHistory();
}
public int getHistoryCount() {
return instead().getHistoryCount();
}
public JTemplate<?, ?> get(int index) {
return instead().get(index);
}
public JTemplate<?, ?> getTemplate(int index) {
return instead().getTemplate(index);
}
/**
* 获取模板的index
*
* @param jt 模板
* @return 位置
*/
public int contains(JTemplate<?, ?> jt) {
return instead().contains(jt);
}
/**
* 判断是否打开过该模板
*
* @param filename 文件名
* @return 文件位置
*/
public int contains(String filename) {
return instead().contains(filename);
}
/**
* 是否是当前编辑的文件
*
* @param filename 文件名
* @return 是则返回TRUE
*/
public boolean isCurrentEditingFile(String filename) {
return instead().isCurrentEditingFile(filename);
}
@Override
public void callback() {
instead().callback();
}
/**
* 打开new模板的同时关闭old模板,优先关已保存的先打开的
*/
public void closeOverLineTemplate() {
instead().closeOverLineTemplate();
}
public void deleteFile(FileNodeFILE file) {
instead().deleteFile(file);
}
public boolean rename(FILE tplFile, String from, String to) {
return instead().rename(tplFile, from, to);
}
} }

27
designer-base/src/main/java/com/fr/design/javascript/JSContentPane.java

@ -28,6 +28,7 @@ import java.util.ArrayList;
public class JSContentPane extends BasicPane { public class JSContentPane extends BasicPane {
private RSyntaxTextArea contentTextArea; private RSyntaxTextArea contentTextArea;
private UILabel funNameLabel; private UILabel funNameLabel;
private AutoCompletion ac;
private int titleWidth = 180; private int titleWidth = 180;
@ -78,14 +79,6 @@ public class JSContentPane extends BasicPane {
contentTextArea.setCodeFoldingEnabled(true); contentTextArea.setCodeFoldingEnabled(true);
contentTextArea.setAntiAliasingEnabled(true); contentTextArea.setAntiAliasingEnabled(true);
CompletionProvider provider = createCompletionProvider();
AutoCompletion ac = new AutoCompletion(provider);
String shortCuts = DesignerEnvManager.getEnvManager().getAutoCompleteShortcuts();
ac.setTriggerKey(convert2KeyStroke(shortCuts));
ac.install(contentTextArea);
UIScrollPane sp = new UIScrollPane(contentTextArea); UIScrollPane sp = new UIScrollPane(contentTextArea);
this.add(sp, BorderLayout.CENTER); this.add(sp, BorderLayout.CENTER);
@ -104,13 +97,31 @@ public class JSContentPane extends BasicPane {
} }
public void populate(String js) { public void populate(String js) {
if (ac == null) {
CompletionProvider provider = createCompletionProvider();
ac = new AutoCompletion(provider);
String shortCuts = DesignerEnvManager.getEnvManager().getAutoCompleteShortcuts();
ac.setTriggerKey(convert2KeyStroke(shortCuts));
ac.install(contentTextArea);
}
this.contentTextArea.setText(js); this.contentTextArea.setText(js);
} }
public String update() { public String update() {
if (ac != null) {
this.ac.uninstall();
ac = null;
}
return this.contentTextArea.getText(); return this.contentTextArea.getText();
} }
public void reset() {
this.contentTextArea.setText(null);
}
public void setFunctionTitle(String[] args) { public void setFunctionTitle(String[] args) {
funNameLabel.setText(createFunctionTitle(args)); funNameLabel.setText(createFunctionTitle(args));
} }

4
designer-base/src/main/java/com/fr/design/javascript/JavaScriptImplPane.java

@ -138,6 +138,9 @@ public class JavaScriptImplPane extends AbstractHyperLinkPane<JavaScriptImpl> {
public void populateBean(JavaScriptImpl javaScriptImpl) { public void populateBean(JavaScriptImpl javaScriptImpl) {
if (javaScriptImpl == null) { if (javaScriptImpl == null) {
javaScriptImpl = new JavaScriptImpl(); javaScriptImpl = new JavaScriptImpl();
jsPane.reset();
}else{
jsPane.populate(javaScriptImpl.getContent());
} }
int rowCount = javaScriptImpl.getJSImportSize(); int rowCount = javaScriptImpl.getJSImportSize();
@ -147,7 +150,6 @@ public class JavaScriptImplPane extends AbstractHyperLinkPane<JavaScriptImpl> {
} }
importedJsPane.populate(value); importedJsPane.populate(value);
parameterPane.populate(javaScriptImpl.getParameters()); parameterPane.populate(javaScriptImpl.getParameters());
jsPane.populate(javaScriptImpl.getContent());
if (itemNameTextField != null) { if (itemNameTextField != null) {
itemNameTextField.setText(javaScriptImpl.getItemName()); itemNameTextField.setText(javaScriptImpl.getItemName());

9
designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java

@ -155,6 +155,9 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
// 右边的虚线 // 右边的虚线
private DottedLine rightDottedLine; private DottedLine rightDottedLine;
//用于判断设计器是否打开了
private boolean designerOpened = false;
private int contentWidth = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth()); private int contentWidth = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth());
private int contentHeight = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight()); private int contentHeight = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight());
@ -351,8 +354,10 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
*/ */
public void addDesignerOpenedListener(DesignerOpenedListener listener) { public void addDesignerOpenedListener(DesignerOpenedListener listener) {
if (!designerOpened) {
designerOpenedListenerList.add(listener); designerOpenedListenerList.add(listener);
} }
}
/** /**
* 触发"设计器初始化完成"事件 * 触发"设计器初始化完成"事件
@ -362,6 +367,10 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
for (DesignerOpenedListener listener : designerOpenedListenerList) { for (DesignerOpenedListener listener : designerOpenedListenerList) {
listener.designerOpened(); listener.designerOpened();
} }
designerOpened = true;
//使用完清除监听
designerOpenedListenerList.clear();
} }
protected DesktopCardPane getCenterTemplateCardPane() { protected DesktopCardPane getCenterTemplateCardPane() {

2
designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java

@ -780,7 +780,7 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
((JTemplateActionListener) listeners[i + 1]).templateClosed(this); ((JTemplateActionListener) listeners[i + 1]).templateClosed(this);
} }
} }
this.undoState = null;
this.repaint(30); this.repaint(30);
} }

29
designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java

@ -148,6 +148,9 @@ public abstract class ToolBarMenuDock {
}; };
private static final String FINEREPORT = "FineReport"; private static final String FINEREPORT = "FineReport";
private static final int MENUBAR_HEIGHT = 22; private static final int MENUBAR_HEIGHT = 22;
private static final List<PluginEventListener> PLUGIN_LISTENERS = new ArrayList<>();
private MenuDef[] menus; private MenuDef[] menus;
private ToolBarDef toolBarDef; private ToolBarDef toolBarDef;
private List<UpdateActionModel> shortCutsList; private List<UpdateActionModel> shortCutsList;
@ -218,6 +221,8 @@ public abstract class ToolBarMenuDock {
} }
public MenuDef[] menus(final ToolBarMenuDockPlus plus) { public MenuDef[] menus(final ToolBarMenuDockPlus plus) {
//删除之前创建的插件菜单监听
clearPluginListeners();
java.util.List<MenuDef> menuList = new java.util.ArrayList<MenuDef>(); java.util.List<MenuDef> menuList = new java.util.ArrayList<MenuDef>();
// 添加文件菜单 // 添加文件菜单
menuList.add(createFileMenuDef(plus)); menuList.add(createFileMenuDef(plus));
@ -248,6 +253,15 @@ public abstract class ToolBarMenuDock {
return menuList.toArray(new MenuDef[menuList.size()]); return menuList.toArray(new MenuDef[menuList.size()]);
} }
//清空监听
private static synchronized void clearPluginListeners() {
for (PluginEventListener listener : PLUGIN_LISTENERS) {
GeneralContext.stopListenPlugin(listener);
}
PLUGIN_LISTENERS.clear();
}
/** /**
* 获取所有actionmodel * 获取所有actionmodel
* *
@ -644,7 +658,7 @@ public abstract class ToolBarMenuDock {
} }
}; };
GeneralContext.listenPlugin(PluginEventType.BeforeStop, new PluginEventListener() { PluginEventListener beforeStop = new PluginEventListener() {
@Override @Override
public void on(PluginEvent event) { public void on(PluginEvent event) {
@ -652,8 +666,9 @@ public abstract class ToolBarMenuDock {
Set<MenuHandler> menuHandlers = runtime.get(MenuHandler.MARK_STRING); Set<MenuHandler> menuHandlers = runtime.get(MenuHandler.MARK_STRING);
removeExtraMenus(menuDef, anchor, action, menuHandlers); removeExtraMenus(menuDef, anchor, action, menuHandlers);
} }
}, filter); };
GeneralContext.listenPlugin(PluginEventType.AfterRun, new PluginEventListener() {
PluginEventListener afterRun = new PluginEventListener() {
@Override @Override
public void on(PluginEvent event) { public void on(PluginEvent event) {
@ -662,7 +677,13 @@ public abstract class ToolBarMenuDock {
Set<MenuHandler> menuHandlers = runtime.get(MenuHandler.MARK_STRING); Set<MenuHandler> menuHandlers = runtime.get(MenuHandler.MARK_STRING);
addExtraMenus(menuDef, anchor, action, menuHandlers); addExtraMenus(menuDef, anchor, action, menuHandlers);
} }
}, filter); };
GeneralContext.listenPlugin(PluginEventType.BeforeStop, beforeStop, filter);
GeneralContext.listenPlugin(PluginEventType.AfterRun, afterRun, filter);
PLUGIN_LISTENERS.add(afterRun);
PLUGIN_LISTENERS.add(beforeStop);
} }
private void removeExtraMenus(MenuDef menuDef, String anchor, ShortCutMethodAction action, Set<MenuHandler> set) { private void removeExtraMenus(MenuDef menuDef, String anchor, ShortCutMethodAction action, Set<MenuHandler> set) {

15
designer-form/src/main/java/com/fr/design/mainframe/WidgetPropertyPane.java

@ -108,11 +108,10 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetPrope
*/ */
private void initTables() { private void initTables() {
formWidgetCardPane.populate(); formWidgetCardPane.populate();
eventTable.refresh();
if (mobileExtraPropertyPanes != null) { if (mobileExtraPropertyPanes != null) {
for (MobileWidgetDefinePane extraPane : mobileExtraPropertyPanes) { for (MobileWidgetDefinePane extraPane : mobileExtraPropertyPanes) {
extraPane.initPropertyGroups(designer); extraPane.initPropertyGroups(designer);
extraPane.populate(designer);
} }
} }
if (widgetPropertyTables != null) { if (widgetPropertyTables != null) {
@ -232,6 +231,16 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetPrope
tabsHeaderIconPane = new UIHeadGroup(tabTitles) { tabsHeaderIconPane = new UIHeadGroup(tabTitles) {
@Override @Override
public void tabChanged(int index) { public void tabChanged(int index) {
//切换的时候再populate
if (index == 1) {
eventTable.refresh();
} else if (index == 2) {
if (mobileExtraPropertyPanes != null) {
for (MobileWidgetDefinePane extraPane : mobileExtraPropertyPanes) {
extraPane.populate(designer);
}
}
}
tabbedPane.show(center, tabTitles[index]); tabbedPane.show(center, tabTitles[index]);
} }
}; };
@ -292,7 +301,7 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetPrope
if (evt.getCreatorEventID() == DesignerEvent.CREATOR_DELETED if (evt.getCreatorEventID() == DesignerEvent.CREATOR_DELETED
|| evt.getCreatorEventID() == DesignerEvent.CREATOR_RESIZED) { || evt.getCreatorEventID() == DesignerEvent.CREATOR_RESIZED) {
formWidgetCardPane.populate(); formWidgetCardPane.populate();
} else if (evt.getCreatorEventID() == DesignerEvent.CREATOR_SELECTED){ } else if (evt.getCreatorEventID() == DesignerEvent.CREATOR_SELECTED) {
// 防止多次触发 // 防止多次触发
if (lastAffectedCreator != null && lastAffectedCreator == evt.getAffectedCreator()) { if (lastAffectedCreator != null && lastAffectedCreator == evt.getAffectedCreator()) {
return; return;

2
designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java

@ -596,7 +596,7 @@ public abstract class ElementCasePane<T extends TemplateElementCase> extends Tar
* @return 是则返回true * @return 是则返回true
*/ */
public boolean isSelectedOneCell() { public boolean isSelectedOneCell() {
return selection.isSelectedOneCell(this); return (selection == null) ? false : selection.isSelectedOneCell(this);
} }
/** /**

BIN
designer-realize/src/main/resources/com/fr/start/jni/splash.dylib

Binary file not shown.
Loading…
Cancel
Save