diff --git a/designer_base/src/com/fr/design/DesignModelAdapter.java b/designer_base/src/com/fr/design/DesignModelAdapter.java index 7c2c71806..8e35dbf38 100644 --- a/designer_base/src/com/fr/design/DesignModelAdapter.java +++ b/designer_base/src/com/fr/design/DesignModelAdapter.java @@ -1,9 +1,5 @@ package com.fr.design; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - import com.fr.base.Parameter; import com.fr.base.io.IOFile; import com.fr.data.TableDataSource; @@ -13,6 +9,10 @@ import com.fr.form.ui.Widget; import com.fr.general.ComparatorUtils; import com.fr.stable.js.WidgetName; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + /** * 当前的设计器模式 * @@ -29,6 +29,14 @@ public abstract class DesignModelAdapter { treeModel.reload(root); } + /** + * @param nameOfNewNode 新添加的节点名字 + * @param insertMode 添加的节点的类型,模板、服务器、 存储过程、分组 + * @param tc + */ + public void insertNewNodeToSelectedNode(String nameOfNewNode, int insertMode, DesignModelAdapter tc){ + + } + + /** + * 删除选中节点 + * @param nodeName 节点名称 + * @param removeMode 删除模式 + * @param tc tc + */ + public void removeSelectedNode(String nodeName, int removeMode, DesignModelAdapter tc) { + + } + + /** + * 更新节点 + * @param newName 新名称 + * @param oldName 原名称 + * @param updateMode 更新模式 + * @param tc tc + */ + public void updateNameOfSelectedNode(String newName, String oldName, int updateMode, DesignModelAdapter tc){ + + } + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java index a0b4fb3bf..364be2131 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java @@ -6,6 +6,7 @@ import com.fr.base.TableData; import com.fr.data.TableDataSource; import com.fr.data.impl.storeproc.StoreProcedure; import com.fr.design.DesignModelAdapter; +import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.UpdateAction; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.tabledata.ResponseDataSourceChange; @@ -18,6 +19,7 @@ import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.fun.TableDataSourceManagerProcessor; import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itextfield.UITextField; @@ -27,10 +29,7 @@ import com.fr.design.icon.IconPathConstants; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DockingView; -import com.fr.design.menu.LineSeparator; -import com.fr.design.menu.MenuDef; -import com.fr.design.menu.SeparatorDef; -import com.fr.design.menu.ToolBarDef; +import com.fr.design.menu.*; import com.fr.general.ComparatorUtils; import com.fr.general.GeneralContext; import com.fr.general.Inter; @@ -92,7 +91,7 @@ public class TableDataTreePane extends DockingView implements ResponseDataSource private TableDataTreePane() { this.setLayout(new BorderLayout(4, 0)); this.setBorder(null); - dataTree = new TableDataTree(); + initTableDataTree(); ToolTipManager.sharedInstance().registerComponent(dataTree); ToolTipManager.sharedInstance().setDismissDelay(3000); ToolTipManager.sharedInstance().setInitialDelay(0); @@ -108,13 +107,21 @@ public class TableDataTreePane extends DockingView implements ResponseDataSource createAddMenuDef(); } }); - + ToolBarDef toolbarDef = new ToolBarDef(); editAction = new EditAction(); removeAction = new RemoveAction(); previewTableDataAction = new PreviewTableDataAction(); connectionTableAction = new ConnectionTableAction(); - ToolBarDef toolbarDef = new ToolBarDef(); + ShortCut[] shortCuts = null; + TableDataSourceManagerProcessor opProcessor = ExtraDesignClassManager.getInstance().getTableDataSourceManagerProcessor(); + if (opProcessor != null) { + shortCuts = opProcessor.getShortCuts(dataTree); + } else { + shortCuts = new ShortCut[]{addMenuDef, SeparatorDef.DEFAULT, editAction, removeAction, SeparatorDef.DEFAULT, previewTableDataAction, connectionTableAction}; + } + toolbarDef.addShortCut(shortCuts); toolbarDef.addShortCut(addMenuDef, SeparatorDef.DEFAULT, editAction, removeAction, SeparatorDef.DEFAULT, previewTableDataAction, connectionTableAction); + UIToolbar toolBar = ToolBarDef.createJToolBar(); toolbarDef.updateToolBar(toolBar); @@ -147,6 +154,14 @@ public class TableDataTreePane extends DockingView implements ResponseDataSource checkButtonEnabled(); } + private void initTableDataTree() { + TableDataSourceManagerProcessor opProcessor = ExtraDesignClassManager.getInstance().getTableDataSourceManagerProcessor(); + if (opProcessor != null) { + dataTree = opProcessor.createUserObjectJtree(); + } + dataTree = new TableDataTree(); + } + private KeyAdapter getTableTreeNodeListener() { return new KeyAdapter() { @@ -278,7 +293,12 @@ public class TableDataTreePane extends DockingView implements ResponseDataSource * 刷新 */ public void refreshDockingView() { - populate(new TableDataSourceOP(tc)); + TableDataSourceOP tableDataSourceOP = null; + TableDataSourceManagerProcessor opProcessor = ExtraDesignClassManager.getInstance().getTableDataSourceManagerProcessor(); + if (opProcessor != null) { + tableDataSourceOP = opProcessor.createTableDataSourceOP(tc); + } + populate(tableDataSourceOP == null ? new TableDataSourceOP(tc) : tableDataSourceOP); this.checkButtonEnabled(); } diff --git a/designer_base/src/com/fr/design/fun/TableDataSourceManagerProcessor.java b/designer_base/src/com/fr/design/fun/TableDataSourceManagerProcessor.java new file mode 100644 index 000000000..fbb8095a9 --- /dev/null +++ b/designer_base/src/com/fr/design/fun/TableDataSourceManagerProcessor.java @@ -0,0 +1,38 @@ +package com.fr.design.fun; + +import com.fr.design.DesignModelAdapter; +import com.fr.design.data.datapane.TableDataSourceOP; +import com.fr.design.data.datapane.TableDataTree; +import com.fr.design.menu.ShortCut; +import com.fr.stable.fun.Level; + +/** + * 自定义的模板(服务器)数据集的树样式接口 el:分组样式 + * Coder: zack + * Date: 2016/4/18 + * Time: 9:04 + */ +public interface TableDataSourceManagerProcessor extends Level { + String XML_TAG = "TableDataSourceManagerProcessor"; + + int CURRENT_LEVEL = 1; + /** + * 创建数据集的树操作 + * @param tc 设计模式 + * @return 数据集树操作 + */ + TableDataSourceOP createTableDataSourceOP(DesignModelAdapter tc); + + /** + * 创建相应的tabledatatree + * @return tabledatatree + */ + TableDataTree createUserObjectJtree(); + + /** + * 返回面板新增的action(el:GroupAction) + * @return (shortcut)action数组 + */ + ShortCut[] getShortCuts(TableDataTree dataTree); + +} diff --git a/designer_base/src/com/fr/design/fun/impl/AbstractTDSourceManagerProcessor.java b/designer_base/src/com/fr/design/fun/impl/AbstractTDSourceManagerProcessor.java new file mode 100644 index 000000000..4550023ea --- /dev/null +++ b/designer_base/src/com/fr/design/fun/impl/AbstractTDSourceManagerProcessor.java @@ -0,0 +1,15 @@ +package com.fr.design.fun.impl; + +import com.fr.design.fun.TableDataSourceManagerProcessor; + +/** + * Coder: zack + * Date: 2016/4/18 + * Time: 10:30 + */ +public abstract class AbstractTDSourceManagerProcessor implements TableDataSourceManagerProcessor { + @Override + public int currentAPILevel() { + return CURRENT_LEVEL; + } +}