diff --git a/hs_err_pid25585.log b/hs_err_pid25585.log new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/main/java/com/ardublock/Main.java b/src/main/java/com/ardublock/Main.java index 938b2a23f55b066332910557fba592e668b9787a..2e9c717cfe44f4cf32a3e182d9c794a8288a5993 100644 --- a/src/main/java/com/ardublock/Main.java +++ b/src/main/java/com/ardublock/Main.java @@ -1,9 +1,11 @@ package com.ardublock; +import java.awt.Color; import java.awt.event.WindowEvent; import java.io.IOException; import javax.swing.JFrame; +import javax.swing.UIManager; import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; diff --git a/src/main/java/com/ardublock/ui/OpenblocksFrame.java b/src/main/java/com/ardublock/ui/OpenblocksFrame.java index 52d1e40802689365bb494bdc4f909bb20e22a10a..628afa83d7389e3586913609e60f910a721b67f5 100644 --- a/src/main/java/com/ardublock/ui/OpenblocksFrame.java +++ b/src/main/java/com/ardublock/ui/OpenblocksFrame.java @@ -8,6 +8,7 @@ import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Graphics2D; +import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; @@ -21,20 +22,26 @@ import java.util.ResourceBundle; import javax.imageio.ImageIO; import javax.swing.Box; +import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.KeyStroke; import javax.swing.ToolTipManager; +import javax.swing.UIManager; import javax.swing.filechooser.FileFilter; import javax.swing.filechooser.FileNameExtensionFilter; import com.ardublock.core.Context; import com.ardublock.ui.listener.ArdublockWorkspaceListener; +import com.ardublock.ui.listener.ButtonMouseListener; import com.ardublock.ui.listener.GenerateCodeButtonListener; import com.ardublock.ui.listener.CopyButtonListener; import com.ardublock.ui.listener.NewButtonListener; @@ -56,6 +63,7 @@ import com.ardublock.ui.listener.ZoomOutButtonListener; import edu.mit.blocks.controller.WorkspaceController; import edu.mit.blocks.workspace.Workspace; //import edu.mit.blocks.workspace.ZoomSlider; +import tec.letsgoing.ardublock.simulator.view.GUI; public class OpenblocksFrame extends JFrame @@ -96,6 +104,7 @@ public class OpenblocksFrame extends JFrame public OpenblocksFrame() { + //UIManager.getLookAndFeelDefaults().put("Panel.background", new Color(40, 74, 102)); context = Context.getContext(); this.setTitle(makeFrameTitle()); this.setSize(new Dimension(WINDOW_SIZE_WIDTH, WINDOW_SIZE_HEIGHT)); @@ -111,6 +120,9 @@ public class OpenblocksFrame extends JFrame fileChooser.setFileFilter(ffilter); fileChooser.addChoosableFileFilter(ffilter); + appPrefix = uiMessageBundle.getString("ardublock.ui.appprefix.standard"); + setTitle(makeFrameTitle()); + initOpenBlocks(); } @@ -132,100 +144,258 @@ public class OpenblocksFrame extends JFrame //display ToolTips for 10 seconds ToolTipManager.sharedInstance().setDismissDelay(TOOLTIP_DISMISS_DELAY); - JPanel topPanel = new JPanel(); - topPanel.setLayout(new FlowLayout()); - JButton newButton = new JButton(uiMessageBundle.getString("ardublock.ui.new")); - ActionListener newButtonListener = new NewButtonListener(this); - newButton.addActionListener(newButtonListener); + //NEW + //********** + ImageIcon newButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/new1.png"))); + ImageIcon newButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/new2.png"))); + ImageIcon newButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/new3.png"))); + ButtonMouseListener newButtonMouseListener = new ButtonMouseListener(newButtonIcon, newButtonIconHovered, newButtonIconPressed); + KeyStroke ctrlnKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK); - newButton.registerKeyboardAction(newButtonListener, ctrlnKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + ActionListener newButtonListener = new NewButtonListener(this); + + JButton newButton = new JButton(newButtonIcon); + newButton.addMouseListener(newButtonMouseListener); + newButton.setMargin(new Insets(0, 0, 0, 0)); + newButton.setContentAreaFilled(false); + newButton.setBorderPainted(false); + //JButton newButton = new JButton(uiMessageBundle.getString("ardublock.ui.new")); + newButton.addActionListener(newButtonListener); newButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.new.tooltip")); + //newButton.registerKeyboardAction(newButtonListener, ctrlnKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + + JMenuItem newMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.new")); + newMenuItem.addActionListener(newButtonListener); + newMenuItem.registerKeyboardAction(newButtonListener, ctrlnKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + newMenuItem.setMnemonic(KeyEvent.VK_N); + newMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.new.tooltip")); + + + + //SAVE + //********** + ImageIcon saveButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/save1.png"))); + ImageIcon saveButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/save2.png"))); + ImageIcon saveButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/save3.png"))); + ButtonMouseListener saveButtonMouseListener = new ButtonMouseListener(saveButtonIcon, saveButtonIconHovered, saveButtonIconPressed); - JButton saveButton = new JButton(uiMessageBundle.getString("ardublock.ui.save")); + KeyStroke ctrlsKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK); ActionListener saveButtonListener = new SaveButtonListener(this); + + JButton saveButton = new JButton(saveButtonIcon); + saveButton.addMouseListener(saveButtonMouseListener); + saveButton.setMargin(new Insets(0, 0, 0, 0)); + saveButton.setContentAreaFilled(false); + saveButton.setBorderPainted(false); + //JButton saveButton = new JButton(uiMessageBundle.getString("ardublock.ui.save")); saveButton.addActionListener(saveButtonListener); - KeyStroke ctrlsKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK); - saveButton.registerKeyboardAction(saveButtonListener, ctrlsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + //saveButton.registerKeyboardAction(saveButtonListener, ctrlsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); saveButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.save.tooltip")); - JButton saveAsButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveAs")); - ActionListener saveAsButtonListener = new SaveAsButtonListener(this); - saveAsButton.addActionListener(saveAsButtonListener); + JMenuItem saveMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.save")); + saveMenuItem.addActionListener(saveButtonListener); + saveMenuItem.setMnemonic(KeyEvent.VK_S); + saveMenuItem.registerKeyboardAction(newButtonListener, ctrlsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + saveMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.save.tooltip")); + + + //SAVE AS + //********** 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")); + ActionListener saveAsButtonListener = new SaveAsButtonListener(this); - JButton openButton = new JButton(uiMessageBundle.getString("ardublock.ui.load")); + //JButton saveAsButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveAs")); + //saveAsButton.addActionListener(saveAsButtonListener); + //saveAsButton.registerKeyboardAction(saveAsButtonListener, ctrlshiftsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + //saveAsButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveAs.tooltip")); + + JMenuItem saveAsMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.saveAs")); + saveAsMenuItem.addActionListener(saveAsButtonListener); + saveAsMenuItem.registerKeyboardAction(saveAsButtonListener, ctrlshiftsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + saveAsMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveAs.tooltip")); + + + //OPEN + //********* + ImageIcon openButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/open1.png"))); + ImageIcon openButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/open2.png"))); + ImageIcon openButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/open3.png"))); + ButtonMouseListener openButtonMouseListener = new ButtonMouseListener(openButtonIcon, openButtonIconHovered, openButtonIconPressed); + + KeyStroke ctrloKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK); ActionListener openButtonListener = new OpenButtonListener(this); + + JButton openButton = new JButton(openButtonIcon); + openButton.addMouseListener(openButtonMouseListener); + openButton.setMargin(new Insets(0, 0, 0, 0)); + openButton.setContentAreaFilled(false); + openButton.setBorderPainted(false); + //JButton openButton = new JButton(uiMessageBundle.getString("ardublock.ui.load")); openButton.addActionListener(openButtonListener); - KeyStroke ctrloKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK); - openButton.registerKeyboardAction(openButtonListener, ctrloKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + //openButton.registerKeyboardAction(openButtonListener, ctrloKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); openButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.load.tooltip")); - JButton generateButton = new JButton(uiMessageBundle.getString("ardublock.ui.upload")); + JMenuItem openMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.load")); + openMenuItem.addActionListener(openButtonListener); + openMenuItem.setMnemonic(KeyEvent.VK_O); + openMenuItem.registerKeyboardAction(openButtonListener, ctrloKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + openMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.load.tooltip")); + + + //GENERATE + //********** + ImageIcon generateButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/upload1.png"))); + ImageIcon generateButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/upload2.png"))); + ImageIcon generateButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/upload3.png"))); + ButtonMouseListener generateButtonMouseListener = new ButtonMouseListener(generateButtonIcon, generateButtonIconHovered, generateButtonIconPressed); + + KeyStroke ctrluKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_U, ActionEvent.CTRL_MASK); ActionListener generateButtonListener = new GenerateCodeButtonListener(this, this, context); + + JButton generateButton = new JButton(generateButtonIcon); + generateButton.addMouseListener(generateButtonMouseListener); + generateButton.setMargin(new Insets(0, 0, 0, 0)); + generateButton.setContentAreaFilled(false); + generateButton.setBorderPainted(false); + //JButton generateButton = new JButton(uiMessageBundle.getString("ardublock.ui.upload")); generateButton.addActionListener(generateButtonListener); - KeyStroke ctrluKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_U, ActionEvent.CTRL_MASK); - generateButton.registerKeyboardAction(generateButtonListener, ctrluKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + //generateButton.registerKeyboardAction(generateButtonListener, ctrluKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); generateButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.upload.tooltip")); - //added for simulator integration - JButton simulateButton = new JButton(uiMessageBundle.getString("ardublock.ui.simulation")); + JMenuItem generateMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.upload")); + generateMenuItem.addActionListener(generateButtonListener); + generateMenuItem.setMnemonic(KeyEvent.VK_U); + generateMenuItem.registerKeyboardAction(generateButtonListener, ctrluKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + generateMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.upload.tooltip")); + + //Simulate + //********** + ImageIcon simulateButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/uploadSim1.png"))); + ImageIcon simulateButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/uploadSim2.png"))); + ImageIcon simulateButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/uploadSim3.png"))); + ButtonMouseListener simulateButtonMouseListener = new ButtonMouseListener(simulateButtonIcon, simulateButtonIconHovered, simulateButtonIconPressed); + ActionListener simulateButtonListener = new SimulateCodeButtonListener(this, this, context); + + JButton simulateButton = new JButton(simulateButtonIcon); + simulateButton.addMouseListener(simulateButtonMouseListener); + simulateButton.setMargin(new Insets(0, 0, 0, 0)); + simulateButton.setContentAreaFilled(false); + simulateButton.setBorderPainted(false); + //JButton simulateButton = new JButton(uiMessageBundle.getString("ardublock.ui.simulation")); simulateButton.addActionListener(simulateButtonListener); simulateButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.simulation.tooltip")); simulateButton.setVisible(false); //hide on startUp - JButton simulatorHelpButton = new JButton(uiMessageBundle.getString("ardublock.ui.simulatorHelp")); + JMenuItem simulateMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.simulation")); + simulateMenuItem.addActionListener(simulateButtonListener); + simulateMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.simulation.tooltip")); + simulateMenuItem.setVisible(false); //hide on startUp + + //SIMULATOR HELP + //************** + ImageIcon simulatorHelpButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/helpSim1.png"))); + ImageIcon simulatorHelpButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/helpSim2.png"))); + ImageIcon simulatorHelpButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/helpSim3.png"))); + ButtonMouseListener simulatorHelpButtonMouseListener = new ButtonMouseListener(simulatorHelpButtonIcon, simulatorHelpButtonIconHovered, simulatorHelpButtonIconPressed); + ActionListener simulatorHelpButtonListener = new SimulatorHelpButtonListener(this); + + JButton simulatorHelpButton = new JButton(simulatorHelpButtonIcon); + simulatorHelpButton.addMouseListener(simulatorHelpButtonMouseListener); + simulatorHelpButton.setMargin(new Insets(0, 0, 0, 0)); + simulatorHelpButton.setContentAreaFilled(false); + simulatorHelpButton.setBorderPainted(false); + //JButton simulatorHelpButton = new JButton(uiMessageBundle.getString("ardublock.ui.simulatorHelp")); simulatorHelpButton.addActionListener(simulatorHelpButtonListener); simulatorHelpButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.simulatorHelp.tooltip")); simulatorHelpButton.setVisible(false); //hide on startUp - JButton serialMonitorButton = new JButton(uiMessageBundle.getString("ardublock.ui.serialMonitor")); + JMenuItem simulatorHelpMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.simulatorHelp")); + simulatorHelpMenuItem.addActionListener(simulatorHelpButtonListener); + simulatorHelpMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.simulatorHelp.tooltip")); + simulatorHelpMenuItem.setVisible(false); //hide on startUp + + + //SERIAL MONITOR + //************** + ImageIcon serialMonitorButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/serialMonitor1.png"))); + ImageIcon serialMonitorButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/serialMonitor2.png"))); + ImageIcon serialMonitorButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/serialMonitor3.png"))); + ButtonMouseListener serialMonitorButtonMouseListener = new ButtonMouseListener(serialMonitorButtonIcon, serialMonitorButtonIconHovered, serialMonitorButtonIconPressed); + + KeyStroke ctrlmKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_M, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK); ActionListener serialButtonListener = new ActionListener () { public void actionPerformed(ActionEvent e) { context.getEditor().handleSerial(); } }; + + JButton serialMonitorButton = new JButton(serialMonitorButtonIcon); + serialMonitorButton.addMouseListener(serialMonitorButtonMouseListener); + serialMonitorButton.setMargin(new Insets(0, 0, 0, 0)); + serialMonitorButton.setContentAreaFilled(false); + serialMonitorButton.setBorderPainted(false); + //JButton serialMonitorButton = new JButton(uiMessageBundle.getString("ardublock.ui.serialMonitor")); serialMonitorButton.addActionListener(serialButtonListener); - KeyStroke ctrlmKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_M, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK); - serialMonitorButton.registerKeyboardAction(serialButtonListener, ctrlmKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + //serialMonitorButton.registerKeyboardAction(serialButtonListener, ctrlmKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); serialMonitorButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.serialMonitor.tooltip")); - JButton serialPlotterButton = new JButton(uiMessageBundle.getString("ardublock.ui.serialPlotter")); + JMenuItem serialMonitorMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.serialMonitor")); + serialMonitorMenuItem.addActionListener(serialButtonListener); + serialMonitorMenuItem.registerKeyboardAction(serialButtonListener, ctrlmKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + serialMonitorMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.serialMonitor.tooltip")); + + + //SERIAL PLOTTER + //************** + ImageIcon serialPlotterButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/serialPlotter1.png"))); + ImageIcon serialPlotterButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/serialPlotter2.png"))); + ImageIcon serialPlotterButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/serialPlotter3.png"))); + ButtonMouseListener serialPlotterButtonMouseListener = new ButtonMouseListener(serialPlotterButtonIcon, serialPlotterButtonIconHovered, serialPlotterButtonIconPressed); + + KeyStroke ctrlLKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_L, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK); ActionListener serialPlotterButtonListener = new ActionListener () { public void actionPerformed(ActionEvent e) { context.getEditor().handlePlotter(); } }; + + JButton serialPlotterButton = new JButton(serialPlotterButtonIcon); + serialPlotterButton.addMouseListener(serialPlotterButtonMouseListener); + serialPlotterButton.setMargin(new Insets(0, 0, 0, 0)); + serialPlotterButton.setContentAreaFilled(false); + serialPlotterButton.setBorderPainted(false); + //JButton serialPlotterButton = new JButton(uiMessageBundle.getString("ardublock.ui.serialPlotter")); serialPlotterButton.addActionListener(serialPlotterButtonListener); - KeyStroke ctrlLKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_L, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK); - serialPlotterButton.registerKeyboardAction(serialPlotterButtonListener, ctrlLKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + //serialPlotterButton.registerKeyboardAction(serialPlotterButtonListener, ctrlLKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); serialPlotterButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.serialPlotter.tooltip")); - topPanel.add(newButton); - topPanel.add(saveButton); - topPanel.add(saveAsButton); - topPanel.add(openButton); - topPanel.add(Box.createRigidArea(new Dimension(15, 0))); //std value 30,0 - topPanel.add(generateButton); - topPanel.add(simulateButton); - topPanel.add(Box.createRigidArea(new Dimension(15, 0))); //std value 30,0 - topPanel.add(simulatorHelpButton); - topPanel.add(serialMonitorButton); - topPanel.add(serialPlotterButton); - - //SAVE IMAGE BUTTON + JMenuItem serialPlotterMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.serialPlotter")); + serialPlotterMenuItem.addActionListener(serialPlotterButtonListener); + serialPlotterMenuItem.registerKeyboardAction(serialPlotterButtonListener, ctrlLKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + serialPlotterMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.serialPlotter.tooltip")); + + + //**************************** + //BOTTOM + //****************************** + + //SAVE IMAGE //***************************************** - JPanel bottomPanel = new JPanel(); - JButton saveImageButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveImage")); ActionListener saveImageButtonListener = new SaveImageButtonListener(this); - saveImageButton.addActionListener(saveImageButtonListener); KeyStroke ctrlpKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK); - saveImageButton.registerKeyboardAction(saveImageButtonListener, ctrlpKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + + JButton saveImageButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveImage")); + saveImageButton.addActionListener(saveImageButtonListener); + //saveImageButton.registerKeyboardAction(saveImageButtonListener, ctrlpKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); saveImageButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveImage.tooltip")); + + JMenuItem saveImageMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.saveImage")); + saveImageMenuItem.addActionListener(saveImageButtonListener); + saveImageMenuItem.registerKeyboardAction(saveImageButtonListener, ctrlpKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + saveImageMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveImage.tooltip")); //***************************************** //LMS SITE BUTTON @@ -250,14 +420,13 @@ public class OpenblocksFrame extends JFrame //BLOCK REFERENCE BUTTON //***************************************** - JButton blockreferenceButton = new JButton(uiMessageBundle.getString("ardublock.ui.blockReference")); ActionListener blockreferenceButtonListener = new ActionListener () { public void actionPerformed(ActionEvent e) { Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null; URL url; if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) { try { - url = new URL(uiMessageBundle.getString("ardublock.ui.blockReference.domain")); + url = new URL(uiMessageBundle.getString("ardublock.ui.blockreference.domain")); desktop.browse(url.toURI()); } catch (Exception e1) { //e1.printStackTrace(); @@ -265,13 +434,19 @@ public class OpenblocksFrame extends JFrame } } }; + + JButton blockreferenceButton = new JButton(uiMessageBundle.getString("ardublock.ui.blockreference")); blockreferenceButton.addActionListener(blockreferenceButtonListener); - blockreferenceButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.blockReference.tooltip")); + blockreferenceButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.blockreference.tooltip")); + + JMenuItem blockreferenceMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.blockreference")); + blockreferenceMenuItem.addActionListener(blockreferenceButtonListener); + blockreferenceMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.blockreference.tooltip")); //***************************************** // VERSION LABEL //***************************************** - JLabel versionLabel = new JLabel(uiMessageBundle.getString("ardublock.ui.version")); + //JLabel versionLabel = new JLabel(uiMessageBundle.getString("ardublock.ui.version")); //***************************************** //ADD ZOOM (currently only by CTRL +/- or mouse wheel @@ -283,20 +458,43 @@ public class OpenblocksFrame extends JFrame //TODO: TEST SAVE DEFAULT //Save new default program //************************* - JButton saveDefaultButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveDefaultProgram")); ActionListener saveDefaultButtonListener = new SaveDefaultButtonListener(this); - saveDefaultButton.addActionListener(saveDefaultButtonListener); 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")); + + /*JButton saveDefaultButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveDefaultProgram")); + saveDefaultButton.addActionListener(saveDefaultButtonListener); + //saveDefaultButton.registerKeyboardAction(saveDefaultButtonListener, ctrlaltsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + saveDefaultButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveDefaultProgram.tooltip"));*/ + + JMenuItem saveDefaultMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.saveDefaultProgram")); + saveDefaultMenuItem.addActionListener(saveDefaultButtonListener); + saveDefaultMenuItem.registerKeyboardAction(saveDefaultButtonListener, ctrlaltsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + saveDefaultMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveDefaultProgram.tooltip")); //SWITCH BLOCK MENU BASIC/PRO/SIM - //***************************************** + //***************************************** + ImageIcon modeBasicButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/basic1.png"))); + ImageIcon modeBasicButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/basic2.png"))); + ImageIcon modeBasicButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/basic3.png"))); + ImageIcon modeBasicButtonIconSelected = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/basic4.png"))); + + ImageIcon modeProButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/pro1.png"))); + ImageIcon modeProButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/pro2.png"))); + ImageIcon modeProButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/pro3.png"))); + ImageIcon modeProButtonIconSelected = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/pro4.png"))); + + ImageIcon modeSimButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/sim1.png"))); + ImageIcon modeSimButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/sim2.png"))); + ImageIcon modeSimButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/sim3.png"))); + ImageIcon modeSimButtonIconSelected = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/sim4.png"))); + + ButtonMouseListener modeBasicButtonMouseListener = new ButtonMouseListener(modeBasicButtonIcon, modeBasicButtonIconHovered, modeBasicButtonIconPressed,modeBasicButtonIconSelected); + ButtonMouseListener modeProButtonMouseListener = new ButtonMouseListener(modeProButtonIcon, modeProButtonIconHovered, modeProButtonIconPressed, modeProButtonIconSelected); + ButtonMouseListener modeSimButtonMouseListener = new ButtonMouseListener(modeSimButtonIcon, modeSimButtonIconHovered, modeSimButtonIconPressed, modeSimButtonIconSelected); + //Workspace: BASIC //***************** - modeBasicButton = new JButton(uiMessageBundle.getString("ardublock.ui.mode.standard")); - modeBasicButton.setFont(new Font("Sans", Font.BOLD, 12)); ActionListener modeBasicButtonListener = new ActionListener () { public void actionPerformed(ActionEvent e) { //get current zoomLevel @@ -313,15 +511,26 @@ public class OpenblocksFrame extends JFrame WorkspaceController workspaceController = context.getWorkspaceController(); workspaceController.loadProject(getArduBlockString(), null , "default"); generateButton.setVisible(true); + generateMenuItem.setVisible(true); + generateMenuItem.registerKeyboardAction(generateButtonListener, ctrluKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); simulateButton.setVisible(false); + simulateMenuItem.setVisible(false); + simulateMenuItem.unregisterKeyboardAction(ctrluKeyStroke); simulatorHelpButton.setVisible(false); serialMonitorButton.setVisible(true); serialPlotterButton.setVisible(true); + modeBasicButtonMouseListener.setSelected(true); + modeProButtonMouseListener.setSelected(false); + modeSimButtonMouseListener.setSelected(false); + modeBasicButton.setIcon(modeBasicButtonIconSelected); + modeProButton.setIcon(modeProButtonIcon); + modeSimButton.setIcon(modeSimButtonIcon); + //modeBasicButton.setFont(new Font("Sans", Font.BOLD, 12)); + //modeProButton.setFont(new Font("Sans", Font.PLAIN, 12)); + //modeSimButton.setFont(new Font("Sans", Font.PLAIN, 12)); + appPrefix = uiMessageBundle.getString("ardublock.ui.appprefix.standard"); setTitle(makeFrameTitle()); - modeBasicButton.setFont(new Font("Sans", Font.BOLD, 12)); - modeProButton.setFont(new Font("Sans", Font.PLAIN, 12)); - modeSimButton.setFont(new Font("Sans", Font.PLAIN, 12)); //zoomSlider.reset(); //zoomSlider.setValue(currentWorkspaceZoom); workspace.setWorkspaceZoom(currentWorkspaceZoom); @@ -331,13 +540,27 @@ public class OpenblocksFrame extends JFrame } } }; + + modeBasicButton = new JButton(modeBasicButtonIconSelected); + modeBasicButton.setMargin(new Insets(0, 0, 0, 0)); + modeBasicButton.setContentAreaFilled(false); + modeBasicButton.setBorderPainted(false); + modeBasicButton.addMouseListener(modeBasicButtonMouseListener); + modeBasicButtonMouseListener.setSelected(true); + //modeBasicButton = new JButton(uiMessageBundle.getString("ardublock.ui.mode.standard")); + //modeBasicButton.setFont(new Font("Sans", Font.BOLD, 12)); + //modeBasicButton.setForeground(Color.RED); modeBasicButton.addActionListener(modeBasicButtonListener); modeBasicButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.standard.tooltip")); + + JMenuItem modeBasicMenuItem = new JMenuItem("Blockset "+uiMessageBundle.getString("ardublock.ui.mode.standard")); + modeBasicMenuItem.addActionListener(modeBasicButtonListener); + modeBasicMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.standard.tooltip")); + //Workspace: PRO //***************** - modeProButton = new JButton(uiMessageBundle.getString("ardublock.ui.mode.expert")); - modeProButton.setFont(new Font("Sans", Font.PLAIN, 12)); + //***************** ActionListener modeProButtonListener = new ActionListener () { public void actionPerformed(ActionEvent e) { @@ -353,13 +576,23 @@ public class OpenblocksFrame extends JFrame WorkspaceController workspaceController = context.getWorkspaceController(); workspaceController.loadProject(getArduBlockString(), null , "custom"); generateButton.setVisible(true); + generateMenuItem.setVisible(true); + generateMenuItem.registerKeyboardAction(generateButtonListener, ctrluKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); simulateButton.setVisible(false); + simulateMenuItem.setVisible(false); + simulateMenuItem.unregisterKeyboardAction(ctrluKeyStroke); simulatorHelpButton.setVisible(false); serialMonitorButton.setVisible(true); serialPlotterButton.setVisible(true); - modeBasicButton.setFont(new Font("Sans", Font.PLAIN, 12)); - modeProButton.setFont(new Font("Sans", Font.BOLD, 12)); - modeSimButton.setFont(new Font("Sans", Font.PLAIN, 12)); + modeBasicButtonMouseListener.setSelected(false); + modeProButtonMouseListener.setSelected(true); + modeSimButtonMouseListener.setSelected(false); + modeBasicButton.setIcon(modeBasicButtonIcon); + modeProButton.setIcon(modeProButtonIconSelected); + modeSimButton.setIcon(modeSimButtonIcon); + //modeBasicButton.setFont(new Font("Sans", Font.PLAIN, 12)); + //modeProButton.setFont(new Font("Sans", Font.BOLD, 12)); + //modeSimButton.setFont(new Font("Sans", Font.PLAIN, 12)); appPrefix = uiMessageBundle.getString("ardublock.ui.appprefix.pro"); setTitle(makeFrameTitle()); @@ -373,13 +606,23 @@ public class OpenblocksFrame extends JFrame } } }; + + modeProButton = new JButton(modeProButtonIcon); + modeProButton.setMargin(new Insets(0, 0, 0, 0)); + modeProButton.setContentAreaFilled(false); + modeProButton.setBorderPainted(false); + modeProButton.addMouseListener(modeProButtonMouseListener); + //modeProButton = new JButton(uiMessageBundle.getString("ardublock.ui.mode.expert")); + //modeProButton.setFont(new Font("Sans", Font.PLAIN, 12)); modeProButton.addActionListener(modeProButtonListener); modeProButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.expert.tooltip")); + JMenuItem modeProMenuItem = new JMenuItem("Blockset "+uiMessageBundle.getString("ardublock.ui.mode.expert")); + modeProMenuItem.addActionListener(modeProButtonListener); + modeProMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.expert.tooltip")); + //Workspace: SIM //***************** - modeSimButton = new JButton(uiMessageBundle.getString("ardublock.ui.mode.sim")); - modeSimButton.setFont(new Font("Sans", Font.PLAIN, 12)); ActionListener modeSimButtonListener = new ActionListener () { public void actionPerformed(ActionEvent e) { @@ -397,13 +640,23 @@ public class OpenblocksFrame extends JFrame //TODO check if reduced sim-blockset is necessary workspaceController.loadProject(getArduBlockString(), null , "page"); generateButton.setVisible(false); + generateMenuItem.setVisible(false); + generateMenuItem.unregisterKeyboardAction(ctrluKeyStroke); simulateButton.setVisible(true); + simulateMenuItem.setVisible(true); + simulateMenuItem.registerKeyboardAction(simulateButtonListener, ctrluKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); simulatorHelpButton.setVisible(true); serialMonitorButton.setVisible(false); serialPlotterButton.setVisible(false); - modeBasicButton.setFont(new Font("Sans", Font.PLAIN, 12)); - modeProButton.setFont(new Font("Sans", Font.PLAIN, 12)); - modeSimButton.setFont(new Font("Sans", Font.BOLD, 12)); + modeBasicButtonMouseListener.setSelected(false); + modeProButtonMouseListener.setSelected(false); + modeSimButtonMouseListener.setSelected(true); + modeBasicButton.setIcon(modeBasicButtonIcon); + modeProButton.setIcon(modeProButtonIcon); + modeSimButton.setIcon(modeSimButtonIconSelected); + //modeBasicButton.setFont(new Font("Sans", Font.PLAIN, 12)); + //modeProButton.setFont(new Font("Sans", Font.PLAIN, 12)); + //modeSimButton.setFont(new Font("Sans", Font.BOLD, 12)); appPrefix = uiMessageBundle.getString("ardublock.ui.appprefix.sim"); setTitle(makeFrameTitle()); @@ -417,32 +670,59 @@ public class OpenblocksFrame extends JFrame } } }; + + modeSimButton = new JButton(modeSimButtonIcon); + modeSimButton.setMargin(new Insets(0, 0, 0, 0)); + modeSimButton.setContentAreaFilled(false); + modeSimButton.setBorderPainted(false); + modeSimButton.addMouseListener(modeSimButtonMouseListener); + //modeSimButton = new JButton(uiMessageBundle.getString("ardublock.ui.mode.sim")); + //modeSimButton.setFont(new Font("Sans", Font.PLAIN, 12)); modeSimButton.addActionListener(modeSimButtonListener); modeSimButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.sim.tooltip")); + + JMenuItem modeSimMenuItem = new JMenuItem("Blockset "+uiMessageBundle.getString("ardublock.ui.mode.sim")); + modeSimMenuItem.addActionListener(modeSimButtonListener); + modeSimMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.sim.tooltip")); //***************************************** - //COPY/PASTE BUTTONS + + //COPY PROGRAM //***************************************** - JButton copyButton = new JButton(uiMessageBundle.getString("ardublock.ui.copy")); + KeyStroke ctrlcKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK); ActionListener copyButtonListener = new CopyButtonListener(context); + + /*JButton copyButton = new JButton(uiMessageBundle.getString("ardublock.ui.copy")); copyButton.addActionListener(copyButtonListener); - KeyStroke ctrlcKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK); - copyButton.registerKeyboardAction(copyButtonListener, ctrlcKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + //copyButton.registerKeyboardAction(copyButtonListener, ctrlcKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); copyButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.copy.tooltip")); + */ + JMenuItem copyButtonMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.copy")); + copyButtonMenuItem.registerKeyboardAction(serialButtonListener, ctrlcKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + copyButtonMenuItem.addActionListener(copyButtonListener); + copyButtonMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.copy.tooltip")); - JButton pasteButton = new JButton(uiMessageBundle.getString("ardublock.ui.paste")); + + //PASTE PROGRAM + //***************************************** + KeyStroke ctrlvKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK); ActionListener pasteButtonListener = new PasteButtonListener(this, context, uiMessageBundle, workspaceModeState); + + /*JButton pasteButton = new JButton(uiMessageBundle.getString("ardublock.ui.paste")); pasteButton.addActionListener(pasteButtonListener); - 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")); - //***************************************** + //pasteButton.registerKeyboardAction(pasteButtonListener, ctrlvKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + pasteButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.paste.tooltip"));*/ - //WEBSITE BUTTON - //***************************************** - JButton websiteButton = new JButton(uiMessageBundle.getString("ardublock.ui.website")); - websiteButton.addActionListener(new ActionListener () { + JMenuItem pasteButtonMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.paste")); + pasteButtonMenuItem.registerKeyboardAction(pasteButtonListener, ctrlvKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW); + pasteButtonMenuItem.addActionListener(pasteButtonListener); + pasteButtonMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.paste.tooltip")); + + + //WEBSITE + //***************************************** + ActionListener websiteButtonListener = new ActionListener () { public void actionPerformed(ActionEvent e) { Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null; URL url; @@ -455,33 +735,131 @@ public class OpenblocksFrame extends JFrame } } } - }); - websiteButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.website.tooltip")); + }; + + //JButton websiteButton = new JButton(uiMessageBundle.getString("ardublock.ui.website")); + //websiteButton.addActionListener(websiteButtonListener); + //websiteButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.website.tooltip")); + + JMenuItem websiteButtonMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.website")); + websiteButtonMenuItem.addActionListener(websiteButtonListener); + websiteButtonMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.website.tooltip")); //***************************************** - //bottomPanel.add(blockreferenceButton); + //VERSION + //********* + ActionListener repositoryButtonListener = new ActionListener () { + public void actionPerformed(ActionEvent e) { + Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null; + URL url; + if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) { + try { + url = new URL(uiMessageBundle.getString("ardublock.ui.website.repository")); + desktop.browse(url.toURI()); + } catch (Exception e1) { + //e1.printStackTrace(); + } + } + } + }; + + + + JMenuItem versionMenuItem = new JMenuItem("ArduBlock " + uiMessageBundle.getString("ardublock.ui.version")); + versionMenuItem.addActionListener(repositoryButtonListener); + versionMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.repository.tooltip")); + //************************************ + //PANELS + //************************************* + //PANELS + JPanel topPanel = new JPanel(new BorderLayout()); //topPanel.setLayout(new FlowLayout()); + JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + JPanel menuePanel = new JPanel(new BorderLayout());//new FlowLayout(FlowLayout.LEFT)); + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + + bottomPanel.setBackground(new Color(40, 76, 102)); + buttonPanel.setBackground(new Color(40, 76, 102)); + + //MENUS + JMenuBar menuBar = new JMenuBar(); + JMenu fileMenu = new JMenu(uiMessageBundle.getString("ardublock.ui.menu.file")); + JMenu programMenu = new JMenu(uiMessageBundle.getString("ardublock.ui.menu.program")); + JMenu toolsMenu = new JMenu(uiMessageBundle.getString("ardublock.ui.menu.tools")); + JMenu blocksMenu = new JMenu(uiMessageBundle.getString("ardublock.ui.menu.blocks")); + JMenu aboutMenu = new JMenu(uiMessageBundle.getString("ardublock.ui.menu.about")); + + menuBar.add(fileMenu); + menuBar.add(programMenu); + menuBar.add(toolsMenu); + menuBar.add(blocksMenu); + menuBar.add(aboutMenu); + + fileMenu.add(newMenuItem); + fileMenu.add(openMenuItem); + fileMenu.addSeparator(); + fileMenu.add(saveMenuItem); + fileMenu.add(saveAsMenuItem); + + programMenu.add(generateMenuItem); + programMenu.add(simulateMenuItem); + programMenu.addSeparator(); + programMenu.add(copyButtonMenuItem); + programMenu.add(pasteButtonMenuItem); + programMenu.addSeparator(); + programMenu.add(saveImageMenuItem); + programMenu.add(saveDefaultMenuItem); + + toolsMenu.add(serialMonitorMenuItem); + toolsMenu.add(serialPlotterMenuItem); + + blocksMenu.add(modeBasicMenuItem); + blocksMenu.add(modeProMenuItem); + blocksMenu.add(modeSimMenuItem); + blocksMenu.addSeparator(); + blocksMenu.add(blockreferenceMenuItem); + + aboutMenu.add(websiteButtonMenuItem); + aboutMenu.add(simulatorHelpMenuItem); + aboutMenu.add(versionMenuItem); + + menuePanel.add(menuBar, BorderLayout.CENTER ); + topPanel.add(menuePanel, BorderLayout.NORTH); //TEST + topPanel.add(buttonPanel, BorderLayout.CENTER); //TEST + + buttonPanel.add(generateButton); + buttonPanel.add(simulateButton); + buttonPanel.add(Box.createRigidArea(new Dimension(30, 0))); //std value 30,0 + buttonPanel.add(newButton); + buttonPanel.add(openButton); + buttonPanel.add(saveButton); + //topPanel.add(saveAsButton); + buttonPanel.add(Box.createRigidArea(new Dimension(15, 0))); //std value 30,0 + buttonPanel.add(simulatorHelpButton); + buttonPanel.add(serialMonitorButton); + buttonPanel.add(serialPlotterButton); + bottomPanel.add(modeBasicButton); bottomPanel.add(modeProButton); bottomPanel.add(modeSimButton); + bottomPanel.add(Box.createRigidArea(new Dimension(30, 0))); //std value 30,0 + bottomPanel.add(context.getWorkspaceController().getSearchBar(uiMessageBundle.getString("ardublock.ui.search"), uiMessageBundle.getString("ardublock.ui.search.tooltip"))); - bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0 - bottomPanel.add(context.getWorkspaceController().getSearchBar()); - - bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0 + //bottomPanel.add(blockreferenceButton); + //bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0 //bottomPanel.add(zoomSlider); //bottomPanel.add(zoomInButton); //bottomPanel.add(zoomResetButton); //bottomPanel.add(zoomOutButton); - bottomPanel.add(Box.createRigidArea(new Dimension(5, 0)));//std value 30,0 - bottomPanel.add(copyButton); - bottomPanel.add(pasteButton); - bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0 - bottomPanel.add(saveImageButton); - bottomPanel.add(saveDefaultButton); - bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0 - bottomPanel.add(versionLabel); - bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0 - bottomPanel.add(websiteButton); + //bottomPanel.add(Box.createRigidArea(new Dimension(5, 0)));//std value 30,0 + //bottomPanel.add(copyButton); + //bottomPanel.add(pasteButton); + //bottomPanel.add(Box.createRigidArea(new Dimension(30, 0))); //std value 30,0 + //bottomPanel.add(saveImageButton); + //bottomPanel.add(saveDefaultButton); + //bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0 + //bottomPanel.add(versionLabel); + //bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0 + //bottomPanel.add(websiteButton); //bottomPanel.add(lmssiteButton); diff --git a/src/main/java/com/ardublock/ui/listener/ButtonMouseListener.java b/src/main/java/com/ardublock/ui/listener/ButtonMouseListener.java new file mode 100644 index 0000000000000000000000000000000000000000..313ac1fb3882ddfc7712c5ac038c9fb9b56404a6 --- /dev/null +++ b/src/main/java/com/ardublock/ui/listener/ButtonMouseListener.java @@ -0,0 +1,60 @@ +package com.ardublock.ui.listener; + +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.ImageIcon; +import javax.swing.JButton; + + +public class ButtonMouseListener extends MouseAdapter { + + ImageIcon iconPressed; + ImageIcon iconHover; + ImageIcon iconButton; + ImageIcon iconSelected; + + boolean selected = false; + + public ButtonMouseListener(ImageIcon iconButton, ImageIcon iconHover, ImageIcon iconPressed, ImageIcon iconSelected) { + this.iconButton = iconButton; + this.iconHover = iconHover; + this.iconPressed = iconPressed; + this.iconSelected = iconSelected; + } + + public ButtonMouseListener(ImageIcon iconButton, ImageIcon iconHover, ImageIcon iconPressed) { + this(iconButton, iconHover, iconPressed, iconButton); + } + + @Override + public void mouseEntered(MouseEvent e) { + JButton button = (JButton)e.getSource(); + button.setIcon(iconHover); + } + + @Override + public void mouseExited(MouseEvent e) { + JButton button = (JButton)e.getSource(); + if(selected) { + button.setIcon(iconSelected); + }else { + button.setIcon(iconButton); + } + } + + @Override + public void mousePressed(MouseEvent e) { + JButton button = (JButton)e.getSource(); + button.setIcon(iconPressed); + super.mousePressed(e); + } + + public void setSelected(boolean selected) { + this.selected = selected; + } + +} + + + diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties index 212bcea6c71cbb1936b255c78f7816b044ec18c7..c304c6b4702cf81b62cb0d360ecd0ccdff99b7ca 100644 --- a/src/main/resources/com/ardublock/block/ardublock.properties +++ b/src/main/resources/com/ardublock/block/ardublock.properties @@ -9,6 +9,12 @@ ardublock.file.suffix=Ardublock Program File(*.abp) #UI #**************************** +ardublock.ui.menu.file=File +ardublock.ui.menu.program=Program +ardublock.ui.menu.tools=Tools +ardublock.ui.menu.blocks=Blocks +ardublock.ui.menu.about=About + ardublock.ui.new=New ardublock.ui.new.tooltip=new program ardublock.ui.save=Save @@ -21,7 +27,6 @@ ardublock.ui.upload=Upload 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 ardublock.ui.add_comment=Add Comment ardublock.ui.delete_comment=Delete Comment ardublock.ui.organize_blocks=Organize all blocks @@ -31,16 +36,21 @@ ardublock.ui.website.domain=https://letsgoing.org ardublock.ui.website.tooltip=goto letsgoING project-page ardublock.ui.lmssite=Online LMS ardublock.ui.lmssite.domain=moodle.letsgoing.org -ardublock.ui.lmssite.tooltip=goto letsgoING online-LMS -ardublock.ui.blockReference=Block Reference -ardublock.ui.blockReference.domain=http://blockreference.letsgoing.org -ardublock.ui.blockReference.tooltip=open block reference +ardublock.ui.lmssite.tooltip=go to letsgoING online-LMS +ardublock.ui.reference=open block reference +ardublock.ui.blockreference=open block reference +ardublock.ui.blockreference.domain=https://blockreferenz.letsgoing.org/ +ardublock.ui.blockreference.tooltip=open block reference +ardublock.ui.website.repository=https://gitlab.reutlingen-university.de/letsgoing/ardublock +ardublock.ui.website.repository.tooltip=go to ArduBlock Repository ardublock.ui.mode.expert=Pro ardublock.ui.mode.expert.tooltip=Mehr Blöcke und komplexere Funktionen fuer Fortgeschrittene ardublock.ui.mode.standard=Basic ardublock.ui.mode.standard.tooltip=Die wichtigsten Blöcke für den Einstieg ardublock.ui.mode.sim=Sim ardublock.ui.mode.sim.tooltip=ArduBlock Basic mit Simulation "letsgoING-Grundlagen-Hardware" +ardublock.ui.search=search block +ardublock.ui.search.tooltip=Search for blocks in the drawers and workspace ardublock.ui.serialMonitor=Serial Monitor ardublock.ui.serialMonitor.tooltip=open Serial Monitor ardublock.ui.serialPlotter=Serial Plotter @@ -72,7 +82,7 @@ ardublock.ui.simulatorHelp.text= ardublock.ui.version=v2.2 beta3 nBF -ardublock.ui.appprefix.standard= +ardublock.ui.appprefix.standard=Basic ardublock.ui.appprefix.pro=Pro ardublock.ui.appprefix.sim=Simulator diff --git a/src/main/resources/com/ardublock/block/ardublock_de.properties b/src/main/resources/com/ardublock/block/ardublock_de.properties index e35de1cd8f63a60f437c9e8bd5e04fca84ad3b14..3278b5c70ad0952ff3a45476b150f8b02e486017 100644 --- a/src/main/resources/com/ardublock/block/ardublock_de.properties +++ b/src/main/resources/com/ardublock/block/ardublock_de.properties @@ -9,6 +9,12 @@ ardublock.file.suffix=Ardublock Programmdatei (*.abp) #UI #**************************** +ardublock.ui.menu.file=Datei +ardublock.ui.menu.program=Programm +ardublock.ui.menu.tools=Werkzeuge +ardublock.ui.menu.blocks=Blöcke +ardublock.ui.menu.about=Über + ardublock.ui.new=Neu ardublock.ui.new.tooltip=Neues Programm erstellen ardublock.ui.save=Speichern @@ -21,26 +27,30 @@ ardublock.ui.upload=Hochladen auf den Arduino 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 ardublock.ui.add_comment=Kommentar hinzufügen ardublock.ui.delete_comment=Kommentar löschen ardublock.ui.organize_blocks=Alle Blöcke neu anordnen ardublock.ui.create_refer=Verweis erstellen -ardublock.ui.website=letsgoING +ardublock.ui.website=letsgoING (Web) ardublock.ui.website.domain=https://letsgoing.org ardublock.ui.website.tooltip=öffnet die letsgoING-Homepage -ardublock.ui.lmssite=Online Lernen +ardublock.ui.lmssite=Online Lernen (Web) ardublock.ui.lmssite.domain=moodle.letsgoing.org ardublock.ui.lmssite.tooltip=öffnet die letsgoING-Lernseiten -ardublock.ui.blockReference=Block Referenz -ardublock.ui.blockReference.domain=http://blockreference.letsgoing.org -ardublock.ui.blockReference.tooltip=öffnet die Blockreferenz +ardublock.ui.reference=Block-Referenz öffnen +ardublock.ui.blockreference=Übersicht Block-Referenz öffnen (Web) +ardublock.ui.blockreference.domain=https://blockreferenz.letsgoing.org/ +ardublock.ui.blockreference.tooltip=öffnet die Blockreferenz +ardublock.ui.repository=https://gitlab.reutlingen-university.de/letsgoing/ardublock +ardublock.ui.repository.tooltip=gehe zur ArduBlock Repository ardublock.ui.mode.expert=Pro ardublock.ui.mode.expert.tooltip=Mehr Blöcke und komplexere Funktionen fuer Fortgeschrittene ardublock.ui.mode.standard=Basic ardublock.ui.mode.standard.tooltip=Die wichtigsten Blöcke für den Einstieg ardublock.ui.mode.sim=Sim ardublock.ui.mode.sim.tooltip=ArduBlock Basic mit Simulation "letsgoING-Grundlagen-Hardware" +ardublock.ui.search=suche Blöcke +ardublock.ui.search.tooltip=Suche im Arbeitsfenster und den Menüs nach Blöcken #ardublock.ui.modeButton.mode.tooltip=umschalten zwischen Grundlagen- und Projektblöcken ardublock.ui.serialMonitor=Serieller Monitor @@ -51,7 +61,7 @@ ardublock.ui.undo=Undo ardublock.ui.undo.tooltip=Rückgängig ardublock.ui.redo=Redo ardublock.ui.redo.tooltip=Wiederherstellen -ardublock.ui.saveImage=Bild speichern +ardublock.ui.saveImage=Als Bild speichern 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 @@ -61,12 +71,12 @@ ardublock.ui.zoomOut=- ardublock.ui.zoomOut.tooltip=verkleinere Programm ardublock.ui.zoomReset=0 ardublock.ui.zoomReset.tooltip=zurücksetzen -ardublock.ui.copy=kopieren +ardublock.ui.copy=Programm kopieren ardublock.ui.copy.tooltip=kopiere gesamtes Programm in Zwischenablage -ardublock.ui.paste=einfügen +ardublock.ui.paste=Programm einfügen 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.simulation.tooltip=Starte den Simulator und lade das Programm hoch ardublock.ui.simulatorHelp=Hilfe ardublock.ui.simulatorHelp.tooltip=Infos zum letsgoING-Simulator ardublock.ui.simulatorHelp.title=Infos zum letsgoING-Simulator @@ -74,7 +84,7 @@ ardublock.ui.simulatorHelp.text=TASTER\n**********************\nlinke Maustaste ardublock.ui.version=v2.2 beta3 nBF -ardublock.ui.appprefix.standard= +ardublock.ui.appprefix.standard=Basic ardublock.ui.appprefix.pro=Pro ardublock.ui.appprefix.sim=Simulator diff --git a/src/main/resources/com/ardublock/block/basic1.png b/src/main/resources/com/ardublock/block/basic1.png new file mode 100644 index 0000000000000000000000000000000000000000..1a12eef429dcc5e5dfd4f835ad96ef45f42d5d43 Binary files /dev/null and b/src/main/resources/com/ardublock/block/basic1.png differ diff --git a/src/main/resources/com/ardublock/block/basic2.png b/src/main/resources/com/ardublock/block/basic2.png new file mode 100644 index 0000000000000000000000000000000000000000..be2bd645209bd5657a0aae6c523a6a445c3fb445 Binary files /dev/null and b/src/main/resources/com/ardublock/block/basic2.png differ diff --git a/src/main/resources/com/ardublock/block/basic3.png b/src/main/resources/com/ardublock/block/basic3.png new file mode 100644 index 0000000000000000000000000000000000000000..7127953f92db2e735c72070b7554d4dab16dd5ee Binary files /dev/null and b/src/main/resources/com/ardublock/block/basic3.png differ diff --git a/src/main/resources/com/ardublock/block/basic4.png b/src/main/resources/com/ardublock/block/basic4.png new file mode 100644 index 0000000000000000000000000000000000000000..2b8463fb1dbb95ec76e812b4d7ff6923956f542e Binary files /dev/null and b/src/main/resources/com/ardublock/block/basic4.png differ diff --git a/src/main/resources/com/ardublock/block/button1.png b/src/main/resources/com/ardublock/block/button1.png new file mode 100644 index 0000000000000000000000000000000000000000..72ead779b8c5362fadcbcecf66731aab0342d2f4 Binary files /dev/null and b/src/main/resources/com/ardublock/block/button1.png differ diff --git a/src/main/resources/com/ardublock/block/button2.png b/src/main/resources/com/ardublock/block/button2.png new file mode 100644 index 0000000000000000000000000000000000000000..52c4b01872ee06901f43bafd81eca75d763e0826 Binary files /dev/null and b/src/main/resources/com/ardublock/block/button2.png differ diff --git a/src/main/resources/com/ardublock/block/button3.png b/src/main/resources/com/ardublock/block/button3.png new file mode 100644 index 0000000000000000000000000000000000000000..bf0f31dc1e3d4a268427bd0c7ea4ea672aec4c24 Binary files /dev/null and b/src/main/resources/com/ardublock/block/button3.png differ diff --git a/src/main/resources/com/ardublock/block/help1.png b/src/main/resources/com/ardublock/block/help1.png new file mode 100644 index 0000000000000000000000000000000000000000..5080c8c4c47a97650ac94413b9c830de5360d5fa Binary files /dev/null and b/src/main/resources/com/ardublock/block/help1.png differ diff --git a/src/main/resources/com/ardublock/block/help2.png b/src/main/resources/com/ardublock/block/help2.png new file mode 100644 index 0000000000000000000000000000000000000000..ade6d6e97ea7296a870e1726d0e3aba786998737 Binary files /dev/null and b/src/main/resources/com/ardublock/block/help2.png differ diff --git a/src/main/resources/com/ardublock/block/help3.png b/src/main/resources/com/ardublock/block/help3.png new file mode 100644 index 0000000000000000000000000000000000000000..278cfe04c8383f49665237c7933d41e2ad39ed60 Binary files /dev/null and b/src/main/resources/com/ardublock/block/help3.png differ diff --git a/src/main/resources/com/ardublock/block/helpSim1.png b/src/main/resources/com/ardublock/block/helpSim1.png new file mode 100644 index 0000000000000000000000000000000000000000..5080c8c4c47a97650ac94413b9c830de5360d5fa Binary files /dev/null and b/src/main/resources/com/ardublock/block/helpSim1.png differ diff --git a/src/main/resources/com/ardublock/block/helpSim2.png b/src/main/resources/com/ardublock/block/helpSim2.png new file mode 100644 index 0000000000000000000000000000000000000000..ade6d6e97ea7296a870e1726d0e3aba786998737 Binary files /dev/null and b/src/main/resources/com/ardublock/block/helpSim2.png differ diff --git a/src/main/resources/com/ardublock/block/helpSim3.png b/src/main/resources/com/ardublock/block/helpSim3.png new file mode 100644 index 0000000000000000000000000000000000000000..278cfe04c8383f49665237c7933d41e2ad39ed60 Binary files /dev/null and b/src/main/resources/com/ardublock/block/helpSim3.png differ diff --git a/src/main/resources/com/ardublock/block/new1.png b/src/main/resources/com/ardublock/block/new1.png new file mode 100644 index 0000000000000000000000000000000000000000..cef4e6e8db912ca0443247b7e1c0e0e7ba6f7227 Binary files /dev/null and b/src/main/resources/com/ardublock/block/new1.png differ diff --git a/src/main/resources/com/ardublock/block/new2.png b/src/main/resources/com/ardublock/block/new2.png new file mode 100644 index 0000000000000000000000000000000000000000..6016caa608fca456fecee1d7d33f13fcd9826747 Binary files /dev/null and b/src/main/resources/com/ardublock/block/new2.png differ diff --git a/src/main/resources/com/ardublock/block/new3.png b/src/main/resources/com/ardublock/block/new3.png new file mode 100644 index 0000000000000000000000000000000000000000..64bbe05d58ecc824c4aeeb957090d3ac45d0805c Binary files /dev/null and b/src/main/resources/com/ardublock/block/new3.png differ diff --git a/src/main/resources/com/ardublock/block/open1.png b/src/main/resources/com/ardublock/block/open1.png new file mode 100644 index 0000000000000000000000000000000000000000..43f85f57414dd9c0caef96b98575edeb0374214d Binary files /dev/null and b/src/main/resources/com/ardublock/block/open1.png differ diff --git a/src/main/resources/com/ardublock/block/open2.png b/src/main/resources/com/ardublock/block/open2.png new file mode 100644 index 0000000000000000000000000000000000000000..399c91a35f00182cd66a77238b2c7b961b3bbb1b Binary files /dev/null and b/src/main/resources/com/ardublock/block/open2.png differ diff --git a/src/main/resources/com/ardublock/block/open3.png b/src/main/resources/com/ardublock/block/open3.png new file mode 100644 index 0000000000000000000000000000000000000000..725a8ccaefeafe44a0eca8f31ca70fc79dca3309 Binary files /dev/null and b/src/main/resources/com/ardublock/block/open3.png differ diff --git a/src/main/resources/com/ardublock/block/pro1.png b/src/main/resources/com/ardublock/block/pro1.png new file mode 100644 index 0000000000000000000000000000000000000000..9218d808a9bbf5cc0c983b96ec29a97ce496c852 Binary files /dev/null and b/src/main/resources/com/ardublock/block/pro1.png differ diff --git a/src/main/resources/com/ardublock/block/pro2.png b/src/main/resources/com/ardublock/block/pro2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed80bce4d9afc2aabc5cfd6aaef77c450742c1a Binary files /dev/null and b/src/main/resources/com/ardublock/block/pro2.png differ diff --git a/src/main/resources/com/ardublock/block/pro3.png b/src/main/resources/com/ardublock/block/pro3.png new file mode 100644 index 0000000000000000000000000000000000000000..fa7164946a837fc3404bd4d3c30869d208b2ead0 Binary files /dev/null and b/src/main/resources/com/ardublock/block/pro3.png differ diff --git a/src/main/resources/com/ardublock/block/pro4.png b/src/main/resources/com/ardublock/block/pro4.png new file mode 100644 index 0000000000000000000000000000000000000000..3f598d45274f271c6657746a0a275eaa02522a6d Binary files /dev/null and b/src/main/resources/com/ardublock/block/pro4.png differ diff --git a/src/main/resources/com/ardublock/block/save1.png b/src/main/resources/com/ardublock/block/save1.png new file mode 100644 index 0000000000000000000000000000000000000000..7fef52e879d9c405b31037a7ede2ca472ff60d6a Binary files /dev/null and b/src/main/resources/com/ardublock/block/save1.png differ diff --git a/src/main/resources/com/ardublock/block/save2.png b/src/main/resources/com/ardublock/block/save2.png new file mode 100644 index 0000000000000000000000000000000000000000..82b4a232db173e9ae4c9d9b819f9f7b140fd1be7 Binary files /dev/null and b/src/main/resources/com/ardublock/block/save2.png differ diff --git a/src/main/resources/com/ardublock/block/save3.png b/src/main/resources/com/ardublock/block/save3.png new file mode 100644 index 0000000000000000000000000000000000000000..87a6fc4946e9c65cb3f24bf0fe069b114d3fd63b Binary files /dev/null and b/src/main/resources/com/ardublock/block/save3.png differ diff --git a/src/main/resources/com/ardublock/block/serialMonitor1.png b/src/main/resources/com/ardublock/block/serialMonitor1.png new file mode 100644 index 0000000000000000000000000000000000000000..584311efc36325fdab70d921595049a51d80181a Binary files /dev/null and b/src/main/resources/com/ardublock/block/serialMonitor1.png differ diff --git a/src/main/resources/com/ardublock/block/serialMonitor2.png b/src/main/resources/com/ardublock/block/serialMonitor2.png new file mode 100644 index 0000000000000000000000000000000000000000..123f85460a81aa83c45693766c52e1013c50402d Binary files /dev/null and b/src/main/resources/com/ardublock/block/serialMonitor2.png differ diff --git a/src/main/resources/com/ardublock/block/serialMonitor3.png b/src/main/resources/com/ardublock/block/serialMonitor3.png new file mode 100644 index 0000000000000000000000000000000000000000..ad21602b5dfba5315abed9f8605c32982e04b71d Binary files /dev/null and b/src/main/resources/com/ardublock/block/serialMonitor3.png differ diff --git a/src/main/resources/com/ardublock/block/serialPlotter1.png b/src/main/resources/com/ardublock/block/serialPlotter1.png new file mode 100644 index 0000000000000000000000000000000000000000..87ede5be94dd5666f95121a1d59e1d5546d50134 Binary files /dev/null and b/src/main/resources/com/ardublock/block/serialPlotter1.png differ diff --git a/src/main/resources/com/ardublock/block/serialPlotter2.png b/src/main/resources/com/ardublock/block/serialPlotter2.png new file mode 100644 index 0000000000000000000000000000000000000000..a151c3e9f1e67f3c0dc86498928d7af483c814c0 Binary files /dev/null and b/src/main/resources/com/ardublock/block/serialPlotter2.png differ diff --git a/src/main/resources/com/ardublock/block/serialPlotter3.png b/src/main/resources/com/ardublock/block/serialPlotter3.png new file mode 100644 index 0000000000000000000000000000000000000000..d6f6c381126ae2cfdb3823a93f3469fe68465c01 Binary files /dev/null and b/src/main/resources/com/ardublock/block/serialPlotter3.png differ diff --git a/src/main/resources/com/ardublock/block/sim1.png b/src/main/resources/com/ardublock/block/sim1.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac8c5a3c6c245ee2cf0c54f4f36425215769e63 Binary files /dev/null and b/src/main/resources/com/ardublock/block/sim1.png differ diff --git a/src/main/resources/com/ardublock/block/sim2.png b/src/main/resources/com/ardublock/block/sim2.png new file mode 100644 index 0000000000000000000000000000000000000000..47bf280ef4f406058a144099ca00c0568470cd1c Binary files /dev/null and b/src/main/resources/com/ardublock/block/sim2.png differ diff --git a/src/main/resources/com/ardublock/block/sim3.png b/src/main/resources/com/ardublock/block/sim3.png new file mode 100644 index 0000000000000000000000000000000000000000..be11bf21bc5a098da9d4be752b88a02b51fcf679 Binary files /dev/null and b/src/main/resources/com/ardublock/block/sim3.png differ diff --git a/src/main/resources/com/ardublock/block/sim4.png b/src/main/resources/com/ardublock/block/sim4.png new file mode 100644 index 0000000000000000000000000000000000000000..5d8ad35c5eb759a3c9aa50e0dd320792b32fa103 Binary files /dev/null and b/src/main/resources/com/ardublock/block/sim4.png differ diff --git a/src/main/resources/com/ardublock/block/upload1.png b/src/main/resources/com/ardublock/block/upload1.png new file mode 100644 index 0000000000000000000000000000000000000000..92b790ec54cb1f1df3f312a401ce7b1409d6d540 Binary files /dev/null and b/src/main/resources/com/ardublock/block/upload1.png differ diff --git a/src/main/resources/com/ardublock/block/upload2.png b/src/main/resources/com/ardublock/block/upload2.png new file mode 100644 index 0000000000000000000000000000000000000000..e1bc63bfa10bec015952f42ad2837320d8a300e3 Binary files /dev/null and b/src/main/resources/com/ardublock/block/upload2.png differ diff --git a/src/main/resources/com/ardublock/block/upload3.png b/src/main/resources/com/ardublock/block/upload3.png new file mode 100644 index 0000000000000000000000000000000000000000..2e79b00b35ccc18b68146e0ef16aa003cf634ba6 Binary files /dev/null and b/src/main/resources/com/ardublock/block/upload3.png differ diff --git a/src/main/resources/com/ardublock/block/uploadSim1.png b/src/main/resources/com/ardublock/block/uploadSim1.png new file mode 100644 index 0000000000000000000000000000000000000000..0aa8ae0af0d6659daf89293b725392250ebb1630 Binary files /dev/null and b/src/main/resources/com/ardublock/block/uploadSim1.png differ diff --git a/src/main/resources/com/ardublock/block/uploadSim2.png b/src/main/resources/com/ardublock/block/uploadSim2.png new file mode 100644 index 0000000000000000000000000000000000000000..f46b182b4862a1d453e3c9c93bbc62b8dc02cf38 Binary files /dev/null and b/src/main/resources/com/ardublock/block/uploadSim2.png differ diff --git a/src/main/resources/com/ardublock/block/uploadSim3.png b/src/main/resources/com/ardublock/block/uploadSim3.png new file mode 100644 index 0000000000000000000000000000000000000000..a311c6df74a334b9f2015948dd69b085229839db Binary files /dev/null and b/src/main/resources/com/ardublock/block/uploadSim3.png differ