TreeView Plugin

Hier haben Plugin-Entwickler die Möglichkeit, sich auszutauschen.
ds10
Site Admin
Beiträge: 19095
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Beitrag von ds10 »

Das Tree-View Fenster ist momentan nicht in der Fensterhierarchie eingebunden, da du ein JFrame verwendest. Dadurch verschwindet das Fenster im Hintergrund von TV-Browser, wenn man das Sendunginfo-Fenster per Kontextmenü aufruft. Wenn du das Fenster in einen JDialog umwandelst und diesem das MainFrame (per getParentFrame() in Plugin) als parent Window zuweist, würde das nicht mehr auftreten. Dann würde das Tree-View Fenster allerdings immer im Vordergrund des Hauptfensters liegen.

Musst du natürlich selber wissen, ob dir das so wie es jetzt ist oder wie vorgeschlagen besser gefällt. ;-)
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Matt
Junior Member
Beiträge: 25
Registriert: 09 Apr 2007, 15:43

Beitrag von Matt »

Anfangs hatte ich das Fenster sogar als JDialog implementiert. Allerdings haben mich dabei die fehlenden minimieren/maximieren Knöpfe gestört. Nachdem das Plugin mittlerweile aber die Einstellungen speichert, ist das eigentlich nicht mehr wichtig. Man kann es schließlich auch einfach wieder öffnen. Ich werde es wohl wieder zum JDialog umbauen.
Matt
Junior Member
Beiträge: 25
Registriert: 09 Apr 2007, 15:43

Beitrag von Matt »

...und die neue Version wäre fertig. Die Änderungen:
-Markierte Sendungen werden in Fettschrift angezeigt
-Gerade laufende Sendungen werden blau unterlegt
-Die nächsten Sendungen werden grün unterlegt
-Die Sendungsinformationen werden nicht mehr in einer Zeile angezeigt
-Der Tag ab dem die Programme dargestellt werden kann ausgewählt werden
-Kanalliste hat Sendericons bekommen
-JDialog statt JFrame
Bananeweizen
Site Admin
Beiträge: 3353
Registriert: 09 Sep 2006, 22:45

Beitrag von Bananeweizen »

Schick. Wird mit jeder Version besser.

Über TvDataBase.getInstance().dataAvailable(date) kannst du rausfinden, welche Tage du überhaupt in der Combobox auflisten brauchst (weil die anderen Tage keine Daten haben).

Ciao, Michael.
ds10
Site Admin
Beiträge: 19095
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Beitrag von ds10 »

Bananeweizen hat geschrieben:Über TvDataBase.getInstance().dataAvailable(date) kannst du rausfinden, welche Tage du überhaupt in der Combobox auflisten brauchst (weil die anderen Tage keine Daten haben).
Naja, kann er eigentlich nicht, da ein Plugin keine Kernklassen benutzen soll.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Bananeweizen
Site Admin
Beiträge: 3353
Registriert: 09 Sep 2006, 22:45

Beitrag von Bananeweizen »

Per Iterieren über PluginManager.getChannelDayProgram(Date, Channel) kann er es auch von einem Plugin herausfinden. Ist allerdings nicht ganz so komfortabel. Von daher würde ich eher vorschlagen, die dataAvailable-Methode am devPlugin bekannt zu machen.
Bananeweizen
Site Admin
Beiträge: 3353
Registriert: 09 Sep 2006, 22:45

Beitrag von Bananeweizen »

Noch was gefunden: Die Channel-Icons werden nicht normiert/skaliert. Abonnier mal Bayern 1 oder Nickelodeon, die haben riesige Logos (sowohl in der Kanalliste als auch bei den Titeln).

Ciao, Michael.
Matt
Junior Member
Beiträge: 25
Registriert: 09 Apr 2007, 15:43

Beitrag von Matt »

Das mit der Skalierung ist ein Punkt. Die riesigen Icons hatte ich tatsächlich übersehen und nur dafür gesorgt, dass alles ordentlich untereinander steht. Ich schau mir mal an wie das mit der Skalierung funktioniert. Vielleicht kann mir auch noch jemand einen Tipp geben: Bei ein paar Kanälen bekomme ich über Channel.getIcon/getDefaultIcon() kein Icon zurück. Im TV-Browser wird bei den Kanälen das TV-Browser Icon eingeblendet. Gibt es eine Methode über die ich das TV-Browser Icon als Default abfragen kann oder geht das nur über Plugin.createImageIcon?

