Programmierung eigener Groupware-Plugins
Hier werden Sie in Kürze ausführliche Informationen zur Erstellung eigener Module für die Groupware AlphaAgent finden.
Für einen ersten Einblick 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.*; import java.net.*; import javax.swing.*; import com.sowas.alphaagent.*; import com.sowas.alphaagent._main.*; import com.sowas.alphaagent._main.data.*; import com.sowas.alphaagent._main.folder.*; import com.sowas.lib.application.alphaagent.*; /** * Ein beispielhaftes Plugin für den AlphaAgent. * Dieses Plguin hat keine eigene Funktionalität. * Es kann aber gut als Grundlage für neue Plugins verwendet werden. * * @author Norbert Schäfers */ public class ExamplePlugin extends JPanel implements AlphaAgentAPIConstants, AlphaAgentPlugin, FolderConstants, PassDataListener { public static final String TI_HELP = "Hilfe"; // ToolbarItem public static final String TT_HELP = "Hilfe anzeigen"; // Tooltip public static final String MENU_NAME = "Beispiel"; CaptionPanel captionPanel; MainFrame mainFrame; ExamplePanel examplePanel = null; ImageIcon iconHelp; /** * Erzeugt das ExamplePlugin. */ public ExamplePlugin() { super(); } /** * 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 MENU_NAME; } /** * Liefert dieses Plugin zurück. * * @return Dieses Plugin. */ public JPanel getPluginPanel() { return this; } /** * 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 void startup(MainFrame mainFrame, String strBaseDir) { this.mainFrame = mainFrame; setLayout(new BorderLayout()); setBackground(new Color(232, 232, 232)); // Die überschrift: captionPanel = new CaptionPanel(ExamplePlugin.MENU_NAME); add(captionPanel, BorderLayout.NORTH); // Das Hauptpanel für dieses Plugin wird erzeugt: examplePanel = new ExamplePanel(mainFrame, 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(mainFrame.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. mainFrame.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. mainFrame.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. mainFrame.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(); mainFrame.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 handlePassData(PassDataset pc) { return null; } }
package de.mydomain.alphaagent.example; import java.awt.event.*; import javax.swing.*; import com.sowas.alphaagent._main.MainFrame; import com.sowas.lib.util.*; /** * Repräsentiert das HauptPanel des Example-Modules. * In diesem findet die Anzeige/Verarbeitung der Daten statt. * * @author Norbert Schäfers */ public class ExamplePanel extends JPanel implements ActionListener { MainFrame mainFrame; ExamplePlugin examplePlugin; /** * Erzeugt das HauptPanel. * * @param mainFrame * @param examplePlugin */ public ExamplePanel(MainFrame mainFrame, ExamplePlugin examplePlugin) { super(); this.mainFrame = mainFrame; 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)){ MessageDlg msgDlg=new MessageDlg("Hilfe...", "Hilfe?\nSelber nachdenken! ;-)", MessageDlg.MB_OK); msgDlg.setVisible(true); } } }
