Merge pull request #2 from ErdbeerbaerLP/master

Some bug fixes
This commit is contained in:
Maschell 2019-04-12 12:58:53 +02:00 committed by GitHub
commit 6aba6610d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 103 additions and 22 deletions

View File

@ -18,5 +18,5 @@ mvn package
``` ```
# Used libraries # Used libraries
- [lombok](https://projectlombok.org/) - [lombok](https://projectlombok.org/) ([Install to IDE](https://projectlombok.org/setup/overview) too!)
- [commons-cli](https://commons.apache.org/proper/commons-cli/) - [commons-cli](https://commons.apache.org/proper/commons-cli/)

View File

@ -22,9 +22,11 @@
package de.mas.wiiu.streaming; package de.mas.wiiu.streaming;
import java.awt.GraphicsEnvironment;
import java.net.BindException; import java.net.BindException;
import java.net.SocketException; import java.net.SocketException;
import javax.swing.JFrame;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
@ -39,27 +41,69 @@ import de.mas.wiiu.streaming.gui.StreamWindow;
public class Main { public class Main {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
CommandLineParser parser = new DefaultParser(); if(GraphicsEnvironment.isHeadless()) {
System.out.println("This program does not support running in a headless environment!");
System.exit(2);
}else {
String ip = null;
if(args.length != 0) {
CommandLineParser parser = new DefaultParser();
Options options = new Options(); Options options = new Options();
options.addOption("ip", "ip", true, "IP address of your Wii U Console."); options.addOption("ip", "ip", true, "IP address of your Wii U Console.");
CommandLine line = parser.parse(options, args); CommandLine line = parser.parse(options, args, true);
String ip = null;
if (line.hasOption("ip")) {
ip = line.getOptionValue("ip"); if (line.hasOption("ip")) {
} else { ip = line.getOptionValue("ip");
HelpFormatter formatter = new HelpFormatter(); }else {
formatter.printHelp("streamingTool", options); HelpFormatter formatter = new HelpFormatter();
ip = JOptionPane.showInputDialog(null, "Please enter the local IP address of your Wii U", "Wii U streaming client", JOptionPane.PLAIN_MESSAGE); formatter.printHelp("streamingTool", options);
} System.exit(2);
try { }
new Main(ip); } else{
} catch (BindException e) {
JOptionPane.showMessageDialog(null, "Can't bind socket. The client is probably already running.", e.getClass().getName(),
JOptionPane.WARNING_MESSAGE);
System.exit(-1);
//Create a JFrame to show the icon in the taskbar
final JFrame frame = new JFrame("Wii U Streaming Client - Enter IP...");
frame.setUndecorated( true );
frame.setVisible( true );
frame.setLocationRelativeTo( null );
//Display the IP Dialog
ip = JOptionPane.showInputDialog(frame, "Please enter the local IP address of your Wii U", "Wii U streaming client", JOptionPane.PLAIN_MESSAGE);
//Check if user clicked "Cancel"
if(ip == null) {
System.out.println("Cancelled. Exiting program");
frame.dispose();
System.exit(0);
}
//Close the JFrame again
frame.dispose();
}
try {
new Main(ip);
} catch (BindException e) {
//Create a JFrame to show the icon in the taskbar
final JFrame frame = new JFrame("Wii U Streaming Client - "+e.getClass().getName());
frame.setUndecorated( true );
frame.setVisible( true );
frame.setLocationRelativeTo( null );
//Display the Message
JOptionPane.showMessageDialog(frame, "Can't bind socket. The client is probably already running.", e.getClass().getName(),
JOptionPane.WARNING_MESSAGE);
//Close the JFrame again
frame.dispose();
System.exit(-1);
}
} }
} }

View File

@ -21,18 +21,55 @@
*******************************************************************************/ *******************************************************************************/
package de.mas.wiiu.streaming.gui; package de.mas.wiiu.streaming.gui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.WindowConstants; import javax.swing.WindowConstants;
public class StreamWindow { public class StreamWindow {
private final ImagePanel image = new ImagePanel(1280, 720); private final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
private final ImagePanel image = new ImagePanel(screenSize.width-15, screenSize.height-100);
public StreamWindow(IImageProvider imageProvider) { public StreamWindow(IImageProvider imageProvider) {
JFrame editorFrame = new JFrame("Stream");
JFrame editorFrame = new JFrame("Wii U Streaming Client");
editorFrame.setMaximumSize(screenSize);
editorFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); editorFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
imageProvider.setOnImageChange((bi) -> image.setImage(bi)); imageProvider.setOnImageChange((bi) -> image.setImage(bi));
editorFrame.add(image); editorFrame.getContentPane().add(image);
JMenuBar menuBar = new JMenuBar();
editorFrame.getContentPane().add(menuBar, BorderLayout.NORTH);
JMenu mnSettings = new JMenu("Settings");
menuBar.add(mnSettings);
JMenuItem mntmNewMenuItem = new JMenuItem("Config (Not implemented!)");
mntmNewMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//TODO Add program config
}
});
JMenuItem mntmExit = new JMenuItem("Exit");
mntmExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
mntmNewMenuItem.setEnabled(false);
mnSettings.add(mntmNewMenuItem);
mnSettings.add(mntmExit);
editorFrame.pack(); editorFrame.pack();
editorFrame.setLocationRelativeTo(null); editorFrame.setLocationRelativeTo(null);