[MODIFIED] Neues Objekt für StreamDaten in Config, Daten werden nun schon teilweise bei Auswahl angezeigt

[ADDED] Updater-Thread
This commit is contained in:
da
2015-11-16 15:44:25 +01:00
parent 369e3ddd17
commit 5b2195650e
7 changed files with 150 additions and 58 deletions
+14 -6
View File
@@ -6,8 +6,10 @@ import java.util.ArrayList;
public class Config implements Serializable {
private String LSPath;
private ArrayList<String> streamNames;
private ArrayList<StreamConfigItem> streamItems;
public Config() {
this.streamNames = new ArrayList<String>();
this.streamItems = new ArrayList<StreamConfigItem>();
}
public void setLSPath(String path) {
this.LSPath = path;
@@ -17,19 +19,25 @@ public class Config implements Serializable {
}
public String getStreamName(int streamIndex) {
return this.streamNames.get(streamIndex);
return this.streamItems.get(streamIndex).getName();
//return this.streamNames.get(streamIndex);
}
public void addStream(String streamName) {
this.streamItems.add(new StreamConfigItem(streamName));
this.streamNames.add(streamName);
}
public void removeStream(Object streamName) {
this.streamNames.remove(streamName);
public void removeStream(Object stream) {
this.streamItems.remove(stream);
this.streamNames.remove(stream);
}
public ArrayList<String> getStreams() {
return this.streamNames;
public ArrayList<StreamConfigItem> getStreams() {
// public ArrayList<StreamConfigItem> getStreams() {
return this.streamItems;
// return this.streamNames;
}
public int getStreamCount() {
return this.streamNames.size();
return this.streamItems.size();
// return this.streamNames.size();
}
}
@@ -1,33 +0,0 @@
package com.ixab.ConfigHandling;
import com.ixab.StreamHandling.StreamInfo;
public class StreamConfig {
private String name;
public StreamConfig(String name) {
this.name = name;
}
public String toString() {
return name;
}
public String getInfo() {
StreamInfo.initStreamData(name);
StringBuilder sb = new StringBuilder();
sb.append(name);
sb.append(" - ");
String status = StreamInfo.getStatus();
sb.append(status);
if (!status.equals("offline")) {
sb.append(" playing ");
sb.append(StreamInfo.getGame());
sb.append(" with ");
sb.append(StreamInfo.getViewers());
sb.append(" Viewers");
}
return sb.toString();
}
}
@@ -0,0 +1,83 @@
package com.ixab.ConfigHandling;
import com.ixab.StreamHandling.StreamInfo;
import java.awt.image.BufferedImage;
import java.io.Serializable;
public class StreamConfigItem implements Serializable {
private String name;
private String title;
private boolean status;
private String category;
private int viewers;
private transient BufferedImage previewImage;
public StreamConfigItem(String name) {
this.getInfo();
this.name = name;
}
private void getInfo() {
StreamInfo.initStreamData(this.name);
String s = StreamInfo.getStatus();
if (s.equals("online")) {
this.status = true;
} else {
this.status = false;
}
this.viewers = Integer.parseInt(StreamInfo.getViewers());
this.title = StreamInfo.getTitle();
this.previewImage = StreamInfo.getPreviewImage();
this.category = StreamInfo.getGame();
}
public void refreshInfo() {
this.getInfo();
}
public String toString() {
return this.getInfoText();
}
public String getInfoText() {
StringBuilder sb = new StringBuilder();
sb.append(this.name);
sb.append(" - ");
sb.append(this.getStatusString());
if (this.status) {
//sb.append(" spielt ");
//sb.append(this.getCategory());
sb.append(" mit ");
sb.append(this.getViewers());
sb.append(" Zuschauern");
}
return sb.toString();
}
public String getName() {
return this.name;
}
public int getViewers() {
return this.viewers;
}
public String getCategory() {
return this.category;
}
public boolean getStatus() {
return this.status;
}
public String getStatusString() {
if (status) {
return "online";
} else {
return "offline";
}
}
public String getTitle() {
return this.title;
}
public BufferedImage getPreviewImage() {
return this.previewImage;
}
}
+1 -1
View File
@@ -49,7 +49,7 @@ public class AddStreamDialog extends JDialog {
ConfigFileInstanceHandler.getConfig().addStream(textField1.getText());
ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig());
MainWindowGate.getMainWindow().lockStreamInfoGetter = true;
MainWindowGate.getMainWindow().initStreamsComboBox();
MainWindowGate.getMainWindow().refreshStreamsComboBox();
MainWindowGate.getMainWindow().lockStreamInfoGetter = false;
ErrorMessageGate.setErrorText("Stream \""+textField1.getText()+"\" hinzugefügt.");
textField1.setText("");
+50 -16
View File
@@ -2,6 +2,7 @@ package com.ixab.GUI;
import com.ixab.ConfigHandling.ConfigFileIOHandler;
import com.ixab.ConfigHandling.ConfigFileInstanceHandler;
import com.ixab.ConfigHandling.StreamConfigItem;
import com.ixab.StreamHandling.StreamInfo;
import com.ixab.StreamHandling.StreamOpener;
@@ -32,8 +33,39 @@ public class MainWindow {
protected boolean lockStreamInfoGetter = false;
public MainWindow() {
//TODO: Updater thread
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);
}
private void makeAPause(long time) {
try {
System.out.println("schläft "+time/1000.0+" sek");
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
Thread t = new Thread(r);
t.start();
MainWindowGate.setMainWindow(this);
this.initComboBoxes();
this.refreshComboBoxes();
buttonPlayStream.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
@@ -54,7 +86,7 @@ public class MainWindow {
ConfigFileInstanceHandler.getConfig().removeStream(comboBoxStreams.getSelectedItem());
ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig());
lockStreamInfoGetter = true;
initStreamsComboBox();
refreshStreamsComboBox();
lockStreamInfoGetter = false;
}
});
@@ -89,13 +121,15 @@ public class MainWindow {
Runnable r = new Runnable() {
@Override
public void run() {
StreamInfo.initStreamData(comboBoxStreams.getSelectedItem().toString());
textFieldStreamStatus.setText(StreamInfo.getStatus());
textFieldStreamGame.setText(StreamInfo.getGame());
textFieldStreamViewers.setText(StreamInfo.getViewers());
textFieldStreamTitle.setText(StreamInfo.getTitle());
panelPreviewImage.getGraphics().drawImage(StreamInfo.getPreviewImage(),0,0,null);
ErrorMessageGate.setErrorText("Stream-Daten von "+comboBoxStreams.getSelectedItem().toString() + " geladen/aktualisiert.");
//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);
@@ -107,18 +141,18 @@ public class MainWindow {
AddStreamDialog as = new AddStreamDialog();
as.create();
}
private void initComboBoxes() {
initQualityComboBox();
initStreamsComboBox();
private void refreshComboBoxes() {
refreshQualityComboBox();
refreshStreamsComboBox();
}
protected void initStreamsComboBox() {
protected void refreshStreamsComboBox() {
comboBoxStreams.removeAllItems();
for (String streamName :
for (StreamConfigItem stream :
ConfigFileInstanceHandler.getConfig().getStreams()) {
comboBoxStreams.addItem(streamName);
comboBoxStreams.addItem(stream);
}
}
private void initQualityComboBox() {
private void refreshQualityComboBox() {
comboBoxQuality.removeAllItems();
comboBoxQuality.addItem("best"); comboBoxQuality.addItem("high"); comboBoxQuality.addItem("medium"); comboBoxQuality.addItem("low"); comboBoxQuality.addItem("mobile");
}
+1 -1
View File
@@ -75,7 +75,7 @@ public class SettingsWindow extends JDialog {
}
ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig());
MainWindowGate.getMainWindow().lockStreamInfoGetter = true;
MainWindowGate.getMainWindow().initStreamsComboBox();
MainWindowGate.getMainWindow().refreshStreamsComboBox();
MainWindowGate.getMainWindow().lockStreamInfoGetter = false;
}
buttonImportUserData.setText(old);
+1 -1
View File
@@ -47,7 +47,7 @@ public class StreamInfo {
}
public static BufferedImage getPreviewImage() {
if (streamPreviewData == null) {
BufferedImage c = new BufferedImage(1,1,0);
BufferedImage c = new BufferedImage(1,1,1);
return c;
} else {
URL url = null;