|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun * Microsystems, Inc. All Rights Reserved. */ /* * InstanceTargetNode.java * * Created on December 7, 2003, 9:11 PM */ package org.netbeans.modules.j2ee.deployment.impl.ui; import org.netbeans.modules.j2ee.deployment.impl.ui.actions.SetAsDefaultServerAction; import org.netbeans.modules.j2ee.deployment.impl.ServerInstance; import org.netbeans.modules.j2ee.deployment.impl.ServerTarget; import org.netbeans.modules.j2ee.deployment.plugins.api.InstanceProperties; import org.openide.nodes.Children; import org.openide.nodes.Node; import org.openide.nodes.AbstractNode; import org.openide.util.actions.SystemAction; import org.openide.util.HelpCtx; import org.openide.util.RequestProcessor; import java.util.List; import java.util.Arrays; import java.util.ArrayList; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeEvent; /** * A node for an admin instance that is also a target server. * * @author nn136682 */ public class InstanceTargetXNode extends FilterXNode implements ServerInstance.RefreshListener, PropertyChangeListener { private ServerTarget instanceTarget; private ServerInstance instance; private InstanceProperties instanceProperties; public InstanceTargetXNode(Node instanceNode, ServerInstance instance) { this(instanceNode, Node.EMPTY, instance); instance.addRefreshListener(this); } public InstanceTargetXNode(Node instanceNode, Node xnode, ServerInstance instance) { super(instanceNode, xnode, true, new InstanceTargetChildren(xnode, instance)); this.instance = instance; instanceProperties = instance.getInstanceProperties(); instanceProperties.addPropertyChangeListener(this); } public String getDisplayName() { return instance.getDisplayNameWithState(); } public String getName() { return instanceProperties.getProperty(InstanceProperties.DISPLAY_NAME_ATTR); } public void setName(String name) { instanceProperties.setProperty(InstanceProperties.DISPLAY_NAME_ATTR, name); } public boolean canRename() { return true; } private ServerTarget getServerTarget() { if (instanceTarget != null) return instanceTarget; instanceTarget = instance.getCoTarget(); return instanceTarget; } public Node getDelegateTargetNode() { if (xnode != null && xnode != Node.EMPTY) return xnode; ServerTarget st = getServerTarget(); if (st == null) return xnode; Node tn = instance.getServer().getNodeProvider().createTargetNode(st); if (tn != null) xnode = tn; return xnode; } private void resetDelegateTargetNode() { xnode = null; } /** * Handle InstanceProperties changes. * * @param evt A PropertyChangeEvent object describing the event source * and the property that has changed. */ public void propertyChange(PropertyChangeEvent evt) { if (InstanceProperties.DISPLAY_NAME_ATTR.equals(evt.getPropertyName()) && (evt.getNewValue() != null && !evt.getNewValue().equals(evt.getOldValue()))) { setDisplayName(getDisplayName()); } } public static class InstanceTargetChildren extends Children { ServerInstance instance; ServerTarget target; public InstanceTargetChildren(Node original, ServerInstance instance) { super(original); this.instance = instance; } protected void addNotify() { super.addNotify(); if (isFurtherExpandable()) { if (original == Node.EMPTY) { InstanceTargetXNode parent = (InstanceTargetXNode) getNode(); Node newOriginal = null; if (parent != null) newOriginal = parent.getDelegateTargetNode(); if (newOriginal != null && newOriginal != Node.EMPTY) this.changeOriginal(newOriginal); else { RequestProcessor.getDefault().post(new Runnable() { public void run() { try { instance.isRunning(); } catch (IllegalStateException e) { // might happen when user removing instance org.openide.ErrorManager.getDefault().log(e.toString()); } } }); } } } else { this.setKeys(java.util.Collections.EMPTY_SET); } } public void updateKeys() { addNotify(); } private boolean isFurtherExpandable() { ServerRegistryNode root = ServerRegistryNode.getServerRegistryNode(); if (root != null) return root.isExpandablePassTargetNode(); return true; } } public javax.swing.Action[] getActions(boolean context) { List actions = new ArrayList(); actions.addAll(Arrays.asList(getOriginal().getActions(context))); /*Boolean isRunning = instance.checkRunning(); if (isRunning != null && isRunning.booleanValue()) {*/ if (getServerTarget() != null) { actions.addAll(Arrays.asList(getDelegateTargetNode().getActions(context))); } else { actions.add(SystemAction.get(SetAsDefaultServerAction.class)); } return (javax.swing.Action[]) actions.toArray(new javax.swing.Action[actions.size()]); } public PropertySet[] getPropertySets() { Node delegateNode = getDelegateTargetNode(); if (delegateNode == null) return getOriginal().getPropertySets(); return FilterXNode.merge(getOriginal().getPropertySets(), delegateNode.getPropertySets()); } public org.openide.nodes.Node.Cookie getCookie(Class type) { Node tn = getDelegateTargetNode(); org.openide.nodes.Node.Cookie c = null; if (tn != null) c = tn.getCookie(type); if (c == null) c = super.getCookie(type); return c; } public void handleRefresh(boolean running) { //if (! running) { instanceTarget = null; resetDelegateTargetNode(); setChildren(new InstanceTargetChildren(Node.EMPTY, instance)); //} this.setDisplayName(instance.getDisplayNameWithState()); ((InstanceTargetChildren)getChildren()).updateKeys(); } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.