Übersicht Pluginentwicklung

Aus TV-Browser Wiki
Version vom 23. Oktober 2004, 10:17 Uhr von Til⧼word-separator⧽⧼parentheses⧽ ⧼parentheses⧽
⧼revision-nav⧽
Wechseln zu: Navigation⧼comma-separator⧽Suche

In dieser Übersicht werden alle Möglichkeiten aufgeführt, wie ein Plugin mit TV-Browser oder anderen Plugins interagieren kann.

Wenn bisher noch keine Erfahrungen mit der Entwicklung von Plugins gesammelt hast, dann solltest du erst das Tutorial: Entwicklung eines Java-Plugins machen.


Auswahl über die Einstellungen

Einstellungen Erinnerer small.png

Der Einstellungen-Dialog sieht für jedes Plugin, das diese Funktion unterstützt, einen eigenen Karteireiter vor. Auf diese Weise kann der Benutzer ein bestimmtes Plugin konfigurieren.

Implementierung:

public SettingsTab getSettingsTab()

Diese Methode gibt das SettingsTab deines Plugins zurück. Ein SettingsTab besteht aus einem JPanel, in dem die Einstellungen vorgenommen werden können, einer Methode zum Abspeichern der Einstellungen, aus einem Titel und einem Icon. Letztere werden dann im Einstellungen-Dialog gezeigt.


Auswahl über das Menü

Plugin Menue.png

Plugins können aber auch direkt über das Menü oder die Symbolleiste aufgerufen werden. Plugins, die diese Funktion unterstützen, erscheinen im Menü und in der Symbolleiste.

Das Erinnerungen-Plugin kann auf diese Weise die gespeicherten Erinnerungen anzeigen. Das Sendungsinfo-Plugin hingegen unterstützt diese Funktion nicht (und wird deshalb auch nicht angezeigt).

Implementierung:

public Action getButtonAction()

Gibt die Aktion zurück, die ausgeführt werden soll, wenn das Plugin über im Menü angewählt wurde.

Beispiel:

Der folgende Code zeigt einen Dialog, sobald das Plugin im Menü ausgewählt wurde.

public Action getButtonAction() {
  // Eine Aktion erzeugen, die die Methode showDialog() aufruft, sobald sie ausgelöst wird.
  AbstractAction action = new AbstractAction() {
    public void actionPerformed(ActionEvent evt) {
      showDialog();
    }
  };

  // Der Aktion einen Namen geben. Dieser Name wird dann im Menü und in der Symbolleiste gezeigt
  action.putValue(Action.NAME, "Dialog anzeigen");

  // Der Aktion ein kleines Icon geben. Dieses Icon wird im Menü gezeigt
  // Das Icon sollte 16x16 Pixel groß sein
  action.putValue(Action.SMALL_ICON, createImageIcon("myplugin/SomeIcon16.gif"));

  // Der Aktion ein großes Icon geben. Dieses Icon wird in der Symbolleiste gezeigt
  // Das Icon sollte 24x24 Pixel groß sein
  action.putValue(BIG_ICON, createImageIcon("myplugin/SomeIcon24.gif"));

  // Die Aktion zurückgeben
  return action; 
}


protected void showDialog() {
  // Einen modalen Dialog erzeugen
  JDialog dlg = UiUtilities.createDialog(getParentFrame(), true);

  // Hier den Dialog füllen
  ...

  // Dialog zeigen
  dlg.show();
}

Auswahl über eine Sendung

Programmtabelle Kontextmenue.png

Klickt der Benutzer mit der rechten Maustaste auf eine Sendung, so werden jene Plugins angezeigt, die auf dieses Ereignis reagieren können. Hier z.B das Erinnerungen-Plugin sowie das Sendungsinfo-Plugin. Der Benutzer kann nun ein Plugin wählen, das ausgeführt werden soll. Das Plugin erhält dann alle vorliegenden Informationen über die jeweilige Sendung. Das Erinnerungen-Plugin beispielsweise fügt die Sendung zu den Erinnerungen hinzu, das Sendungsinfo-Plugin zeigt die Sendungs-Informationen an.

Implementierung:

public Action[] getContextMenuActions(Program program)

Gibt die Aktionen zurück, die das Plugin für die übergebene Sendung anbietet.

Beispiel:

Angenommen, du willst ein Plugin schreiben, das die Daten einer Sendung als E-Mail verschickt. Dann könnte deine Implementierung so aussehen:

public Action[] getContextMenuActions(Program program) {
  // Eine Aktion erzeugen, die die Methode sendMail() aufruft, sobald sie aktiviert wird.
  AbstractAction action = new AbstractAction() {
    public void actionPerformed(ActionEvent evt) {
      sendMail(getProgramFromContextMenuActionEvent(evt));
    }
  };

  // Der Aktion einen Namen geben. Dieser Name wird dann im Kontextmenü gezeigt
  action.putValue(Action.NAME, "Sendungsinfos als E-Mail versenden");

  // Der Aktion ein Icon geben. Dieses Icon wird mit dem Namen im Kontextmenü gezeigt
  // Das Icon sollte 16x16 Pixel groß sein
  action.putValue(Action.SMALL_ICON, createImageIcon("myplugin/Mail16.gif"));

  // Die Aktion zurückgeben
  return new Action[] { action }; 
}


protected void sendMail(Program program) {
  // Hier die Mail verschicken
  ...
}


Markieren von Sendungen

Plugins haben die Möglichkeit, Sendungen zu markieren. Diese Sendungen werden dann mit einem roten Hintergrund dargestellt und das Icon des Plugins wird in der rechten unteren Ecke der Sendung gezeigt.

Programmtabelle Plugin Markierungen small.png

Damit der Benutzer erkennt, welche Sendung nun von welchem Plugin markiert worden ist, wird der Markierung unten rechts ein Symbol des Plugins hinzugefügt. Auf diese Weise kann eine Sendung von mehreren Plugins gleichzeitig markiert werden.

Implementierung:

Wenn du Sendungen markieren willst, solltest du folgende Methode überschreiben:

protected String getMarkIconName()

Beispiel:

protected String getMarkIconName() {
  return "myplugin/MyPlugin16.gif"
}

Das zurückgegebene Icon sollte 16x16 Pixel groß sein. Eine Sendung kann dann durch folgenden Aufruf markiert und ent-markiert werden:

Program program = ...;

// Markieren der Sendung
program.mark(this);

// Ent-Markieren der Sendung
program.unmark(this);

TODO

PluginManager getPluginManager()
public void readData(ObjectInputStream in)
public void writeData(ObjectOutputStream out)
public void loadSettings(Properties settings)
public Properties storeSettings()
public boolean canReceivePrograms()
public void receivePrograms(Program[] programArr)
public Icon[] getProgramTableIcons(Program program)
public String getProgramTableIconText()
public void handleTvDataUpdateFinished()
public void handleTvDataAdded(ChannelDayProgram newProg)
public void handleTvDataDeleted(ChannelDayProgram oldProg)