package nbtool.gui.utilitypanes; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.SocketException; import java.net.UnknownHostException; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.border.BevelBorder; import javax.swing.border.Border; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import nbtool.io.BroadcastIO; import nbtool.io.BroadcastIO.BroadcastDataProvider; import nbtool.io.BroadcastIO.Broadcaster; public class BroadcastUtility extends UtilityParent { private BU_Frame display = null; @Override public JFrame supplyDisplay() { return (display == null) ? display = new BU_Frame() : display; } @Override public String purpose() { return "spamming generated broadcast packets"; } @Override public char preferredMemnonic() { // TODO Auto-generated method stub return 'b'; } private BroadcastDataProvider[] providers = { new BroadcastDataProvider() { @Override public byte[] provideBroadcast() { return new byte[]{0, 1, 2, 3, 4}; } @Override public String name() { return "sequential 5"; } }, new BroadcastDataProvider() { @Override public byte[] provideBroadcast() { return new byte[1000]; } @Override public String name() { return "empty 1000"; } } }; private class BU_Frame extends JFrame { Broadcaster broadcaster; JButton selected = null; private Border unsel = BorderFactory.createEmptyBorder(); private Border sel = BorderFactory.createBevelBorder(BevelBorder.RAISED); public BU_Frame() { super("BroadcastUtility"); try { broadcaster = new Broadcaster(BroadcastIO.BROADCAST_ADDRESS, BroadcastIO.NBITES_TEAM_PORT); } catch (SocketException e) { e.printStackTrace(); return; } catch (UnknownHostException e) { e.printStackTrace(); return; } Container content = this.getContentPane(); content.setLayout(new GridLayout(providers.length + 1, 1)); for (int i = 0; i < providers.length; ++i) { JButton button = new JButton(providers[i].name()); button.setName("" + i); button.setBorder(unsel); button.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { JButton btn = (JButton) e.getSource(); int j = Integer.parseInt(btn.getName()); broadcaster.running = true; broadcaster.provider = providers[j]; if (selected != null) { selected.setBorder(unsel); } btn.setBorder(sel); selected = btn; } }); content.add(button); } final JSlider slider = new JSlider(0, 5000); slider.setMajorTickSpacing(500); slider.setPaintLabels(true); slider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { broadcaster.interim = slider.getValue(); } }); content.add(slider); this.setSize(300,600); } } }