@@ -3,12 +3,7 @@ package processing.app.ui
33
44import androidx.compose.foundation.background
55import androidx.compose.foundation.clickable
6- import androidx.compose.foundation.layout.Arrangement
7- import androidx.compose.foundation.layout.Box
8- import androidx.compose.foundation.layout.Row
9- import androidx.compose.foundation.layout.fillMaxWidth
10- import androidx.compose.foundation.layout.padding
11- import androidx.compose.foundation.layout.heightIn
6+ import androidx.compose.foundation.layout.*
127import androidx.compose.material.Text
138import androidx.compose.runtime.Composable
149import androidx.compose.runtime.mutableStateOf
@@ -23,11 +18,12 @@ import androidx.compose.ui.text.style.TextAlign
2318import androidx.compose.ui.unit.IntOffset
2419import androidx.compose.ui.unit.dp
2520import processing.app.Base
21+ import processing.app.Language
2622import processing.app.Preferences
2723import processing.app.UpdateCheck
28- import java.awt.Color as AwtColor
2924import javax.swing.JMenuItem
3025import javax.swing.JPopupMenu
26+ import java.awt.Color as AwtColor
3127
3228fun awtToCompose (c : AwtColor ): Color {
3329 return Color (c.red, c.green, c.blue, c.alpha)
@@ -40,34 +36,34 @@ fun themeColorOrFallback(key: String, fallback: AwtColor): Color {
4036
4137data class TopBarItemData (
4238 val label : String ,
43- val onClick : (ComposePanel , Base , Int , Int ) -> Unit
39+ val onClick : (ComposePanel , Base , Editor , Int , Int ) -> Unit
4440)
4541
4642@Composable
47- fun TopBar (panel : ComposePanel , base : Base ) {
43+ fun TopBar (panel : ComposePanel , base : Base , editor : Editor ) {
4844 val blueBarColor = themeColorOrFallback(" toolbar.gradient.top" , AwtColor (107 , 160 , 204 ))
4945 val textColor = themeColorOrFallback(" toolbar.rollover.color" , AwtColor (0 , 0 , 0 ))
5046
5147 val items = listOf (
52- TopBarItemData (" File" ) { p, b, x, y ->
53- showMenuPopup(p, b, x, y)
48+ TopBarItemData (" File" ) { p, b, e, x, y ->
49+ showMenuPopup(p, b, e, x, y)
5450 },
55- TopBarItemData (" Edit" ) { p, b, x, y ->
56- showMenuPopup(p, b, x, y)
51+ TopBarItemData (" Edit" ) { p, b, e, x, y ->
52+ // showMenuPopup(p, b, e , x, y)
5753 },
58- TopBarItemData (" Sketch" ) { p, b, x, y ->
59- showMenuPopup(p, b, x, y)
54+ TopBarItemData (" Sketch" ) { p, b, e, x, y ->
55+ // showMenuPopup(p, b, e , x, y)
6056 },
61- TopBarItemData (" Debug" ) { p, b, x, y ->
62- showMenuPopup(p, b, x, y)
57+ TopBarItemData (" Debug" ) { p, b, e, x, y ->
58+ // showMenuPopup(p, b, e , x, y)
6359 },
64- TopBarItemData (" Tools" ) { p, b, x, y ->
65- showMenuPopup(p, b, x, y)
60+ TopBarItemData (" Tools" ) { p, b, e, x, y ->
61+ // showMenuPopup(p, b, e , x, y)
6662 },
67- TopBarItemData (" Help" ) { p, b, x, y ->
68- showMenuPopup(p, b, x, y)
63+ TopBarItemData (" Help" ) { p, b, e, x, y ->
64+ // showMenuPopup(p, b, e , x, y)
6965 },
70- TopBarItemData (" Develop" ) { p, b, x, y ->
66+ TopBarItemData (" Develop" ) { p, b, e, x, y ->
7167 showDevelopPopup(p, b, x, y)
7268 }
7369 )
@@ -85,7 +81,7 @@ fun TopBar(panel: ComposePanel, base: Base) {
8581 textColor = textColor,
8682 modifier = Modifier .weight(1f )
8783 ) { x, y ->
88- item.onClick(panel, base, x, y)
84+ item.onClick(panel, base, editor, x, y)
8985 }
9086 }
9187 }
@@ -128,6 +124,10 @@ private fun TopBarItem(
128124 }
129125}
130126
127+
128+
129+
130+ // /pop up menus///
131131private fun showDevelopPopup (panel : ComposePanel , base : Base , x : Int , y : Int ) {
132132 val popup = JPopupMenu ()
133133
@@ -142,22 +142,78 @@ private fun showDevelopPopup(panel: ComposePanel, base: Base, x: Int, y: Int) {
142142 popup.show(panel, x, y)
143143}
144144
145- private fun showMenuPopup (panel : ComposePanel , base : Base , x : Int , y : Int ) {
145+ private fun showMenuPopup (panel : ComposePanel , base : Base , editor : Editor , x : Int , y : Int ) {
146146 val popup = JPopupMenu ()
147147
148- val fileNew = JMenuItem ( " New " )
148+ val fileNew = Toolkit .newJMenuItem( Language .text( " menu.file.new " ), ' N ' .code);
149149 fileNew.addActionListener {
150150 base.handleNew()
151151 }
152152 popup.add(fileNew);
153153
154- val fileOpen = JMenuItem ( " Open " )
154+ val fileOpen = Toolkit .newJMenuItem( Language .text( " menu.file.open " ), ' O ' .code);
155155 fileOpen.addActionListener {
156156 base.handleOpenPrompt();
157157 }
158-
159158 popup.add(fileOpen);
160159
160+ val fileSketchbook = Toolkit .newJMenuItemShift(Language .text(" menu.file.sketchbook" ), ' K' .code);
161+ fileSketchbook.addActionListener {
162+ base.showSketchbookFrame()
163+ }
164+ popup.add(fileSketchbook);
165+
166+ val fileExamples = Toolkit .newJMenuItemShift(Language .text(" menu.file.examples" ), ' O' .code);
167+ fileExamples.addActionListener {
168+ base.showExamplesFrame()
169+ }
170+ popup.add(fileExamples);
171+
172+ val fileClose = Toolkit .newJMenuItem(Language .text(" menu.file.close" ), ' W' .code);
173+ fileClose.addActionListener {
174+ base.handleClose(editor, false );
175+ }
176+ popup.add(fileClose);
177+
178+ val fileSave = Toolkit .newJMenuItem(Language .text(" menu.file.save" ), ' S' .code)
179+ fileSave.addActionListener {
180+ editor.handleSave(false );
181+ }
182+ popup.add(fileSave);
183+
184+ val fileSaveAs = Toolkit .newJMenuItemShift(Language .text(" menu.file.save_as" ), ' S' .code);
185+ fileSaveAs.addActionListener {
186+ editor.handleSaveAs();
187+ }
188+ popup.add(fileSaveAs);
189+
190+ val filePageSetup = Toolkit .newJMenuItemShift(Language .text(" menu.file.page_setup" ), ' P' .code);
191+ filePageSetup.addActionListener {
192+ editor.handlePageSetup();
193+ }
194+ popup.add(filePageSetup);
195+
196+ val filePrint = Toolkit .newJMenuItem(Language .text(" menu.file.print" ), ' P' .code);
197+ filePrint.addActionListener {
198+ editor.handlePrint();
199+ }
200+ popup.add(filePrint);
201+
202+
203+ // UNDER MAC OS ONLY SECTION /// - will have to deal with this.
204+ val filePreferences = Toolkit .newJMenuItem(Language .text(" menu.file.preferences" ), ' ,' .code);
205+ filePreferences.addActionListener {
206+ base.handlePrefs()
207+ }
208+ popup.add(filePreferences);
209+
210+ val fileQuit = Toolkit .newJMenuItem(Language .text(" menu.file.quit" ), ' Q' .code);
211+ fileQuit.addActionListener {
212+ base.handleQuit()
213+ }
214+ popup.add(fileQuit);
215+
216+ // ^^^ UNDER MAC OS ONLY SECTION ^^^/////
161217
162218
163219
@@ -166,12 +222,17 @@ private fun showMenuPopup(panel: ComposePanel, base: Base, x: Int, y: Int) {
166222
167223
168224
169- fun mountTopBar (panel : ComposePanel , base : Base ) {
225+
226+ // /^^^ pop up menus ^^^////
227+
228+
229+
230+ fun mountTopBar (panel : ComposePanel , base : Base , editor : Editor ) {
170231 val awtBg = Theme .getColor(" toolbar.gradient.top" ) ? : AwtColor (107 , 160 , 204 )
171232 panel.background = awtBg
172233
173234 panel.setContent {
174- TopBar (panel, base)
235+ TopBar (panel, base, editor )
175236 }
176237}
177238
0 commit comments