[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 { public class Config implements Serializable {
private String LSPath; private String LSPath;
private ArrayList<String> streamNames; private ArrayList<String> streamNames;
private ArrayList<StreamConfigItem> streamItems;
public Config() { public Config() {
this.streamNames = new ArrayList<String>(); this.streamNames = new ArrayList<String>();
this.streamItems = new ArrayList<StreamConfigItem>();
} }
public void setLSPath(String path) { public void setLSPath(String path) {
this.LSPath = path; this.LSPath = path;
@@ -17,19 +19,25 @@ public class Config implements Serializable {
} }
public String getStreamName(int streamIndex) { 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) { public void addStream(String streamName) {
this.streamItems.add(new StreamConfigItem(streamName));
this.streamNames.add(streamName); this.streamNames.add(streamName);
} }
public void removeStream(Object streamName) { public void removeStream(Object stream) {
this.streamNames.remove(streamName); this.streamItems.remove(stream);
this.streamNames.remove(stream);
} }
public ArrayList<String> getStreams() { public ArrayList<StreamConfigItem> getStreams() {
return this.streamNames; // public ArrayList<StreamConfigItem> getStreams() {
return this.streamItems;
// return this.streamNames;
} }
public int getStreamCount() { 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()); ConfigFileInstanceHandler.getConfig().addStream(textField1.getText());
ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig()); ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig());
MainWindowGate.getMainWindow().lockStreamInfoGetter = true; MainWindowGate.getMainWindow().lockStreamInfoGetter = true;
MainWindowGate.getMainWindow().initStreamsComboBox(); MainWindowGate.getMainWindow().refreshStreamsComboBox();
MainWindowGate.getMainWindow().lockStreamInfoGetter = false; MainWindowGate.getMainWindow().lockStreamInfoGetter = false;
ErrorMessageGate.setErrorText("Stream \""+textField1.getText()+"\" hinzugefügt."); ErrorMessageGate.setErrorText("Stream \""+textField1.getText()+"\" hinzugefügt.");
textField1.setText(""); textField1.setText("");
+50 -16
View File
@@ -2,6 +2,7 @@ package com.ixab.GUI;
import com.ixab.ConfigHandling.ConfigFileIOHandler; import com.ixab.ConfigHandling.ConfigFileIOHandler;
import com.ixab.ConfigHandling.ConfigFileInstanceHandler; import com.ixab.ConfigHandling.ConfigFileInstanceHandler;
import com.ixab.ConfigHandling.StreamConfigItem;
import com.ixab.StreamHandling.StreamInfo; import com.ixab.StreamHandling.StreamInfo;
import com.ixab.StreamHandling.StreamOpener; import com.ixab.StreamHandling.StreamOpener;
@@ -32,8 +33,39 @@ public class MainWindow {
protected boolean lockStreamInfoGetter = false; protected boolean lockStreamInfoGetter = false;
public MainWindow() { 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); MainWindowGate.setMainWindow(this);
this.initComboBoxes(); this.refreshComboBoxes();
buttonPlayStream.addActionListener(new ActionListener() { buttonPlayStream.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
@@ -54,7 +86,7 @@ public class MainWindow {
ConfigFileInstanceHandler.getConfig().removeStream(comboBoxStreams.getSelectedItem()); ConfigFileInstanceHandler.getConfig().removeStream(comboBoxStreams.getSelectedItem());
ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig()); ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig());
lockStreamInfoGetter = true; lockStreamInfoGetter = true;
initStreamsComboBox(); refreshStreamsComboBox();
lockStreamInfoGetter = false; lockStreamInfoGetter = false;
} }
}); });
@@ -89,13 +121,15 @@ public class MainWindow {
Runnable r = new Runnable() { Runnable r = new Runnable() {
@Override @Override
public void run() { public void run() {
StreamInfo.initStreamData(comboBoxStreams.getSelectedItem().toString()); //StreamInfo.initStreamData(comboBoxStreams.getSelectedItem().toString());
textFieldStreamStatus.setText(StreamInfo.getStatus()); StreamConfigItem sci = (StreamConfigItem) comboBoxStreams.getSelectedItem();
textFieldStreamGame.setText(StreamInfo.getGame()); sci.refreshInfo();
textFieldStreamViewers.setText(StreamInfo.getViewers()); textFieldStreamStatus.setText(sci.getStatusString());
textFieldStreamTitle.setText(StreamInfo.getTitle()); textFieldStreamGame.setText(sci.getCategory());
panelPreviewImage.getGraphics().drawImage(StreamInfo.getPreviewImage(),0,0,null); textFieldStreamViewers.setText(""+sci.getViewers()); // TODO: schöner machen
ErrorMessageGate.setErrorText("Stream-Daten von "+comboBoxStreams.getSelectedItem().toString() + " geladen/aktualisiert."); 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); Thread t = new Thread(r);
@@ -107,18 +141,18 @@ public class MainWindow {
AddStreamDialog as = new AddStreamDialog(); AddStreamDialog as = new AddStreamDialog();
as.create(); as.create();
} }
private void initComboBoxes() { private void refreshComboBoxes() {
initQualityComboBox(); refreshQualityComboBox();
initStreamsComboBox(); refreshStreamsComboBox();
} }
protected void initStreamsComboBox() { protected void refreshStreamsComboBox() {
comboBoxStreams.removeAllItems(); comboBoxStreams.removeAllItems();
for (String streamName : for (StreamConfigItem stream :
ConfigFileInstanceHandler.getConfig().getStreams()) { ConfigFileInstanceHandler.getConfig().getStreams()) {
comboBoxStreams.addItem(streamName); comboBoxStreams.addItem(stream);
} }
} }
private void initQualityComboBox() { private void refreshQualityComboBox() {
comboBoxQuality.removeAllItems(); comboBoxQuality.removeAllItems();
comboBoxQuality.addItem("best"); comboBoxQuality.addItem("high"); comboBoxQuality.addItem("medium"); comboBoxQuality.addItem("low"); comboBoxQuality.addItem("mobile"); 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()); ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig());
MainWindowGate.getMainWindow().lockStreamInfoGetter = true; MainWindowGate.getMainWindow().lockStreamInfoGetter = true;
MainWindowGate.getMainWindow().initStreamsComboBox(); MainWindowGate.getMainWindow().refreshStreamsComboBox();
MainWindowGate.getMainWindow().lockStreamInfoGetter = false; MainWindowGate.getMainWindow().lockStreamInfoGetter = false;
} }
buttonImportUserData.setText(old); buttonImportUserData.setText(old);
+1 -1
View File
@@ -47,7 +47,7 @@ public class StreamInfo {
} }
public static BufferedImage getPreviewImage() { public static BufferedImage getPreviewImage() {
if (streamPreviewData == null) { if (streamPreviewData == null) {
BufferedImage c = new BufferedImage(1,1,0); BufferedImage c = new BufferedImage(1,1,1);
return c; return c;
} else { } else {
URL url = null; URL url = null;