2015-11-06 18:15:26 +01:00
|
|
|
package com.ixab.GUI;
|
|
|
|
|
|
2015-11-06 21:42:03 +01:00
|
|
|
import com.ixab.ConfigHandling.ConfigFileIOHandler;
|
|
|
|
|
import com.ixab.ConfigHandling.ConfigFileInstanceHandler;
|
2015-11-16 15:44:25 +01:00
|
|
|
import com.ixab.ConfigHandling.StreamConfigItem;
|
2015-11-30 17:00:22 +01:00
|
|
|
import com.ixab.ConfigHandling.StreamConfigSorter;
|
2015-11-30 17:34:20 +01:00
|
|
|
import com.ixab.Logging.Logger;
|
2015-11-06 21:42:03 +01:00
|
|
|
import com.ixab.StreamHandling.StreamOpener;
|
2015-11-30 21:55:54 +01:00
|
|
|
import javafx.event.EventDispatcher;
|
2015-11-06 21:42:03 +01:00
|
|
|
|
|
|
|
|
import javax.swing.*;
|
2015-11-07 00:56:35 +01:00
|
|
|
import java.awt.event.*;
|
2015-11-06 21:42:03 +01:00
|
|
|
|
2015-11-09 20:09:55 +01:00
|
|
|
public class MainWindow {
|
2015-11-06 21:42:03 +01:00
|
|
|
private JPanel panel;
|
2015-11-07 00:19:11 +01:00
|
|
|
private JComboBox comboBoxStreams;
|
2015-11-07 00:56:35 +01:00
|
|
|
private JComboBox comboBoxQuality;
|
2015-11-12 15:48:37 +01:00
|
|
|
private JButton buttonAddStream;
|
|
|
|
|
private JButton buttonPlayStream;
|
|
|
|
|
private JButton buttonRemoveStream;
|
|
|
|
|
private JTextField textFieldStreamStatus;
|
|
|
|
|
private JTextField textFieldStreamViewers;
|
|
|
|
|
private JTextField textFieldStreamTitle;
|
|
|
|
|
private JTextField textFieldStreamGame;
|
2015-11-30 17:00:22 +01:00
|
|
|
private JButton buttonReloadAllStreamData;
|
2015-11-12 15:48:37 +01:00
|
|
|
private JPanel panelPreviewImage;
|
|
|
|
|
private JButton buttonSettings;
|
|
|
|
|
private Thread updateThread;
|
2015-11-06 21:42:03 +01:00
|
|
|
|
2015-11-09 20:09:55 +01:00
|
|
|
protected JLabel getErrorLabel() {
|
|
|
|
|
return errorLabel;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private JLabel errorLabel;
|
2015-11-30 17:00:22 +01:00
|
|
|
private JButton buttonReloadStreamData;
|
2015-11-30 21:09:29 +01:00
|
|
|
private JButton vorherigerButton;
|
|
|
|
|
private JButton nächsterButton;
|
2015-11-30 17:34:20 +01:00
|
|
|
private boolean lockStreamInfoGetter = false;
|
2015-11-09 20:09:55 +01:00
|
|
|
|
|
|
|
|
public MainWindow() {
|
2015-11-16 15:44:25 +01:00
|
|
|
|
2015-11-30 17:00:22 +01:00
|
|
|
this.startUpdaterThread();
|
2015-11-16 15:44:25 +01:00
|
|
|
|
|
|
|
|
|
2015-11-09 20:09:55 +01:00
|
|
|
MainWindowGate.setMainWindow(this);
|
2015-11-16 15:44:25 +01:00
|
|
|
this.refreshComboBoxes();
|
2015-11-12 15:48:37 +01:00
|
|
|
buttonPlayStream.addActionListener(new ActionListener() {
|
2015-11-06 21:42:03 +01:00
|
|
|
@Override
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
2015-11-07 00:56:35 +01:00
|
|
|
StreamOpener so = new StreamOpener(ConfigFileInstanceHandler.getConfig(), ConfigFileInstanceHandler.getConfig().getStreams().indexOf(comboBoxStreams.getSelectedItem()), comboBoxQuality.getSelectedItem().toString());
|
2015-11-06 21:42:03 +01:00
|
|
|
so.start();
|
2015-11-12 21:57:07 +01:00
|
|
|
ErrorMessageGate.setErrorText("Starte Livestreamer für Channel \""+comboBoxStreams.getSelectedItem().toString()+"\"...");
|
2015-11-06 21:42:03 +01:00
|
|
|
}
|
|
|
|
|
});
|
2015-11-12 15:48:37 +01:00
|
|
|
buttonAddStream.addActionListener(new ActionListener() {
|
2015-11-06 21:42:03 +01:00
|
|
|
@Override
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
2015-11-06 22:16:23 +01:00
|
|
|
addNewStream();
|
2015-11-06 21:42:03 +01:00
|
|
|
}
|
|
|
|
|
});
|
2015-11-12 15:48:37 +01:00
|
|
|
buttonRemoveStream.addActionListener(new ActionListener() {
|
2015-11-06 21:42:03 +01:00
|
|
|
@Override
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
2015-11-07 00:19:11 +01:00
|
|
|
ConfigFileInstanceHandler.getConfig().removeStream(comboBoxStreams.getSelectedItem());
|
2015-11-06 21:42:03 +01:00
|
|
|
ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig());
|
2015-11-07 00:56:35 +01:00
|
|
|
lockStreamInfoGetter = true;
|
2015-11-16 15:44:25 +01:00
|
|
|
refreshStreamsComboBox();
|
2015-11-07 00:56:35 +01:00
|
|
|
lockStreamInfoGetter = false;
|
2015-11-06 21:42:03 +01:00
|
|
|
}
|
|
|
|
|
});
|
2015-11-07 00:19:11 +01:00
|
|
|
comboBoxStreams.addActionListener(new ActionListener() {
|
2015-11-06 22:16:23 +01:00
|
|
|
@Override
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
2015-11-07 00:56:35 +01:00
|
|
|
if (!lockStreamInfoGetter) {
|
|
|
|
|
updateStreamDetails();
|
|
|
|
|
}
|
2015-11-06 22:16:23 +01:00
|
|
|
}
|
|
|
|
|
});
|
2015-11-30 17:00:22 +01:00
|
|
|
buttonReloadAllStreamData.addActionListener(new ActionListener() {
|
2015-11-06 22:16:23 +01:00
|
|
|
@Override
|
2015-11-09 20:09:55 +01:00
|
|
|
public void actionPerformed(ActionEvent e) {
|
2015-11-30 17:00:22 +01:00
|
|
|
startUpdaterThread();
|
2015-11-06 22:16:23 +01:00
|
|
|
}
|
|
|
|
|
});
|
2015-11-12 15:48:37 +01:00
|
|
|
buttonSettings.addActionListener(new ActionListener() {
|
2015-11-07 00:56:35 +01:00
|
|
|
@Override
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
2015-11-09 20:09:55 +01:00
|
|
|
SettingsWindow sw = new SettingsWindow();
|
|
|
|
|
sw.create();
|
2015-11-07 00:56:35 +01:00
|
|
|
}
|
|
|
|
|
});
|
2015-11-30 17:00:22 +01:00
|
|
|
buttonReloadStreamData.addActionListener(new ActionListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
|
updateStreamDetails();
|
|
|
|
|
}
|
|
|
|
|
});
|
2015-11-30 21:09:29 +01:00
|
|
|
nächsterButton.addActionListener(new ActionListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
|
if (comboBoxStreams.getSelectedIndex()!=ConfigFileInstanceHandler.getConfig().getStreams().size()-1) {
|
|
|
|
|
comboBoxStreams.setSelectedIndex(comboBoxStreams.getSelectedIndex() + 1);
|
|
|
|
|
} else {
|
|
|
|
|
comboBoxStreams.setSelectedIndex(0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
vorherigerButton.addActionListener(new ActionListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
|
if (comboBoxStreams.getSelectedIndex()!=0) {
|
|
|
|
|
comboBoxStreams.setSelectedIndex(comboBoxStreams.getSelectedIndex() - 1);
|
|
|
|
|
} else {
|
|
|
|
|
comboBoxStreams.setSelectedIndex(ConfigFileInstanceHandler.getConfig().getStreams().size()-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
2015-11-30 17:00:22 +01:00
|
|
|
}
|
|
|
|
|
private void startUpdaterThread() {
|
2015-11-30 17:34:20 +01:00
|
|
|
if (updateThread != null) {
|
|
|
|
|
if (updateThread.isAlive()) {
|
|
|
|
|
updateThread.interrupt();
|
|
|
|
|
Logger.print("Thread interrupted", this);
|
|
|
|
|
}
|
|
|
|
|
}
|
2015-11-30 17:00:22 +01:00
|
|
|
Runnable r = new Runnable() {
|
|
|
|
|
@Override
|
|
|
|
|
public void run() {
|
|
|
|
|
for (final StreamConfigItem sci :
|
|
|
|
|
ConfigFileInstanceHandler.getConfig().getStreams()) {
|
|
|
|
|
Runnable r2 = new Runnable() {
|
|
|
|
|
@Override
|
|
|
|
|
public void run() {
|
|
|
|
|
sci.refreshInfo();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
Thread t2 = new Thread(r2);
|
|
|
|
|
t2.start();
|
|
|
|
|
}
|
|
|
|
|
makeAPause(60000);
|
|
|
|
|
|
|
|
|
|
ConfigFileInstanceHandler.getConfig().replaceStreamList(
|
|
|
|
|
StreamConfigSorter.sortStreamItemArrayList(
|
|
|
|
|
ConfigFileInstanceHandler.getConfig().getStreams()
|
|
|
|
|
));
|
|
|
|
|
refreshComboBoxes();
|
|
|
|
|
}
|
|
|
|
|
private void makeAPause(long time) {
|
|
|
|
|
try {
|
2015-11-30 17:34:20 +01:00
|
|
|
Logger.print("schläft "+time/1000.0+" sek", this);
|
2015-11-30 17:00:22 +01:00
|
|
|
Thread.sleep(time);
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
Thread t = new Thread(r);
|
2015-11-30 17:34:20 +01:00
|
|
|
this.updateThread = t;
|
2015-11-30 17:00:22 +01:00
|
|
|
t.start();
|
2015-11-07 00:56:35 +01:00
|
|
|
}
|
|
|
|
|
private void updateStreamDetails() {
|
2015-11-12 15:48:37 +01:00
|
|
|
if (updateThread != null) {
|
|
|
|
|
if (updateThread.isAlive()) {
|
|
|
|
|
updateThread.interrupt();
|
2015-11-30 17:34:20 +01:00
|
|
|
Logger.print("Thread interrupted" , this);
|
2015-11-12 15:48:37 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Runnable r = new Runnable() {
|
|
|
|
|
@Override
|
|
|
|
|
public void run() {
|
2015-11-16 15:44:25 +01:00
|
|
|
//StreamInfo.initStreamData(comboBoxStreams.getSelectedItem().toString());
|
|
|
|
|
StreamConfigItem sci = (StreamConfigItem) comboBoxStreams.getSelectedItem();
|
|
|
|
|
sci.refreshInfo();
|
|
|
|
|
textFieldStreamStatus.setText(sci.getStatusString());
|
|
|
|
|
textFieldStreamGame.setText(sci.getCategory());
|
|
|
|
|
textFieldStreamViewers.setText(""+sci.getViewers()); // TODO: schöner machen
|
|
|
|
|
textFieldStreamTitle.setText(sci.getTitle());
|
|
|
|
|
panelPreviewImage.getGraphics().drawImage(sci.getPreviewImage(),0,0,null);
|
|
|
|
|
ErrorMessageGate.setErrorText("Stream-Daten von "+sci.getName()+ " geladen/aktualisiert.");
|
2015-11-12 15:48:37 +01:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
Thread t = new Thread(r);
|
|
|
|
|
this.updateThread = t;
|
|
|
|
|
t.start();
|
|
|
|
|
ErrorMessageGate.setErrorText("Lade Stream-Daten von " + comboBoxStreams.getSelectedItem().toString() + "...");
|
2015-11-06 22:16:23 +01:00
|
|
|
}
|
|
|
|
|
private void addNewStream() {
|
2015-11-09 20:09:55 +01:00
|
|
|
AddStreamDialog as = new AddStreamDialog();
|
|
|
|
|
as.create();
|
2015-11-06 22:16:23 +01:00
|
|
|
}
|
2015-11-16 15:44:25 +01:00
|
|
|
private void refreshComboBoxes() {
|
2015-11-30 17:00:22 +01:00
|
|
|
lockStreamInfoGetter = true;
|
2015-11-16 15:44:25 +01:00
|
|
|
refreshQualityComboBox();
|
|
|
|
|
refreshStreamsComboBox();
|
2015-11-30 17:00:22 +01:00
|
|
|
lockStreamInfoGetter = false;
|
2015-11-06 21:42:03 +01:00
|
|
|
}
|
2015-11-16 15:44:25 +01:00
|
|
|
protected void refreshStreamsComboBox() {
|
2015-11-30 17:00:22 +01:00
|
|
|
Object o = comboBoxStreams.getSelectedItem();
|
2015-11-07 00:19:11 +01:00
|
|
|
comboBoxStreams.removeAllItems();
|
2015-11-16 15:44:25 +01:00
|
|
|
for (StreamConfigItem stream :
|
2015-11-06 21:42:03 +01:00
|
|
|
ConfigFileInstanceHandler.getConfig().getStreams()) {
|
2015-11-16 15:44:25 +01:00
|
|
|
comboBoxStreams.addItem(stream);
|
2015-11-06 21:42:03 +01:00
|
|
|
}
|
2015-11-30 21:09:29 +01:00
|
|
|
if (o != null) {
|
|
|
|
|
comboBoxStreams.setSelectedItem(o);
|
2015-11-30 21:55:54 +01:00
|
|
|
} else if (comboBoxStreams.getItemCount()>0) {
|
2015-11-30 21:09:29 +01:00
|
|
|
comboBoxStreams.setSelectedIndex(0);
|
|
|
|
|
}
|
2015-11-06 22:16:23 +01:00
|
|
|
}
|
2015-11-16 15:44:25 +01:00
|
|
|
private void refreshQualityComboBox() {
|
2015-11-07 00:56:35 +01:00
|
|
|
comboBoxQuality.removeAllItems();
|
|
|
|
|
comboBoxQuality.addItem("best"); comboBoxQuality.addItem("high"); comboBoxQuality.addItem("medium"); comboBoxQuality.addItem("low"); comboBoxQuality.addItem("mobile");
|
2015-11-06 21:42:03 +01:00
|
|
|
}
|
|
|
|
|
public static void main(String[] args) {
|
2015-11-09 20:09:55 +01:00
|
|
|
JFrame frame = new JFrame("jLSLauncher "+ com.ixab.Main.getVersion());
|
|
|
|
|
frame.setContentPane(new MainWindow().panel);
|
2015-11-06 21:42:03 +01:00
|
|
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
|
|
|
frame.pack();
|
2015-11-06 22:16:23 +01:00
|
|
|
frame.setLocationByPlatform(true);
|
2015-11-06 21:42:03 +01:00
|
|
|
frame.setVisible(true);
|
2015-11-09 20:09:55 +01:00
|
|
|
frame.setResizable(false);
|
2015-11-06 21:42:03 +01:00
|
|
|
}
|
2015-11-06 18:15:26 +01:00
|
|
|
}
|