[jbosstools-commits] JBoss Tools SVN: r39524 - in trunk/jst/plugins/org.jboss.tools.jst.web: src/org/jboss/tools/jst/web/server and 1 other directory.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Wed Mar 14 20:59:21 EDT 2012


Author: scabanovich
Date: 2012-03-14 20:59:20 -0400 (Wed, 14 Mar 2012)
New Revision: 39524

Modified:
   trunk/jst/plugins/org.jboss.tools.jst.web/META-INF/MANIFEST.MF
   trunk/jst/plugins/org.jboss.tools.jst.web/src/org/jboss/tools/jst/web/server/ServerManager.java
   trunk/jst/plugins/org.jboss.tools.jst.web/src/org/jboss/tools/jst/web/server/ServerManagerListener.java
Log:
JBIDE-11306
https://issues.jboss.org/browse/JBIDE-11306
'Run on Server' on struts/jsf objects. - removed dependence of jst on as.

Modified: trunk/jst/plugins/org.jboss.tools.jst.web/META-INF/MANIFEST.MF
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web/META-INF/MANIFEST.MF	2012-03-15 00:23:00 UTC (rev 39523)
+++ trunk/jst/plugins/org.jboss.tools.jst.web/META-INF/MANIFEST.MF	2012-03-15 00:59:20 UTC (rev 39524)
@@ -11,7 +11,6 @@
 Require-Bundle: org.jboss.tools.common.model;visibility:=reexport,
  org.jboss.tools.common.projecttemplates;visibility:=reexport,
  org.jboss.tools.common.validation,
- org.jboss.ide.eclipse.as.ui;visibility:=reexport,
  org.eclipse.ui;bundle-version="3.7.0",
  org.eclipse.jdt.launching;bundle-version="3.6.0",
  org.eclipse.debug.ui;bundle-version="3.7.0",

Modified: trunk/jst/plugins/org.jboss.tools.jst.web/src/org/jboss/tools/jst/web/server/ServerManager.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web/src/org/jboss/tools/jst/web/server/ServerManager.java	2012-03-15 00:23:00 UTC (rev 39523)
+++ trunk/jst/plugins/org.jboss.tools.jst.web/src/org/jboss/tools/jst/web/server/ServerManager.java	2012-03-15 00:59:20 UTC (rev 39524)
@@ -10,5 +10,179 @@
  ******************************************************************************/ 
 package org.jboss.tools.jst.web.server;
 
