This repository has been archived on 2018-03-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
jLSLauncher/src/com/ixab/GUI/MainWindow.java
T

224 lines
8.6 KiB
Java
Raw Normal View History

2015-11-06 18:15:26 +01:00
package com.ixab.GUI;
import com.ixab.ConfigHandling.ConfigFileIOHandler;
import com.ixab.ConfigHandling.ConfigFileInstanceHandler;
import com.ixab.ConfigHandling.StreamConfigItem;
import com.ixab.ConfigHandling.StreamConfigSorter;
import com.ixab.Logging.Logger;
import com.ixab.StreamHandling.StreamOpener;
import javafx.event.EventDispatcher;
import javax.swing.*;
2015-11-07 00:56:35 +01:00
import java.awt.event.*;
2015-11-09 20:09:55 +01:00
public class MainWindow {
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;
private JButton buttonAddStream;
private JButton buttonPlayStream;
private JButton buttonRemoveStream;
private JTextField textFieldStreamStatus;
private JTextField textFieldStreamViewers;
private JTextField textFieldStreamTitle;
private JTextField textFieldStreamGame;
private JButton buttonReloadAllStreamData;
private JPanel panelPreviewImage;
private JButton buttonSettings;
private Thread updateThread;
2015-11-09 20:09:55 +01:00
protected JLabel getErrorLabel() {
return errorLabel;
}
private JLabel errorLabel;
private JButton buttonReloadStreamData;
2015-11-30 21:09:29 +01:00
private JButton vorherigerButton;
private JButton nächsterButton;
private boolean lockStreamInfoGetter = false;
2015-11-09 20:09:55 +01:00
public MainWindow() {
this.startUpdaterThread();
2015-11-09 20:09:55 +01:00
MainWindowGate.setMainWindow(this);
this.refreshComboBoxes();
buttonPlayStream.addActionListener(new ActionListener() {
@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());
so.start();
2015-11-12 21:57:07 +01:00
ErrorMessageGate.setErrorText("Starte Livestreamer für Channel \""+comboBoxStreams.getSelectedItem().toString()+"\"...");
}
});
buttonAddStream.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addNewStream();
}
});
buttonRemoveStream.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
2015-11-07 00:19:11 +01:00
ConfigFileInstanceHandler.getConfig().removeStream(comboBoxStreams.getSelectedItem());
ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig());
2015-11-07 00:56:35 +01:00
lockStreamInfoGetter = true;
refreshStreamsComboBox();
2015-11-07 00:56:35 +01:00
lockStreamInfoGetter = false;
}
});
2015-11-07 00:19:11 +01:00
comboBoxStreams.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
2015-11-07 00:56:35 +01:00
if (!lockStreamInfoGetter) {
updateStreamDetails();
}
}
});
buttonReloadAllStreamData.addActionListener(new ActionListener() {
@Override
2015-11-09 20:09:55 +01:00
public void actionPerformed(ActionEvent e) {
startUpdaterThread();
}
});
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
}
});
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);
}
}
});
}
private void startUpdaterThread() {
if (updateThread != null) {
if (updateThread.isAlive()) {
updateThread.interrupt();
Logger.print("Thread interrupted", this);
}
}
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 {
Logger.print("schläft "+time/1000.0+" sek", this);
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
Thread t = new Thread(r);
this.updateThread = t;
t.start();
2015-11-07 00:56:35 +01:00
}
private void updateStreamDetails() {
if (updateThread != null) {
if (updateThread.isAlive()) {
updateThread.interrupt();
Logger.print("Thread interrupted" , this);
}
}
Runnable r = new Runnable() {
@Override
public void run() {
//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.");
}
};
Thread t = new Thread(r);
this.updateThread = t;
t.start();
ErrorMessageGate.setErrorText("Lade Stream-Daten von " + comboBoxStreams.getSelectedItem().toString() + "...");
}
private void addNewStream() {
2015-11-09 20:09:55 +01:00
AddStreamDialog as = new AddStreamDialog();
as.create();
}
private void refreshComboBoxes() {
lockStreamInfoGetter = true;
refreshQualityComboBox();
refreshStreamsComboBox();
lockStreamInfoGetter = false;
}
protected void refreshStreamsComboBox() {
Object o = comboBoxStreams.getSelectedItem();
2015-11-07 00:19:11 +01:00
comboBoxStreams.removeAllItems();
for (StreamConfigItem stream :
ConfigFileInstanceHandler.getConfig().getStreams()) {
comboBoxStreams.addItem(stream);
}
2015-11-30 21:09:29 +01:00
if (o != null) {
comboBoxStreams.setSelectedItem(o);
} else if (comboBoxStreams.getItemCount()>0) {
2015-11-30 21:09:29 +01:00
comboBoxStreams.setSelectedIndex(0);
}
}
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");
}
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);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
2015-11-09 20:09:55 +01:00
frame.setResizable(false);
}
2015-11-06 18:15:26 +01:00
}