1 WestRegionContainerPane包含的就是上边两部分。上面文件列表是com.fr.design.mainframe.DesignerFrameFileDealerPane,下面数据集是com.fr.design.data.datapane.TableDataTreePane.
2 WestRegionContainerPane继承了UIResizableContainer,说明该区域大小可改变。
3 UIResizableContainer里面的组件构成:
可以看出有三个组件:upPane,downPane,parameterPane,两个工具组件:horizontToolPane,verticalToolPane.
4 DesignerFrameFileDealerPane就放在了 upPane上,TableDataTreePane就放在了downPane上。parameterPane在这没有实例化。
5 DesignerFrameFileDealerPane:
5.1 使用BorderLayout布局,
5.2 Center放的是cardPane,North放的是tooBarPane
5.3 tooBarPane也使用的是BorderLayout布局,它的Center放的是parent的JPanel,South放的是UIMenuHighLight
5.4 cardPane使用CardLayout布局,他加入了TemplateTreePane作为子组件,这个组件应该是文件树组件。
5.5 parent的JPanel使用的也是BorderLayout,它的Center放的是toolBar。
5.6 toolBar上的那一排按钮是怎么加上去的。,他们是在方法refreshDockingView上加的。
可以看出
addShortCut方法就是增加一个按钮,一共增加了newFolderAction,refreshTreeAction,showInExplorerAction,renameAction,delFileAction。这里还有一个插件扩展点Set extraShortCuts = ExtraDesignClassManager.getInstance().getExtraShortCuts();我们可以自己来添加自己的功能按钮到toolBar上。
6 TableDataTreePane:
6.1 也是BorderLayout布局,North放的是toolbarPane,Center放的是一个jPanel的Panel。
6.2 toolbarPane里放的是toolBar,toolBar上增加了addMenuDef下拉菜单,分割线,
editAction,removeAction,分割线,previewTableDataAction,connectionTableAction
6.3 jPanel里放到是buttonPane,scrollPane。scrollPanel放的是dataTree,dataTree应该就是我们定义的数据集树。
6.4 新增各种数据集的菜单在哪定义的呢?在createPluginListener中定义的
在TableDataTreePane.this.createAddMenuDef()中定义的。
重点是TableDataNameObjectCreator[] creators = TableDataCreatorProducer.getInstance().createReportTableDataCreator();
这里面定义了集中数据集,还有一个插件扩展点ExtraDesignClassManager.getInstance().getReportTableDataCreators(),扩展名TableDataDefineProvider。
更多内容:https://blog.csdn.net/sixingbugai?spm=1000.2115.3001.5343 |