@@ -8,8 +8,6 @@ import '@vaadin/tooltip';
8
8
import '@qomponent/qui-code-block' ;
9
9
import '@qomponent/qui-directory-tree' ;
10
10
import '@qomponent/qui-badge' ;
11
- import '@vaadin/tabs' ;
12
- import '@vaadin/tabsheet' ;
13
11
import '@vaadin/dialog' ;
14
12
import '@vaadin/confirm-dialog' ;
15
13
import '@vaadin/progress-bar' ;
@@ -43,6 +41,7 @@ export class QwcWorkspace extends observeState(QwcHotReloadElement) {
43
41
display: flex;
44
42
width: 100%;
45
43
height: 100%;
44
+ flex-direction: column;
46
45
}
47
46
48
47
.split vaadin-split-layout {
@@ -74,6 +73,48 @@ export class QwcWorkspace extends observeState(QwcHotReloadElement) {
74
73
height: 100vh;
75
74
border: none;
76
75
}
76
+
77
+ .sourcehalf {
78
+ display: flex;
79
+ flex-direction: column;
80
+ height: 100%;
81
+ justify-content: space-between;
82
+ overflow:hidden !important;
83
+ }
84
+
85
+ .mainMenuBar {
86
+ display: flex;
87
+ align-items: center;
88
+ justify-content: space-between;
89
+ border-bottom: 1px solid var(--lumo-contrast-20pct);
90
+ }
91
+
92
+ .mainMenuBarButtons {
93
+ display: flex;
94
+ align-items: center;
95
+ width: 100%;
96
+ }
97
+
98
+ .mainMenuBarTitle {
99
+ font-size: large;
100
+ color: var(--lumo-contrast-50pct);
101
+ user-select: none;
102
+ cursor: pointer;
103
+ }
104
+
105
+ .mainMenuBarActions {
106
+ display: flex;
107
+ align-items: center;
108
+ gap: 0.5rem;
109
+ width: 100%;
110
+ justify-content: end;
111
+ padding-right: 10px;
112
+ }
113
+
114
+ .sourcehalfcontent {
115
+ overflow: scroll;
116
+ }
117
+
77
118
` ;
78
119
79
120
static properties = {
@@ -85,7 +126,8 @@ export class QwcWorkspace extends observeState(QwcHotReloadElement) {
85
126
_changeToWorkspaceItem : { state : true } ,
86
127
_actionResult : { state : true } ,
87
128
_showActionProgress : { state : true } ,
88
- _confirmDialogOpened : { state : true }
129
+ _confirmDialogOpened : { state : true } ,
130
+ _isMaximized : { state : true }
89
131
} ;
90
132
91
133
constructor ( ) {
@@ -98,6 +140,7 @@ export class QwcWorkspace extends observeState(QwcHotReloadElement) {
98
140
this . _clearSelectedWorkspaceItem ( ) ;
99
141
this . _clearActionResult ( ) ;
100
142
this . _confirmDialogOpened = false ;
143
+ this . _isMaximized = false ;
101
144
}
102
145
103
146
connectedCallback ( ) {
@@ -157,9 +200,10 @@ export class QwcWorkspace extends observeState(QwcHotReloadElement) {
157
200
render ( ) {
158
201
if ( this . _workspaceItems ) {
159
202
return html `< div class ="split ">
203
+ ${ this . _renderMainMenuBar ( ) }
160
204
< vaadin-split-layout >
161
- < master-content style ="width: 25%; "> ${ this . _renderWorkspaceTree ( ) } </ master-content >
162
- < detail-content style ="width: 75%; "> ${ this . _renderSelectedSource ( ) } </ detail-content >
205
+ < master-content style ="width: ${ this . _isMaximized ? '0%' : ' 25%' } ; "> ${ this . _renderWorkspaceTree ( ) } </ master-content >
206
+ < detail-content style ="width: ${ this . _isMaximized ? '100%' : ' 75%' } ; "> ${ this . _renderSelectedSource ( ) } </ detail-content >
163
207
</ vaadin-split-layout >
164
208
</ div >
165
209
${ this . _renderResultDialog ( ) }
@@ -182,39 +226,49 @@ export class QwcWorkspace extends observeState(QwcHotReloadElement) {
182
226
183
227
return html `< vaadin-split-layout >
184
228
< master-content style ="width: 50%; ">
185
- < vaadin-tabsheet >
186
-
187
- < vaadin-button title ="Save " slot ="prefix " theme ="icon " aria-label ="Save " @click ="${ this . _saveSelectedWorkspaceItem } ">
188
- < vaadin-icon icon ="font-awesome-solid:floppy-disk "> </ vaadin-icon >
189
- </ vaadin-button >
190
- < vaadin-button title ="Copy " slot ="prefix " theme ="icon " aria-label ="Copy " @click ="${ this . _copySelectedWorkspaceItem } ">
191
- < vaadin-icon icon ="font-awesome-solid:copy "> </ vaadin-icon >
192
- </ vaadin-button >
193
-
194
-
195
- ${ this . _renderActions ( ) }
196
-
197
- < qui-ide-link slot ="suffix " title ="Open in IDE " style ="cursor: pointer; "
198
- fileName ="${ this . _selectedWorkspaceItem . path } "
199
- lineNumber ="0 "
200
- noCheck >
201
- < vaadin-icon icon ="font-awesome-solid:up-right-from-square "> </ vaadin-icon >
202
- </ qui-ide-link >
203
-
204
- < vaadin-tabs slot ="tabs ">
205
- < vaadin-tab id ="${ this . _selectedWorkspaceItem . path } " title ="${ this . _selectedWorkspaceItem . path } "> ${ this . _selectedWorkspaceItem . name . split ( '/' ) . pop ( ) } </ vaadin-tab >
206
- </ vaadin-tabs >
207
-
208
- < div tab ="${ this . _selectedWorkspaceItem . path } ">
209
- ${ this . _renderContent ( ) }
210
- </ div >
211
- </ vaadin-tabsheet >
229
+ < div class ="mainPart ">
230
+ ${ this . _renderMainContent ( ) }
231
+ </ div >
212
232
</ master-content >
213
233
${ this . _renderResultSplitView ( ) }
214
- </ vaadin-split-layout > ` ;
234
+ </ vaadin-split-layout >
235
+ ` ;
215
236
}
216
237
}
217
238
239
+ _renderMainMenuBar ( ) {
240
+ const isHidden = ! this . _selectedWorkspaceItem . name ;
241
+
242
+ return html `
243
+ < div class ="mainMenuBar " style ="${ isHidden ? 'visibility: hidden;' : '' } ">
244
+ < div class ="mainMenuBarButtons ">
245
+ < vaadin-button title ="Save " theme ="icon tertiary " aria-label ="Save " @click ="${ this . _saveSelectedWorkspaceItem } ">
246
+ < vaadin-icon icon ="font-awesome-solid:floppy-disk "> </ vaadin-icon >
247
+ </ vaadin-button >
248
+ < vaadin-button title ="Copy " theme ="icon tertiary " aria-label ="Copy " @click ="${ this . _copySelectedWorkspaceItem } ">
249
+ < vaadin-icon icon ="font-awesome-solid:copy "> </ vaadin-icon >
250
+ </ vaadin-button >
251
+ </ div >
252
+
253
+ < div class ="mainMenuBarTitle " @dblclick ="${ this . _toggleSplit } ">
254
+ ${ this . _selectedWorkspaceItem ?. name ?. split ( '/' ) . pop ( ) }
255
+ </ div >
256
+
257
+ < div class ="mainMenuBarActions ">
258
+ ${ this . _renderActions ( ) }
259
+ < qui-ide-link title ="Open in IDE "
260
+ style ="cursor: pointer; "
261
+ fileName ="${ this . _selectedWorkspaceItem ?. path } "
262
+ lineNumber ="0 "
263
+ noCheck >
264
+ < vaadin-icon icon ="font-awesome-solid:up-right-from-square "> </ vaadin-icon >
265
+ </ qui-ide-link >
266
+ </ div >
267
+ </ div >
268
+ ` ;
269
+
270
+ }
271
+
218
272
_renderResultSplitView ( ) {
219
273
if ( this . _actionResult && this . _actionResult . content && this . _actionResult . display === "split" ) {
220
274
return html `< detail-content style ="width: 50%; ">
@@ -286,16 +340,16 @@ export class QwcWorkspace extends observeState(QwcHotReloadElement) {
286
340
_renderActions ( ) {
287
341
if ( this . _filteredActions ) {
288
342
if ( this . _showActionProgress ) {
289
- return html `< vaadin-progress-bar slot =" suffix " indeterminate > </ vaadin-progress-bar > ` ;
343
+ return html `< vaadin-progress-bar indeterminate > </ vaadin-progress-bar > ` ;
290
344
} else {
291
- return html `< div class ="actions " slot =" suffix " >
292
- < vaadin-menu-bar .items ="${ this . _filteredActions } " theme ="dropdown-indicators " @item-selected ="${ ( e ) => this . _actionSelected ( e ) } "> </ vaadin-menu-bar >
345
+ return html `< div class ="actions ">
346
+ < vaadin-menu-bar .items ="${ this . _filteredActions } " theme ="dropdown-indicators tertiary " @item-selected ="${ ( e ) => this . _actionSelected ( e ) } "> </ vaadin-menu-bar >
293
347
</ div > ` ;
294
348
}
295
349
}
296
350
}
297
351
298
- _renderContent ( ) {
352
+ _renderMainContent ( ) {
299
353
if ( this . _selectedWorkspaceItem . isBinary ) {
300
354
return this . _renderBinaryContent ( ) ;
301
355
} else {
@@ -354,6 +408,10 @@ export class QwcWorkspace extends observeState(QwcHotReloadElement) {
354
408
</ vaadin-confirm-dialog > ` ;
355
409
}
356
410
411
+ _toggleSplit ( ) {
412
+ this . _isMaximized = ! this . _isMaximized ;
413
+ }
414
+
357
415
_confirmOpenedChanged ( e ) {
358
416
if ( this . _confirmDialogOpened !== e . detail . value ) {
359
417
this . _confirmDialogOpened = e . detail . value ;
0 commit comments