File: SuperMailServerNode.java

package info (click to toggle)
idm-console-framework 2.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid
  • size: 6,640 kB
  • sloc: java: 70,430; makefile: 486; sh: 345; xml: 254; perl: 23
file content (163 lines) | stat: -rw-r--r-- 5,750 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/** BEGIN COPYRIGHT BLOCK
 * Copyright (C) 2001 Sun Microsystems, Inc.  Used by permission.
 * Copyright (C) 2005 Red Hat, Inc.
 * All rights reserved.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation version
 * 2.1 of the License.
 *                                                                                 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *                                                                                 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 * END COPYRIGHT BLOCK **/
package supermail.configuration;

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import com.sun.java.swing.*;
import com.sun.java.swing.tree.*;
import com.netscape.management.client.*;
import com.netscape.management.client.console.*;
import com.netscape.management.client.util.*;
import com.netscape.management.nmclf.*;
import netscape.ldap.*;


/**
 * A model for the top level node in the resource tree. The example illustrates the following
 * techniques:
 *
 * 1) How to spacify node label (see Constrctor)
 * 2) How to specify custom icon for the node (see getIcon())
 * 3) How to specify Context Menu and handle menu selection (see getMenu*(), actionMenu*())
 * 4) How to handle node selection and return RHP (see getCustomPanel())
 * 5) How to handle user double-click on the node (see run())
 *
 */
public class SuperMailServerNode extends ResourceObject implements IMenuInfo 
{
    public static ResourceSet _resource = new ResourceSet("supermail");
    public static Icon _icon = new RemoteImage("images/SuperMailServer.gif");

	static String MENU_CONFIG = "CONFIG";
	static String MENU_START = "START";
	static String MENU_STOP = "STOP";

	private JPanel _configPanel;
	private ConsoleInfo _consoleInfo;

	/**
	 * Node Constractor
	 * It is a common practice to pass ConsoleInfo to the constructor as a parameter, so that
	 * LDAP and HTTP requests can be handled from the node. (For the full list of properties in
	 * ConsoleInfo see ConsoleInfo class). This example does not use ConsoleInfo, because 
     * it does not interact with the back-end servers.
	 */
    public SuperMailServerNode(ConsoleInfo consoleInfo) {
        super("SuperMail Server");
        _consoleInfo = consoleInfo;
        setAllowsChildren(true);
    }

    /**
     * Specify the icon for the node
     */    
    public Icon getIcon() 
	{
        return _icon;
    }

	/**
     * Implements IMenuInfo
     * Called when the node is selected to specify menu categores that require custom menu options
     * In this example we are only defining Context menues: Node right-click (MENU_CONTEXT) and
     * Object menu on the frame menu Bar (MENU_OBJECT)
	 */
	public String[] getMenuCategoryIDs()
	{
		return new String[] 
		{
			ResourcePage.MENU_OBJECT,
			ResourcePage.MENU_CONTEXT
		};
	}

	/**
     * Implements IMenuInfo
     * Called when a menu specified in getMenuCategoryIDs() is to be opened
     *
     * Noticed that even though both menus contain the same items, we are creating a separate
     * instance for each item. This is bacause JFC menus are Container objects, and in AWT/JFC
     * when a component is added to a container, it is removed from the current container should
     * there be one. Thus, if we try to "reuse" the same menu item inside two or more menus, the
     * menu item will show up only in the last menu it was added to.
	 */
	public IMenuItem[] getMenuItems(String categoryID)
	{
        if((categoryID.equals(ResourcePage.MENU_OBJECT)) ||
           (categoryID.equals(ResourcePage.MENU_CONTEXT)))
		{
            return new IMenuItem[]
			{
				new MenuItemText(MENU_CONFIG, "Configure",/*description=*/"", /*enabled=*/true),
				new MenuItemSeparator(),				
				new MenuItemText(MENU_START,  "Start",    /*description=*/"", /*enabled=*/true),
				new MenuItemText(MENU_STOP,   "Stop",     /*description=*/"", /*enabled=*/true)
			};
        }
        return null;
	}

	/**
     * Implements IMenuInfo
     * Called when a menu item is selected in a menu
	 */
	public void actionMenuSelected(IPage page, IMenuItem item)
	{
		if(page instanceof ResourcePage)
		{
			if(item.getID().equals(MENU_CONFIG))
			{
				SuiOptionPane.showMessageDialog((ResourcePage)page, "Context menu Config selected", "Context menu selection", SuiOptionPane.INFORMATION_MESSAGE);
			}
			else if(item.getID().equals(MENU_START))
			{
				SuiOptionPane.showMessageDialog((ResourcePage)page, "Context menu Start selected", "Context menu selection", SuiOptionPane.INFORMATION_MESSAGE);
			}
			else if(item.getID().equals(MENU_STOP))
			{
				SuiOptionPane.showMessageDialog((ResourcePage)page, "Context menu Stop selected", "Context menu selection", SuiOptionPane.INFORMATION_MESSAGE);
			}
		
			else 
			{
				Debug.println("Not Yet Implemented: " + item);
			}
		}
	}

	/**
     * Called when the node is selected to get RHP
	 */
	public Component getCustomPanel()
	{
		return new SuperMailServerNodeRHP();
    }

	/**
     * Called when user double-clicks the node
	 */
	public boolean run(IPage page, IResourceObject selection[])
	{
		SuiOptionPane.showMessageDialog((ResourcePage)page, "Node double-clicked", "SuperMail Server", SuiOptionPane.INFORMATION_MESSAGE);
		return false;
	}
}