@@ -12,11 +12,14 @@ import {
1212 faGear ,
1313 faTableList ,
1414} from '@fortawesome/free-solid-svg-icons' ;
15+ import { useContextMenu } from 'renderer/contexts/ContextMenuProvider' ;
16+ import SqlTableSchemaTab from 'renderer/screens/DatabaseScreen/SqlTableSchemaTab' ;
1517
1618export default function DatabaseTableList ( ) {
1719 const { schema, currentDatabase } = useSchmea ( ) ;
1820 const [ selected , setSelected ] = useState <
1921 TreeViewItemData < {
22+ database : string ;
2023 name : string ;
2124 type : string ;
2225 } >
@@ -26,6 +29,40 @@ export default function DatabaseTableList() {
2629 currentDatabase ? [ `database/${ currentDatabase } ` ] : [ ]
2730 ) ;
2831
32+ const { handleContextMenu } = useContextMenu ( ( ) => {
33+ const tableName = selected ?. data ?. name ;
34+ const databaseName = selected ?. data ?. database ;
35+
36+ if (
37+ selected &&
38+ selected . data &&
39+ selected . data . type === 'table' &&
40+ tableName &&
41+ databaseName
42+ ) {
43+ return [
44+ { text : 'Select 200 Rows' } ,
45+ {
46+ text : 'Open Structure' ,
47+ onClick : ( ) => {
48+ newWindow ( tableName , ( key , name ) => {
49+ return (
50+ < SqlTableSchemaTab
51+ tabKey = { key }
52+ name = { name }
53+ database = { databaseName }
54+ table = { tableName }
55+ />
56+ ) ;
57+ } ) ;
58+ } ,
59+ } ,
60+ ] ;
61+ }
62+
63+ return [ ] ;
64+ } , [ selected , newWindow ] ) ;
65+
2966 const schemaListItem = useMemo ( ( ) => {
3067 if ( ! schema ) return [ ] ;
3168
@@ -42,6 +79,7 @@ export default function DatabaseTableList() {
4279 data : {
4380 name : table . name ,
4481 type : table . type === 'TABLE' ? 'table' : 'view' ,
82+ database : database . name ,
4583 } ,
4684 } ) ) ;
4785
@@ -54,6 +92,7 @@ export default function DatabaseTableList() {
5492 data : {
5593 name : event ,
5694 type : 'event' ,
95+ database : database . name ,
5796 } ,
5897 } ) )
5998 ) ;
@@ -67,6 +106,7 @@ export default function DatabaseTableList() {
67106 icon : < FontAwesomeIcon icon = { faGear } color = "#bdc3c7" /> ,
68107 data : {
69108 name : trigger ,
109+ database : database . name ,
70110 type : 'trigger' ,
71111 } ,
72112 } ) )
@@ -94,10 +134,11 @@ export default function DatabaseTableList() {
94134 onSelectChange = { setSelected }
95135 collapsedKeys = { collapsed }
96136 onCollapsedChange = { setCollapsed }
137+ onContextMenu = { handleContextMenu }
97138 onDoubleClick = { ( item ) => {
98139 const tableName = item . data ?. name ;
99140 const type = item . data ?. type ;
100- if ( type === 'table' && tableName ) {
141+ if ( ( type === 'table' || type === 'view' ) && tableName ) {
101142 newWindow ( `SELECT ${ tableName } ` , ( key , name ) => (
102143 < QueryWindow
103144 initialSql = { new QueryBuilder ( 'mysql' )
0 commit comments