View | Details | Raw Unified | Return to bug 245013 | Differences between
and this patch

Collapse All | Expand All

(-)META-INF/MANIFEST.MF (-1 / +2 lines)
Lines 44-49 Link Here
44
 org.eclipse.wst.internet.monitor.core;bundle-version="[1.0.103,2.0.0)",
44
 org.eclipse.wst.internet.monitor.core;bundle-version="[1.0.103,2.0.0)",
45
 org.eclipse.update.core;bundle-version="[3.2.0,4.0.0)";resolution:=optional,
45
 org.eclipse.update.core;bundle-version="[3.2.0,4.0.0)";resolution:=optional,
46
 org.eclipse.jface.text;bundle-version="[3.4.0,4.0.0)",
46
 org.eclipse.jface.text;bundle-version="[3.4.0,4.0.0)",
47
 org.eclipse.wst.common.project.facet.ui;bundle-version="[1.1.0,2.0.0)";resolution:=optional
47
 org.eclipse.wst.common.project.facet.ui;bundle-version="[1.1.0,2.0.0)";resolution:=optional,
48
 org.eclipse.ui.navigator;bundle-version="3.3.100"
48
Bundle-ActivationPolicy: lazy;exclude:="org.eclipse.wst.server.ui.internal.webbrowser"
49
Bundle-ActivationPolicy: lazy;exclude:="org.eclipse.wst.server.ui.internal.webbrowser"
49
Bundle-RequiredExecutionEnvironment: J2SE-1.5
50
Bundle-RequiredExecutionEnvironment: J2SE-1.5
(-)plugin.xml (+71 lines)
Lines 37-42 Link Here
37
    category="org.eclipse.wst.server.ui"
37
    category="org.eclipse.wst.server.ui"
38
    class="org.eclipse.wst.server.ui.internal.view.servers.ServersView"
38
    class="org.eclipse.wst.server.ui.internal.view.servers.ServersView"
39
    icon="icons/cview16/servers_view.gif"/>
39
    icon="icons/cview16/servers_view.gif"/>
40
41
  <view
42
    id="org.eclipse.wst.server.ui.ServersViewProvisional"
43
    name="ser2 %viewServers"
44
    category="org.eclipse.wst.server.ui"
45
    class="org.eclipse.wst.server.ui.internal.view.servers.provisional.ServersView"
46
    icon="icons/cview16/servers_view.gif"/>
47
</extension>
48
<extension
49
      point="org.eclipse.ui.navigator.navigatorContent">
50
   <navigatorContent
51
         activeByDefault="true"
52
         contentProvider="org.eclipse.wst.server.ui.internal.view.servers.provisional.ServerContentProvider"
53
         icon="icons/cview16/servers_view.gif"
54
         id="org.eclipse.wst.server.ui.ServersView.content.root"
55
         labelProvider="org.eclipse.wst.server.ui.internal.view.servers.provisional.ServerLabelProvider"
56
         name="Servers View Default Content"
57
         priority="normal">
58
      <triggerPoints>
59
         <instanceof
60
               value="org.eclipse.wst.server.core.internal.ServerPlugin">
61
         </instanceof>
62
      </triggerPoints>
63
      <possibleChildren>
64
         <or>
65
            <instanceof
66
                  value="org.eclipse.wst.server.core.IServer">
67
            </instanceof>
68
            <instanceof
69
                  value="org.eclipse.wst.server.ui.internal.view.servers.ModuleServer">
70
            </instanceof>
71
         </or></possibleChildren>
72
      <actionProvider
73
            class="org.eclipse.wst.server.ui.internal.view.servers.provisional.ServerActionProvider"
74
            id="org.eclipse.wst.server.ui.internal.view.servers.provisional.ServerActionProvider"
75
            priority="highest">
76
      </actionProvider>
77
   </navigatorContent>
78
</extension>
79
<extension
80
      point="org.eclipse.ui.navigator.viewer">
81
   <viewerContentBinding
82
         viewerId="org.eclipse.wst.server.ui.ServersViewProvisional">
83
      <includes>
84
         <contentExtension
85
               isRoot="true"
86
               pattern="org.eclipse.wst.server.ui.ServersView.content.root">
87
         </contentExtension>
88
      </includes>
89
   </viewerContentBinding>
40
</extension>
90
</extension>
41
91
42
<extension point="org.eclipse.ui.perspectiveExtensions">
92
<extension point="org.eclipse.ui.perspectiveExtensions">
Lines 503-507 Link Here
503
        id="org.eclipse.wst.server.ui.launchable.adapter.default"
553
        id="org.eclipse.wst.server.ui.launchable.adapter.default"
504
        priority="-999999"/>
554
        priority="-999999"/>
505
</extension>
555
</extension>
556
<extension
557
      point="org.eclipse.ui.decorators">
558
   <decorator
559
         class="org.eclipse.wst.server.ui.internal.view.servers.provisional.ServerDecorator"
560
         icon="icons/obj16/server.gif"
561
         id="org.eclipse.wst.server.ui.navigatorDecorator"
562
         label="Server State Decorator"
563
         lightweight="true"
564
         location="BOTTOM_RIGHT">
565
      <enablement>
566
         <or>
567
            <objectClass
568
                  name="org.eclipse.wst.server.core.IServer">
569
            </objectClass>
570
            <objectClass
571
                  name="org.eclipse.wst.server.ui.internal.view.servers.ModuleServer">
572
            </objectClass>
573
         </or>
574
      </enablement>
575
   </decorator>
576
</extension>
506
577
507
</plugin>
578
</plugin>
(-)serverui/org/eclipse/wst/server/ui/internal/view/servers/ServerTableViewer.java (-8 / +18 lines)
Lines 18-30 Link Here
18
18
19
import org.eclipse.core.resources.IProject;
19
import org.eclipse.core.resources.IProject;
20
import org.eclipse.core.runtime.IStatus;
20
import org.eclipse.core.runtime.IStatus;
21
import org.eclipse.jface.viewers.*;
21
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
22
22
import org.eclipse.jface.viewers.ISelection;
23
import org.eclipse.wst.server.core.*;
23
import org.eclipse.jface.viewers.ITreeContentProvider;
24
import org.eclipse.wst.server.core.internal.Server;
24
import org.eclipse.jface.viewers.LabelProviderChangedEvent;
25
import org.eclipse.wst.server.core.util.PublishAdapter;
25
import org.eclipse.jface.viewers.TreeViewer;
26
import org.eclipse.wst.server.ui.internal.Trace;
27
import org.eclipse.wst.server.ui.internal.viewers.BaseContentProvider;
28
import org.eclipse.swt.SWT;
26
import org.eclipse.swt.SWT;
29
import org.eclipse.swt.dnd.Clipboard;
27
import org.eclipse.swt.dnd.Clipboard;
30
import org.eclipse.swt.events.DisposeEvent;
28
import org.eclipse.swt.events.DisposeEvent;
Lines 38-43 Link Here
38
import org.eclipse.swt.widgets.TreeItem;
36
import org.eclipse.swt.widgets.TreeItem;
39
import org.eclipse.swt.widgets.Widget;
37
import org.eclipse.swt.widgets.Widget;
40
import org.eclipse.ui.PlatformUI;
38
import org.eclipse.ui.PlatformUI;
39
import org.eclipse.wst.server.core.IModule;
40
import org.eclipse.wst.server.core.IPublishListener;
41
import org.eclipse.wst.server.core.IServer;
42
import org.eclipse.wst.server.core.IServerLifecycleListener;
43
import org.eclipse.wst.server.core.IServerListener;
44
import org.eclipse.wst.server.core.ServerCore;
45
import org.eclipse.wst.server.core.ServerEvent;
46
import org.eclipse.wst.server.core.internal.Server;
47
import org.eclipse.wst.server.core.util.PublishAdapter;
48
import org.eclipse.wst.server.ui.internal.Trace;
49
import org.eclipse.wst.server.ui.internal.view.servers.provisional.ServerDecorator;
50
import org.eclipse.wst.server.ui.internal.viewers.BaseContentProvider;
41
/**
51
/**
42
 * Tree view showing servers and their associations.
52
 * Tree view showing servers and their associations.
43
 */
