01: /***************************************************************
02: * This file is part of the [fleXive](R) project.
03: *
04: * Copyright (c) 1999-2007
05: * UCS - unique computing solutions gmbh (http://www.ucs.at)
06: * All rights reserved
07: *
08: * The [fleXive](R) project is free software; you can redistribute
09: * it and/or modify it under the terms of the GNU General Public
10: * License as published by the Free Software Foundation;
11: * either version 2 of the License, or (at your option) any
12: * later version.
13: *
14: * The GNU General Public License can be found at
15: * http://www.gnu.org/copyleft/gpl.html.
16: * A copy is found in the textfile GPL.txt and important notices to the
17: * license from the author are found in LICENSE.txt distributed with
18: * these libraries.
19: *
20: * This library is distributed in the hope that it will be useful,
21: * but WITHOUT ANY WARRANTY; without even the implied warranty of
22: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23: * GNU General Public License for more details.
24: *
25: * For further information about UCS - unique computing solutions gmbh,
26: * please see the company website: http://www.ucs.at
27: *
28: * For further information about [fleXive](R), please see the
29: * project website: http://www.flexive.org
30: *
31: *
32: * This copyright notice MUST APPEAR in all copies of the file!
33: ***************************************************************/package com.flexive.faces.plugin;
34:
35: import com.flexive.faces.FxJsfUtils;
36: import com.flexive.faces.beans.PluginRegistryBean;
37: import com.flexive.faces.javascript.tree.TreeNodeWriter;
38:
39: /**
40: * Demo plugin factory.
41: *
42: * @author Daniel Lichtenberger (daniel.lichtenberger@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
43: * @version $Rev: 37 $
44: */
45: public class DemoPluginFactory implements PluginFactory {
46: /**
47: * Plugin to extend the administration main menu
48: */
49: private static class MainMenuPlugin implements
50: Plugin<TreePluginExecutor> {
51: /**
52: * Add main menu items
53: *
54: * @param executor the tree plugin executor
55: */
56: public void apply(TreePluginExecutor executor) {
57: // add a main menu entry in the "system" folder
58: executor.addNode("system", new TreeNodeWriter.Node(
59: "demoPluginNode", "System plugin node",
60: TreeNodeWriter.Node.TITLE_CLASS_NODE, "find",
61: "javascript:alert('Plugin node clicked')"));
62: // now add a child to the previously created node
63: executor.addNode("demoPluginNode", new TreeNodeWriter.Node(
64: "demoSubNode", "Nested plugin node",
65: TreeNodeWriter.Node.TITLE_CLASS_LEAF, "workflows",
66: FxJsfUtils.getRequest().getContextPath()
67: + "/adm/main/systemInfo.jsf"));
68: }
69: }
70:
71: private static class SystemInfoToolbarPlugin implements
72: Plugin<ToolbarPluginExecutor> {
73: private static final ToolbarPluginExecutor.Button LOGOUT_BUTTON = new ToolbarPluginExecutor.Button(
74: "pluginLogoutButton").setBean("fxAuthenticationBean")
75: .setAction("logout").setLabel(
76: "Logout from plugin button").setIcon("cancel");
77:
78: public void apply(ToolbarPluginExecutor executor) {
79: executor.addToolbarButton("main/systemInfo", LOGOUT_BUTTON);
80: }
81: }
82:
83: public void initialize(PluginRegistryBean registry) {
84: // registry.registerPlugin(AdmExtensionPoints.ADM_MAIN_NAVIGATION, new MainMenuPlugin());
85: // registry.registerPlugin(AdmExtensionPoints.ADM_TOOLBAR_PLUGINS, new SystemInfoToolbarPlugin());
86: }
87:
88: }
|