11package eu.darken.butler.editor.ui.editor
2+
23import androidx.compose.foundation.layout.Arrangement
34import androidx.compose.foundation.layout.Box
45import androidx.compose.foundation.layout.Column
@@ -13,22 +14,15 @@ import androidx.compose.foundation.layout.width
1314import androidx.compose.material.icons.Icons
1415import androidx.compose.material.icons.twotone.Close
1516import androidx.compose.material.icons.twotone.Error
16- import androidx.compose.material.icons.filled.FolderOpen
17- import androidx.compose.material.icons.filled.FormatListNumbered
18- import androidx.compose.material.icons.filled.Info
19- import androidx.compose.material.icons.filled.KeyboardArrowDown
20- import androidx.compose.material.icons.filled.KeyboardArrowUp
21- import androidx.compose.material.icons.twotone.Save
22- import androidx.compose.material.icons.filled.Search
2317import androidx.compose.material.icons.twotone.FolderOpen
2418import androidx.compose.material.icons.twotone.FormatListNumbered
2519import androidx.compose.material.icons.twotone.Info
2620import androidx.compose.material.icons.twotone.KeyboardArrowDown
2721import androidx.compose.material.icons.twotone.KeyboardArrowUp
22+ import androidx.compose.material.icons.twotone.Save
2823import androidx.compose.material.icons.twotone.Search
2924import androidx.compose.material3.AlertDialog
3025import androidx.compose.material3.CircularProgressIndicator
31- import androidx.compose.material3.ExperimentalMaterial3Api
3226import androidx.compose.material3.Icon
3327import androidx.compose.material3.IconButton
3428import androidx.compose.material3.MaterialTheme
@@ -65,7 +59,7 @@ import eu.darken.butler.editor.core.MemoryStats
6559import eu.darken.butler.editor.core.SearchResult
6660import eu.darken.butler.editor.core.TextPosition
6761import eu.darken.butler.workspace.core.Workspace
68- import eu.darken.butler.workspace.core.WorkspaceAction
62+ import eu.darken.butler.workspace.ui.manager.WorkspaceActionHandler
6963import eu.darken.butler.workspace.ui.manager.WorkspaceButton
7064import eu.darken.butler.workspace.ui.manager.WorkspaceButtonViewModel
7165import eu.darken.butler.workspace.ui.manager.WorkspaceDesign
@@ -93,9 +87,7 @@ fun EditorWorkspacePageHost(
9387 state?.let { state ->
9488 EditorWorkspacePage (
9589 workspaceButtonState = workspaceButtonState,
96- onWorkspaceAction = workspaceButtonVm::onWorkspaceAction,
97- onNavToWorkspaceManager = workspaceButtonVm::onNavToWorkspaceManager,
98- onNavToSettings = workspaceButtonVm::onNavToSettings,
90+ workspaceActionHandler = workspaceButtonVm,
9991 design = design,
10092 state = state,
10193 onOpenFile = vm::openFile,
@@ -124,10 +116,8 @@ fun EditorWorkspacePageHost(
124116
125117@Composable
126118fun EditorWorkspacePage (
127- workspaceButtonState : WorkspaceButtonViewModel .State ? ,
128- onWorkspaceAction : (WorkspaceAction ) -> Unit ,
129- onNavToWorkspaceManager : () -> Unit ,
130- onNavToSettings : () -> Unit ,
119+ workspaceButtonState : WorkspaceButtonViewModel .State ? = null,
120+ workspaceActionHandler : WorkspaceActionHandler ? = null,
131121 design : WorkspaceDesign ,
132122 state : EditorWorkspaceViewModel .State ,
133123 onOpenFile : (APath ) -> Unit ,
@@ -194,9 +184,7 @@ fun EditorWorkspacePage(
194184 onGoToLine = { showGoToLineDialog = true },
195185 onToggleMemoryStats = { showMemoryStats = ! showMemoryStats },
196186 workspaceButtonState = workspaceButtonState,
197- onWorkspaceAction = onWorkspaceAction,
198- onNavToWorkspaceManager = onNavToWorkspaceManager,
199- onNavToSettings = onNavToSettings,
187+ workspaceActionHandler = workspaceActionHandler,
200188 )
201189
202190 Column (
@@ -288,7 +276,7 @@ fun EditorWorkspacePage(
288276 onDismiss = { showSearchDialog = false }
289277 )
290278 }
291-
279+
292280 // File picker host
293281 FilePickerHost (
294282 launcher = filePickerLauncher,
@@ -314,9 +302,7 @@ private fun EditorHeader(
314302 onGoToLine : () -> Unit ,
315303 onToggleMemoryStats : () -> Unit ,
316304 workspaceButtonState : WorkspaceButtonViewModel .State ? ,
317- onWorkspaceAction : (WorkspaceAction ) -> Unit ,
318- onNavToWorkspaceManager : () -> Unit ,
319- onNavToSettings : () -> Unit ,
305+ workspaceActionHandler : WorkspaceActionHandler ? = null,
320306) {
321307 Surface (
322308 color = MaterialTheme .colorScheme.surfaceContainerHigh,
@@ -353,9 +339,7 @@ private fun EditorHeader(
353339
354340 WorkspaceButton (
355341 state = workspaceButtonState,
356- onAction = onWorkspaceAction,
357- onNavToWorkspaceManager = onNavToWorkspaceManager,
358- onNavToSettings = onNavToSettings,
342+ workspaceActionHandler = workspaceActionHandler,
359343 )
360344 }
361345 }
@@ -664,10 +648,6 @@ private fun EditorPagePreview() {
664648 PreviewWrapper {
665649 EditorWorkspacePage (
666650 design = WorkspaceDesign (),
667- workspaceButtonState = null ,
668- onWorkspaceAction = {},
669- onNavToWorkspaceManager = {},
670- onNavToSettings = {},
671651 state = EditorWorkspaceViewModel .State (
672652 id = Workspace .Id (),
673653 totalLines = 1000 ,
0 commit comments