53
 */
Lines 152-158 Link Here
152
			public void run() {
162
			public void run() {
153
				if (!stopAnimation) {
163
				if (!stopAnimation) {
154
					try {
164
					try {
155
						labelProvider.animate();
165
						ServerDecorator.animate();
156
						
166
						
157
						int size = 0;
167
						int size = 0;
158
						String[] servers;
168
						String[] servers;
(-)serverui/org/eclipse/wst/server/ui/internal/view/servers/ServerTableLabelProvider.java (-230 / +12 lines)
Lines 10-56 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.wst.server.ui.internal.view.servers;
11
package org.eclipse.wst.server.ui.internal.view.servers;
12
12
13
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.swt.graphics.Image;
14
import org.eclipse.jface.viewers.ILabelProvider;
15
import org.eclipse.ui.ISharedImages;
14
import org.eclipse.ui.ISharedImages;
16
import org.eclipse.ui.PlatformUI;
15
import org.eclipse.ui.PlatformUI;
17
import org.eclipse.wst.server.core.IServer;
16
import org.eclipse.wst.server.core.IServer;
18
import org.eclipse.wst.server.core.IServerType;
17
import org.eclipse.wst.server.ui.internal.view.servers.provisional.ServerDecorator;
19
import org.eclipse.wst.server.core.internal.Server;
20
import org.eclipse.wst.server.ui.ServerUICore;
21
import org.eclipse.wst.server.ui.internal.ImageResource;
22
import org.eclipse.wst.server.ui.internal.Messages;
23
import org.eclipse.wst.server.ui.internal.ServerUIPlugin;
24
import org.eclipse.wst.server.ui.internal.provisional.UIDecoratorManager;
25
import org.eclipse.wst.server.ui.internal.viewers.BaseCellLabelProvider;
18
import org.eclipse.wst.server.ui.internal.viewers.BaseCellLabelProvider;
26
import org.eclipse.wst.server.ui.internal.viewers.ServerTreeContentProvider;
19
import org.eclipse.wst.server.ui.internal.viewers.ServerTreeContentProvider;
27
import org.eclipse.swt.graphics.Image;
28
/**
20
/**
29
 * Server table label provider.
21
 * Server table label provider.
30
 */
22
 */
31
public class ServerTableLabelProvider extends BaseCellLabelProvider {
23
public class ServerTableLabelProvider extends BaseCellLabelProvider {
32
	public static final String[] syncState = new String[] {
33
		Messages.viewSyncOkay,
34
		Messages.viewSyncRestart,
35
		Messages.viewSyncPublish,
36
		Messages.viewSyncRestartPublish,
37
		Messages.viewSyncPublishing};
38
39
	public static final String[] syncStateUnmanaged = new String[] {
40
		Messages.viewSyncOkay2,
41
		Messages.viewSyncRestart2,
42
		Messages.viewSyncPublish2,
43
		Messages.viewSyncRestartPublish2,
44
		Messages.viewSyncPublishing2};
45
46
	private static final String[] modulePublishState = new String[] {
47
		"",
48
		Messages.viewSyncOkay,
49
		Messages.viewSyncPublish,
50
		Messages.viewSyncPublish};
51
52
	private int count = 0;
53
54
	protected IServer defaultServer;
24
	protected IServer defaultServer;
55
25
56
	/**
26
	/**
Lines 60-73 Link Here
60
		super();
30
		super();
61
	}
31
	}
62
32
63
	public void setDefaultServer(IServer ds) {
64
		defaultServer = ds;
65
	}
66
67
	public IServer getDefaultServer() {
68
		return defaultServer;
69
	}
70
71
	public Image getColumnImage(Object element, int columnIndex) {
33
	public Image getColumnImage(Object element, int columnIndex) {
72
		if (element instanceof ServerTreeContentProvider.TreeElement) {
34
		if (element instanceof ServerTreeContentProvider.TreeElement) {
73
			if (columnIndex == 0) {
35
			if (columnIndex == 0) {
Lines 79-145 Link Here
79
		if (element instanceof ModuleServer) {
41
		if (element instanceof ModuleServer) {
80
			ModuleServer ms = (ModuleServer) element;
42
			ModuleServer ms = (ModuleServer) element;
81
			if (columnIndex == 0) {
43
			if (columnIndex == 0) {
82
				//return ServerUICore.getLabelProvider().getImage(ms.module[ms.module.length - 1]);
44
				return ServerDecorator.getModuleImage(ms);
83
				ILabelProvider labelProvider = ServerUICore.getLabelProvider();
84
				Image image = labelProvider.getImage(ms.module[ms.module.length - 1]);
85
				labelProvider.dispose();
86
				if (decorator != null) {
87
					Image dec = decorator.decorateImage(image, ms);
88
					if (dec != null)
89
						return dec;
90
				}
91
				return image;
92
			} else if (columnIndex == 1) {
45
			} else if (columnIndex == 1) {
93
				if (ms.server == null)
46
				return ServerDecorator.getStateImage(ms.server.getServerType(), ms.server.getModuleState(ms.module), null);
94
					return null;
95
				
96
				/*int state = ms.server.getModuleState(ms.module);
97
				if (state == IServer.STATE_STARTED)
98
					return ImageResource.getImage(ImageResource.IMG_STATE_STARTED);
99
				else if (state == IServer.STATE_STOPPED)
100
					return ImageResource.getImage(ImageResource.IMG_STATE_STOPPED);
101
				*/
102
				return getStateImage(ms.server.getServerType(), ms.server.getModuleState(ms.module), null);
103
			} else if (columnIndex == 2) {
47
			} else if (columnIndex == 2) {
104
				IStatus status = ((Server) ms.server).getModuleStatus(ms.module);
48
				return ServerDecorator.getModuleStatusImage(ms);
105
				if (status != null) {
106
					ISharedImages sharedImages = ServerUIPlugin.getInstance().getWorkbench().getSharedImages();
107
					if (status.getSeverity() == IStatus.ERROR)
108
						return sharedImages.getImage(ISharedImages.IMG_OBJS_ERROR_TSK);
109
					else if (status.getSeverity() == IStatus.WARNING)
110
						return sharedImages.getImage(ISharedImages.IMG_OBJS_WARN_TSK);
111
					else if (status.getSeverity() == IStatus.INFO)
112
						return sharedImages.getImage(ISharedImages.IMG_OBJS_INFO_TSK);
113
				}
114
			}
49
			}
115
			return null;
50
			return null;
116
		}
51
		}
117
		IServer server = (IServer) element;
52
		IServer server = (IServer) element;
118
		if (columnIndex == 0) {
53
		if (columnIndex == 0) {
119
			if (server.getServerType() != null) {
54
			return ServerDecorator.getServerImage(server);
120
				Image image = ImageResource.getImage(server.getServerType().getId());
121
				/*IStatus status = ((Server) server).getServerStatus();
122
				if (defaultServer != null && defaultServer.equals(server) || status != null) {
123
					Image decorated = decorator.decorateImage(image, element);
124
					if (decorated != null)
125
						return decorated;
126
				}*/
127
				//return image;
128
				if (decorator != null) {
129
					Image dec = decorator.decorateImage(image, server);
130
					if (dec != null)
131
						return dec;
132
				}
133
				return image;
134
			}
135
			return null;
136
		} else if (columnIndex == 1) {
55
		} else if (columnIndex == 1) {
137
			IServerType serverType = server.getServerType();
56
			return ServerDecorator.getServerStateImage(server);
138
			if (serverType == null)
139
				return null;
140
			//if (serverType.getServerStateSet() == IServerType.SERVER_STATE_SET_PUBLISHED)
141
			//	return null;
142
			return getServerStateImage(server);
143
		} else
57
		} else
144
			return null;
58
			return null;
145
	}
59
	}
Lines 157-228 Link Here
157
		if (element instanceof ModuleServer) {
71
		if (element instanceof ModuleServer) {
158
			ModuleServer ms = (ModuleServer) element;
72
			ModuleServer ms = (ModuleServer) element;
159
			if (columnIndex == 0) {
73
			if (columnIndex == 0) {
160
				if (ms.module == null)
74
				return ServerDecorator.getModuleText(ms);
161
					return "";
162
				int size = ms.module.length;
163
				String name = ms.module[size - 1].getName();
164
				if (decorator != null) {
165
					String dec = decorator.decorateText(name, ms);
166
					if (dec != null)
167
						return dec;
168
				}
169
				return name;
170
			} else if (columnIndex == 1) {
75
			} else if (columnIndex == 1) {
171
				//if (ms.server == null)
172
				//	return "";
173
				//return getStateLabel(ms.server.getServerType(), ms.server.getModuleState(ms.module), null);
76
				//return getStateLabel(ms.server.getServerType(), ms.server.getModuleState(ms.module), null);
174
				return "";
77
				return "";
175
			} else if (columnIndex == 2) {
78
			} else if (columnIndex == 2) {
176
				IStatus status = ((Server) ms.server).getModuleStatus(ms.module);
79
				return ServerDecorator.getModuleStatusText(ms);
177
				if (status != null)
178
					return status.getMessage();
179
				
180
				return modulePublishState[ms.server.getModulePublishState(ms.module)];
181
			}
80
			}
182
		}
81
		}
82
183
		IServer server = (IServer) element;
83
		IServer server = (IServer) element;
184
		if (columnIndex == 0)
84
		if (columnIndex == 0)
185
			return notNull(server.getName());
85
			return notNull(server.getName());
186
		else if (columnIndex == 1) {
86
		else if (columnIndex == 1) {
187
			IServerType serverType = server.getServerType();
87
			return ServerDecorator.getServerStateLabel(server);
188
			if (serverType != null)
189
				return getServerStateLabel(server);
190
			
191
			return "";
192
		} else if (columnIndex == 2) {
88
		} else if (columnIndex == 2) {
193
			IStatus status = ((Server) server).getServerStatus();
89
			return ServerDecorator.getServerStatusLabel(server);
194
			if (status != null)
195
				return status.getMessage();
196
			
197
			if (server.getServerType() == null)
198
				return "";
199
			
200
			//if (server.getServerType().hasServerConfiguration() && server.getServerConfiguration() == null)
201
			//	return Messages.viewNoConfiguration");
202
			
203
			if (server.getServerState() == IServer.STATE_UNKNOWN)
204
				return "";
205
			
206
			String serverId = server.getId();
207
			if (ServerTableViewer.publishing.contains(serverId))
208
				return syncState[4];
209
			
210
			// republish
211
			int i = 0;
212
			if (server.shouldPublish()) {
213
				if (((Server)server).isPublishUnknown())
214
					return "";
215
				i += 2;
216
			}
217
			
218
			if (server.shouldRestart())
219
				i = 1;
220
			
221
			//IServerType serverType = server.getServerType();
222
			// TODO: state set
223
			//if (serverType.getServerStateSet() == IServerType.SERVER_STATE_SET_MANAGED)
224
				return syncState[i];
225
			//return syncStateUnmanaged[i];
226
		} else
90
		} else
227
			return "-";
91
			return "-";
228
	}
92
	}
