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);
}
}
}
|