diff --git a/src/main/java/com/ardublock/ui/OpenblocksFrame.java b/src/main/java/com/ardublock/ui/OpenblocksFrame.java index 5687246797ffabda094891242c2f9112507d7d24..3390023478a9d659cca771eb725111beee4a321b 100644 --- a/src/main/java/com/ardublock/ui/OpenblocksFrame.java +++ b/src/main/java/com/ardublock/ui/OpenblocksFrame.java @@ -52,6 +52,8 @@ import com.ardublock.ui.listener.SaveImageButtonListener; //import com.ardublock.ui.listener.ZoomResetButtonListener; import com.ardublock.ui.listener.SimulateCodeButtonListener; import com.ardublock.ui.listener.SimulatorHelpButtonListener; +import com.ardublock.ui.listener.ZoomInButtonListener; +import com.ardublock.ui.listener.ZoomOutButtonListener; import edu.mit.blocks.controller.WorkspaceController; import edu.mit.blocks.workspace.Workspace; @@ -152,8 +154,8 @@ public class OpenblocksFrame extends JFrame JButton saveAsButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveAs")); ActionListener saveAsButtonListener = new SaveAsButtonListener(this); saveAsButton.addActionListener(saveAsButtonListener); - //KeyStroke ctrlshiftsKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.SHIFT_MASK); - //saveAsButton.registerKeyboardAction(saveAsButtonListener, ctrlshiftsKeyStroke, JComponent.WHEN_FOCUSED); + KeyStroke ctrlshiftsKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK); + saveAsButton.registerKeyboardAction(saveAsButtonListener, ctrlshiftsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); saveAsButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveAs.tooltip")); JButton openButton = new JButton(uiMessageBundle.getString("ardublock.ui.load")); @@ -174,16 +176,12 @@ public class OpenblocksFrame extends JFrame JButton simulateButton = new JButton(uiMessageBundle.getString("ardublock.ui.simulation")); ActionListener simulateButtonListener = new SimulateCodeButtonListener(this, this, context); simulateButton.addActionListener(simulateButtonListener); - //KeyStroke ctrlaKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK); - //simulateButton.registerKeyboardAction(simulateButtonListener, ctrlaKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); simulateButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.simulation.tooltip")); simulateButton.setVisible(false); //hide on startUp JButton simulatorHelpButton = new JButton(uiMessageBundle.getString("ardublock.ui.simulatorHelp")); ActionListener simulatorHelpButtonListener = new SimulatorHelpButtonListener(this); simulatorHelpButton.addActionListener(simulatorHelpButtonListener); - //KeyStroke ctrlaKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK); - //simulateButton.registerKeyboardAction(simulateButtonListener, ctrlaKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); simulatorHelpButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.simulatorHelp.tooltip")); simulatorHelpButton.setVisible(false); //hide on startUp @@ -194,7 +192,7 @@ public class OpenblocksFrame extends JFrame } }; serialMonitorButton.addActionListener(serialButtonListener); - KeyStroke ctrlmKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_M, ActionEvent.CTRL_MASK); + KeyStroke ctrlmKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_M, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK); serialMonitorButton.registerKeyboardAction(serialButtonListener, ctrlmKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); serialMonitorButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.serialMonitor.tooltip")); @@ -205,7 +203,7 @@ public class OpenblocksFrame extends JFrame } }; serialPlotterButton.addActionListener(serialPlotterButtonListener); - KeyStroke ctrlLKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_L, ActionEvent.CTRL_MASK); + KeyStroke ctrlLKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_L, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK); serialPlotterButton.registerKeyboardAction(serialPlotterButtonListener, ctrlLKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); serialPlotterButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.serialPlotter.tooltip")); @@ -362,8 +360,8 @@ public class OpenblocksFrame extends JFrame JButton saveDefaultButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveDefaultProgram")); ActionListener saveDefaultButtonListener = new SaveDefaultButtonListener(this); saveDefaultButton.addActionListener(saveDefaultButtonListener); - //KeyStroke ctrlshiftsKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.SHIFT_MASK); - //saveAsButton.registerKeyboardAction(saveAsButtonListener, ctrlshiftsKeyStroke, JComponent.WHEN_FOCUSED); + KeyStroke ctrlaltsKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK | ActionEvent.ALT_MASK); + saveDefaultButton.registerKeyboardAction(saveDefaultButtonListener, ctrlaltsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); saveDefaultButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveDefaultProgram.tooltip")); @@ -383,7 +381,7 @@ public class OpenblocksFrame extends JFrame //int currentWorkspaceZoom = zoomSlider.getValue(); //get current zoomLevel - //TODO: check why blocks are rearanged while changing WS + //TODO: check why blocks are rearranged while changing WS double currentWorkspaceZoom = workspace.getCurrentWorkspaceZoom(); try { WorkspaceController workspaceController = context.getWorkspaceController(); @@ -508,16 +506,16 @@ public class OpenblocksFrame extends JFrame JButton copyButton = new JButton(uiMessageBundle.getString("ardublock.ui.copy")); ActionListener copyButtonListener = new CopyButtonListener(context); copyButton.addActionListener(copyButtonListener); - //KeyStroke ctrlcKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK); - //copyButton.registerKeyboardAction(copyButtonListener, ctrlcKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + KeyStroke ctrlcKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK); + copyButton.registerKeyboardAction(copyButtonListener, ctrlcKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); copyButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.copy.tooltip")); JButton pasteButton = new JButton(uiMessageBundle.getString("ardublock.ui.paste")); ActionListener pasteButtonListener = new PasteButtonListener(this, context, uiMessageBundle, workspaceModeState); pasteButton.addActionListener(pasteButtonListener); - //KeyStroke ctrlvKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK); - //pasteButton.registerKeyboardAction(pasteButtonListener, ctrlvKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + KeyStroke ctrlvKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK); + pasteButton.registerKeyboardAction(pasteButtonListener, ctrlvKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); pasteButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.paste.tooltip")); //***************************************** @@ -568,6 +566,15 @@ public class OpenblocksFrame extends JFrame this.add(topPanel, BorderLayout.NORTH); this.add(bottomPanel, BorderLayout.SOUTH); this.add(workspace, BorderLayout.CENTER); + + //** ActionListener without buttons*/ + ActionListener zoomInButtonListener = new ZoomInButtonListener(workspace); + KeyStroke ctrlPlusKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, ActionEvent.CTRL_MASK); + workspace.registerKeyboardAction(zoomInButtonListener, ctrlPlusKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + + ActionListener zoomOutButtonListener = new ZoomOutButtonListener(workspace); + KeyStroke ctrlMinusKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, ActionEvent.CTRL_MASK); + workspace.registerKeyboardAction(zoomOutButtonListener, ctrlMinusKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); } public void doOpenArduBlockFile() diff --git a/src/main/java/com/ardublock/ui/listener/ZoomInButtonListener.java b/src/main/java/com/ardublock/ui/listener/ZoomInButtonListener.java index 5213612a470b6efdcc6c58f6820c3b5ecec2c1f1..d633608277676d261918a9a656bc15fd2b222dec 100644 --- a/src/main/java/com/ardublock/ui/listener/ZoomInButtonListener.java +++ b/src/main/java/com/ardublock/ui/listener/ZoomInButtonListener.java @@ -12,6 +12,12 @@ public class ZoomInButtonListener implements ActionListener { private Workspace workspace; + /**workspace zoom settings + * match with edu.mit.blocks.codeblockutil.CHoverScrollPane + */ + private static final double WORKSPACE_MAX_ZOOM = 3.0; + private static final double WORKSPACE_ZOOM_STEPSIZE = 0.1; + public ZoomInButtonListener(Workspace workspace) { Context.getContext(); @@ -23,8 +29,8 @@ public class ZoomInButtonListener implements ActionListener double zoomLevel = workspace.getCurrentWorkspaceZoom(); - if(zoomLevel < 2.5){ - zoomLevel += 0.1; + if(zoomLevel < WORKSPACE_MAX_ZOOM){ + zoomLevel += WORKSPACE_ZOOM_STEPSIZE; workspace.setWorkspaceZoom(zoomLevel); PageChangeEventManager.notifyListeners(); } diff --git a/src/main/java/com/ardublock/ui/listener/ZoomOutButtonListener.java b/src/main/java/com/ardublock/ui/listener/ZoomOutButtonListener.java index b46ae4d80c78363b0f8cc36c8d7b91f1b0b91fae..dc5798e9dec60c14e9290a28a27bf0191b7b2d20 100644 --- a/src/main/java/com/ardublock/ui/listener/ZoomOutButtonListener.java +++ b/src/main/java/com/ardublock/ui/listener/ZoomOutButtonListener.java @@ -9,6 +9,12 @@ public class ZoomOutButtonListener implements ActionListener { private Workspace workspace; + /**workspace zoom settings + * match with edu.mit.blocks.codeblockutil.CHoverScrollPane + */ + private static final double WORKSPACE_MIN_ZOOM = 0.6; + private static final double WORKSPACE_ZOOM_STEPSIZE = 0.1; + public ZoomOutButtonListener(Workspace workspace) { @@ -19,11 +25,12 @@ public class ZoomOutButtonListener implements ActionListener double zoomLevel = workspace.getCurrentWorkspaceZoom(); - if(zoomLevel > 0.6){ - zoomLevel -= 0.1; + if(zoomLevel > WORKSPACE_MIN_ZOOM){ + zoomLevel -= WORKSPACE_ZOOM_STEPSIZE; workspace.setWorkspaceZoom(zoomLevel); PageChangeEventManager.notifyListeners(); } + } } diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties index abd08dd5123c6076e1e65046866240692613a87a..21c2e3e1257f80a226c97c10be989b3fad4d8dbe 100644 --- a/src/main/resources/com/ardublock/block/ardublock.properties +++ b/src/main/resources/com/ardublock/block/ardublock.properties @@ -10,15 +10,15 @@ ardublock.file.suffix=Ardublock Program File(*.abp) #UI #**************************** ardublock.ui.new=New -ardublock.ui.new.tooltip=new program Ctrl-N +ardublock.ui.new.tooltip=new program ardublock.ui.save=Save -ardublock.ui.save.tooltip=save program Ctrl-S +ardublock.ui.save.tooltip=save program ardublock.ui.saveAs=Save As ardublock.ui.saveAs.tooltip=save program as ardublock.ui.load=Open -ardublock.ui.load.tooltip=open program Ctrl-O +ardublock.ui.load.tooltip=open program ardublock.ui.upload=Upload -ardublock.ui.upload.tooltip=Upload to Arduino Ctrl-U +ardublock.ui.upload.tooltip=Upload to Arduino ardublock.ui.clone=Clone (rightclick-Ctrl) ardublock.ui.clone_all=Clone following (rightclick-Shift-Ctrl) ardublock.ui.reference=open block reference @@ -42,15 +42,15 @@ ardublock.ui.mode.standard.tooltip=Die wichtigsten Bl ardublock.ui.mode.sim=Sim ardublock.ui.mode.sim.tooltip=ArduBlock Basic mit Simulation "letsgoING-Grundlagen-Hardware" ardublock.ui.serialMonitor=Serial Monitor -ardublock.ui.serialMonitor.tooltip=open Serial Monitor Ctrl-M +ardublock.ui.serialMonitor.tooltip=open Serial Monitor ardublock.ui.serialPlotter=Serial Plotter -ardublock.ui.serialPlotter.tooltip=open Serial Plotter Ctrl-L +ardublock.ui.serialPlotter.tooltip=open Serial Plotter ardublock.ui.undo=Undo -ardublock.ui.undo.tooltip=Undo Ctrl-Z +ardublock.ui.undo.tooltip=undo ardublock.ui.redo=Redo -ardublock.ui.redo.tooltip=redo Ctrl-Y +ardublock.ui.redo.tooltip=redo ardublock.ui.saveImage=Save as image -ardublock.ui.saveImage.tooltip=save current program as image... Ctrl-P +ardublock.ui.saveImage.tooltip=save current program as image... ardublock.ui.saveDefaultProgram=save as default ardublock.ui.saveDefaultProgram.tooltip=saves current program as default program ardublock.ui.zoomIn=+ @@ -58,11 +58,11 @@ ardublock.ui.zoomIn.tooltip=zoom in Ctrl-Plus ardublock.ui.zoomOut=- ardublock.ui.zoomOut.tooltip=zoom out Ctrl-Minus ardublock.ui.zoomReset=0 -ardublock.ui.zoomReset.tooltip=reset zoom Ctrl-0 +ardublock.ui.zoomReset.tooltip=reset zoom ardublock.ui.copy=copy -ardublock.ui.copy.tooltip=copy program to clipboard Ctrl-C +ardublock.ui.copy.tooltip=copy program to clipboard ardublock.ui.paste=paste -ardublock.ui.paste.tooltip=paste program from clipboard Ctrl-V +ardublock.ui.paste.tooltip=paste program from ardublock.ui.simulation=simulate ardublock.ui.simulation.tooltip=start simulation with basic block-set and letsgoING modules ardublock.ui.simulatorHelp=help diff --git a/src/main/resources/com/ardublock/block/ardublock_de.properties b/src/main/resources/com/ardublock/block/ardublock_de.properties index f92324ffc82ec6188cb8a939706500a36167f04d..6e723da5d16ccddd4d22e34d801dcfe9319493f7 100644 --- a/src/main/resources/com/ardublock/block/ardublock_de.properties +++ b/src/main/resources/com/ardublock/block/ardublock_de.properties @@ -10,15 +10,15 @@ ardublock.file.suffix=Ardublock Programmdatei (*.abp) #UI #**************************** ardublock.ui.new=Neu -ardublock.ui.new.tooltip=Neues Programm erstellen Strg-N +ardublock.ui.new.tooltip=Neues Programm erstellen ardublock.ui.save=Speichern -ardublock.ui.save.tooltip=ArduBlock-Programm speichern Strg-S +ardublock.ui.save.tooltip=ArduBlock-Programm speichern ardublock.ui.saveAs=Speichern unter ardublock.ui.saveAs.tooltip=ArduBlock-Programm unter neuem Namen speichern ardublock.ui.load=Öffnen -ardublock.ui.load.tooltip=ArduBlock-Programm öffnen Strg-O +ardublock.ui.load.tooltip=ArduBlock-Programm öffnen ardublock.ui.upload=Hochladen auf den Arduino -ardublock.ui.upload.tooltip=Programm auf Arduino laden Strg-U +ardublock.ui.upload.tooltip=Programm auf Arduino laden ardublock.ui.clone=klonen (Strg-Rechtsklick) ardublock.ui.clone_all=folgende klonen (Strg-Shift-Rechtsklick) ardublock.ui.reference=Block-Referenz öffnen @@ -42,29 +42,29 @@ ardublock.ui.mode.standard.tooltip=Die wichtigsten Bl ardublock.ui.mode.sim=Sim ardublock.ui.mode.sim.tooltip=ArduBlock Basic mit Simulation "letsgoING-Grundlagen-Hardware" -#ardublock.ui.modeButton.mode.tooltip=umschalten zwischen Grundlagen- und Projektblöcken Strg-B +#ardublock.ui.modeButton.mode.tooltip=umschalten zwischen Grundlagen- und Projektblöcken ardublock.ui.serialMonitor=Serieller Monitor -ardublock.ui.serialMonitor.tooltip=öffnet den seriellen Monitor Strg-M +ardublock.ui.serialMonitor.tooltip=öffnet den seriellen Monitor ardublock.ui.serialPlotter=Serieller Plotter -ardublock.ui.serialPlotter.tooltip=öffnet den seriellen Plotter Strg-L +ardublock.ui.serialPlotter.tooltip=öffnet den seriellen Plotter ardublock.ui.undo=Undo -ardublock.ui.undo.tooltip=Rückgängig Ctrl-Z +ardublock.ui.undo.tooltip=Rückgängig ardublock.ui.redo=Redo -ardublock.ui.redo.tooltip=Wiederherstellen Ctrl-Y +ardublock.ui.redo.tooltip=Wiederherstellen ardublock.ui.saveImage=Bild speichern -ardublock.ui.saveImage.tooltip=Speichert ein Bild des aktuellen Programms Strg-P +ardublock.ui.saveImage.tooltip=Speichert ein Bild des aktuellen Programms ardublock.ui.saveDefaultProgram=Als Vorlage speichern ardublock.ui.saveDefaultProgram.tooltip=Speichert aktuelles Programm als Vorlage für neue Programme ardublock.ui.zoomIn=+ -ardublock.ui.zoomIn.tooltip=vergrößere Programm Strg-Plus +ardublock.ui.zoomIn.tooltip=vergrößere Programm ardublock.ui.zoomOut=- -ardublock.ui.zoomOut.tooltip=verkleinere Programm Strg-Minus +ardublock.ui.zoomOut.tooltip=verkleinere Programm ardublock.ui.zoomReset=0 -ardublock.ui.zoomReset.tooltip=zurücksetzen Strg-0 +ardublock.ui.zoomReset.tooltip=zurücksetzen ardublock.ui.copy=kopieren -ardublock.ui.copy.tooltip=kopiere gesamtes Programm in Zwischenablage Strg-C +ardublock.ui.copy.tooltip=kopiere gesamtes Programm in Zwischenablage ardublock.ui.paste=einfügen -ardublock.ui.paste.tooltip=füge gesamtes Programm aus Zwischenablage ein Strg-V +ardublock.ui.paste.tooltip=füge gesamtes Programm aus Zwischenablage ein ardublock.ui.simulation=Hochladen auf den Simulator ardublock.ui.simulation.tooltip=Starte den Simulator fuer die letsgoING-GrundlagenModule ardublock.ui.simulatorHelp=Hilfe