Lines 237-322 Link Here
237
		return false;
101
		return false;
238
	}
102
	}
239
103
240
	/**
241
	 * Returns an image representing the server's state.
242
	 * 
243
	 * @return org.eclipse.jface.parts.IImage
244
	 * @param server org.eclipse.wst.server.core.IServer
245
	 */
246
	protected Image getServerStateImage(IServer server) {
247
		return getStateImage(server.getServerType(), server.getServerState(), server.getMode());
248
	}
249
250
	/**
251
	 * Returns an image representing the given state.
252
	 * 
253
	 * @return org.eclipse.jface.parts.IImage
254
	 */
255
	protected Image getStateImage(IServerType serverType, int state, String mode) {
256
		return UIDecoratorManager.getUIDecorator(serverType).getStateImage(state, mode, count);
257
		/*if (state == IServer.STATE_UNKNOWN)
258
			return null;
259
		else if (state == IServer.STATE_STARTING)
260
			return startingImages[count];
261
		else if (state == IServer.STATE_STOPPING)
262
			return stoppingImages[count];
263
		else if (state == IServer.STATE_STOPPED)
264
			return ImageResource.getImage(ImageResource.IMG_SERVER_STATE_STOPPED);
265
		else { //if (state == IServer.STATE_STARTED) {
266
			//String mode = server.getMode();
267
			if (ILaunchManager.DEBUG_MODE.equals(mode))
268
				return ImageResource.getImage(ImageResource.IMG_SERVER_STATE_STARTED_DEBUG);
269
			else if (ILaunchManager.PROFILE_MODE.equals(mode))
270
				return ImageResource.getImage(ImageResource.IMG_SERVER_STATE_STARTED_PROFILE);
271
			else
272
				return ImageResource.getImage(ImageResource.IMG_SERVER_STATE_STARTED);
273
		}*/
274
	}
275
	
276
	/**
277
	 * Returns a string representing the server's state.
278
	 *
279
	 * @return java.lang.String
280
	 * @param server org.eclipse.wst.server.core.IServer
281
	 */
282
	protected String getServerStateLabel(IServer server) {
283
		return getStateLabel(server.getServerType(), server.getServerState(), server.getMode());
284
	}
285
286
	/**
287
	 * Returns a string representing the given state.
288
	 *
289
	 * @return java.lang.String
290
	 */
