Baum-Schnittstelle

Hier haben Plugin-Entwickler die Möglichkeit, sich auszutauschen.
Antworten
Bananeweizen
Site Admin
Beiträge: 3353
Registriert: 09 Sep 2006, 22:45

Beitrag von Bananeweizen » 06 Apr 2008, 14:29

bodo hat geschrieben:ich behebe den morgen mit einem Work-Around.
Bodo, ich weiß ja nicht, was du da treibst, aber für mich sieht es aus, als ob du konsequent gegen die Plugin-Schnittstelle verstößt. Wenn man "canUseProgramTree" implementiert, muss man auch "getRootNode" implementieren. Schließlich kann nichts angezeigt werden, solange du nicht sagst was.
Und wenn einfach nur alle von einem Plugin markierten Sendungen im Baum angezeigt werden sollen (wie beim Perlen-Plugin), dann braucht man auch "canUseProgramTree" nicht implementieren.

Von daher finde ich den aktuellen Stand nicht wirklich schlüssig und hatte genau deshalb gestern das "canUseProgramTree" rausgenommen.

Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo » 06 Apr 2008, 14:47

Aber wenn ich das nicht auf true stelle, wird der Wirschauen-Rootnode in meinem Baum nicht angezeigt ?!

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

Beitrag von Bananeweizen » 06 Apr 2008, 14:54

Ja, warum denn auch? Wenn du keine Sendungen zum Anzeigen hast (d.h. keine markierten und auch keine, die sonst irgendwie sortiert in den Baum sollen), braucht es doch auch keinen Baum. Und die Schnittstelle _verlangt_ nunmal, dass du auch einen bauen musst, wenn du das auf "true" stellst. Die Variante mit dem Laden aus dem Stream funktioniert nämlich auch nicht, weil es da nix zu laden gibt.

Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo » 06 Apr 2008, 15:01

Also die Sache ist die: wenn ich kein True angebe, wird nie ein Baum angezeigt. Niemals. Auch wenn ich Einträge in den Baum packe.

in canUseProgramTree steht auch nicht, das ich getRootNode überschreiben müsse im JavaDoc. Würde ja auch die Arbeit erschweren. Die Default-Implementation von getRootNode reicht doch vollkommen aus. Wieso muss ich dann also getRootNode überschreiben, wenn es das schon gibt?

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

Beitrag von Bananeweizen » 06 Apr 2008, 15:28

Ok, du hast Recht. Ich habe die Stelle übersehen, an der du die Sendungsknoten einfügst.

Was mich daran irritiert, ist die Tatsache, dass ich vorhin aus der Ecke nochmal eine Exception bekommen habe (ich denke, beim Laden des Streams), obwohl ich die Stelle mit der Nullpointer-Prüfung beim Speichern des Baumes schon nachgeladen hatte. Ich habe leider nicht weiter drauf geschaut und jetzt klappt natürlich plötzlich alles.

Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo » 06 Apr 2008, 15:57

1. Sorry, hab den Thread nochmal verschoben, im englischen Bereich war der Falsch ;)

2. Kannst du versuchen, diese Nullpointer nochmal zu provozieren indem du alle Einstellungen des Plugins löscht?

A.J.
Gold Member
Beiträge: 276
Registriert: 16 Apr 2006, 18:49

Beitrag von A.J. » 06 Apr 2008, 18:16

Ist das die Exception um die es geht?

Code: Alles auswählen

Datei 'E:\Dokumente und Einstellungen\Andreas Jung\TV-Browser\2.6.3\java.wirschauenplugin.WirSchauenPlugin.node' konnte nicht geschrieben werden.

----- Start of stacktrace -----
java.io.EOFException
  at java.io.DataInputStream.readInt(Unknown Source)
  at java.io.ObjectInputStream$BlockDataInputStream.readInt(Unknown Source)
  at java.io.ObjectInputStream.readInt(Unknown Source)
  at devplugin.PluginTreeNode.load(PluginTreeNode.java:669)
  at devplugin.Plugin.getRootNode(Plugin.java:870)
  at tvbrowser.core.plugin.JavaPluginProxy.getRootNode(JavaPluginProxy.java:474)
  at tvbrowser.ui.pluginview.PluginTreeModel.addPluginTree(PluginTreeModel.java:112)
  at tvbrowser.ui.pluginview.PluginView.insertPluginRootNodes(PluginView.java:120)
  at tvbrowser.ui.pluginview.PluginView.<init>(PluginView.java:77)
  at tvbrowser.ui.mainframe.MainFrame.setShowPluginOverview(MainFrame.java:1796)
  at tvbrowser.ui.mainframe.MainFrame.setShowPluginOverview(MainFrame.java:1781)
  at tvbrowser.ui.mainframe.toolbar.DefaultToolBarModel.actionPerformed(DefaultToolBarModel.java:570)
  at tvbrowser.ui.mainframe.toolbar.DefaultToolBarModel$8.actionPerformed(DefaultToolBarModel.java:545)
  at tvbrowser.ui.mainframe.toolbar.ToolBar$6.actionPerformed(ToolBar.java:459)
  at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
  at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
  at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
  at javax.swing.JToggleButton$ToggleButtonModel.setPressed(Unknown Source)
  at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
  at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
  at java.awt.Component.processMouseEvent(Unknown Source)
  at javax.swing.JComponent.processMouseEvent(Unknown Source)
  at java.awt.Component.processEvent(Unknown Source)
  at java.awt.Container.processEvent(Unknown Source)
  at java.awt.Component.dispatchEventImpl(Unknown Source)
  at java.awt.Container.dispatchEventImpl(Unknown Source)
  at java.awt.Component.dispatchEvent(Unknown Source)
  at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
  at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
  at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
  at java.awt.Container.dispatchEventImpl(Unknown Source)
  at java.awt.Window.dispatchEventImpl(Unknown Source)
  at java.awt.Component.dispatchEvent(Unknown Source)
  at java.awt.EventQueue.dispatchEvent(Unknown Source)
  at util.ui.textcomponentpopup.TextComponentPopupEventQueue.dispatchEvent(TextComponentPopupEventQueue.java:37)
  at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
  at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
  at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
  at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  at java.awt.EventDispatchThread.run(Unknown Source)
----- End of stacktrace -----

Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo » 06 Apr 2008, 18:40

Ja.

Antworten