From 26a243c6b14f6abd3702d2bcbb9a6de52673463a Mon Sep 17 00:00:00 2001 From: hugh5 Date: Tue, 1 Nov 2022 22:53:13 +1000 Subject: [PATCH] Selection sort implemented --- src/Launcher.java | 14 +++++ src/MainWindow.java | 64 ++++++++++++++++++-- src/MenuPanel.java | 128 ++++++++++++++++++++++++++++++++++++++++ src/SortingPanel.java | 100 +++++++++++++++++++++++++++++++ src/assets/backward.png | Bin 0 -> 9933 bytes src/assets/forward.png | Bin 0 -> 9449 bytes src/assets/random.png | Bin 0 -> 8689 bytes src/assets/refresh.png | Bin 0 -> 5493 bytes src/assets/start.png | Bin 0 -> 4747 bytes 9 files changed, 302 insertions(+), 4 deletions(-) create mode 100644 src/MenuPanel.java create mode 100644 src/SortingPanel.java create mode 100644 src/assets/backward.png create mode 100644 src/assets/forward.png create mode 100644 src/assets/random.png create mode 100644 src/assets/refresh.png create mode 100644 src/assets/start.png diff --git a/src/Launcher.java b/src/Launcher.java index b3463c3..8a89905 100644 --- a/src/Launcher.java +++ b/src/Launcher.java @@ -6,6 +6,20 @@ public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { + try { + for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { + if ("Windows".equals(info.getName())) { + UIManager.setLookAndFeel(info.getClassName()); + break; + } + if ("Mac OS X".equals(info.getName())) { + UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + } catch (Exception e) { + // Style not available + } MainWindow main = new MainWindow(); main.show(); } diff --git a/src/MainWindow.java b/src/MainWindow.java index 48fea17..1284887 100644 --- a/src/MainWindow.java +++ b/src/MainWindow.java @@ -1,17 +1,73 @@ import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class MainWindow implements ActionListener, ChangeListener { + private final JFrame window; + private MenuPanel menuPanel; + private SortingPanel sortingPanel; + public static final int MAX = 48; + public static final int MIN = 2; -public class MainWindow { - private JFrame window; public MainWindow() { window = new JFrame(); - window.setTitle("Tetris"); + window.setLayout(new BorderLayout(10, 5)); + window.setTitle("Sorting Visualiser"); window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - window.setSize(800, 500); + window.setSize(1200, 800); window.setLocationRelativeTo(null); + + createMenuButtons(); + createVisualiserPanel(); + } + + private void createMenuButtons() { + menuPanel = new MenuPanel(); + menuPanel.addActionListeners(this); + menuPanel.addChangeListeners(this); + window.add(menuPanel.getNorthPanel(), BorderLayout.NORTH); + window.add(menuPanel.getSouthPanel(), BorderLayout.SOUTH); + } + + private void createVisualiserPanel() { + sortingPanel = new SortingPanel(); + window.add(sortingPanel, BorderLayout.CENTER); + } + + public JFrame getWindow() { + return window; } public void show() { window.setVisible(true); } + + @Override + public void actionPerformed(ActionEvent e) { + System.out.println(e); + if (e.getSource() instanceof JButton) { + if (e.getActionCommand().equals("generate")) { + sortingPanel.generateArray(); + } else if (e.getActionCommand().equals("start")) { + sortingPanel.start(menuPanel.getSortingMethod()); + } + } + } + + @Override + public void stateChanged(ChangeEvent e) { + if (e.getSource() instanceof JSlider) { + if (((JSlider)e.getSource()).getName().equals("length")) { + sortingPanel.generateArray(((JSlider) e.getSource()).getValue()); + System.out.println(((JSlider) e.getSource()).getValue() + ":" + e); + } else if (((JSlider)e.getSource()).getName().equals("speed")) { + sortingPanel.setSpeed(((JSlider) e.getSource()).getValue()); + System.out.println(((JSlider) e.getSource()).getValue() + ":" + e); + } + } + } } diff --git a/src/MenuPanel.java b/src/MenuPanel.java new file mode 100644 index 0000000..c6dedac --- /dev/null +++ b/src/MenuPanel.java @@ -0,0 +1,128 @@ +import javax.swing.*; +import javax.swing.event.ChangeListener; +import java.awt.*; +import java.awt.event.ActionListener; +import java.net.URL; + +public class MenuPanel { + private JPanel northPanel; + private JPanel southPanel; + private JButton generate; + private JSlider length; + private JLabel lengthLabel; + private JComboBox sortingMethod; + private JButton start; + private JButton forward; + private JButton backward; + private JSlider speed; + private JLabel speedLabel; + + private static final String[] sorts = new String[]{"Selection Sort"}; + + public MenuPanel() { + createNorthPanel(); + createSouthPanel(); + } + + private void createNorthPanel() { + northPanel = new JPanel(); + northPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); + + URL generateURL = getClass().getResource("assets/random.png"); + if (generateURL != null) { + ImageIcon generateIcon = new ImageIcon(generateURL); + generateIcon = new ImageIcon(generateIcon.getImage().getScaledInstance(20, 20, Image.SCALE_DEFAULT)); + generate = new JButton("New Array", generateIcon); + } else { + generate = new JButton("New Array"); + } + northPanel.add(generate); + + length = new JSlider(MainWindow.MIN, MainWindow.MAX); + northPanel.add(length); + length.setValue(MainWindow.MAX / 2); + + lengthLabel = new JLabel(); + northPanel.add(lengthLabel); + lengthLabel.setText("Length:" + length.getValue()); + + sortingMethod = new JComboBox<>(sorts); + northPanel.add(sortingMethod); + } + + private void createSouthPanel() { + southPanel = new JPanel(); + southPanel.setLayout(new FlowLayout(FlowLayout.CENTER)); + + URL backURL = getClass().getResource("assets/backward.png"); + if (backURL != null) { + ImageIcon backIcon = new ImageIcon(backURL); + backIcon = new ImageIcon(backIcon.getImage().getScaledInstance(20, 20, Image.SCALE_DEFAULT)); + backward = new JButton(backIcon); + } else { + backward = new JButton("Step Backward"); + } + southPanel.add(backward); + + URL startURL = getClass().getResource("assets/start.png"); + if (startURL != null) { + ImageIcon startIcon = new ImageIcon(startURL); + startIcon = new ImageIcon(startIcon.getImage().getScaledInstance(20, 20, Image.SCALE_DEFAULT)); + start = new JButton(startIcon); + } else { + start = new JButton("Start"); + } + southPanel.add(start); + + URL forwardURL = getClass().getResource("assets/forward.png"); + if (forwardURL != null) { + ImageIcon forwardIcon = new ImageIcon(forwardURL); + forwardIcon = new ImageIcon(forwardIcon.getImage().getScaledInstance(20, 20, Image.SCALE_DEFAULT)); + forward = new JButton(forwardIcon); + } else { + forward = new JButton("Step Forward"); + } + southPanel.add(forward); + + speed = new JSlider(1, 10); + southPanel.add(speed); + + speedLabel = new JLabel(); + southPanel.add(speedLabel); + speedLabel.setText("Speed:" + speed.getValue()); + } + + public JPanel getNorthPanel() { + return northPanel; + } + + public JPanel getSouthPanel() { + return southPanel; + } + + public String getSortingMethod() { + return (String) sortingMethod.getSelectedItem(); + } + + public void addChangeListeners(ChangeListener changeListener) { + length.setName("length"); + length.addChangeListener(e -> lengthLabel.setText("Length:" + length.getValue())); + length.addChangeListener(changeListener); + + speed.setName("speed"); + speed.addChangeListener(e -> speedLabel.setText("Speed:" + speed.getValue())); + speed.addChangeListener(changeListener); + } + + public void addActionListeners(ActionListener actionListener) { + generate.setActionCommand("generate"); + generate.addActionListener(actionListener); + + start.setActionCommand("start"); + start.addActionListener(actionListener); + backward.setActionCommand("backward"); + backward.addActionListener(actionListener); + forward.setActionCommand("forward"); + forward.addActionListener(actionListener); + } +} diff --git a/src/SortingPanel.java b/src/SortingPanel.java new file mode 100644 index 0000000..4a781a9 --- /dev/null +++ b/src/SortingPanel.java @@ -0,0 +1,100 @@ +import javax.swing.*; +import java.awt.*; +import java.lang.reflect.InvocationTargetException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; +import java.util.stream.IntStream; + +public class SortingPanel extends JComponent { + + private Map map; + private int[] array; + private final Random r; + private int size; + private int speed; + + private static final Color CURRENT = Color.ORANGE; + private static final Color SORTED = Color.GREEN; + private static final Color MIN = Color.RED; + + public SortingPanel() { + r = new Random(System.nanoTime()); + size = MainWindow.MAX / 2; + generateArray(); + map = new HashMap<>(size); + speed = 5; + } + + public void paint(Graphics g) { + int y = getHeight() -20; + int scalar = getHeight() / MainWindow.MAX - 1; + int width = Math.min(getWidth() / size, 100); + g.setFont(new Font("Monospaced", Font.PLAIN, 16)); + for (int i = 0; i < size; i++) { + g.setColor(Color.BLACK); + g.drawString(String.valueOf(array[i]), (int) i * width + width / 4, y + 15); + g.setColor(map.get(i)); + g.fillRect(i * width, y, width - 2, -scalar * array[i]); + } + } + + public void generateArray(int size) { + this.size = size; + IntStream ints = r.ints(size, 1, MainWindow.MAX); + array = ints.toArray(); + map = new HashMap<>(size); + System.out.println(Arrays.toString(array)); + this.repaint(); + } + + public void generateArray() { + generateArray(this.size); + } + + public void start(String sortingMethod) { + System.out.println(this.getClass().getSimpleName() + "." + sortingMethod.replace(" ", "") + "()"); + selectionSort(); + } + + public void setSpeed(int speed) { + this.speed = speed; + } + + public void updateScreen() { + paintImmediately(0, 0, getWidth(), getHeight()); + try { + Thread.sleep((long) (2048 * Math.pow(2, -speed))); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + + private void selectionSort() { + map.clear(); + int numSorted = 0; + for (int n = 0; n < size; n++) { + int minIndex = n; + map.put(minIndex, MIN); + for (int i = numSorted; i < size; i++) { + if (array[i] < array[minIndex]) { + map.remove(minIndex); + map.put(i, MIN); + minIndex = i; + } else { + map.put(i, CURRENT); + } + updateScreen(); + if (map.get(i) == CURRENT) map.remove(i); + } + int temp = array[numSorted]; + array[numSorted] = array[minIndex]; + array[minIndex] = temp; + map.remove(minIndex); + map.put(numSorted, SORTED); + numSorted++; + repaint(); + } + } +} diff --git a/src/assets/backward.png b/src/assets/backward.png new file mode 100644 index 0000000000000000000000000000000000000000..fd580bb49b06c44e9d56400fb8cab4d7b4316bcd GIT binary patch literal 9933 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 M^l-Skm3HiZ07(rxwg3PC literal 0 HcmV?d00001 diff --git a/src/assets/forward.png b/src/assets/forward.png new file mode 100644 index 0000000000000000000000000000000000000000..021d173b57289859dd08eb0612f204f5d25d5f12 GIT binary patch literal 9449 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 literal 0 HcmV?d00001 diff --git a/src/assets/random.png b/src/assets/random.png new file mode 100644 index 0000000000000000000000000000000000000000..49d2483a236d9aee6f39d78fba16aa5c04091abd GIT binary patch literal 8689 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
WTefiX)~DEL%4XbrzN4cWTog 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 literal 0 HcmV?d00001 diff --git a/src/assets/refresh.png b/src/assets/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..8267e76d5c8fbad0b363d1c457bb306a7234c374 GIT binary patch literal 5493 zcmb_ghf~u_*Zu_(3B7luh+YAy(gFwx9YiT2D$3^k2|Xl1JBdSFl{ zzN-I{OnenSJi7$7o`4LjD+wV)h-Pl*Ax41@Ul6HeUm2ZsH3PLLUH`nF>Ukh(W=1g zy1i1)?hfNItNy)#y0>c?Oc1hJHhyrjRH-<=|H`R>o9Qh?Z)C1)`8_KIRMJhRZH(%y}KIytS`91SX`a*UL`YnD*R{KmCxRv2~nlaXHe^F{bsk< zC$f)T3fI{#!93WL`+5w}R&f^yyN~~zGkYWGa(YGM85Cbhg2BFV`VFt?%oNe|OZ{6L zdQo@r{QZuD88;=y2M=m80N<{P&L3lilQX7+6E$@Y&XZyE^$c|fvFdQJxobMcfU1eK zbvvW>;SNiJ0|*z!#c926rPLWD2=IoD8u=XrJuir?ca=`2A_FAV=B37rXFOBYj4_`@ zO~F8%-2B$0?Y~6I2RTQ$2dGBjui(c-p_Gux2=X=$)ErJOGY5P%2Yme2NgL3WyL+zs zVKl!!Uo|_?QUj`OKh8-{e}&9=3k7yR|8ml&UN*nG#~TwFK{Fps)m9s7mMb%8Qdd%v z>N^kyRswblW!sgM2c4=i3NKt7;z>nhrF$eNFFv;_DT4xS7EH@vSi52GuOhuElA+pm z8p0>#wm}q@oVS!|1m{4su-S}Pc!h<1m**TlP%!Yg9CN88Dr zh5heY2&ph;Bc7A|L_~e;(Bp` z{>hMo%>;F~B;Ku%ku07$8Cc9PF&7wvEnj}+q_?bay#x*W9`l%39GNqg`i{T_Ke6wN z%adGWKoRG&65CprOz#udI@QVHIAi^8(-$$To^(`|Y47ctMlWi7{F$V+XhB!$=h~nA zRnBo=_4e|0N!RU;BWS?H`_$GU!tE~CHX2=7l$RAuev+5iC7Fq>V3Ae-Ra60N` zL*bl!P}WVZsrujXZK|1?o^d%1s9CRD>&X5l8F~SJ_C6tVrM6Iq+^NZsTwNb&SFz*0 zc32r_UGjuRYpIl9R~dPCab@OBT0O}=e!6aa#QW~++Hw>{!~>ex++esHlK|C`dar5y zYNN>kMM%ozI4n?YJ|$56z&43esQ)z0@j+u!`fW;GJILqw1`{H&ryAOta)#lG>933) z$!43fcgr)4jDI;vn~YAzXEXna&_X}WAJ&Ma!Ur0ky*dHwpW9Qg`jhWpL`>V4OlI;0 z=@Nre3BPUWvj%)VTC*nPed|}J9oK(3DSo0AF9lD9`jplBijl@LvDFcn;>Fjx`DTKk z+SimaV-7OuP6C_K(0hB=Msr^H#HIq7|nr+x&{)z+~>4i)veN^#_3;KRh^>ShBx$ht9uN=qmc2xgs}G(Wyp5O zdD(o56PNO+MnCaG3rS7BQg{>Fk$c{+DHj2~c_%em0_6XfW(4|KgU^#kF57F({Y+f< zuYp@*u{{K90xLK`A>dNYc~>DUPo&*|*9jPg08tl|j(1f&x1^7zc3IZ$cR3l`mYjEJ z+;c$yY6dj6{YT;E5ySYx=u%8!W?lxThFbw*}-Lk{2dRzYRa4r!kbIBHLb@GJr zJ4dB?t(ThHtkggd6p>u=W4V06(4(BPHk~FK#_D=b_HFrjWEnAasE$SUE10a1(THFWBuv5tj!MAaRnLaLm3j0Vb*7zp`n5` zW08u+LqUg-P4+)RYp)te4vak}TEkqDx~`C*srN^itZdjCkZcxu*okdg(*OPt*}cQA z8Zn!Hl`%Ze{YhMm8Hxrgei>%Vta|Gki2i%9^}}W9P(Pkl5ae$kRQ44q8HnoDeibjs z-}`@K{t0DcG_FJ^}n5Cu$ij33D|o4+ysP&JD_TinX_ z`xRo!{~xKS)87@5Y*{1rM17e~6igWS6Rd2+qtoS?fAJ^lPzcvdurLj6P>xAr$-lad4XyCA&ga0PB@qfE(#k&ZdFe74 zCq_zDTZy>Pwb$|}+>OoMBp#@{WBN?P8WB`HqYiq&@o|6)C<#=I) z3s*{Ua6RcC1Qr~Ii~T!PPYSWL5b6xD31aza4hfQqw5ox{#3cmeTr5Gd#IMUAk>Xuv0cTg#u!JsH<>LediqK znQuGe3|#d`|ry!eUA;l6|;+a)JF0bi+AEyOU0}-fP~FczPr)PrNnGjg(Ox#U)(G~dHa;! zY1QYu5=Cxc$72@fQtItzce-7vlMe~ zHT(6foF8eMJ}7Q)w;^aig^LiRR%~#csqv5Qutqz~gpi$fFppg&zoo~^GR&XJ71;Qg zu}6!nWE)I$C$BVfG>ZdQu({NWR6(n7T%IIZFh_eEKmJHAp0`fPou+XdV3J+BPxAUR zUS~uY|11llqk<(RO+*-`Q*cvHZ*(!9%yW;!leMRTq`L~*z1sLam|=Tj&V>DP*r%{u zp>L&(suJpDu2hauSv?<-TsZ>&{ko*hUFx$8vGl~XNoOU9q%I!G&@uhBiOOv5}@ zqTxpg105d(7o9pRgYL;eQjMzUaly{m2l2Scov6dUJIq0Vmu&#tWo5sG9ldFJ_s^DrXa!g{<7lp z#m?8m`~~8Q94!eiDwH%*jA@N1NE#TVGtIu;%f$G>9~hd6_vnB9=xy1=BayTvYa%SH zGILNU9skCc9G&=G6$wAer{;{mxbQcJiGvEql;0&qjx-~-8a+EJi1e~YA=o`kUPV#- zgD9wuyV#m2<@MpR?6g}R1=UGGwT9#vlho>+$JEThySiUvk7h8!&;iBaU6J1H;;W2J z-QDef3-jm`4q(kwEu3i~T#SzvR-BYT-S3?v?Q+c-O_T{5A#I3II-}V+YMmtn!d$o~ zFV_k`dTS-YhkR#7rIWrbIezn%6GK`VW7=!~-8ta$8j@f_{OOF=v6mEL1|7aXsJg@A zh4Te-qU9(ae=WEgBO00Yk-2vCQrFqI=4jl%FM0xc(GB?ghvj$iil?VmGAWgPC3Dju z7KNpJi6X(H+1ooMBc=|oYXu72B!?{3&_|S34yFqo$UyG%9VU9s82w1E&i&bs8lIP2 z%j1yh4${~GH$A3eA*Oe#J8d#+Y4ACC!@BKP@`WC%{j zJA7b|-Q`n2ZCZ0DRj)LK2BSGOhi6m}r@pXVlA*h&gxW+ihNx3)DcY5)JO<>v>^%sHr>8<>p8_*>!1$c*_1REZrJd^ZE@i1^q2 z4Ro11sZ3_Yai9(M-LND7)MxGiUYt;WGKpt6KE4P)UCH#G75x13a+n5_{d+CxZ!Q^+YwPc+@iOvdH!;+SjV<)KsgRRR(}AeO z9~W_>xjRNiWWofiZkeIo0If}#QU2cfPid}H0|!^}TEw*J$lST`LjHfFuMW%wvqR#r z@sD>(2UJSTLi(%dvKL#Z?+*OBlL4^;}=5?e&Z{Cd;V87@o3kYQ1E| z>_O@MTd=~ol0dP@B&i;41&8;;T>J;)b2y5nI^*6!U{xn1W_WE3f1vS(7J@{@;7GgP z8KojC-eK&={%42u$a|J7!UN*R&Wp5X+il%$=4TOl+E4R**qz5~asZw>UPf|+Q=~?m z(J9X@t*U6JZWoP*_QSuJDe#1WiHU#83N|~1q<%lUACPq0V8?p36ji3*8D;ZScZ#$O zV|kx?>Q_ptl&`&hb>Z$mCuQlbtHpPwLk`xn#|-;OSLa@4-EWfekbs#jnvFR^BVOR; z;|?;GL&{wubw1E!-x$D#8)R-*Fs+dfgGbs)rCQJ%b)yQ`=aUY?Mz1%cKv*7@*EMZm=z`^qfgE#66n-i9Yv zu^mkxcxya6!8D^22-7op6=}<-5(8*srB?QG@sTNlGVNYdfeU*A zMo*jX1U;_xt7isv-W8mTzxwn+uhYUVz$=>45gH5kfXAfZqowE>c-i1C=24_c(3rM< zYPi$C^TQe+6z~%xf!={|OSprf=h=-ZyiU$8E#TbVIHEI(%(+1!er&HLyIHDVT4h7D@BeAM8OXM}hz8 eZz2Fheq#f|iQ*ONGNl!NLfczATD`LHP5wWWoM|2a literal 0 HcmV?d00001 diff --git a/src/assets/start.png b/src/assets/start.png new file mode 100644 index 0000000000000000000000000000000000000000..7019bf19e9654098f39159fc1192d9c76101ef10 GIT binary patch literal 4747 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 PUjTaN47G~R+J^rNu=Y9e literal 0 HcmV?d00001