291
	protected String getStateLabel(IServerType serverType, int state, String mode) {
292
		return UIDecoratorManager.getUIDecorator(serverType).getStateLabel(state, mode, count);
293
		/*if (stateSet == IServerType.SERVER_STATE_SET_PUBLISHED)
294
			return "";
295
		
296
		if (stateSet == IServerType.SERVER_STATE_SET_MANAGED) {
297
			if (state == IServer.STATE_UNKNOWN)
298
				return "";
299
			else if (state == IServer.STATE_STARTING)
300
				return startingText[count];
301
			else if (state == IServer.STATE_STOPPING)
302
				return stoppingText[count];
303
			else if (state == IServer.STATE_STARTED) {
304
				if (ILaunchManager.DEBUG_MODE.equals(mode))
305
					return Messages.viewStatusStartedDebug");
306
				else if (ILaunchManager.PROFILE_MODE.equals(mode))
307
					return Messages.viewStatusStartedProfile");
308
				else
309
					return Messages.viewStatusStarted");
310
			} else if (state == IServer.STATE_STOPPED)
311
				return Messages.viewStatusStopped");
312
		}
313
		
314
		return serverStateUnmanaged[state];*/
315
	}
316
	
317
	protected void animate() {
318
		count ++;
319
		if (count > 2)
320
			count = 0;
321
	}
