Quellcode für ein leeres Plugin
Hier finden Sie bereits zwei Java-Quellcode-Dateien, welche ein komplettes eigenes, aber funktionsloses Modul für den AlphaAgent darstellen:
package de.mydomain.alphaagent.example; import java.awt.BorderLayout; import java.awt.Color; import java.net.URL; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JMenuBar; import javax.swing.JPanel; import javax.swing.JRootPane; import com.sowas.alphaagent._main.CaptionPanel; import com.sowas.alphaagent._main.MainPane; import com.sowas.alphaagent._main.folder.FolderItem; import com.sowas.alphaagent._main.folder.FolderPanel; import com.sowas.lib.application.alphaagent.IFolderConstants; import com.sowas.libalphasi.IAlphaAgentPlugin; import com.sowas.libalphasi._main.data.IPassDataListener; import com.sowas.libalphasi._main.data.PassDataset; /** * Ein beispielhaftes Plugin für den AlphaAgent. * Dieses Plguin hat keine echte Funktionalität. * Es kann aber gut als Grundlage für neue Plugins verwendet werden. * * @author Norbert Schaefers <n.schaefers@sowas.com> */ public class ExamplePlugin extends JPanel implements IAlphaAgentPlugin, IFolderConstants, IPassDataListener { public static final String TI_HELP = "Hilfe"; // ToolbarItem public static final String TT_HELP = "Hilfe anzeigen"; // Tooltip public static final String MENUVIEWNAME = "Beispiel"; CaptionPanel captionPanel; MainPane mainPane; ExamplePanel examplePanel = null; ImageIcon iconHelp; /** * Erzeugt das ExamplePlugin. */ public ExamplePlugin() { super(); } /** * Initialisiert die Sprache * * @param strLang Kürzel für die Sprache (z.B. de, at, ch, fr) */ public void initPlugin(String strBaseDir, String strLang){ } /** * Liefert den Namen des Plugins, welcher auch für das Menü verwendet wird. * Gleichzeitig wird diese Name auch für die Indentifizierung des Plugins verwendet. * Der Name ist daher konstant, aber grundsätzlich frei wählbar * (darf also einen anderen Namen als das Plugin selbst haben). */ public String getMenuViewName() { return MENUVIEWNAME; } /** * Liefert dieses Plugin zurück. * * @return Dieses Plugin. */ public JPanel getPluginPanel() { return this; } /** * Liefert das Icon für den FolderTree * * @return Das Icon oder null */ public Icon getFolderIcon() { return null; } /** * Liefert das Panel für die Übersicht zurück. * @return Das Panel. */ public JPanel getOverviewPanel(){ return null; } /** * Wird einmal beim ersten Start des Plugins aufgerufen (beim Start des Hauptprogramms). * Erzeugt das CaptionPanel und das ExamplePanel. * Außerdem wird ein Symbol zum Symbolpanel hinzugefügt und ein Eintrag in die Ordneransicht * gemacht. */ public synchronized void startup(JRootPane rootPane, String strBaseDir){ mainPane=(MainPane)rootPane; setLayout(new BorderLayout()); setBackground(new Color(232, 232, 232)); // Die Überschrift: captionPanel = new CaptionPanel(ExamplePlugin.MENUVIEWNAME); add(captionPanel, BorderLayout.NORTH); // Das Hauptpanel für dieses Plugin wird erzeugt: examplePanel = new ExamplePanel(mainPane, this); add(examplePanel, BorderLayout.CENTER); // Benötigte Images werden geladen: URL urlImage = null; try { urlImage = new URL(strBaseDir + "images/ger_example.gif"); iconHelp = new ImageIcon(new URL(mainPane.getBaseURL() + "/images/help.gif")); } catch (Exception e) { e.printStackTrace(); } // Der große Button für die Symbolleiste ganz links wird erzeugt: // Es wird kein Listener (null) übergeben. mainPane.addSymbolItem(new ImageIcon(urlImage), getMenuViewName(), null); // Ein Eintrag für die Ordneransicht wird erzeugt: FolderItem fiExample = new FolderItem(getMenuViewName(), FOLDERID_EXAMPLE); fiExample.setAllowsChildren(false); // Keine Unterordner erlaubt // Der gerade erzeugte Eintrag wird nun der Ordneransicht hinzugefügt. // Hier wird kein Listener (null) übergeben. mainPane.addFolderItem(null, fiExample, FolderPanel.NOTEXPANDED, null, false); } /** * Wird einmal zum Beenden aufgerufen (meist beim Beenden des Hauptprogramms). * Kann für "Aufräumarbeiten" verwendet werden. */ public void shutdown() { } /** * Wird jedesmal aufgerufen, wenn das Panel des Plugins in den Vordergrund geholt wird. * Dabei werden z.B. die Einträge in die Toolbar gemacht. */ public void activate() { examplePanel.activate(); // Erzeugen eines Hilfe-Buttons in der Toolbar: // Als Listener wird examplePanel angegeben, in dessen actionPerformed(..) das Betätigen des // Buttons bearbeitet wird. mainPane.addToolbarItem(TI_HELP, iconHelp, TT_HELP, examplePanel, true).setTextVisible(false); } /** * Wird aufgerufen, wenn das Panel eines anderen Plugins in den Vordergrund kommt. * Muss alle Einträge aus der Toolbar löschen, da diese * ja für jedes Plugin unterschiedlich sein können. */ public void deactivate() { examplePanel.deactivate(); mainPane.removeToolbarItem(TI_HELP); } /** * Der Ordner im FolderPanel wurde geändert. */ public void folderChanged(){ } /** * Interface-Methode für eine optional(!!) zu verwende Kommunikation mit anderen Plugins. * Bearbeitet die "Aufträge", welche von den anderen Plugins kommen. * Jedes Plugin, welches Funktionen und/oder Daten zur Verfügung stellen möchte, ist selber * für dafür zuständig und muss dies dokumentieren. * * @param pc Die zu verarbeitenden Daten. * @return Wenn die Verarbeitung geklappt hat das Ergebnis, sonst null. */ public Object processPassData(PassDataset pc) { return null; } public int getLicencePos(){ return -1; } public JMenuBar buildMenuBar(){ return null; } }
package de.mydomain.alphaagent.example; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JOptionPane; import javax.swing.JPanel; import com.sowas.alphaagent._main.MainPane; /** * Repräsentiert das HauptPanel des Example-Modules. * In diesem findet die Anzeige/Verarbeitung der Daten statt. * * @author Norbert Schäfers <n.schaefers@sowas.com> */ public class ExamplePanel extends JPanel implements ActionListener { MainPane mainPane; ExamplePlugin examplePlugin; /** * Erzeugt das HauptPanel. * * @param mainPane * @param examplePlugin */ public ExamplePanel(MainPane mainPane, ExamplePlugin examplePlugin) { super(); this.mainPane = mainPane; this.examplePlugin = examplePlugin; init(); } private void init() { } public void activate() { } public void deactivate() { } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals(ExamplePlugin.TI_HELP)){ JOptionPane.showMessageDialog(this, "Hilfe?\nSelber nachdenken! ;-)"); } } }
