From f0150877cda9c0c64f58ae1dd1cb5e28c792d015 Mon Sep 17 00:00:00 2001 From: marios Date: Sun, 21 Oct 2018 12:16:47 +0300 Subject: [PATCH] Switched back to seconds only, added fork button in finish window and made it work on linux --- out/artifacts/BongoMidi_jar/BongoMidi.jar | Bin 1459806 -> 1462626 bytes src/com/bongo/Main.java | 67 ++++++++++------------ src/com/bongo/Renderer.java | 18 +----- 3 files changed, 31 insertions(+), 54 deletions(-) diff --git a/out/artifacts/BongoMidi_jar/BongoMidi.jar b/out/artifacts/BongoMidi_jar/BongoMidi.jar index 12060f85e2b4546867f411ad15c0be00ff0768c6..ce610e15c3635f082de45ac33927c93568c5d05c 100644 GIT binary patch delta 16353 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 delta 13498 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 { + if (Desktop.isDesktopSupported()) { + try { + Desktop.getDesktop().browse(new URI("https://github.com/marios8543/BongoMidi")); + } catch (Exception ex) { + Runtime runtime = Runtime.getRuntime(); + try { + runtime.exec("xdg-open https://github.com/marios8543/BongoMidi"); + } catch (IOException ee) { + JOptionPane.showMessageDialog(window, ee.getMessage(), "Browser open error", JOptionPane.ERROR_MESSAGE); + } + } + } + }); pauseButton.setText("Restart"); pauseButton.setActionCommand("restart"); parser.sequencer.stop(); bongos = new Renderer.Bongo[16]; window.repaint(); finishTrigger = false; - int ok = JOptionPane.showOptionDialog(window, - "BongoCat MIDI Player\nhttps://github.com/marios8543/BongoMidi\nRestart?", - "Thanks for playing!",JOptionPane.YES_NO_OPTION,JOptionPane.PLAIN_MESSAGE, - new FinishAnimation(), - null,null); + Integer ok = JOptionPane.showOptionDialog(window, "BongoCat MIDI Player\nhttps://github.com/marios8543/BongoMidi\n\nRestart?", + "Thanks for playing!",JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE, new FinishAnimation(), new Object[]{"Yes","No",forkButton},null); if(ok==JOptionPane.YES_OPTION){ restart(); } @@ -155,10 +167,9 @@ private static MidiParser init_player(){ } window.setName("Bongo Cat MIDI Player - " + file.getName()); window.setTitle("Bongo Cat MIDI Player - " + file.getName()); - lenstr = String.format("%02d:%02d.%03d", + lenstr = String.format("%02d:%02d", TimeUnit.MICROSECONDS.toMinutes(private_parser.sequencer.getMicrosecondLength()), - TimeUnit.MICROSECONDS.toSeconds(private_parser.sequencer.getMicrosecondLength()) % 60, - private_parser.sequencer.getMicrosecondLength() % 1000); + TimeUnit.MICROSECONDS.toSeconds(private_parser.sequencer.getMicrosecondLength()) % 60); seekslider.setMaximum((int)private_parser.sequencer.getMicrosecondLength()); return private_parser; } @@ -247,31 +258,11 @@ public static void main(String[] args) { } }); - JButton forkButton = new JButton("Fork me on GitHub!"); - forkButton.addActionListener(e -> { - switch (e.getActionCommand()) { - case "fork": { - if (Desktop.isDesktopSupported()) { - try { - Desktop.getDesktop().browse(new URI("https://github.com/marios8543/BongoMidi")); - } catch (Exception ex) { - JOptionPane.showMessageDialog(window, ex.getMessage(), "Error opening GitHub page", - JOptionPane.ERROR_MESSAGE); - } - } - } - } - }); - forkButton.setActionCommand("fork"); - openButton.setAlignmentX(Component.RIGHT_ALIGNMENT); - buttonPanel.add(Box.createRigidArea(new Dimension(5,0))); buttonPanel.add(openButton); buttonPanel.add(Box.createRigidArea(new Dimension(30, 0))); buttonPanel.add(pauseButton); buttonPanel.add(Box.createRigidArea(new Dimension(30, 0))); - buttonPanel.add(forkButton); - buttonPanel.add(Box.createRigidArea(new Dimension(30, 0))); buttonPanel.add(loop); buttonPanel.add(Box.createRigidArea(new Dimension(30, 0))); buttonPanel.add(timeLabel); @@ -301,6 +292,9 @@ public static void main(String[] args) { } class FinishAnimation implements Icon { + private Boolean lhand = true; + private Boolean rhand = false; + FinishAnimation() { final Thread renderThread = new Thread(() -> { while (true){ @@ -319,16 +313,13 @@ class FinishAnimation implements Icon { public void paintIcon(Component c, Graphics g, int x, int y) { if (FinishAnimation.component == null) FinishAnimation.component = c; g.clearRect(0,0, c.getWidth(), c.getHeight()); - // TODO: Actually get the bongo image to load/display here - // I simply use "Percussion" for now - g.drawImage(bongo.note.cpatch.getAsset(), x, y, c); - g.drawImage(Renderer.get_lhand(bongo.l_hand), x, y, c); - g.drawImage(Renderer.get_rhand(bongo.r_hand), x, y, c); - bongo.swap(); + g.drawImage(Renderer.Instr_Categ.Bongo.getAsset(), x, y, c); + g.drawImage(Renderer.get_lhand(lhand), x, y, c); + g.drawImage(Renderer.get_rhand(rhand), x, y, c); + lhand=!lhand; + rhand=!rhand; } - private Renderer.Bongo bongo = new Renderer.Bongo(); - private static Component component; public int getIconWidth() { diff --git a/src/com/bongo/Renderer.java b/src/com/bongo/Renderer.java index 87993d2..c9d0743 100644 --- a/src/com/bongo/Renderer.java +++ b/src/com/bongo/Renderer.java @@ -34,21 +34,6 @@ public static class Bongo { Boolean l_hand=false; Boolean r_hand=false; - // only use this with the final animation - Bongo() { - x = 0; - y = 0; - lastSecondValue = 0L; - note = new Note(); - l_hand = true; - } - - // same goes here - void swap() { - l_hand = !l_hand; - r_hand = !r_hand; - } - Bongo(Note note) { if(note.status){ if(note.cpatch==Instr_Categ.Percussion || note.cpatch==Instr_Categ.CPerc){ @@ -114,7 +99,8 @@ public enum Instr_Categ{ Synth_fx(load_asset("keyboard.png")), Ethnic(load_asset("ensemble.png")), Percussion(load_asset("drums.png")), - FX(load_asset("ensemble.png")); + FX(load_asset("ensemble.png")), + Bongo(load_asset("bongo.png")); private final Image asset; Instr_Categ(Image s){ this.asset = s;