322
}
104
}
(-)serverui/org/eclipse/wst/server/ui/internal/view/servers/provisional/ServersView.java (+24 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2003, 2008 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 *     IBM Corporation - Initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.wst.server.ui.internal.view.servers.provisional;
12
13
import org.eclipse.ui.navigator.CommonNavigator;
14
/**
15
 * A view of servers, their modules, and status.
16
 */
17
public class ServersView extends CommonNavigator {
18
	/**
19
	 * ServersView constructor comment.
20
	 */
21
	public ServersView() {
22
		super();
23
	}
24
}
(-)serverui/org/eclipse/wst/server/ui/internal/view/servers/provisional/ServerDecorator.java (+196 lines)
Added Link Here
1
package org.eclipse.wst.server.ui.internal.view.servers.provisional;
2
3
import org.eclipse.core.runtime.IStatus;
4
import org.eclipse.jface.viewers.IDecoration;
5
import org.eclipse.jface.viewers.ILabelProvider;
6
import org.eclipse.jface.viewers.ILightweightLabelDecorator;
7
import org.eclipse.jface.viewers.LabelProvider;
8
import org.eclipse.jface.viewers.LabelProviderChangedEvent;
9
import org.eclipse.swt.graphics.Image;
10
import org.eclipse.ui.ISharedImages;
11
import org.eclipse.wst.server.core.IServer;
12
import org.eclipse.wst.server.core.IServerType;
13
import org.eclipse.wst.server.core.internal.Server;
14
import org.eclipse.wst.server.ui.ServerUICore;
15
import org.eclipse.wst.server.ui.internal.ImageResource;
16
import org.eclipse.wst.server.ui.internal.Messages;
17
import org.eclipse.wst.server.ui.internal.ServerUIPlugin;
18
import org.eclipse.wst.server.ui.internal.provisional.UIDecoratorManager;
19
import org.eclipse.wst.server.ui.internal.view.servers.ModuleServer;
20
21
public class ServerDecorator extends LabelProvider implements ILightweightLabelDecorator {
22
23
	public static final String[] syncState = new String[] {
24
		Messages.viewSyncOkay,
25
		Messages.viewSyncRestart,
26
		Messages.viewSyncPublish,
27
		Messages.viewSyncRestartPublish,
28
		Messages.viewSyncPublishing};
29
30
	public static final String[] syncStateUnmanaged = new String[] {
31
		Messages.viewSyncOkay2,
32
		Messages.viewSyncRestart2,
33
		Messages.viewSyncPublish2,
34
		Messages.viewSyncRestartPublish2,
35
		Messages.viewSyncPublishing2};
36
37
	public static final String[] modulePublishState = new String[] {
38
		"",
39
		Messages.viewSyncOkay,
40
		Messages.viewSyncPublish,
41
		Messages.viewSyncPublish};
42
43
	private static ServerDecorator instance;
44
	public static ServerDecorator getDefault() {
45
		return instance;
46
	}
47
48
	private static int count = 0;
49
	public static void animate() {
50
		count = (count + 1)%3;
51
	}
52
	public static int getCount() {
53
		return count;
54
	}
55
	
56
	public ServerDecorator() {
57
		instance = this;
58
	}
59
60
	public void decorate(Object element, IDecoration decoration) {
61
		if( element instanceof IServer ) {
62
			String state = getServerStateLabel((IServer)element);
63
			String status = getServerStatusLabel((IServer)element);
64
			decoration.addSuffix(combine(state, status));
65
		} else if( element instanceof ModuleServer ) {
66
			String state = getModuleStateText((ModuleServer)element);
67
			String status = getModuleStatusText((ModuleServer)element);
68
			decoration.addSuffix(combine(state, status));
69
		}
70
	}
71
	
72
	protected String combine(String state, String status) {
73
		if(isEmpty(state) && isEmpty(status))
74
			return "";
75
		if( isEmpty(state))
76
			return "  [" + status + "]";
77
		if( isEmpty(status))
78
			return "  [" + state + "]";
79
		return "  [" + state + ", " + status + "]";
80
	}
81
	
82
	protected boolean isEmpty(String s) {
83
		return (s == null || "".equals(s));
84
	}
85
	
86
	public void redecorate(IServer server) {
87
		fireLabelProviderChanged(new LabelProviderChangedEvent(this));
88
	}
89
90
	
91
	
92
	/*
93
	 * Utility methods
94
	 */
95
	public static Image getServerImage(IServer server) {
96
		return server == null ? null : 
97
			server.getServerType() == null ? null : 
98
				ImageResource.getImage(server.getServerType().getId());
99
	}
100
	
101
	public static String getServerStateLabel(IServer server) {
102
		return server == null ? null : 
103
			server.getServerType() == null ? null : 
104
				getStateLabel(server.getServerType(), server.getServerState(), server.getMode());
105
	}
106
107
	public static String getStateLabel(IServerType serverType, int state, String mode) {
108
		return serverType == null ? null : 
109
			UIDecoratorManager.getUIDecorator(serverType).getStateLabel(state, mode, count);
110
	}
111
	
112
	public static String getServerStatusLabel(IServer server) {
113
		IStatus status = ((Server) server).getServerStatus();
114
		if (status != null)
115
			return status.getMessage();
116
		
117
		if (server.getServerType() == null)
118
			return "";
119
120
		if (server.getServerState() == IServer.STATE_UNKNOWN)
121
			return "";
122
		
123
		String serverId = server.getId();
124
		if (ServerContentProvider.publishing.contains(serverId))
125
			return ServerDecorator.syncState[4];
126
		
127
		// republish
128
		int i = 0;
129
		if (server.shouldPublish()) {
130
			if (((Server)server).isPublishUnknown())
131
				return "";
132
			i += 2;
133
		}
134
		
135
		if (server.shouldRestart())
136
			i = 1;
137
		
138
		return syncState[i];
139
	}
140
141
	public static Image getServerStateImage(IServer server) {
142
		return server == null ? null : 
143
			getStateImage(server.getServerType(), server.getServerState(), server.getMode());
144
	}
145
146
	public static Image getStateImage(IServerType serverType, int state, String mode) {
147
		return serverType == null ? null : 
148
			UIDecoratorManager.getUIDecorator(serverType).getStateImage(state, mode, getCount());
149
	}
150
	
151
	public static String getModuleText(ModuleServer ms ) { 
152
		if (ms == null || ms.module == null)
153
			return "";
154
		int size = ms.module.length;
155
		return ms.module[size - 1].getName();
156
	}
157
	
158
	public static Image getModuleImage(ModuleServer ms) {
159
		if( ms != null ) {
160
			ILabelProvider labelProvider = ServerUICore.getLabelProvider();
161
			Image image = labelProvider.getImage(ms.module[ms.module.length - 1]);
162
			labelProvider.dispose();
163
			return image;
164
		} 
165
		return null;
166
	}
167
	
168
	public static String getModuleStateText(ModuleServer ms) {
169
		return "";
170
	}
171
	
172
	public static String getModuleStatusText(ModuleServer ms) {
173
		if( ms != null && ms.server != null && ms.module != null ) {
174
			IStatus status = ((Server) ms.server).getModuleStatus(ms.module);
175
			if (status != null)
176
				return status.getMessage();
177
			
178
			return modulePublishState[ms.server.getModulePublishState(ms.module)];
179
		}
180
		return "";
181
	}
182
	
183
	public static Image getModuleStatusImage(ModuleServer ms) {
184
		IStatus status = ((Server) ms.server).getModuleStatus(ms.module);
185
		if (status != null) {
186
			ISharedImages sharedImages = ServerUIPlugin.getInstance().getWorkbench().getSharedImages();
187
			if (status.getSeverity() == IStatus.ERROR)
188
				return sharedImages.getImage(ISharedImages.IMG_OBJS_ERROR_TSK);
189
			else if (status.getSeverity() == IStatus.WARNING)
190
				return sharedImages.getImage(ISharedImages.IMG_OBJS_WARN_TSK);
191
			else if (status.getSeverity() == IStatus.INFO)
192
				return sharedImages.getImage(ISharedImages.IMG_OBJS_INFO_TSK);
193
		}
194
		return null;
195
	}
196
}
(-)serverui/org/eclipse/wst/server/ui/internal/view/servers/provisional/ServerContentProvider.java (+331 lines)
Added Link Here
1
package org.eclipse.wst.server.ui.internal.view.servers.provisional;
2
3
import java.util.ArrayList;
4
import java.util.HashSet;
5
import java.util.List;
6
import java.util.Set;
7
8
import org.eclipse.core.runtime.IProgressMonitor;
9
import org.eclipse.core.runtime.IStatus;
10
import org.eclipse.core.runtime.Status;
11
import org.eclipse.core.runtime.jobs.Job;
12
import org.eclipse.jface.viewers.ISelection;
13
import org.eclipse.jface.viewers.ITreeContentProvider;
14
import org.eclipse.jface.viewers.StructuredViewer;
15
import org.eclipse.jface.viewers.Viewer;
16
import org.eclipse.swt.widgets.Display;
17
import org.eclipse.wst.server.core.IModule;
18
import org.eclipse.wst.server.core.IPublishListener;
19
import org.eclipse.wst.server.core.IServer;
20
import org.eclipse.wst.server.core.IServerLifecycleListener;
21
import org.eclipse.wst.server.core.IServerListener;
22
import org.eclipse.wst.server.core.ServerCore;
23
import org.eclipse.wst.server.core.ServerEvent;
24
import org.eclipse.wst.server.core.internal.Server;
25
import org.eclipse.wst.server.core.internal.UpdateServerJob;
26
import org.eclipse.wst.server.core.util.PublishAdapter;
27
import org.eclipse.wst.server.ui.internal.Messages;
28
import org.eclipse.wst.server.ui.internal.Trace;
29
import org.eclipse.wst.server.ui.internal.view.servers.ModuleServer;
30
import org.eclipse.wst.server.ui.internal.viewers.BaseContentProvider;
31
32
public class ServerContentProvider extends BaseContentProvider implements ITreeContentProvider {
33
	public static Object INITIALIZING = new Object();
34
	protected IServerLifecycleListener serverResourceListener;
35
	protected IPublishListener publishListener;
36
	protected IServerListener serverListener;
37
38
	// servers that are currently publishing and starting
39
	protected static Set<String> publishing = new HashSet<String>(4);
40
	protected static Set<String> starting = new HashSet<String>(4);
41
	protected boolean animationActive = false;
42
	protected boolean stopAnimation = false;
43
	protected boolean initialized = false;
44
	
45
	
46
	private StructuredViewer viewer;
47
	
48
	public ServerContentProvider() {
49
		addListeners();
50
	}
51
	
52
	public Object[] getElements(Object element) {
53
		if( !initialized ) {
54
			deferInitialization();
55
			return new Object[] {INITIALIZING};
56
		}
57
		
58
		List<IServer> list = new ArrayList<IServer>();
59
		IServer[] servers = ServerCore.getServers();
60
		if (servers != null) {
61
			int size = servers.length;
62
			for (int i = 0; i < size; i++) {
63
				if (!((Server)servers[i]).isPrivate())
64
					list.add(servers[i]);
65
			}
66
		}
67
		return list.toArray();
68
	}
69
70
	public Object[] getChildren(Object element) {
71
		if (element instanceof ModuleServer) {
72
			ModuleServer ms = (ModuleServer) element;
73
			try {
74
				IModule[] children = ms.server.getChildModules(ms.module, null);
75
				int size = children.length;
76
				ModuleServer[] ms2 = new ModuleServer[size];
77
				for (int i = 0; i < size; i++) {
78
					int size2 = ms.module.length;
79
					IModule[] module = new IModule[size2 + 1];
80
					System.arraycopy(ms.module, 0, module, 0, size2);
81
					module[size2] = children[i];
82
					ms2[i] = new ModuleServer(ms.server, module);
83
				}
84
				return ms2;
85
			} catch (Exception e) {
86
				return null;
87
			}
88
		}
89
		
90
		IServer server = (IServer) element;
91
		IModule[] modules = server.getModules(); 
92
		int size = modules.length;
93
		ModuleServer[] ms = new ModuleServer[size];
94
		for (int i = 0; i < size; i++) {
95
			ms[i] = new ModuleServer(server, new IModule[] { modules[i] });
96
		}
97
		return ms;
98
	}
99
100
	public Object getParent(Object element) {
101
		if (element instanceof ModuleServer) {
102
			ModuleServer ms = (ModuleServer) element;
103
			return ms.server;
104
		}
105
		return null;
106
	}
107
108
	public boolean hasChildren(Object element) {
109
		if (element instanceof ModuleServer) {
110
			// Check if the module server has child modules.
111
			ModuleServer curModuleServer = (ModuleServer)element;
112
			IServer curServer = curModuleServer.server;
113
			IModule[] curModule = curModuleServer.module;
114
			if (curServer != null &&  curModule != null) {
115
				IModule[] curChildModule = curServer.getChildModules(curModule, null);
116
				if (curChildModule != null && curChildModule.length > 0)
117
					return true;
118
				
119
				return false;
120
			}
121
			
122
			return false;
123
		}
124
		if( element instanceof IServer ) {
125
			return ((IServer) element).getModules().length > 0;
126
		}
127
		return false;
128
	}
129
	
130
	public void inputChanged(Viewer aViewer, Object oldInput, Object newInput) {
131
		viewer = (StructuredViewer) aViewer;
132
	}
133
134
	public void dispose() {
135
		// do nothing
136
	}
137
138
	
139
	
140
	// Listeners and refreshing the viewer
141
	protected void addListeners() {
142
		serverResourceListener = new IServerLifecycleListener() {
143
			public void serverAdded(IServer server) {
144
				refreshServer(null);
145
				server.addServerListener(serverListener);
146
				((Server) server).addPublishListener(publishListener);
147
			}
148
			public void serverChanged(IServer server) {
149
				refreshServer(server);
150
			}
151
			public void serverRemoved(IServer server) {
152
				refreshServer(null);
153
				server.removeServerListener(serverListener);
154
				((Server) server).removePublishListener(publishListener);
155
			}
156
		};
157
		ServerCore.addServerLifecycleListener(serverResourceListener);
158
		
159
		publishListener = new PublishAdapter() {
160
			public void publishStarted(IServer server) {
161
				handlePublishChange(server, true);
162
			}
163
			
164
			public void publishFinished(IServer server, IStatus status) {
165
				handlePublishChange(server, false);
166
			}
167
		};
168
		
169
		serverListener = new IServerListener() {
170
			public void serverChanged(ServerEvent event) {
171
				if (event == null)
172
					return;
173
				
174
				int eventKind = event.getKind();
175
				IServer server = event.getServer();
176
				if ((eventKind & ServerEvent.SERVER_CHANGE) != 0) {
177
					// server change event
178
					if ((eventKind & ServerEvent.STATE_CHANGE) != 0) {
179
						refreshServer(server, true);
180
						int state = event.getState();
181
						String id = server.getId();
182
						if (state == IServer.STATE_STARTING || state == IServer.STATE_STOPPING) {
183
							boolean startThread = false;
184
							synchronized (starting) {
185
								if (!starting.contains(id)) {
186
									if (starting.isEmpty())
187
										startThread = true;
188
									starting.add(id);
189
								}
190
							}
191
							if (startThread)
192
								startThread();
193
						} else {
194
							boolean stopThread = false;
195
							synchronized (starting) {
196
								if (starting.contains(id)) {
197
									starting.remove(id);
198
									if (starting.isEmpty())
199
										stopThread = true;
200
								}
201
							}
202
							if (stopThread)
203
								stopThread();
204
						}
205
					} else
206
						refreshServer(server);
207
				} else if ((eventKind & ServerEvent.MODULE_CHANGE) != 0) {
208
					// module change event
209
					if ((eventKind & ServerEvent.STATE_CHANGE) != 0 || (eventKind & ServerEvent.PUBLISH_STATE_CHANGE) != 0) {
210
						refreshServer(server);
211
					}
212
				}
213
			}
214
		};
215
		
216
		// add listeners to servers
217
		IServer[] servers = ServerCore.getServers();
218
		if (servers != null) {
219
			int size = servers.length;
220
			for (int i = 0; i < size; i++) {
221
				servers[i].addServerListener(serverListener);
222
				((Server) servers[i]).addPublishListener(publishListener);
223
			}
224
		}
225
	}
226
227
	protected void deferInitialization() {
228
		Job job = new Job(Messages.jobInitializingServersView) {
229
			public IStatus run(IProgressMonitor monitor) {
230
				IServer[] servers = ServerCore.getServers();
231
				int size = servers.length;
232
				for (int i = 0; i < size; i++) {
233
					((Server)servers[i]).getAllModules().iterator();
234
				}
235
				
236
				for (int i = 0; i < size; i++) {
237
					IServer server = servers[i];
238
					if (server.getServerType() != null && server.getServerState() == IServer.STATE_UNKNOWN) {
239
						UpdateServerJob job2 = new UpdateServerJob(server);
240
						job2.schedule();
241
					}
242
				}
243
				initialized = true;
244
				refreshServer(null);
245
				return Status.OK_STATUS;
246
			}
247
		};
248
		
249
		job.setSystem(true);
250
		job.setPriority(Job.SHORT);
251
		job.schedule();
252
	}
253
	
254
	protected void refreshServer(final IServer server) {
255
		refreshServer(server, false);
256
	}
257
	protected void refreshServer(final IServer server, final boolean resetSelection) {
258
		Display.getDefault().asyncExec(new Runnable() {
259
			public void run() {
260
				try {
261
					if( viewer != null && !viewer.getControl().isDisposed()) {
262
						viewer.refresh(server);
263
						if( resetSelection ) {
264
							ISelection sel = viewer.getSelection();
265
							viewer.setSelection(sel);
266
						}
267
						ServerDecorator.getDefault().redecorate(server);
268
					}
269
				} catch (Exception e) {
270
					// ignore
271
				}
272
			}
273
		});
274
	}
275
	
276
	protected void handlePublishChange(IServer server, boolean isPublishing) {
277
		String serverId = server.getId();
278
		if (isPublishing)
279
			publishing.add(serverId);
280
		else
281
			publishing.remove(serverId);
282
	
283
		refreshServer(server);
284
	}
285
286
	
287
	protected void startThread() {
288
		if (animationActive)
289
			return;
290
		
291
		stopAnimation = false;
292
		
293
		final Display display = viewer == null ? Display.getDefault() : viewer.getControl().getDisplay();
294
		final int SLEEP = 200;
295
		final Runnable[] animator = new Runnable[1];
296
		animator[0] = new Runnable() {
297
			public void run() {
298
				if (!stopAnimation) {
299
					try {
300
						int size = 0;
301
						String[] servers;
302
						synchronized (starting) {
303
							size = starting.size();
304
							servers = new String[size];
305
							starting.toArray(servers);
306
						}
307
						
308
						for (int i = 0; i < size; i++) {
309
							IServer server = ServerCore.findServer(servers[i]);
310
							if (server != null ) {
311
								ServerDecorator.animate();
312
								refreshServer(server);
313
							}
314
						}
315
					} catch (Exception e) {
316
						Trace.trace(Trace.FINEST, "Error in Servers view animation", e);
317
					}
318
					display.timerExec(SLEEP, animator[0]);
319
				}
320
			}
321
		};
322
		Display.getDefault().asyncExec(new Runnable() {
323
			public void run() {
324
				display.timerExec(SLEEP, animator[0]);
325
			}
326
		});
327
	}
328
329
	protected void stopThread() {
330
		stopAnimation = true;
331
	}}
(-)serverui/org/eclipse/wst/server/ui/internal/view/servers/provisional/ServerLabelProvider.java (+78 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2003, 2007 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 *     IBM Corporation - Initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.wst.server.ui.internal.view.servers.provisional;
12
13
import org.eclipse.jface.viewers.ILabelProvider;
14
import org.eclipse.jface.viewers.LabelProvider;
15
import org.eclipse.swt.graphics.Image;
16
import org.eclipse.wst.server.core.IServer;
17
import org.eclipse.wst.server.ui.ServerUICore;
18
import org.eclipse.wst.server.ui.internal.ImageResource;
19
import org.eclipse.wst.server.ui.internal.Messages;
20
import org.eclipse.wst.server.ui.internal.view.servers.ModuleServer;
21
/**
22
 * Server table label provider.
23
 */
24
public class ServerLabelProvider extends LabelProvider {
25
26
	/**
27
	 * ServerTableLabelProvider constructor comment.
28
	 */
29
	public ServerLabelProvider() {
30
		super();
31
	}
32
33
	public String getText(Object element) {
34
		if (element instanceof ModuleServer) {
35
			ModuleServer ms = (ModuleServer) element;
36
			if (ms.module == null)
37
				return "";
38
			int size = ms.module.length;
39
			String name = ms.module[size - 1].getName();
40
			return name;
41
		}
42
		
43
		if( element instanceof IServer ) {
44
			IServer server = (IServer) element;
45
			return notNull(server.getName());
46
		} 
47
		
48
		if( element == ServerContentProvider.INITIALIZING)
49
			return Messages.viewInitializing;
50
51
		return "-";
52
	}
53
	public Image getImage(Object element) {
54
		Image image = null;
55
		if (element instanceof ModuleServer) {
56
			ModuleServer ms = (ModuleServer) element;
57
			ILabelProvider labelProvider = ServerUICore.getLabelProvider();
58
			image = labelProvider.getImage(ms.module[ms.module.length - 1]);
59
			labelProvider.dispose();
60
		} else if( element instanceof IServer ) {
61
			IServer server = (IServer) element;
62
			if (server.getServerType() != null) {
63
				image = ImageResource.getImage(server.getServerType().getId());
64
			}
65
		}
66
		return image;
67
	}
68
69
	protected String notNull(String s) {
70
		if (s == null)
71
			return "";
72
		return s;
73
	}
74
75
	public boolean isLabelProperty(Object element, String property) {
76
		return false;
77
	}
78
}
(-)serverui/org/eclipse/wst/server/ui/internal/view/servers/provisional/ServerActionProvider.java (+297 lines)
Added Link Here
1
package org.eclipse.wst.server.ui.internal.view.servers.provisional;
2
3
import java.util.Iterator;
4
5
import org.eclipse.debug.core.ILaunchManager;
6
import org.eclipse.jface.action.Action;
7
import org.eclipse.jface.action.IAction;
8
import org.eclipse.jface.action.IContributionManager;
9
import org.eclipse.jface.action.IMenuListener;
10
import org.eclipse.jface.action.IMenuManager;
11
import org.eclipse.jface.action.MenuManager;
12
import org.eclipse.jface.action.Separator;
13
import org.eclipse.jface.bindings.TriggerSequence;
14
import org.eclipse.jface.viewers.IOpenListener;
15
import org.eclipse.jface.viewers.ISelection;
16
import org.eclipse.jface.viewers.ISelectionProvider;
17
import org.eclipse.jface.viewers.IStructuredSelection;
18
import org.eclipse.jface.viewers.OpenEvent;
19
import org.eclipse.jface.viewers.StructuredViewer;
20
import org.eclipse.swt.dnd.Clipboard;
21
import org.eclipse.swt.widgets.Shell;
22
import org.eclipse.ui.IActionBars;
23
import org.eclipse.ui.IWorkbench;
24
import org.eclipse.ui.IWorkbenchActionConstants;
25
import org.eclipse.ui.PlatformUI;
26
import org.eclipse.ui.actions.ActionFactory;
27
import org.eclipse.ui.keys.IBindingService;
28
import org.eclipse.ui.navigator.CommonActionProvider;
29
import org.eclipse.ui.navigator.CommonViewer;
30
import org.eclipse.ui.navigator.ICommonActionExtensionSite;
31
import org.eclipse.ui.navigator.ICommonViewerSite;
32
import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
33
import org.eclipse.wst.server.core.IModule;
34
import org.eclipse.wst.server.core.IServer;
35
import org.eclipse.wst.server.core.ServerPort;
36
import org.eclipse.wst.server.core.model.ServerDelegate;
37
import org.eclipse.wst.server.ui.internal.Messages;
38
import org.eclipse.wst.server.ui.internal.ServerUIPlugin;
39
import org.eclipse.wst.server.ui.internal.Trace;
40
import org.eclipse.wst.server.ui.internal.actions.NewServerWizardAction;
41
import org.eclipse.wst.server.ui.internal.view.servers.CopyAction;
42
import org.eclipse.wst.server.ui.internal.view.servers.DeleteAction;
43
import org.eclipse.wst.server.ui.internal.view.servers.ModuleServer;
44
import org.eclipse.wst.server.ui.internal.view.servers.ModuleSloshAction;
45
import org.eclipse.wst.server.ui.internal.view.servers.MonitorServerPortAction;
46
import org.eclipse.wst.server.ui.internal.view.servers.OpenAction;
47
import org.eclipse.wst.server.ui.internal.view.servers.PasteAction;
48
import org.eclipse.wst.server.ui.internal.view.servers.PropertiesAction;
49
import org.eclipse.wst.server.ui.internal.view.servers.PublishAction;
50
import org.eclipse.wst.server.ui.internal.view.servers.PublishCleanAction;
51
import org.eclipse.wst.server.ui.internal.view.servers.RemoveModuleAction;
52
import org.eclipse.wst.server.ui.internal.view.servers.RenameAction;
53
import org.eclipse.wst.server.ui.internal.view.servers.RestartModuleAction;
54
import org.eclipse.wst.server.ui.internal.view.servers.ShowInConsoleAction;
55
import org.eclipse.wst.server.ui.internal.view.servers.ShowInDebugAction;
56
import org.eclipse.wst.server.ui.internal.view.servers.StartAction;
57
import org.eclipse.wst.server.ui.internal.view.servers.StartModuleAction;
58
import org.eclipse.wst.server.ui.internal.view.servers.StopAction;
59
import org.eclipse.wst.server.ui.internal.view.servers.StopModuleAction;
60
61
public class ServerActionProvider extends CommonActionProvider {
62
	private ICommonActionExtensionSite actionSite;
63
	private Clipboard clipboard;
64
	public ServerActionProvider() {
65
		super();
66
	}
67
	
68
	public void init(ICommonActionExtensionSite aSite) {
69
		super.init(aSite);
70
		this.actionSite = aSite;
71
		ICommonViewerSite site = aSite.getViewSite();
72
		if( site instanceof ICommonViewerWorkbenchSite ) {
73
			StructuredViewer v = aSite.getStructuredViewer();
74
			if( v instanceof CommonViewer ) {
75
				CommonViewer cv = (CommonViewer)v;
76
				ICommonViewerWorkbenchSite wsSite = (ICommonViewerWorkbenchSite)site;
77
				addListeners(cv);
78
				makeServerActions(cv, wsSite.getSelectionProvider());
79
			}
80
		}
81
	}
82
83
84
	// actions on a server
85
	protected Action[] actions;
86
	protected Action actionModifyModules;
87
	protected Action openAction, showInConsoleAction, showInDebugAction, propertiesAction, monitorPropertiesAction;
88
	protected Action copyAction, pasteAction, deleteAction, renameAction;
89
	protected Action noneAction = new Action(Messages.dialogMonitorNone) {
90
		// dummy action
91
	};
92
93
	private void addListeners(CommonViewer tableViewer) {
94
		tableViewer.addOpenListener(new IOpenListener() {
95
			public void open(OpenEvent event) {
96
				try {
97
					IStructuredSelection sel = (IStructuredSelection) event.getSelection();
98
					Object data = sel.getFirstElement();
99
					if (!(data instanceof IServer))
100
						return;
101
					IServer server = (IServer) data;
102
					ServerUIPlugin.editServer(server);
103
				} catch (Exception e) {
104
					Trace.trace(Trace.SEVERE, "Could not open server", e);
105
				}
106
			}
107
		});
108
	}
109
	
110
	private void makeServerActions(CommonViewer tableViewer, ISelectionProvider provider) {
111
		clipboard = new Clipboard(tableViewer.getTree().getDisplay());
112
		Shell shell = tableViewer.getTree().getShell();
113
		
114
		actions = new Action[6];
115
		// create the start actions
116
		actions[0] = new StartAction(shell, provider, ILaunchManager.DEBUG_MODE);
117
		actions[1] = new StartAction(shell, provider, ILaunchManager.RUN_MODE);
118
		actions[2] = new StartAction(shell, provider, ILaunchManager.PROFILE_MODE);
119
		
120
		// create the stop action
121
		actions[3] = new StopAction(shell, provider);
122
		
123
		// create the publish actions
124
		actions[4] = new PublishAction(shell, provider);
125
		actions[5] = new PublishCleanAction(shell, provider);
126
		
127
		// create the open action
128
		openAction = new OpenAction(provider);
129
130
//		// create copy, paste, and delete actions
131
		pasteAction = new PasteAction(shell, provider, clipboard);
132
		copyAction = new CopyAction(provider, clipboard, pasteAction);
133
		deleteAction = new DeleteAction(shell, provider);
134
		renameAction = new RenameAction(shell, tableViewer, provider);
135
		
136
		// create the other actions
137
		actionModifyModules = new ModuleSloshAction(shell, provider);
138
		showInConsoleAction = new ShowInConsoleAction(provider);
139
		showInDebugAction = new ShowInDebugAction(provider);
140
		
141
		// create the properties action
142
		propertiesAction = new PropertiesAction(shell, provider);
143
		monitorPropertiesAction = new PropertiesAction(shell, "org.eclipse.wst.server.ui.properties.monitor", provider);
144
	}
145
146
	public void fillActionBars(IActionBars actionBars) {
147
		actionBars.setGlobalActionHandler("org.eclipse.wst.server.debug", actions[0]);
148
		actionBars.setGlobalActionHandler("org.eclipse.wst.server.run", actions[1]);
149
		actionBars.setGlobalActionHandler("org.eclipse.wst.server.stop", actions[3]);
150
		actionBars.setGlobalActionHandler("org.eclipse.wst.server.publish", actions[4]);
151
		actionBars.setGlobalActionHandler("org.eclipse.ui.navigator.Open", openAction);
152
		actionBars.setGlobalActionHandler(ActionFactory.PROPERTIES.getId(), propertiesAction);
153
		actionBars.updateActionBars();
154
		actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), copyAction);
155
		actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), pasteAction);