Was die getDataAvailable(date) Methode angeht, würde ich mir eher eine Methode wünschen die direkt das Datum zurück gibt bis zu dem Daten auf den abonnierten Kanälen vorhanden sind. Also mehr so Date getMaxDateAvailable();
Die PluginManager.getChannelDayProgram(Date, Channel) Methode verwende ich schon beim Aufbau des Baumes und dem Errechnen des Enddatums in der Titelleiste. Das an der Stelle noch einzubauen ist also kein großer Aufwand. Ich überleg nur gerade wie groß die gesammelten Program Objekte sind und ob ich damit einen Peak beim Speicherverbrauch erzeuge. Letzteres ist immer noch ein Problem des Plugins.
Bananeweizen
Site Admin
Beiträge: 3353
Registriert: 09 Sep 2006, 22:45

Beitrag von Bananeweizen »

Ich hätte mal wieder Feedback (zur 0.30):
* Ein paar Senderlogos werden jetzt zu groß gezogen (RTL2, Pro7 und ähnliche kleine Logos).
* Die Plugin-Einstellungen sind nicht komplett sichtbar auf meinem Laptop. Statt jeweils 2 Optionen nebeneinander sollten alle untereinander stehen.
* Das Label vor der Checkbox (in den Einstellungen) finde ich ungewöhnlich. Ich würde es entfernen und den Text ganz normal an die Checkbox packen.
Matt
Junior Member
Beiträge: 25
Registriert: 09 Apr 2007, 15:43

Beitrag von Matt »

Die drei Punkte sind in der Version 0.31 geändert. Sonstige neue Features gibt es keine, einfach deshalb weil mir keine sinnvollen Erweiterungen für das Plugin mehr einfallen :)
Bananeweizen
Site Admin
Beiträge: 3353
Registriert: 09 Sep 2006, 22:45

Beitrag von Bananeweizen »

Matt hat geschrieben:Die drei Punkte sind in der Version 0.31 geändert.
Danke.
Sonstige neue Features gibt es keine, einfach deshalb weil mir keine sinnvollen Erweiterungen für das Plugin mehr einfallen :)
Wenn das alles ist, dann hätte ich noch Vorschläge. :)
Auf meinem alten Laptop dauert das Update beim Senderwechsel über eine Sekunde. Das ist für sich betrachtet durchaus ok. Aber das Update wird nicht abgebrochen, wenn bereits was anderes Sache ist. Soll heißen, wenn ich zwei Sekunden auf meine Cursortaste drücke, dann kann ich danach eine halbe Minute zuschauen, wie im Sekundentakt die Sendermarkierung weiterscrollt und ein neues Update kommt. Wäre schön, wenn man das irgendwie besser handhaben könnte, zum Beispiel durch Auslagern des Updates in einen neuen Thread, der unterbrochen wird, wenn schon das nächste Update ansteht.

Und was ebenfalls genial wäre, das wäre die Anzeige des Baumes in der Plugin-Ansicht, also dem Baum, der links im Hauptfenster ist. Da könntest du ja immer eine Kopie der aktuell im Dialog erstellten Daten anzeigen.

Ciao, Michael.
Matt
Junior Member
Beiträge: 25
Registriert: 09 Apr 2007, 15:43

Beitrag von Matt »

Bananeweizen hat geschrieben: Auf meinem alten Laptop dauert das Update beim Senderwechsel über eine Sekunde. Das ist für sich betrachtet durchaus ok. Aber das Update wird nicht abgebrochen, wenn bereits was anderes Sache ist. Soll heißen, wenn ich zwei Sekunden auf meine Cursortaste drücke, dann kann ich danach eine halbe Minute zuschauen, wie im Sekundentakt die Sendermarkierung weiterscrollt und ein neues Update kommt. Wäre schön, wenn man das irgendwie besser handhaben könnte, zum Beispiel durch Auslagern des Updates in einen neuen Thread, der unterbrochen wird, wenn schon das nächste Update ansteht.
So ein zwei Ideen um dem Problem abzuhelfen habe ich. Vermutlich läßt sich da was machen.
Bananeweizen hat geschrieben: Und was ebenfalls genial wäre, das wäre die Anzeige des Baumes in der Plugin-Ansicht, also dem Baum, der links im Hauptfenster ist. Da könntest du ja immer eine Kopie der aktuell im Dialog erstellten Daten anzeigen.
Eine "Light" Version des Trees lässt sich wohl machen. Mit dem Baum habe ich auch schon etwas experimentiert und hatte überlegt die markierten Sendungen über HTML Dokumente in den Nodes fett zu markieren. Das Problem ist, dass dann der Text der Knoten manchmal verschwindet. Ausprobieren kann man das indem man dem Root-Knoten sowas hinzufügt:

Code: Alles auswählen

