From aff54895c5a3dfeaff6b56b4faf5524d66d580b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anian=20B=C3=BChler?= <anian.buehler@reutlingen-university.de> Date: Mon, 9 Aug 2021 16:26:30 +0200 Subject: [PATCH] added own BlockDrawerSet for Sim --- .../com/ardublock/ui/OpenblocksFrame.java | 84 +------------ .../com/ardublock/block/ardublock.xml | 115 +++++++++++++++++- 2 files changed, 116 insertions(+), 83 deletions(-) diff --git a/src/main/java/com/ardublock/ui/OpenblocksFrame.java b/src/main/java/com/ardublock/ui/OpenblocksFrame.java index 3390023..c54f9c3 100644 --- a/src/main/java/com/ardublock/ui/OpenblocksFrame.java +++ b/src/main/java/com/ardublock/ui/OpenblocksFrame.java @@ -276,83 +276,11 @@ public class OpenblocksFrame extends JFrame JLabel versionLabel = new JLabel(uiMessageBundle.getString("ardublock.ui.version")); //***************************************** - //ADD ZOOM - //***************************************** + //ADD ZOOM (currently only by CTRL +/- or mouse wheel + //*************************************************** //ZoomSlider zoomSlider = new ZoomSlider(workspace); //zoomSlider.reset(); - - /* - JButton zoomOutButton = new JButton(uiMessageBundle.getString("ardublock.ui.zoomOut")); - ActionListener zoomOutButtonListener = new ZoomOutButtonListener(workspace); - zoomOutButton.addActionListener(zoomOutButtonListener); - KeyStroke ctrlMinusKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, ActionEvent.CTRL_MASK); - zoomOutButton.registerKeyboardAction(zoomOutButtonListener, ctrlMinusKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); - zoomOutButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.zoomOut.tooltip")); - - JButton zoomInButton = new JButton(uiMessageBundle.getString("ardublock.ui.zoomIn")); - ActionListener zoomInButtonListener = new ZoomInButtonListener(workspace); - zoomInButton.addActionListener(zoomInButtonListener); - KeyStroke ctrlPlusKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, ActionEvent.CTRL_MASK); - zoomInButton.registerKeyboardAction(zoomInButtonListener, ctrlPlusKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); - zoomInButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.zoomIn.tooltip")); - - JButton zoomResetButton = new JButton(uiMessageBundle.getString("ardublock.ui.zoomReset")); - ActionListener zoomResetButtonListener = new ZoomResetButtonListener(workspace); - zoomResetButton.addActionListener(zoomResetButtonListener); - KeyStroke ctrl0KeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_0, ActionEvent.CTRL_MASK); - zoomResetButton.registerKeyboardAction(zoomResetButtonListener, ctrl0KeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); - zoomResetButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.zoomReset.tooltip")); - */ - //***************************************** - //TODO: add to an place - //TrashCan myTrashCan = new TrashCan(workspace, getToolkit().getImage("src/main/resources/com/ardublock/block/trash.png"), getToolkit().getImage("src/main/resources/com/ardublock/block/trash_open.png")); - //topPanel.add(myTrashCan); - - //SWITCH BLOCK MENU EXPERT/STANDARD - //***************************************** - /*JButton modeButton = new JButton(uiMessageBundle.getString("ardublock.ui.modeButton.mode.expert")); - ActionListener modeButtonListener = new ActionListener () { - public void actionPerformed(ActionEvent e) { - //TODO: check if Desktop is not necessary on all plattforms - // Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null; - // if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) { - - //TODO: check if zoom handling is possible in WorkspacecController - //get current zoomLevel - int currentWorkspaceZoom = zoomSlider.getValue(); - - try { - WorkspaceController workspaceController = context.getWorkspaceController(); - if(!workspaceModeState){ - workspaceController.loadProject(getArduBlockString(), null , "custom"); - modeButton.setText(uiMessageBundle.getString("ardublock.ui.modeButton.mode.standard")); - generateButton.setVisible(true); - simulateButton.setVisible(false); - } - else{ - workspaceController.loadProject(getArduBlockString(), null , "default"); - modeButton.setText(uiMessageBundle.getString("ardublock.ui.modeButton.mode.expert")); - generateButton.setVisible(false); - simulateButton.setVisible(true); - } - zoomSlider.reset(); - zoomSlider.setValue(currentWorkspaceZoom); - workspaceModeState=!workspaceModeState; - - } catch (Exception e1) { - //e1.printStackTrace(); - } - //} - } - }; - modeButton.addActionListener(modeButtonListener); - KeyStroke ctrleKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_B, ActionEvent.CTRL_MASK); - modeButton.registerKeyboardAction(modeButtonListener, ctrleKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); - modeButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.modeButton.mode.tooltip"));*/ - //***************************************** - - //TODO: TEST SAVE DEFAULT //Save new default program @@ -406,8 +334,6 @@ public class OpenblocksFrame extends JFrame } }; modeBasicButton.addActionListener(modeBasicButtonListener); - //KeyStroke ctrleKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_B, ActionEvent.CTRL_MASK); - //modeBasicButton.registerKeyboardAction(modeBasicButtonListener, ctrleKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); modeBasicButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.standard.tooltip")); //Workspace: PRO @@ -450,8 +376,6 @@ public class OpenblocksFrame extends JFrame } }; modeProButton.addActionListener(modeProButtonListener); - //KeyStroke ctrleKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_B, ActionEvent.CTRL_MASK); - //modeProButton.registerKeyboardAction(modeBasicButtonListener, ctrleKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); modeProButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.expert.tooltip")); //Workspace: SIM @@ -473,7 +397,7 @@ public class OpenblocksFrame extends JFrame try { WorkspaceController workspaceController = context.getWorkspaceController(); //TODO check if reduced sim-blockset is necessary - workspaceController.loadProject(getArduBlockString(), null , "default"); + workspaceController.loadProject(getArduBlockString(), null , "page"); generateButton.setVisible(false); simulateButton.setVisible(true); simulatorHelpButton.setVisible(true); @@ -496,8 +420,6 @@ public class OpenblocksFrame extends JFrame } }; modeSimButton.addActionListener(modeSimButtonListener); - //KeyStroke ctrleKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_B, ActionEvent.CTRL_MASK); - //modeProButton.registerKeyboardAction(modeBasicButtonListener, ctrleKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); modeSimButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.sim.tooltip")); //***************************************** diff --git a/src/main/resources/com/ardublock/block/ardublock.xml b/src/main/resources/com/ardublock/block/ardublock.xml index 7259e21..c9ea767 100644 --- a/src/main/resources/com/ardublock/block/ardublock.xml +++ b/src/main/resources/com/ardublock/block/ardublock.xml @@ -2774,6 +2774,25 @@ <BlockGenusMember>subroutine_varret_com</BlockGenusMember> <BlockGenusMember>subroutine-ref_varret</BlockGenusMember>--> </BlockDrawer> + <BlockDrawer button-color="255 215 0" name="bd.control" type="page"> + <BlockGenusMember>controlDivider1</BlockGenusMember> + <BlockGenusMember>loop</BlockGenusMember> + <BlockGenusMember>sketch</BlockGenusMember> + + <BlockGenusMember>controlDivider2</BlockGenusMember> + <BlockGenusMember>if</BlockGenusMember> + <BlockGenusMember>elseif</BlockGenusMember> + <BlockGenusMember>else</BlockGenusMember> + <BlockGenusMember>controlDivider3</BlockGenusMember> + <BlockGenusMember>while</BlockGenusMember> + + <BlockGenusMember>repeat_times</BlockGenusMember> + <BlockGenusMember>repeat</BlockGenusMember> + + <BlockGenusMember>controlDivider4</BlockGenusMember> + <BlockGenusMember>delay</BlockGenusMember> + <BlockGenusMember>wait</BlockGenusMember> + </BlockDrawer> <BlockDrawer button-color="200 220 0" name="bd.subroutines" type="default"> <BlockGenusMember>subroutine_com</BlockGenusMember> @@ -2802,6 +2821,10 @@ <BlockGenusMember>subroutineDivider3</BlockGenusMember> <BlockGenusMember>interrupt</BlockGenusMember> </BlockDrawer> + <BlockDrawer button-color="200 220 0" name="bd.subroutines" type="page"> + <BlockGenusMember>subroutine_com</BlockGenusMember> + <BlockGenusMember>subroutine-ref</BlockGenusMember> + </BlockDrawer> <BlockDrawer button-color="74 108 212" name="bd.output" type="default"> <BlockGenusMember>pin-write-digital</BlockGenusMember> @@ -2835,11 +2858,15 @@ <BlockGenusMember>stepper_set_rpm</BlockGenusMember> <BlockGenusMember>stepper_steps</BlockGenusMember> </BlockDrawer> + <BlockDrawer button-color="74 108 212" name="bd.output" type="page"> + <BlockGenusMember>pin-write-digital</BlockGenusMember> + <BlockGenusMember>pin-write-analog</BlockGenusMember> + </BlockDrawer> <BlockDrawer button-color="44 165 226" name="bd.input" type="default"> <BlockGenusMember>pin-read-digital</BlockGenusMember> <BlockGenusMember>pin-read-analog</BlockGenusMember> - <!-- <BlockGenusMember>pin-read-digital-pullup</BlockGenusMember> Nur für Sim rausgenommen--> + <BlockGenusMember>pin-read-digital-pullup</BlockGenusMember> </BlockDrawer> <BlockDrawer button-color="44 165 226" name="bd.input" type="custom"> <BlockGenusMember>inputDivider1</BlockGenusMember> @@ -2862,6 +2889,10 @@ <BlockGenusMember>dht_sensor_read_humid</BlockGenusMember> <BlockGenusMember>dht_sensor_calc_index</BlockGenusMember> </BlockDrawer> + <BlockDrawer button-color="44 165 226" name="bd.input" type="page"> + <BlockGenusMember>pin-read-digital</BlockGenusMember> + <BlockGenusMember>pin-read-analog</BlockGenusMember> + </BlockDrawer> <BlockDrawer button-color="255 20 147" name="bd.logic" type="default"> <BlockGenusMember>logicDivider1</BlockGenusMember> @@ -2912,6 +2943,23 @@ <BlockGenusMember>bit_shift_left</BlockGenusMember> <BlockGenusMember>bit_shift_right</BlockGenusMember> </BlockDrawer> + <BlockDrawer button-color="255 20 147" name="bd.logic" type="page"> + <BlockGenusMember>logicDivider1</BlockGenusMember> + <BlockGenusMember>and</BlockGenusMember> + <BlockGenusMember>or</BlockGenusMember> + <BlockGenusMember>not</BlockGenusMember> + + <BlockGenusMember>logicDivider2</BlockGenusMember> + <BlockGenusMember>equal_digital</BlockGenusMember> + <BlockGenusMember>not_equal_digital</BlockGenusMember> + + <BlockGenusMember>greater</BlockGenusMember> + <BlockGenusMember>less</BlockGenusMember> + <BlockGenusMember>equal</BlockGenusMember> + <BlockGenusMember>greater_equal</BlockGenusMember> + <BlockGenusMember>less_equal</BlockGenusMember> + <BlockGenusMember>not_equal</BlockGenusMember> + </BlockDrawer> <BlockDrawer button-color="160 32 240" name="bd.operators" type="default"> <BlockGenusMember>mathDivider1</BlockGenusMember> @@ -2963,6 +3011,28 @@ <BlockGenusMember>random</BlockGenusMember> <BlockGenusMember>random_range</BlockGenusMember> </BlockDrawer> + <BlockDrawer button-color="160 32 240" name="bd.operators" type="page"> + <BlockGenusMember>mathDivider1</BlockGenusMember> + <BlockGenusMember>addition</BlockGenusMember> + <BlockGenusMember>subtraction</BlockGenusMember> + <BlockGenusMember>multiplication</BlockGenusMember> + <BlockGenusMember>division</BlockGenusMember> + + <BlockGenusMember>modulo</BlockGenusMember> + <BlockGenusMember>abs</BlockGenusMember> + + <BlockGenusMember>min</BlockGenusMember> + <BlockGenusMember>max</BlockGenusMember> + + <BlockGenusMember>mathDivider2</BlockGenusMember> + <BlockGenusMember>map_common</BlockGenusMember> + <BlockGenusMember>map</BlockGenusMember> + <BlockGenusMember>constrain</BlockGenusMember> + + <BlockGenusMember>mathDivider3</BlockGenusMember> + <BlockGenusMember>random</BlockGenusMember> + <BlockGenusMember>random_range</BlockGenusMember> + </BlockDrawer> <BlockDrawer button-color="255 50 0" name="bd.cast" type="custom"> <BlockGenusMember>cast_number</BlockGenusMember> @@ -3047,6 +3117,33 @@ <BlockGenusMember>variable_file</BlockGenusMember> <BlockGenusMember>local_variable_file</BlockGenusMember> </BlockDrawer> + <BlockDrawer button-color="255 0 0" name="bd.number" type="page"> + <BlockGenusMember>numberDivider1</BlockGenusMember> + <BlockGenusMember>millis</BlockGenusMember> + + <BlockGenusMember>numberDivider2</BlockGenusMember> + + <BlockGenusMember>setter_variable_analog</BlockGenusMember> + <BlockGenusMember>create_variable_analog</BlockGenusMember> + + <BlockGenusMember>setter_variable_digital</BlockGenusMember> + <BlockGenusMember>variable_digital</BlockGenusMember> + <BlockGenusMember>local_variable_digital</BlockGenusMember><!-- nur für Sim -> später anpassen --> + + <BlockGenusMember>digital-high</BlockGenusMember> + <BlockGenusMember>digital-low</BlockGenusMember> + <BlockGenusMember>true</BlockGenusMember> + <BlockGenusMember>false</BlockGenusMember> + + <BlockGenusMember>numberDivider3</BlockGenusMember> + <BlockGenusMember>setter_variable_number</BlockGenusMember> + <BlockGenusMember>variable_number</BlockGenusMember> + <BlockGenusMember>local_variable_number</BlockGenusMember><!-- nur für Sim -> später anpassen --> + <BlockGenusMember>number</BlockGenusMember> + + <BlockGenusMember>numberDivider4</BlockGenusMember> + <BlockGenusMember>string</BlockGenusMember> + </BlockDrawer> <BlockDrawer button-color="200 0 0" name="bd.array" type="custom"> <BlockGenusMember>arrayDivider1</BlockGenusMember> @@ -3066,7 +3163,7 @@ <BlockDrawer button-color="165 42 42" name="bd.communication" type="default"> <BlockGenusMember>communicationDivider1</BlockGenusMember> <BlockGenusMember>serial_print</BlockGenusMember> - <!-- <BlockGenusMember>soft_serial_print</BlockGenusMember> Nur für Sim rausgenommen --> + <BlockGenusMember>soft_serial_print</BlockGenusMember> <BlockGenusMember>communicationDivider3</BlockGenusMember> <BlockGenusMember>glue_digital</BlockGenusMember> @@ -3111,6 +3208,15 @@ <BlockGenusMember>mqtt_set_frame</BlockGenusMember> <BlockGenusMember>mqtt_read_frame</BlockGenusMember>--> </BlockDrawer> + <BlockDrawer button-color="165 42 42" name="bd.communication" type="page"> + <BlockGenusMember>communicationDivider1</BlockGenusMember> + <BlockGenusMember>serial_print</BlockGenusMember> + + <BlockGenusMember>communicationDivider3</BlockGenusMember> + <BlockGenusMember>glue_digital</BlockGenusMember> + <BlockGenusMember>glue_number</BlockGenusMember> + <BlockGenusMember>glue_string</BlockGenusMember> + </BlockDrawer> <BlockDrawer button-color="0 32 96" name="bd.storage" type="custom"> <BlockGenusMember>storageDivider1</BlockGenusMember> @@ -3146,6 +3252,11 @@ <BlockGenusMember>code_head</BlockGenusMember> <BlockGenusMember>code_loop</BlockGenusMember> </BlockDrawer> + <BlockDrawer button-color="0 150 156" name="bd.code" type="page"> + <BlockGenusMember>program_comment</BlockGenusMember> + <BlockGenusMember>code_comment</BlockGenusMember> + <BlockGenusMember>code_comment_head</BlockGenusMember> + </BlockDrawer> <!-- Shapes are automatically loaded as blocks in the Shapes drawer (see slcodeblocks.ShapeBlocksGenerator for details) --> <!-- Sound blocks reside in the auto-generated String drawer. (see slcodeblocks.SoundBlocksGenerator for details) --> -- GitLab