diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..7e7f0f1
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin.xml b/plugin.xml
index 7f2dce3..9817572 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -1,18 +1,22 @@
com.fr.plugin.event.manager
-
+
yes
1.0
10.0
- 2020-02-28
+ 2020-09-04
finereport-joe
-
-
+
+
+ ]]>
+
com.fr.plugin.event.manager
-
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/fr/plugin/event/manager/core/FormEventManager.java b/src/main/java/com/fr/plugin/event/manager/core/FormEventManager.java
index 1169dfe..c01977d 100644
--- a/src/main/java/com/fr/plugin/event/manager/core/FormEventManager.java
+++ b/src/main/java/com/fr/plugin/event/manager/core/FormEventManager.java
@@ -22,6 +22,7 @@ import java.awt.event.WindowEvent;
/**
+ * 决策报表下的事件管理器
* @author Joe
* Created by Joe on 9/3/2020
*/
@@ -40,13 +41,13 @@ public class FormEventManager extends JTemplateAction {
public void actionPerformed(ActionEvent e) {
JForm jf = getEditingComponent();
if (jf == null) {
- FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "无法获取模板对象!",
+ FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Plugin_Event_Manager_Alert_No_Target"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Alert"), JOptionPane.ERROR_MESSAGE);
return;
}
final Form form = jf.getTarget();
- final EventManagerPane eventManagerPane = initEventManager(form);
+ final EventManagerPane eventManagerPane = initEventManagerPane(form);
UIDialog dialog = new EventManagerDialog(DesignerContext.getDesignerFrame(), eventManagerPane);
dialog.addWindowListener(new WindowAdapter() {
@@ -64,10 +65,11 @@ public class FormEventManager extends JTemplateAction {
}
/**
- * @param form
+ * 初始化事件管理器面板
+ * @param form 当前表单对象
* @return
*/
- private EventManagerPane initEventManager(Form form) {
+ private EventManagerPane initEventManagerPane(Form form) {
FormEventManagerPane eventManagerPane = new FormEventManagerPane();
eventManagerPane.setTarget(form);
return eventManagerPane;
diff --git a/src/main/java/com/fr/plugin/event/manager/core/WorkbookEventManager.java b/src/main/java/com/fr/plugin/event/manager/core/WorkbookEventManager.java
index 1e150f5..1fb9d54 100644
--- a/src/main/java/com/fr/plugin/event/manager/core/WorkbookEventManager.java
+++ b/src/main/java/com/fr/plugin/event/manager/core/WorkbookEventManager.java
@@ -23,6 +23,7 @@ import java.awt.event.WindowEvent;
/**
+ * 普通报表下的事件管理器
* @author Joe
* Created by Joe on 9/3/2020
*/
@@ -42,21 +43,21 @@ public class WorkbookEventManager extends JWorkBookAction {
public void actionPerformed(ActionEvent e) {
final JWorkBook jwb = getEditingComponent();
if (jwb == null) {
- FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "无法获取模板对象!",
+ FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Plugin_Event_Manager_Alert_No_Target"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Alert"), JOptionPane.ERROR_MESSAGE);
return;
}
final TemplateWorkBook workBook = jwb.getTarget();
- final EventManagerPane eventManagerPane = initEventManager(workBook);
+ final EventManagerPane eventManagerPane = initEventManagerPane(workBook);
UIDialog dialog = new EventManagerDialog(DesignerContext.getDesignerFrame(), eventManagerPane);
dialog.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
eventManagerPane.update();
- // todo 是否改成windowClosing
// 触发正在编辑的模板改变事件
DesignModelAdapter.getCurrentModelAdapter().fireTargetModified();
+ // 刷新一下右侧面板,避免事件显示不同步
jwb.refreshEastPropertiesPane();
super.windowClosed(e);
}
@@ -65,12 +66,11 @@ public class WorkbookEventManager extends JWorkBookAction {
}
/**
- * workbook返回tabPane
- *
- * @param workBook
+ * 初始化事件管理器面板,返回tab pane
+ * @param workBook 当前表单对象
* @return
*/
- private EventManagerPane initEventManager(TemplateWorkBook workBook) {
+ private EventManagerPane initEventManagerPane(TemplateWorkBook workBook) {
WorkbookEventManagerPane eventManagerPane = new WorkbookEventManagerPane();
eventManagerPane.setTarget(workBook);
return eventManagerPane;
diff --git a/src/main/java/com/fr/plugin/event/manager/data/MyNode.java b/src/main/java/com/fr/plugin/event/manager/data/MyNode.java
index c201c6d..604a365 100644
--- a/src/main/java/com/fr/plugin/event/manager/data/MyNode.java
+++ b/src/main/java/com/fr/plugin/event/manager/data/MyNode.java
@@ -3,15 +3,18 @@ package com.fr.plugin.event.manager.data;
import javax.swing.Icon;
/**
+ * 树节点
* @author Joe
* Created by Joe on 12/14/2020
*/
public class MyNode {
+ // 节点名
protected String nodeName;
+
+ // 节点图标
protected Icon icon;
public MyNode() {
-
}
public MyNode(String nodeName) {
diff --git a/src/main/java/com/fr/plugin/event/manager/data/MyTree.java b/src/main/java/com/fr/plugin/event/manager/data/MyTree.java
index 89c1102..34b5f50 100644
--- a/src/main/java/com/fr/plugin/event/manager/data/MyTree.java
+++ b/src/main/java/com/fr/plugin/event/manager/data/MyTree.java
@@ -4,39 +4,27 @@ import java.util.LinkedList;
import java.util.List;
/**
+ * 自定义的树,用来存放数据
* @author Joe
* Created by Joe on 12/14/2020
*/
public class MyTree {
- /**
- * 树节点
- */
+ // 树节点
private MyNode data;
- /**
- * 父节点,根没有父节点
- */
+ // 父节点,根没有父节点
private MyTree parent;
- /**
- * 子节点,叶子节点没有子节点
- */
+ // 子节点,叶子节点没有子节点
private List children;
- /**
- * 保存了当前节点及其所有子节点,方便查询
- */
+ // 保存了当前节点及其所有子节点,方便查询
private List elementsIndex;
public MyTree() {
this(new MyNode());
}
- /**
- * 构造函数
- *
- * @param data
- */
public MyTree(MyNode data) {
this.data = data;
this.children = new LinkedList<>();
@@ -62,7 +50,6 @@ public class MyTree {
/**
* 判断是否为根:根没有父节点
- *
* @return
*/
public boolean isRoot() {
@@ -71,7 +58,6 @@ public class MyTree {
/**
* 判断是否为叶子节点:子节点没有子节点
- *
* @return
*/
public boolean isLeaf() {
@@ -80,7 +66,6 @@ public class MyTree {
/**
* 添加一个子节点
- *
* @param child 子树
*/
public void addChild(MyTree child) {
@@ -91,7 +76,7 @@ public class MyTree {
/**
* 添加一个子节点
- * @param child 子树的数据
+ * @param child 子树的节点
* @return 子树
*/
public MyTree addChild(MyNode child) {
@@ -102,6 +87,11 @@ public class MyTree {
return childNode;
}
+ /**
+ * 删除一个子树
+ *
+ * @param child 子树
+ */
public void removeChild(MyTree child) {
// 如果是根的话,就保留
if (child.parent != null) {
@@ -112,7 +102,6 @@ public class MyTree {
/**
* 递归为当前节点以及当前节点的所有父节点增加新的节点
- *
* @param node
*/
private void registerChildForSearch(MyTree node) {
@@ -122,14 +111,28 @@ public class MyTree {
}
}
+ /**
+ * 获取子树
+ * @param index 序号
+ * @return 子树
+ */
public MyTree findChild(int index) {
return children.get(index);
}
+ /**
+ * 获取子树大小
+ * @return 子树大小
+ */
public int getChildrenSize() {
return children.size();
}
+ /**
+ * 根据子树对象获取它的序号
+ * @param child
+ * @return
+ */
public int getIndexOfChild(Object child) {
int count = getChildrenSize();
for (int i = 0; i < count; i++) {
diff --git a/src/main/java/com/fr/plugin/event/manager/data/MyWidget.java b/src/main/java/com/fr/plugin/event/manager/data/MyWidget.java
index 7df01d5..d9874ca 100644
--- a/src/main/java/com/fr/plugin/event/manager/data/MyWidget.java
+++ b/src/main/java/com/fr/plugin/event/manager/data/MyWidget.java
@@ -7,11 +7,16 @@ import com.fr.form.ui.Widget;
import javax.swing.Icon;
/**
+ * 树的节点,包含一个控件对象
+ * 因为树节点可能是纯目录型的,比如sheet,block,也可能是带有控件的
* @author Joe
* Created by Joe on 12/14/2020
*/
public class MyWidget extends MyNode {
- protected Widget widget;
+ private Widget widget;
+
+ // 是否含有事件
+ private boolean hasEvent = false;
public MyWidget(Widget widget) {
this.widget = widget;
@@ -27,4 +32,12 @@ public class MyWidget extends MyNode {
public void setWidget(Widget widget) {
this.widget = widget;
}
+
+ public boolean isHasEvent() {
+ return hasEvent;
+ }
+
+ public void setHasEvent(boolean hasEvent) {
+ this.hasEvent = hasEvent;
+ }
}
diff --git a/src/main/java/com/fr/plugin/event/manager/provider/EventManagerProvider.java b/src/main/java/com/fr/plugin/event/manager/provider/EventManagerProvider.java
index 158bd07..0132d5e 100644
--- a/src/main/java/com/fr/plugin/event/manager/provider/EventManagerProvider.java
+++ b/src/main/java/com/fr/plugin/event/manager/provider/EventManagerProvider.java
@@ -17,12 +17,12 @@ import com.fr.plugin.event.manager.core.WorkbookEventManager;
public class EventManagerProvider extends AbstractMenuHandler {
@Override
public int insertPosition(int i) {
- return -1;
+ return 9;
}
@Override
public boolean insertSeparatorBefore() {
- return true;
+ return false;
}
@Override
diff --git a/src/main/java/com/fr/plugin/event/manager/provider/LocaleProvider.java b/src/main/java/com/fr/plugin/event/manager/provider/LocaleProvider.java
new file mode 100644
index 0000000..8bcac2a
--- /dev/null
+++ b/src/main/java/com/fr/plugin/event/manager/provider/LocaleProvider.java
@@ -0,0 +1,14 @@
+package com.fr.plugin.event.manager.provider;
+
+import com.fr.stable.fun.impl.AbstractLocaleFinder;
+
+/**
+ * @author Joe
+ * Created by Joe on 12/23/2020
+ */
+public class LocaleProvider extends AbstractLocaleFinder {
+ @Override
+ public String find() {
+ return "com/fr/plugin/event/manager/locale/main";
+ }
+}
diff --git a/src/main/java/com/fr/plugin/event/manager/ui/CellWidgetPane.java b/src/main/java/com/fr/plugin/event/manager/ui/CellWidgetPane.java
index a3e2453..590a59c 100644
--- a/src/main/java/com/fr/plugin/event/manager/ui/CellWidgetPane.java
+++ b/src/main/java/com/fr/plugin/event/manager/ui/CellWidgetPane.java
@@ -28,6 +28,7 @@ import java.util.ArrayList;
import java.util.List;
/**
+ * 单元格控件面板,包含一个sheet选择器和一个事件配置面板
* @author Joe
* Created by Joe on 12/13/2020
*/
@@ -38,14 +39,21 @@ public class CellWidgetPane extends BasicPane {
private static final Icon DISABLED_RIGHT_ICON = IOUtils.readIcon("com/fr/design/images/sheet/right_hover@1x.png");
private static final String ELLIPSIS = "...";
+
+ // sheetFlowPane的最大宽度
private static final int MAX_WIDTH = 810;
+
+ // sheetChoosePane的理想高度
private static final int PREFERRED_HEIGHT = 24;
+
+ // flow布局的默认水平间距
private static final int FLOW_GAP = 5;
+
+ // 按钮的额外宽度,加上按钮文字长度可得整个按钮的宽度
private static final int BUTTON_EXTRA_WIDTH = 20;
private List cellWidgetTrees;
private EventConfigPane eventConfigPane;
- private SheetChoosePane sheetChoosePane;
public CellWidgetPane(List cellWidgetTrees) {
this.cellWidgetTrees = cellWidgetTrees;
@@ -54,33 +62,53 @@ public class CellWidgetPane extends BasicPane {
private void initComponentPane() {
setLayout(new BorderLayout(4, 0));
- eventConfigPane = new EventConfigPane(new MyTree());
- sheetChoosePane = new SheetChoosePane();
- populate(cellWidgetTrees.size() > 0 ? cellWidgetTrees.get(0) : new MyTree());
+ refreshUI();
}
public String tabTitle() {
- return "Cell Widget";
+ return com.fr.design.i18n.Toolkit.i18nText("Fine-Plugin_Event_Manager_Tab_Cell");
}
@Override
protected String title4PopupWindow() {
- return "cell widget";
+ return com.fr.design.i18n.Toolkit.i18nText("Fine-Plugin_Event_Manager_Tab_Cell");
}
- public void populate(MyTree myTree) {
+ /**
+ * 刷新整个面板
+ * 初始化和从para切换到cell时会触发
+ */
+ public void refreshUI() {
removeAll();
- eventConfigPane = new EventConfigPane(myTree);
+ eventConfigPane = new EventConfigPane(cellWidgetTrees.size() > 0 ? cellWidgetTrees.get(0) : new MyTree());
add(eventConfigPane, BorderLayout.CENTER);
+ SheetChoosePane sheetChoosePane = new SheetChoosePane();
add(sheetChoosePane, BorderLayout.NORTH);
repaint();
revalidate();
}
+ /**
+ * 刷新事件配置面板
+ * 当切换sheet时触发
+ *
+ * @param myTree sheet节点
+ */
+ private void populate(MyTree myTree) {
+ eventConfigPane.setTree(myTree);
+ eventConfigPane.refreshUI();
+ }
+
+ /**
+ * 为了更新此对象包含的事件配置面板
+ */
public void update() {
eventConfigPane.update();
}
+ /**
+ * Sheet选择器
+ */
private class SheetChoosePane extends JPanel {
// 总sheet按钮数
private int totalCount;
@@ -118,13 +146,14 @@ public class CellWidgetPane extends BasicPane {
private void initComponentPane() {
setLayout(FRGUIPaneFactory.createBorderLayout());
setBorder(BorderFactory.createEmptyBorder(4, 8, 0, 8));
- // 初始化右边按钮
add(createButtonPane(), BorderLayout.EAST);
- // 初始化左边面板
initSheetFlowPane();
add(sheetFlowPane, BorderLayout.CENTER);
}
+ /**
+ * 初始化左边的sheet按钮面板
+ */
private void initSheetFlowPane() {
sheetFlowPane = new JPanel(new FlowLayout(FlowLayout.LEFT));
initWidthAndButtonArray();
@@ -132,6 +161,10 @@ public class CellWidgetPane extends BasicPane {
checkButton(showCount < widthArray.length);
}
+ /**
+ * 创建前后按钮面板
+ * @return
+ */
private JPanel createButtonPane() {
leftButton = new UIButton(LEFT_ICON) {
@Override
@@ -191,6 +224,9 @@ public class CellWidgetPane extends BasicPane {
return buttonPane;
}
+ /**
+ * 点击前一个
+ */
private void moveLeft() {
if (scrollIndex > 0) {
scrollIndex--;
@@ -198,6 +234,9 @@ public class CellWidgetPane extends BasicPane {
}
}
+ /**
+ * 点击后一个
+ */
private void moveRight() {
if (scrollIndex < totalCount - showCount) {
scrollIndex++;
@@ -205,6 +244,9 @@ public class CellWidgetPane extends BasicPane {
}
}
+ /**
+ * 刷新左边的sheet按钮面板
+ */
private void refreshSheetFlowPane() {
sheetFlowPane.removeAll();
sheetFlowPane.repaint();
@@ -212,6 +254,9 @@ public class CellWidgetPane extends BasicPane {
sheetFlowPane.revalidate();
}
+ /**
+ * 动态添加按钮到sheetFlowPane上
+ */
private void addButton() {
showCount = 0;
int currentWidth = FLOW_GAP;
@@ -222,7 +267,7 @@ public class CellWidgetPane extends BasicPane {
} else {
UIToggleButton button = buttonList.get(i);
if (selectedIndex == i) {
- // 如果被选中
+ // 如果是选中状态
button.setSelected(true);
}
sheetFlowPane.add(button);
@@ -231,6 +276,10 @@ public class CellWidgetPane extends BasicPane {
}
}
+ /**
+ * 更新前后按钮的可用状态
+ * @param buttonEnabled
+ */
private void checkButton(boolean buttonEnabled) {
leftButton.setEnabled(buttonEnabled);
rightButton.setEnabled(buttonEnabled);
@@ -268,6 +317,10 @@ public class CellWidgetPane extends BasicPane {
}
}
+ /**
+ * 当sheet被点击时的触发动作,只有它本身是被选中状态
+ * @param index
+ */
private void setSelectedStatus(int index) {
selectedIndex = index;
for (int i = 0; i < buttonList.size(); i++) {
@@ -279,19 +332,22 @@ public class CellWidgetPane extends BasicPane {
}
}
+ /**
+ * 获取字符串宽度
+ * @param str
+ * @return
+ */
private int getStringWidth(String str) {
return GraphHelper.getFontMetrics(this.getFont()).stringWidth(str);
}
/**
* 判断tab文字的长度大于能装下的最大文字长度,要用省略号
- *
* @param name
* @param maxStringlength
* @return
*/
private String getEllipsisName(String name, int maxStringlength) {
-
//若是名字长度大于能显示的长度,那能显示的文字的最大长度还要减去省略号的最大长度
int ellipsisWidth = getStringWidth(ELLIPSIS);
int leftKeyPoint = 0;
diff --git a/src/main/java/com/fr/plugin/event/manager/ui/EventConfigPane.java b/src/main/java/com/fr/plugin/event/manager/ui/EventConfigPane.java
index c1e3524..40bd9d4 100644
--- a/src/main/java/com/fr/plugin/event/manager/ui/EventConfigPane.java
+++ b/src/main/java/com/fr/plugin/event/manager/ui/EventConfigPane.java
@@ -17,7 +17,6 @@ import com.fr.plugin.event.manager.ui.tree.MyComponentTree;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
-import javax.swing.ScrollPaneConstants;
import javax.swing.SwingConstants;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
@@ -25,16 +24,22 @@ import java.awt.BorderLayout;
import java.awt.Component;
/**
- * 事件配置面板,左边为组件树,右边为无/事件编辑面板
+ * 事件配置面板,左边为组件树,右边为空提示/事件编辑面板
* @author Joe
* Created by Joe on 12/11/2020
*/
public class EventConfigPane extends BasicPane implements TreeSelectionListener {
private MyTree tree;
+
+ // lastNode用来保存最新一个操作过的树节点
private MyTree lastNode;
private boolean rootVisible;
- //事件属性容器
+ private MyComponentTree componentTree;
+
+ /**
+ * 事件编辑容器
+ */
private JPanel rightPane;
private WidgetEventPane eventPane;
private UILabel emptyLabel;
@@ -65,29 +70,47 @@ public class EventConfigPane extends BasicPane implements TreeSelectionListener
this.rootVisible = rootVisible;
}
+ /**
+ * 初始化面板
+ */
private void initComponentPane() {
- this.setLayout(FRGUIPaneFactory.createBorderLayout());
- this.setBorder(BorderFactory.createEmptyBorder(4, 8, 4, 8));
+ setLayout(FRGUIPaneFactory.createBorderLayout());
+ setBorder(BorderFactory.createEmptyBorder(4, 8, 4, 8));
initRightPane();
// SplitPane
- // 增加边框
JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, getLeftPane(), rightPane);
mainSplitPane.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor()));
mainSplitPane.setOneTouchExpandable(true);
- this.add(mainSplitPane, BorderLayout.CENTER);
+ add(mainSplitPane, BorderLayout.CENTER);
mainSplitPane.setDividerLocation(180);
}
+ /**
+ * 当切换sheet/tab时触发,更新组件树,右边为默认的空提示
+ */
+ public void refreshUI() {
+ componentTree.refreshTree();
+ refreshRightPane(emptyLabel);
+ }
+
+ /**
+ * 初始化右边的面板,默认是一个空提示
+ */
private void initRightPane() {
rightPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
eventPane = new WidgetEventPaneNoPop(null);
eventPane.setBorder(BorderFactory.createEmptyBorder());
- emptyLabel = new UILabel("当前组件没有设置过事件");
+ emptyLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Plugin_Event_Manager_Config_Right_Tip"));
emptyLabel.setHorizontalAlignment(SwingConstants.CENTER);
rightPane.add(emptyLabel, BorderLayout.CENTER);
}
+ /**
+ * 刷新右边的面板,可能生成一个空提示,也可能生成一个事件编辑面板
+ *
+ * @param component
+ */
private void refreshRightPane(Component component) {
rightPane.removeAll();
rightPane.repaint();
@@ -95,42 +118,50 @@ public class EventConfigPane extends BasicPane implements TreeSelectionListener
rightPane.revalidate();
}
+ /**
+ * 创建左边的面板,里面放组件树
+ * @return
+ */
private JPanel getLeftPane() {
JPanel leftPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
// 存放组件树
JPanel leftContentPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
initLeftContentPane(leftContentPane);
leftPane.add(leftContentPane, BorderLayout.CENTER);
- // 左上方 items with event
+ // 左上方文字
JPanel leftTopPane = getLeftTopPane();
leftTopPane.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 0));
leftPane.add(leftTopPane, BorderLayout.NORTH);
return leftPane;
}
+ /**
+ * 初始化组件树父面板
+ * @param leftContentPane
+ */
private void initLeftContentPane(JPanel leftContentPane) {
- MyComponentTree componentTree = new MyComponentTree(tree, EventConfigPane.this, rootVisible);
+ componentTree = new MyComponentTree(this, rootVisible);
UIScrollPane scrollPane = new UIScrollPane(componentTree);
- // 把树添加到滚动框中
- scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
leftContentPane.add(scrollPane, BorderLayout.CENTER);
}
+ /**
+ * 创建左上方的文字提示
+ * @return
+ */
private JPanel getLeftTopPane() {
JPanel leftTopPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
- leftTopPane.add(FRWidgetFactory.createLineWrapLabel("Items with Event"), BorderLayout.CENTER);
+ leftTopPane.add(FRWidgetFactory.createLineWrapLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Plugin_Event_Manager_Config_Left_Title")), BorderLayout.CENTER);
return leftTopPane;
}
@Override
protected String title4PopupWindow() {
- return "event config";
+ return com.fr.design.i18n.Toolkit.i18nText("Fine-Plugin_Event_Manager_Config_Title");
}
-
/**
* 树节点的点击响应事件
- *
* @param e
*/
@Override
@@ -139,37 +170,22 @@ public class EventConfigPane extends BasicPane implements TreeSelectionListener
update();
MyComponentTree componentTree = (MyComponentTree) e.getSource();
MyTree tree = (MyTree) componentTree.getLastSelectedPathComponent();
+ // 记录当前节点
lastNode = tree;
if (hasEvent(tree)) {
+ // 如果点击的节点有(过)事件,则右侧为事件编辑面板
Widget widget = ((MyWidget) tree.getData()).getWidget();
refreshRightPane(eventPane);
- populate(widget);
+ eventPane.populate(widget);
} else {
+ // 否则右侧为空提示
refreshRightPane(emptyLabel);
}
}
/**
- * 判断节点是否是一个含有事件的控件
- *
- * @param tree
- * @return
+ * 更新事件的方法,基本上需要更新的地方都最终会到这个方法来
*/
- private boolean hasEvent(MyTree tree) {
- if (tree != null && tree.getData() instanceof MyWidget) {
- MyWidget myWidget = (MyWidget) tree.getData();
- if (myWidget != null) {
- Widget widget = myWidget.getWidget();
- return widget != null && widget.getListenerSize() > 0;
- }
- }
- return false;
- }
-
- public void populate(Widget widget) {
- eventPane.populate(widget);
- }
-
public void update() {
if (hasEvent(lastNode)) {
Widget lastNodeWidget = ((MyWidget) lastNode.getData()).getWidget();
@@ -183,4 +199,17 @@ public class EventConfigPane extends BasicPane implements TreeSelectionListener
lastNode = null;
}
+ /**
+ * 判断树节点是否有事件
+ *
+ * @param myTree
+ * @return
+ */
+ private boolean hasEvent(MyTree myTree) {
+ if (myTree != null && myTree.getData() instanceof MyWidget) {
+ return ((MyWidget) myTree.getData()).isHasEvent();
+ }
+ return false;
+ }
+
}
diff --git a/src/main/java/com/fr/plugin/event/manager/ui/EventManagerPane.java b/src/main/java/com/fr/plugin/event/manager/ui/EventManagerPane.java
index bd28751..b9d312e 100644
--- a/src/main/java/com/fr/plugin/event/manager/ui/EventManagerPane.java
+++ b/src/main/java/com/fr/plugin/event/manager/ui/EventManagerPane.java
@@ -5,7 +5,7 @@ import com.fr.design.gui.frpane.LoadingBasicPane;
import javax.swing.JPanel;
/**
- * 普通报表和表单事件管理器的父类
+ * 普通报表和表单事件管理器面板的父类
* @author Joe
* Created by Joe on 12/11/2020
*/
@@ -24,9 +24,14 @@ public abstract class EventManagerPane extends LoadingBasicPane {
@Override
protected String title4PopupWindow() {
- return "event manager";
+ return com.fr.design.i18n.Toolkit.i18nText("Fine-Plugin_Event_Manager_Title");
}
+ /**
+ * 初始化数据
+ *
+ * @param target
+ */
protected abstract void initData(T target);
public void update() {
diff --git a/src/main/java/com/fr/plugin/event/manager/ui/FormEventManagerPane.java b/src/main/java/com/fr/plugin/event/manager/ui/FormEventManagerPane.java
index 78e6e12..3b0d6ea 100644
--- a/src/main/java/com/fr/plugin/event/manager/ui/FormEventManagerPane.java
+++ b/src/main/java/com/fr/plugin/event/manager/ui/FormEventManagerPane.java
@@ -14,12 +14,20 @@ import javax.swing.JPanel;
import java.awt.BorderLayout;
/**
+ * 决策报表下的事件管理器面板
* @author Joe
* Created by Joe on 12/11/2020
*/
public class FormEventManagerPane extends EventManagerPane