ptRoot.add(new PluginTreeNode("<html><body><b>Child1</b></body></html>"));
ptRoot.add(new PluginTreeNode("<html><body><b>Child2</b></body></html>"));
Das ist ein bekanntes Problem bei Java: http://bugs.sun.com/bugdatabase/view_bu ... id=4743195. Wenn man den beschriebenen Workaround in der Klasse PluginView einbaut, würde das auch funktionieren. Mit Java 1.6 funktioniert es übrigens auch ohne Workaround.

Die Frage ist, ob die Plugins die Möglichkeit haben sollten im Baum mit HTML arbeiten zu können oder nicht. Ich könnte mir auch für andere Plugins einige interessante Anwendungen dafür vorstellen.
Bananeweizen
Site Admin
Beiträge: 3353
Registriert: 09 Sep 2006, 22:45

Beitrag von Bananeweizen »

Das Markieren der Knoten im PluginView halte ich nicht für sinnvoll. Genau deswegen stellt dort ja jedes Plugin _seine_ Knoten dar, während du versuchen willst, die Ausgaben der anderen Plugins mit zu übernehmen. Das passt weder zum Style und Design der restlichen Ausgaben im Pluginview noch zu der funktionalen Aufteilung der Knoten in dem Baum (auf oberster Ebene).
Von daher möchte ich dringend davon abraten.
Matt
Junior Member
Beiträge: 25
Registriert: 09 Apr 2007, 15:43

Beitrag von Matt »

Eben habe ich die Version 0.32b hoch geladen. Das Blättern sollte jetzt schneller gehen (extra Thread). Außerdem kopiert das Plugin beim Schließen seinen aktuellen Inhalt in den PluginTree. Zusätzlich gibt es noch einen Fix für Kanäle die keine Daten haben.

Gruß,
Matt
Bananeweizen
Site Admin
Beiträge: 3353
Registriert: 09 Sep 2006, 22:45

Beitrag von Bananeweizen »

Hi Matt,

ich habe die neue Version wieder getestet. Die Anzeige im PluginTree funktioniert soweit wie von dir beschrieben. Die Sendungsknoten haben momentan noch ein Ordnersymbol und bringen kein Kontextmenü für Sendungen. Deswegen vermute ich, dass die zugehörigen Knoten nicht als Sendungstyp gekennzeichnet sind.

Ob es schneller ist, kann ich noch nicht genau sagen, da ich erst Dienstag wieder an den anderen Laptop komme (auf dem ich das zuletzt getestet hatte).
Mir scheint aber, es ist nicht wirklich schneller geworden. Ich sitze hier gerade an einem recht zügigen Notebook und auch auf dem habe ich noch bemerkbare Pausen zwischen den einzelnen Sendern (soll heißen, es dauert einige Male länger, als wenn ich durch Klicken auf die Pfeile der vertikalen Scrollbar die Liste nach oben oder unten scrolle). Das eigentlich interessante daran ist, ich habe nur einen einzigen Tag für die Anzeige ausgewählt und die Pausen habe ich sogar bei einer Liste von Sendern, die überhaupt keine TV-Daten enthalten, d.h. das Plugin müsste eigentlich immer im Nullkommanix zu seiner Ausgabe "Sendungen (0)" kommen. Tut es aber leider nicht. (Vielleicht liegt es auch an der Anzahl der insgesamt abonnierten Sender, ich habe auf dieser Installation alle verfügbaren Sender abonniert.)

Ansonsten hätte ich noch einen Nachtrag zu der Sache mit den Icons. Die Icons, die neulich noch komplett in die Breite gezogen waren, sind immer noch nicht vollkommen korrekt. Sie sind noch leicht zu breit. Wenn man sich ProSieben in der Senderliste anschaut, ist die 7 höher als breit, bei dir im Plugin ist es umgekehrt.

Und dann habe ich noch einen Optimierungsvorschlag: Du bekommst ja beim Erstellen des Baumes heraus, ob überhaupt Genres vorhanden sind. Wenn du dir diese Info merkst, dann kannst du beim Klick auf die Checkbox "Nur Titel anzeigen" das Update komplett weglassen, sofern vorher keine Genres gefunden worden. Denn dann stehen schon nur Titel im Baum und es ist egal, wie die Checkbox "Nur Titel" gesetzt wird. Die Anzeige wird sich in so einem Fall nicht ändern.

Ciao, Michael.

PS: Nicht ärgern, wenn ich nur negative Sachen aufzähle. Ich versuche lediglich, dem Umstand abzuhelfen, dass du keine Ideen mehr für Verbesserungen hast, wie zuletzt angemerkt. :)

PPS: Wenn du die Quelltexte von deinem Plugin offenlegen willst, dann könnte ich das Plugin auch im Quellcode bei mir durch den Profiler jagen, um zu schauen, wo die Pause herkommt.
Antworten