001 /*
002 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003 *
004 * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005 *
006 * The contents of this file are subject to the terms of either the GNU
007 * General Public License Version 2 only ("GPL") or the Common
008 * Development and Distribution License("CDDL") (collectively, the
009 * "License"). You may not use this file except in compliance with the
010 * License. You can obtain a copy of the License at
011 * http://www.netbeans.org/cddl-gplv2.html
012 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013 * specific language governing permissions and limitations under the
014 * License. When distributing the software, include this License Header
015 * Notice in each file and include the License file at
016 * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017 * particular file as subject to the "Classpath" exception as provided
018 * by Sun in the GPL Version 2 section of the License file that
019 * accompanied this code. If applicable, add the following below the
020 * License Header, with the fields enclosed by brackets [] replaced by
021 * your own identifying information:
022 * "Portions Copyrighted [year] [name of copyright owner]"
023 *
024 * Contributor(s):
025 *
026 * The Original Software is NetBeans. The Initial Developer of the Original
027 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028 * Microsystems, Inc. All Rights Reserved.
029 *
030 * If you wish your version of this file to be governed by only the CDDL
031 * or only the GPL Version 2, indicate your decision by adding
032 * "[Contributor] elects to include this software in this distribution
033 * under the [CDDL or GPL Version 2] license." If you do not indicate a
034 * single choice of license, a recipient has the option to distribute
035 * your version of this file under either the CDDL, the GPL Version 2 or
036 * to extend the choice of license to its licensees as provided above.
037 * However, if you add GPL Version 2 code and therefore, elected the GPL
038 * Version 2 license, then the option applies only if the new code is
039 * made subject to such option by the copyright holder.
040 */
041
042 package org.netbeans.modules.j2ee.deployment.impl.ui;
043
044 import javax.swing.Action;
045 import org.openide.nodes.*;
046 import org.openide.util.HelpCtx;
047 import org.netbeans.modules.j2ee.deployment.impl.*;
048 import org.netbeans.modules.j2ee.deployment.impl.ui.actions.*;
049
050 /**
051 * Instance node is a base for any manager node. The behaviour of this base instance
052 * node can be customized/extended by the manager node provided by the plugin.
053 *
054 * @author George FinKlang
055 */
056 public class InstanceNode extends AbstractNode implements
057 ServerInstance.StateListener {
058
059 protected ServerInstance instance;
060
061 private boolean running;
062
063 public InstanceNode(ServerInstance instance,
064 boolean addStateListener) {
065 super (new InstanceChildren(instance));
066 this .instance = instance;
067 setIconBase(instance.getServer().getIconBase());
068 getCookieSet().add(instance);
069 if (addStateListener) {
070 instance.addStateListener(this );
071 }
072 }
073
074 public HelpCtx getHelpCtx() {
075 return HelpCtx.DEFAULT_HELP;
076 }
077
078 public org.openide.nodes.Node.Cookie getCookie(Class type) {
079 if (ServerInstance.class.isAssignableFrom(type)) {
080 return instance;
081 }
082 return super .getCookie(type);
083 }
084
085 @Override
086 public Action[] getActions(boolean b) {
087 return new Action[] {};
088 }
089
090 // StateListener implementation -------------------------------------------
091
092 public void stateChanged(int oldState, int newState) {
093 if (instance.getServerState() != ServerInstance.STATE_WAITING
094 && instance.getServerState() != ServerInstance.STATE_SUSPENDED) {
095 setChildren(new InstanceChildren(instance));
096 getChildren().getNodes(true);
097 } else if (instance.getServerState() == ServerInstance.STATE_SUSPENDED) {
098 setChildren(Children.LEAF);
099 }
100 }
101
102 public static class InstanceChildren extends Children.Keys {
103 ServerInstance serverInstance;
104
105 public InstanceChildren(ServerInstance inst) {
106 this .serverInstance = inst;
107 }
108
109 protected void addNotify() {
110 setKeys(serverInstance.getTargets());
111 }
112
113 protected void removeNotify() {
114 setKeys(java.util.Collections.EMPTY_SET);
115 }
116
117 protected org.openide.nodes.Node[] createNodes(Object obj) {
118 ServerTarget child = (ServerTarget) obj;
119 //return new Node[] { new TargetBaseNode(org.openide.nodes.Children.LEAF, child) };
120 return new Node[] { serverInstance.getServer()
121 .getNodeProvider().createTargetNode(child) };
122 }
123 }
124
125 }
|