summaryrefslogtreecommitdiffstats
path: root/pki/base/console/src/com/netscape/admin/certsrv/CMSBaseResourceModel.java
diff options
context:
space:
mode:
Diffstat (limited to 'pki/base/console/src/com/netscape/admin/certsrv/CMSBaseResourceModel.java')
-rw-r--r--pki/base/console/src/com/netscape/admin/certsrv/CMSBaseResourceModel.java263
1 files changed, 263 insertions, 0 deletions
diff --git a/pki/base/console/src/com/netscape/admin/certsrv/CMSBaseResourceModel.java b/pki/base/console/src/com/netscape/admin/certsrv/CMSBaseResourceModel.java
new file mode 100644
index 000000000..b7ec04e3a
--- /dev/null
+++ b/pki/base/console/src/com/netscape/admin/certsrv/CMSBaseResourceModel.java
@@ -0,0 +1,263 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.admin.certsrv;
+
+import java.util.*;
+import java.io.*;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+import javax.swing.event.*;
+import com.netscape.management.client.*;
+import com.netscape.management.client.util.*;
+import com.netscape.management.client.console.*;
+import com.netscape.admin.certsrv.config.*;
+import com.netscape.admin.certsrv.menu.*;
+
+/**
+ * Netscape Certificate Server 4.0 BASE resource model.<br>
+ *
+ * This class represtents the tree node objects displayed
+ * in the right tree-view.<p>
+ *
+ * Menu Event are now handled by extenal IMenuInfo object.
+ *
+ * @author Jack Pan-Chen
+ * @author Thomas Kwan
+ * @version $Revision$, $Date$
+ * @see com.netscape.admin.certsrv
+ */
+public class CMSBaseResourceModel extends ResourceModel {
+
+ /*==========================================================
+ * variables
+ *==========================================================*/
+
+ private CMSResourcePage mPage; // physical page representation
+ protected ConsoleInfo mConsoleInfo; // console info
+ protected CMSServerInfo mServerInfo; // server info
+ protected IResourceObject[] mSelection; // selected objects
+ protected Vector mSelectionListeners; // listener list
+ protected ResourceBundle mResource; // resource boundle
+ protected Hashtable mNickNameRegistry; // storing the obejct nickname pair
+ protected RefreshTabPane mRefreshPane;
+
+ /*==========================================================
+ * constructors
+ *==========================================================*/
+
+ /**
+ * Constructor - create all panels.
+ *
+ * @param info Global console connection information
+ * @param serverInfo Server instance connection information
+ */
+ public CMSBaseResourceModel( ConsoleInfo info, CMSServerInfo serverInfo ) {
+ mResource = ResourceBundle.getBundle(CMSAdminResources.class.getName());
+ mConsoleInfo = info;
+ mServerInfo = serverInfo;
+ mNickNameRegistry = new Hashtable();
+ mSelectionListeners = new Vector();
+ init();
+ }
+
+ /*==========================================================
+ * public methods
+ *==========================================================*/
+
+ /**
+ * Set the physical page associated with this model
+ * @param page CMSResourcePage instance
+ */
+ public void setResourcePage(CMSResourcePage page) {
+ mPage = page;
+ }
+
+ public CMSResourcePage getResourcePage() {
+ return mPage;
+ }
+
+ /**
+ * Return the global console information reference.
+ *
+ * @return The global console information reference.
+ **/
+ public ConsoleInfo getConsoleInfo() {
+ return mConsoleInfo;
+ }
+
+ /**
+ * Return the Server information reference.
+ *
+ * @return The server information reference.
+ **/
+ public CMSServerInfo getServerInfo() {
+ return mServerInfo;
+ }
+
+
+ /**
+ * Get Parent Frame
+ * @return frame to be usd in dialogs
+ */
+ public JFrame getFrame() {
+ return UtilConsoleGlobals.getActivatedFrame();
+ }
+
+ /**
+ * Tree Nodes selected call back
+ */
+ public void actionObjectSelected( IPage viewInstance,
+ IResourceObject[] selection,
+ IResourceObject[] previousSelection) {
+
+ //Debug.println("CMSResourceModel: actionObjectSelected()");
+ mSelection = selection;
+ if ( mSelection == null )
+ mSelection = new IResourceObject[0];
+ Vector selected = new Vector();
+ Vector toNotify = new Vector();
+ /* Signal all selected objects, keep track of which ones */
+ for( int i = 0; i < mSelection.length; i++ ) {
+ IResourceObject sel = mSelection[i];
+ Component c = sel.getCustomPanel();
+ if (mRefreshPane != null) {
+ mRefreshPane.select(c);
+ }
+ if ( (c != null) && (mSelectionListeners.indexOf( c ) >= 0) ) {
+ toNotify.addElement( sel );
+ }
+ selected.addElement( c );
+ }
+
+ /* All other listeners must be unselected */
+ boolean canMove = true;
+ if ( previousSelection != null ) {
+ for( int i = 0; i < previousSelection.length; i++ ) {
+ IResourceObject sel = previousSelection[i];
+ Component c = sel.getCustomPanel();
+ if ( (mSelectionListeners.indexOf( c ) >= 0) &&
+ (selected.indexOf( c ) < 0) ) {
+ try {
+ IResourceSelectionListener l =
+ (IResourceSelectionListener)c;
+ if (!l.unselect( sel, viewInstance ))
+ canMove = false;
+ } catch ( Exception e ) {
+ //System.err.println( e );
+ Debug.println( e.toString() );
+ }
+ }
+ }
+ }
+
+ if (!canMove)
+ return;
+
+ for( int i = 0; i < toNotify.size(); i++ ) {
+ IResourceObject sel =
+ (IResourceObject)toNotify.elementAt( i );
+ Component c = sel.getCustomPanel();
+ IResourceSelectionListener l =
+ (IResourceSelectionListener)c;
+ l.select( sel, viewInstance );
+ }
+
+ //change menu
+ super.actionObjectSelected(viewInstance, selection, previousSelection);
+ }
+
+ public void setRefreshCallback(RefreshTabPane pane) {
+ mRefreshPane = pane;
+ }
+
+ /**
+ * Adds a listener that is interested in receiving selection events.
+ * Called by panels
+ */
+ public void addIResourceSelectionListener(IResourceSelectionListener l) {
+ mSelectionListeners.addElement(l);
+ }
+
+ /**
+ * Removes previously added IDSResourceSelectionListener.
+ * Called by panels
+ */
+ public void removeIResourceSelectionListener(IResourceSelectionListener l) {
+ mSelectionListeners.removeElement(l);
+ }
+
+ /**
+ * Returns list of listeners for this model.
+ */
+ public Enumeration getSelectionListeners() {
+ return mSelectionListeners.elements();
+ }
+
+ /**
+ * The SubSystemUILoader should use this function to add
+ * subsystem node into the root node. SubSystemLoader is responsible
+ * for setting up the subtrees.
+ */
+ public void addSubSystemNode(CMSResourceObject node) {
+ ((CMSResourceObject)getRoot()).add(node);
+ }
+
+ /**
+ * Register the nick name of the resource object, so other sub system
+ * can look up and retrieve the corresponding resource object.
+ */
+ public void registerNickName(String nickName, CMSResourceObject node) {
+ mNickNameRegistry.put(nickName, node);
+ }
+
+ /**
+ * Retrieve the resource obejct associated with this nickname
+ */
+ public CMSResourceObject getByNickName(String nickName) {
+ return (CMSResourceObject) mNickNameRegistry.get(nickName);
+ }
+
+ /**
+ * Start the zipping status bar
+ */
+ public void progressStart() {
+ mPage.progressStart();
+ }
+
+ /**
+ * Stop the zipping status bar
+ */
+ public void progressStop() {
+ mPage.progressStop();
+ }
+
+ /*==========================================================
+ * priotected methods
+ *==========================================================*/
+
+ protected void init() {
+ CMSResourceObject root = new CMSResourceObject();
+ root.setName(mResource.getString(CMSAdminResources.CERT_SERVER_NAME)+":" + mServerInfo.getPort());
+ root.setCustomPanel( new CMSBlankPanel(this));
+ root.setIcon( CMSAdminUtil.getImage(CMSAdminResources.IMAGE_CERTICON_SMALL));
+ root.setAllowsChildren(true);
+ super.setRoot( root );
+ }
+
+}