Seite 1 von 1

Tabs für Plug-Ins

Verfasst: 21 Okt 2012, 15:35
von hampelratte
Hallo,

was muss ich denn machen, damit mein Plugin Tabs anzeigen kann. Ich habe die Methode getPluginCenterPanelWrapper() implementiert. Es werden aber trotzdem keine Tabs angezeigt und in den Einstellungen tauchen sie auch nicht auf. So wie es aussieht, macht das Favoriten-Plugin auch nichts anderes. Hab ich noch etwas übersehen?

Gruß
Henrik

Re: Tabs für Plug-Ins

Verfasst: 21 Okt 2012, 17:21
von ds10
Es muss eine eindeutige eigene Klasse für PluginCenterPanel geben, also eine eigene Klasse des Plugins, ein gutes Beispiel ist dafür das ProgramListPlugin:
http://sourceforge.net/p/tvbrowser/code ... lugin.java

Interessant sind hier insbesondere die Methoden onActivation(), addPanel() und am Ende die Erstellung der eigenen Klasse für PluginCenterPanel.

Es ist auch besser ein zusätzliches äußeres JPanel zu verwenden, das nicht davon abhängt, dass schon alle TV-Browser-Komponenten ordentlich aktiviert worden und dann erst nach handleTvBrowserStartFinished() das Panel mit der eigentlichen Anzeige dem äußeren Panel hinzuzufügen. Wenn sich das äußere Panel außerdem, wie z.B. die Lieblingssendungen, an die Persona-Farben anpassen soll, dann kann du das äußere JPanel mit UiUtilities.createPersonaBackgroundPanel(); anlegen.

Re: Tabs für Plug-Ins

Verfasst: 21 Okt 2012, 19:35
von hampelratte
Das war der entscheidende Hinweis. Ich hatte anonyme innere Klassen benutzt. Damit hat es nicht geklappt. Ich habe jetzt für jeden Tab eine Klasse angelegt und dann ging es. No offence, aber das scheint mir nicht ganz sauber umgesetzt zu sein. Wenn ich ein Interface implementiere, dann sollte das Ergebnis doch das gleiche sein, egal ob ich anonyme Klassen benutze oder dedizierte Klassen definiere.
Jedenfalls ist das Problem gelöst.

Danke und Gruß
Henrik

Re: Tabs für Plug-Ins

Verfasst: 21 Okt 2012, 19:50
von ds10
hampelratte hat geschrieben:No offence, aber das scheint mir nicht ganz sauber umgesetzt zu sein. Wenn ich ein Interface implementiere, dann sollte das Ergebnis doch das gleiche sein, egal ob ich anonyme Klassen benutze oder dedizierte Klassen definiere.
Schon klar, ich stand vor dem Problem, wie ich sicher stelle, dass die Tabs für die Plugins eindeutig zuzuordnen sind und dafür habe ich diesen Weg gewählt. Denn wenn man eigene Klassen verwenden muss, dann kann es nicht zu Kollisionen mit anderen Plugins kommen, was bei anderweitiger Implementation schwieriger zu verhindern gewesen wäre. Und außerdem ist PluginCenterPanel ja kein Interface sondern eine abstrakte Klasse. ;-) So wie es jetzt ist, ist die Folge, dass es eben nicht funktioniert und nicht gleich TV-Browser durcheinander bringt.