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.actions;
043
044 import java.awt.event.ActionEvent;
045 import javax.swing.AbstractAction;
046 import javax.swing.ImageIcon;
047 import org.netbeans.modules.j2ee.deployment.impl.ServerInstance;
048 import org.openide.nodes.*;
049 import org.openide.util.actions.*;
050 import org.openide.util.HelpCtx;
051 import org.openide.util.Mutex;
052 import org.openide.util.NbBundle;
053 import org.openide.util.Utilities;
054
055 /**
056 * Resfresh action refreshes the server state.
057 *
058 * @author nn136682
059 */
060 public class RefreshAction extends NodeAction {
061
062 public String getName() {
063 return NbBundle.getMessage(DebugAction.class, "LBL_Refresh");
064 }
065
066 protected void performAction(Node[] nodes) {
067 performActionImpl(nodes);
068 }
069
070 protected boolean enable(Node[] nodes) {
071 return enableImpl(nodes);
072 }
073
074 public HelpCtx getHelpCtx() {
075 return HelpCtx.DEFAULT_HELP;
076 }
077
078 protected boolean asynchronous() {
079 return false;
080 }
081
082 // private helper methods -------------------------------------------------
083
084 private static void performActionImpl(Node[] nodes) {
085 for (int i = 0; i < nodes.length; i++) {
086 ServerInstance si = (ServerInstance) nodes[i]
087 .getCookie(ServerInstance.class);
088 performActionImpl(si);
089 }
090 }
091
092 private static void performActionImpl(final ServerInstance si) {
093 if (si != null) {
094 si.refresh();
095 }
096 }
097
098 private static boolean enableImpl(Node[] nodes) {
099 for (int i = 0; i < nodes.length; i++) {
100 ServerInstance si = (ServerInstance) nodes[i]
101 .getCookie(ServerInstance.class);
102 if (!enableImpl(si)) {
103 return false;
104 }
105 }
106 return true;
107 }
108
109 private static boolean enableImpl(final ServerInstance si) {
110 if (si == null
111 || si.getServerState() == ServerInstance.STATE_WAITING) {
112 return false;
113 }
114 return true;
115 }
116
117 /** This action will be displayed in the server output window */
118 public static class OutputAction extends AbstractAction implements
119 ServerInstance.StateListener {
120
121 private static final String ICON = "org/netbeans/modules/j2ee/deployment/impl/ui/resources/refresh.png"; // NOI18N
122 private static final String PROP_ENABLED = "enabled"; // NOI18N
123 private final ServerInstance instance;
124
125 public OutputAction(ServerInstance instance) {
126 super (NbBundle.getMessage(DebugAction.class,
127 "LBL_RefreshOutput"), new ImageIcon(Utilities
128 .loadImage(ICON)));
129 putValue(SHORT_DESCRIPTION, NbBundle.getMessage(
130 DebugAction.class, "LBL_RefreshOutputDesc"));
131 this .instance = instance;
132
133 // start listening to changes
134 instance.addStateListener(this );
135 }
136
137 public void actionPerformed(ActionEvent e) {
138 performActionImpl(instance);
139 }
140
141 public boolean isEnabled() {
142 return enableImpl(instance);
143 }
144
145 // ServerInstance.StateListener implementation --------------------------
146
147 public void stateChanged(final int oldState, final int newState) {
148 Mutex.EVENT.readAccess(new Runnable() {
149 public void run() {
150 firePropertyChange(PROP_ENABLED, null,
151 isEnabled() ? Boolean.TRUE : Boolean.FALSE);
152 }
153 });
154 }
155 }
156 }
|