-public class ServerManager extends org.jboss.ide.eclipse.as.ui.actions.ServerManager {
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.preferences.DefaultScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.IRuntimeLifecycleListener;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.IServerLifecycleListener;
+import org.eclipse.wst.server.core.IServerListener;
+import org.eclipse.wst.server.core.ServerCore;
+import org.eclipse.wst.server.core.ServerEvent;
+
+public class ServerManager {
+	private static ServerManager instance;
+	
+	public static synchronized ServerManager getInstance() {
+		if(instance == null) {
+			instance = new ServerManager();
+		}
+		return instance;
+	}
+	
+	private List<ServerManagerListener> listeners = new ArrayList<ServerManagerListener>();
+	private IServerListener serverListener;
+	protected IServer[] servers = new IServer[0];
+
+	IServer selected = null;
+
+	public ServerManager() {
+		serverListener = new ServerListenerImpl();
+		load();
+	}
+	
+	void load() {
+		servers = (IServer[])ServerCore.getServers().clone();
+		loadSelectedServer();
+		ServerResourceListenerImpl listener = new ServerResourceListenerImpl();
+		ServerCore.addRuntimeLifecycleListener(listener);
+		ServerCore.addServerLifecycleListener(listener);
+	}
+	
+	private void loadSelectedServer() {
+		if(servers == null || servers.length == 0) return;
+		String ds = getDefaultWebServer();
+		IServer s = getServer(ds);
+		if(s == null && servers.length > 0) {
+			s = servers[0];
+			setDefaultWebServer(servers[0].getId());
+		}
+		setSelectedServerInternal(s);
+	}
+	
+	public IServer[] getServers() {
+		return servers;
+	}
+	
+	public IServer getServer(String serverId) {
+		for (int i = 0; i < servers.length; i++) {
+			if(servers[i].getId().equals(serverId)) {
+				return servers[i];
+			}
+		}
+		return null;
+	}
+	
+	public void addListener(ServerManagerListener listener) {
+		if(!listeners.contains(listener)) listeners.add(listener);
+	}
+	
+	public void removeListener(ServerManagerListener listener) {
+		listeners.remove(listener);
+	}
+	
+	void fire() {
+		ServerManagerListener[] ls = (ServerManagerListener[])listeners.toArray(new ServerManagerListener[0]);
+		for (int i = 0; i < ls.length; i++) {
+			ls[i].serverManagerChanged();
+		}
+	}
+	
+	public void setSelectedServer(String id) {
+		IServer server = getServer(id);
+		if(server == selected) return;
+		setSelectedServerInternal(server);
+		setDefaultWebServer(id);
+		fire();
+	}
+	
+	private void setSelectedServerInternal(IServer server) {
+		if(selected == server) return;
+		if(selected != null) selected.removeServerListener(serverListener);
+		selected = server;
+		if(selected != null) selected.addServerListener(serverListener);
+	}
+	
+	public String getSelectedServerId() {
+		String result = getDefaultWebServer();
+		return result == null ? "" : result; //$NON-NLS-1$
+	}
+
+	public IServer getSelectedServer() {
+		return selected;
+	}
+
+	class ServerResourceListenerImpl implements IRuntimeLifecycleListener, IServerLifecycleListener {
+		public void serverAdded(IServer server) {
+			IServer[] ss = new IServer[servers.length + 1];
+			System.arraycopy(servers, 0, ss, 0, servers.length);
+			ss[servers.length] = server;
+			servers = ss;
+			loadSelectedServer();
+			fire();
+		}
+		public void serverChanged(IServer server) {
+			fire();
+		}
+		public void serverRemoved(IServer server) {
+			List<IServer> l = new ArrayList<IServer>();
+			for (int i = 0; i < servers.length; i++) {
+				if(servers[i] != server) l.add(servers[i]);
+			}
+			if(l.size() == servers.length) return;
+			servers = l.toArray(new IServer[0]);
+			loadSelectedServer();
+			fire();
+		}
+		public void runtimeAdded(IRuntime runtime) {
+			fire();
+		}
+		public void runtimeChanged(IRuntime runtime) {
+			fire();
+		}
+		public void runtimeRemoved(IRuntime runtime) {
+			fire();
+		}
+	}
+	
+	class ServerListenerImpl implements IServerListener {
+		public void serverChanged(ServerEvent arg0) {
+			fire();
+		}
+	}
+	
+	static String DEFAULT_WEB_SERVER = "org.jboss.ide.eclipse.as.ui" + ".defaultWebServer"; //$NON-NLS-1$
+	
+	static String getDefaultWebServer() {
+		String result = getInstancePreference(DEFAULT_WEB_SERVER);
+		return result;
+	}
+	
+	static void setDefaultWebServer(String value) {
+		getInstancePreferences().put(DEFAULT_WEB_SERVER, value);
+	}
+
+	static IEclipsePreferences getInstancePreferences() {
+		return new InstanceScope().getNode("org.jboss.ide.eclipse.as.ui");
+	}
+
+	static IEclipsePreferences getDefaultPreferences() {
+		return new DefaultScope().getNode("org.jboss.ide.eclipse.as.ui");
+	}
+
+	static String getInstancePreference(String key) {
+		IEclipsePreferences p = getInstancePreferences();
+		String value = p == null ? null : p.get(key, null);
+		return value != null ? value : getDefaultPreference(key);
+	}
+
+	static String getDefaultPreference(String key) {
+		IEclipsePreferences p = getDefaultPreferences();
+		return p == null ? null : p.get(key, null);
+	}
+
 }

Modified: trunk/jst/plugins/org.jboss.tools.jst.web/src/org/jboss/tools/jst/web/server/ServerManagerListener.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web/src/org/jboss/tools/jst/web/server/ServerManagerListener.java	2012-03-15 00:23:00 UTC (rev 39523)
+++ trunk/jst/plugins/org.jboss.tools.jst.web/src/org/jboss/tools/jst/web/server/ServerManagerListener.java	2012-03-15 00:59:20 UTC (rev 39524)
@@ -10,5 +10,6 @@
  ******************************************************************************/ 
 package org.jboss.tools.jst.web.server;
 
-public interface ServerManagerListener extends org.jboss.ide.eclipse.as.ui.actions.ServerManagerListener {
+public interface ServerManagerListener {
+	public void serverManagerChanged();
 }



More information about the jbosstools-commits mailing list