156
		actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), deleteAction);
157
		actionBars.setGlobalActionHandler(ActionFactory.RENAME.getId(), renameAction);
158
		
159
		IContributionManager cm = actionBars.getToolBarManager();
160
		cm.removeAll();
161
162
		for (int i = 0; i < actions.length - 1; i++)
163
			cm.add(actions[i]);
164
	}
165
	
166
	private static void fillNewContextMenu(Shell shell, ISelection selection, IMenuManager menu) {
167
		IAction newServerAction = new NewServerWizardAction();
168
		newServerAction.setText(Messages.actionNewServer);
169
		menu.add(newServerAction);
170
	}
171
172
	public void fillContextMenu(IMenuManager menu) {
173
		ICommonViewerSite site = actionSite.getViewSite();
174
		IStructuredSelection selection = null;
175
		Shell shell = actionSite.getViewSite().getShell();
176
		if( site instanceof ICommonViewerWorkbenchSite ) {
177
			ICommonViewerWorkbenchSite wsSite = (ICommonViewerWorkbenchSite)site;
178
			selection = (IStructuredSelection) wsSite.getSelectionProvider().getSelection();
179
		}
180
181
		IServer server = null;
182
		IModule[] module = null;
183
		if (selection != null && !selection.isEmpty()) {
184
			Iterator iterator = selection.iterator();
185
			Object obj = iterator.next();
186
			if (obj instanceof IServer)
187
				server = (IServer) obj;
188
			if (obj instanceof ModuleServer) {
189
				ModuleServer ms = (ModuleServer) obj;
190
				server = ms.server;
191
				module = ms.module;
192
			}
193
			if (iterator.hasNext()) {
194
				server = null;
195
				module = null;
196
			}
197
		}
198
		
199
		// new action
200
		MenuManager newMenu = new MenuManager(Messages.actionNew);
201
		fillNewContextMenu(null, selection, newMenu);
202
		menu.add(newMenu);
203
		
204
		// open action
205
		if (server != null && module == null) {
206
			menu.add(openAction);
207
			
208
			String text = Messages.actionShowIn;
209
			final IWorkbench workbench = PlatformUI.getWorkbench();
210
			final IBindingService bindingService = (IBindingService) workbench
211
					.getAdapter(IBindingService.class);
212
			final TriggerSequence[] activeBindings = bindingService
213
					.getActiveBindingsFor("org.eclipse.ui.navigate.showInQuickMenu");
214
			if (activeBindings.length > 0) {
215
				text += "\t" + activeBindings[0].format();
216
			}
217
			
218
			MenuManager showInMenu = new MenuManager(text);
219
			showInMenu.add(showInConsoleAction);
220
			showInMenu.add(showInDebugAction);
221
			//IActionBars actionBars = getViewSite().getActionBars();
222
			//actionBars.setGlobalActionHandler("group.show", showInMenu);
223
			menu.add(showInMenu);
224
			menu.add(new Separator());
225
		} else
226
			menu.add(new Separator());
227
		
228
		if (server != null) {
229
			if (module == null) {
230
				menu.add(copyAction);
231
				menu.add(pasteAction);
232
				menu.add(deleteAction);
233
				menu.add(renameAction);
234
			} else if (module.length == 1)
235
				menu.add(new RemoveModuleAction(shell, server, module[0]));
236
			menu.add(new Separator());
237
		}
238
		
239
		if (server != null && module == null) {
240
			// server actions
241
			for (int i = 0; i < actions.length; i++)
242
				menu.add(actions[i]);
243
			
244
			menu.add(new Separator());
245
			menu.add(actionModifyModules);
246
			
247
			// monitor
248
			if (server.getServerType() != null) {
249
				final MenuManager menuManager = new MenuManager(Messages.actionMonitor);
250
				
251
				final IServer server2 = server;
252
				final Shell shell2 = shell;
253
				menuManager.addMenuListener(new IMenuListener() {
254
					public void menuAboutToShow(IMenuManager manager) {
255
						menuManager.removeAll();
256
						if (server2.getAdapter(ServerDelegate.class) != null) {
257
							ServerPort[] ports = server2.getServerPorts(null);
258
							if (ports != null) {
259
								int size = ports.length;
260
								for (int i = 0; i < size; i++) {
261
									if (!ports[i].isAdvanced())
262
										menuManager.add(new MonitorServerPortAction(shell2, server2, ports[i]));
263
								}
264
							}
265
						}
266
						
267
						if (menuManager.isEmpty())
268
							menuManager.add(noneAction);
269
						
270
						menuManager.add(new Separator());
271
						menuManager.add(monitorPropertiesAction);
272
					}
273
				});
274
				
275
				// add an initial menu item so that the menu appears correctly
276
				noneAction.setEnabled(false);
277
				menuManager.add(noneAction);
278
				menu.add(menuManager);
279
			}
280
		}
281
		
282
		if (server != null && module != null) {
283
			menu.add(new Separator());
284
			menu.add(new StartModuleAction(server, module));
285
			menu.add(new StopModuleAction(server, module));			
286
			menu.add(new RestartModuleAction(server, module));
287
		}
288
		
289
		menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
290
		menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS+"-end"));
291
		
292
		if (server != null) {
293
			menu.add(new Separator());
294
			menu.add(propertiesAction);
295
		}
296
	}
297
}

Return to bug 245013