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

Collapse All | Expand All

(-)src/org/eclipse/cdt/ui/CUIPlugin.java (-9 / +35 lines)
Lines 10-23 Link Here
10
 *     IBM Corp. - Rational Software
10
 *     IBM Corp. - Rational Software
11
 *     Markus Schorn (Wind River Systems)
11
 *     Markus Schorn (Wind River Systems)
12
 *     Anton Leherbauer (Wind River Systems)
12
 *     Anton Leherbauer (Wind River Systems)
13
 *     Jeff Johnston (Red Hat Inc.)
13
 *******************************************************************************/
14
 *******************************************************************************/
14
package org.eclipse.cdt.ui;
15
package org.eclipse.cdt.ui;
15
16
16
import java.io.IOException;
17
import java.io.IOException;
17
import java.text.MessageFormat;
18
import java.text.MessageFormat;
18
import java.util.ArrayList;
19
import java.util.ArrayList;
20
import java.util.HashMap;
19
import java.util.HashSet;
21
import java.util.HashSet;
20
import java.util.List;
22
import java.util.List;
23
import java.util.Map;
21
import java.util.MissingResourceException;
24
import java.util.MissingResourceException;
22
import java.util.ResourceBundle;
25
import java.util.ResourceBundle;
23
import java.util.Set;
26
import java.util.Set;
Lines 70-75 Link Here
70
import org.eclipse.cdt.internal.ui.IContextMenuConstants;
73
import org.eclipse.cdt.internal.ui.IContextMenuConstants;
71
import org.eclipse.cdt.internal.ui.ResourceAdapterFactory;
74
import org.eclipse.cdt.internal.ui.ResourceAdapterFactory;
72
import org.eclipse.cdt.internal.ui.buildconsole.BuildConsoleManager;
75
import org.eclipse.cdt.internal.ui.buildconsole.BuildConsoleManager;
76
import org.eclipse.cdt.internal.ui.buildconsole.ConsoleMessages;
73
import org.eclipse.cdt.internal.ui.editor.ASTProvider;
77
import org.eclipse.cdt.internal.ui.editor.ASTProvider;
74
import org.eclipse.cdt.internal.ui.editor.CDocumentProvider;
78
import org.eclipse.cdt.internal.ui.editor.CDocumentProvider;
75
import org.eclipse.cdt.internal.ui.editor.CustomBufferFactory;
79
import org.eclipse.cdt.internal.ui.editor.CustomBufferFactory;
Lines 330-336 Link Here
330
	private CTextTools fTextTools;
334
	private CTextTools fTextTools;
331
	private AsmTextTools fAsmTextTools;
335
	private AsmTextTools fAsmTextTools;
332
	private ProblemMarkerManager fProblemMarkerManager;
336
	private ProblemMarkerManager fProblemMarkerManager;
333
	private BuildConsoleManager fBuildConsoleManager;
337
	private Map fBuildConsoleManagers;
334
	private ResourceAdapterFactory fResourceAdapterFactory;
338
	private ResourceAdapterFactory fResourceAdapterFactory;
335
	private CElementAdapterFactory fCElementAdapterFactory;
339
	private CElementAdapterFactory fCElementAdapterFactory;
336
340
Lines 356-362 Link Here
356
	public CUIPlugin() {
360
	public CUIPlugin() {
357
		fgCPlugin = this;
361
		fgCPlugin = this;
358
		fDocumentProvider = null;
362
		fDocumentProvider = null;
359
		fTextTools = null;		
363
		fTextTools = null;
364
		fBuildConsoleManagers = new HashMap();
360
	}
365
	}
361
		
366
		
362
	/**
367
	/**
Lines 408-419 Link Here
408
		return fAsmTextTools;
413
		return fAsmTextTools;
409
	}
414
	}
410
415
416
	/**
417
	 * Return the default console manager.
418
	 * @return IBuildConsoleManager
419
	 */
411
	public IBuildConsoleManager getConsoleManager() {
420
	public IBuildConsoleManager getConsoleManager() {
412
		if ( fBuildConsoleManager == null ) {
421
		return getConsoleManager(ConsoleMessages.getString("BuildConsole.buildConsole"), BuildConsoleManager.DEFAULT_MENU_CONTEXT_ID); //$NON-NLS-1$
413
			fBuildConsoleManager = new BuildConsoleManager();
422
	}
414
			fBuildConsoleManager.startup();
423
424
	/**
425
	 * Return a console manager specified by id.
426
	 * @param name console name
427
	 * @param id console id
428
	 * @return IBuildConsoleManager
429
	 */	
430
	public IBuildConsoleManager getConsoleManager(String name, String id) {
431
		BuildConsoleManager manager = (BuildConsoleManager)fBuildConsoleManagers.get(id);
432
		if (manager == null ) {
433
			manager = new BuildConsoleManager();
434
			fBuildConsoleManagers.put(id, manager);
435
			manager.startup(name, id);
415
		}
436
		}
416
		return fBuildConsoleManager;
437
		return manager;
417
	}
438
	}
418
439
419
	/* (non-Javadoc)
440
	/* (non-Javadoc)
Lines 453-461 Link Here
453
			fImageDescriptorRegistry.dispose();
474
			fImageDescriptorRegistry.dispose();
454
			fImageDescriptorRegistry= null;
475
			fImageDescriptorRegistry= null;
455
		}
476
		}
456
		if ( fBuildConsoleManager != null ) {
477
		if (fBuildConsoleManagers != null ) {
457
			fBuildConsoleManager.shutdown();
478
			Object[] bcm = fBuildConsoleManagers.values().toArray();
458
			fBuildConsoleManager = null;
479
			for (int i = 0; i < bcm.length; ++i) {
480
				BuildConsoleManager m = (BuildConsoleManager)bcm[i];
481
				if (m != null)
482
					m.shutdown();
483
			}
484
			fBuildConsoleManagers.clear();
459
		}
485
		}
460
486
461
		unregisterAdapters();
487
		unregisterAdapters();
(-)src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java (-2 / +8 lines)
Lines 7-12 Link Here
7
 *
7
 *
8
 * Contributors:
8
 * Contributors:
9
 *     QNX Software Systems - initial API and implementation
9
 *     QNX Software Systems - initial API and implementation
10
 *     Red Hat Inc. - multiple build console support
10
 *******************************************************************************/
11
 *******************************************************************************/
11
package org.eclipse.cdt.internal.ui.buildconsole;
12
package org.eclipse.cdt.internal.ui.buildconsole;
12
13
Lines 54-64 Link Here
54
	private Map fConsoleMap = new HashMap();
55
	private Map fConsoleMap = new HashMap();
55
	Color infoColor, outputColor, errorColor;
56
	Color infoColor, outputColor, errorColor;
56
	BuildConsoleStream infoStream, outputStream, errorStream;
57
	BuildConsoleStream infoStream, outputStream, errorStream;
58
	String fName, fContextMenuId;
57
59
58
	static public final int BUILD_STREAM_TYPE_INFO = 0;
60
	static public final int BUILD_STREAM_TYPE_INFO = 0;
59
	static public final int BUILD_STREAM_TYPE_OUTPUT = 1;
61
	static public final int BUILD_STREAM_TYPE_OUTPUT = 1;
60
	static public final int BUILD_STREAM_TYPE_ERROR = 2;
62
	static public final int BUILD_STREAM_TYPE_ERROR = 2;
61
	private IProject fLastProject;
63
	private IProject fLastProject;
64
	
65
	static public final String DEFAULT_MENU_CONTEXT_ID = CUIPlugin.PLUGIN_ID + ".CBuildConole"; //$NON-NLS-1$
62
66
63
	public BuildConsoleManager() {
67
	public BuildConsoleManager() {
64
	}
68
	}
Lines 170-179 Link Here
170
		}
174
		}
171
	}
175
	}
172
176
173
	public void startup() {
177
	public void startup(String name, String id) {
174
		infoStream = new BuildConsoleStream();
178
		infoStream = new BuildConsoleStream();
175
		outputStream = new BuildConsoleStream();
179
		outputStream = new BuildConsoleStream();
176
		errorStream = new BuildConsoleStream();
180
		errorStream = new BuildConsoleStream();
181
		fName = name;
182
		fContextMenuId = id;
177
183
178
		runUI(new Runnable() {
184
		runUI(new Runnable() {
179
185
Lines 184-190 Link Here
184
			 */
190
			 */
185
			public void run() {
191
			public void run() {
186
				// install colors
192
				// install colors
187
				fConsole = new BuildConsole(BuildConsoleManager.this);
193
				fConsole = new BuildConsole(BuildConsoleManager.this, fName, fContextMenuId);
188
				ConsolePlugin.getDefault().getConsoleManager().addConsoles(new org.eclipse.ui.console.IConsole[]{fConsole});
194
				ConsolePlugin.getDefault().getConsoleManager().addConsoles(new org.eclipse.ui.console.IConsole[]{fConsole});
189
				infoStream.setConsole(fConsole);
195
				infoStream.setConsole(fConsole);
190
				infoColor = createColor(CUIPlugin.getStandardDisplay(), BuildConsolePreferencePage.PREF_BUILDCONSOLE_INFO_COLOR);
196
				infoColor = createColor(CUIPlugin.getStandardDisplay(), BuildConsolePreferencePage.PREF_BUILDCONSOLE_INFO_COLOR);
(-)src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsole.java (-4 / +9 lines)
Lines 7-12 Link Here
7
 *
7
 *
8
 * Contributors:
8
 * Contributors:
9
 * QNX Software Systems - Initial API and implementation
9
 * QNX Software Systems - Initial API and implementation
10
 * Red Hat Inc. - Multiple build console support
10
 *******************************************************************************/
11
 *******************************************************************************/
11
package org.eclipse.cdt.internal.ui.buildconsole;
12
package org.eclipse.cdt.internal.ui.buildconsole;
12
13
Lines 26-43 Link Here
26
	public static final String P_STREAM_COLOR = CUIPlugin.PLUGIN_ID  + ".CONSOLE_P_STREAM_COLOR";	 //$NON-NLS-1$
27
	public static final String P_STREAM_COLOR = CUIPlugin.PLUGIN_ID  + ".CONSOLE_P_STREAM_COLOR";	 //$NON-NLS-1$
27
28
28
	private IBuildConsoleManager fConsoleManager;
29
	private IBuildConsoleManager fConsoleManager;
30
	private String fConsoleName;
31
	private String fConsoleId;
29
32
30
	public BuildConsole(IBuildConsoleManager manager) {
33
	public BuildConsole(IBuildConsoleManager manager, String name, String id) {
31
		super(ConsoleMessages.getString("BuildConsole.buildConsole"), CPluginImages.DESC_BUILD_CONSOLE); //$NON-NLS-1$
34
		super(name, CPluginImages.DESC_BUILD_CONSOLE);
32
		fConsoleManager = manager;
35
		fConsoleManager = manager;
36
		fConsoleName = name;
37
		fConsoleId = id;
33
	}
38
	}
34
39
35
	public IPageBookViewPage createPage(IConsoleView view) {
40
	public IPageBookViewPage createPage(IConsoleView view) {
36
		return new BuildConsolePage(view, this);
41
		return new BuildConsolePage(view, this, fConsoleId);
37
	}
42
	}
38
43
39
	public void setTitle(IProject project) {
44
	public void setTitle(IProject project) {
40
		String title = ConsoleMessages.getString("BuildConsole.buildConsole"); //$NON-NLS-1$
45
		String title = fConsoleName;
41
		if (project != null) {
46
		if (project != null) {
42
			title += " [" + project.getName() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
47
			title += " [" + project.getName() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
43
		}
48
		}
(-)src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java (-6 / +13 lines)
Lines 7-12 Link Here
7
 *
7
 *
8
 * Contributors:
8
 * Contributors:
9
 *     QNX Software Systems - initial API and implementation
9
 *     QNX Software Systems - initial API and implementation
10
 *     Red Hat Inc. - multiple build console support
10
 *******************************************************************************/
11
 *******************************************************************************/
11
package org.eclipse.cdt.internal.ui.buildconsole;
12
package org.eclipse.cdt.internal.ui.buildconsole;
12
13
Lines 17-26 Link Here
17
import java.util.Map;
18
import java.util.Map;
18
import java.util.ResourceBundle;
19
import java.util.ResourceBundle;
19
20
20
import org.eclipse.cdt.internal.ui.preferences.BuildConsolePreferencePage;
21
import org.eclipse.cdt.ui.CUIPlugin;
22
import org.eclipse.cdt.ui.IBuildConsoleEvent;
23
import org.eclipse.cdt.ui.IBuildConsoleListener;
24
import org.eclipse.core.resources.IFile;
21
import org.eclipse.core.resources.IFile;
25
import org.eclipse.core.resources.IProject;
22
import org.eclipse.core.resources.IProject;
26
import org.eclipse.core.resources.IResource;
23
import org.eclipse.core.resources.IResource;
Lines 75-80 Link Here
75
import org.eclipse.ui.texteditor.ITextEditorActionConstants;
72
import org.eclipse.ui.texteditor.ITextEditorActionConstants;
76
import org.eclipse.ui.texteditor.IUpdate;
73
import org.eclipse.ui.texteditor.IUpdate;
77
74
75
import org.eclipse.cdt.ui.CUIPlugin;
76
import org.eclipse.cdt.ui.IBuildConsoleEvent;
77
import org.eclipse.cdt.ui.IBuildConsoleListener;
78
79
import org.eclipse.cdt.internal.ui.preferences.BuildConsolePreferencePage;
80
78
public class BuildConsolePage extends Page
81
public class BuildConsolePage extends Page
79
		implements
82
		implements
80
			ISelectionListener,
83
			ISelectionListener,
Lines 85-90 Link Here
85
88
86
	private BuildConsole fConsole;
89
	private BuildConsole fConsole;
87
	private IConsoleView fConsoleView;
90
	private IConsoleView fConsoleView;
91
	private String fContextMenuId;
88
	private BuildConsoleViewer fViewer;
92
	private BuildConsoleViewer fViewer;
89
	private IProject fProject;
93
	private IProject fProject;
90
94
Lines 109-118 Link Here
109
	/**
113
	/**
110
	 * @param view
114
	 * @param view
111
	 * @param console
115
	 * @param console
116
	 * @param contextId
112
	 */
117
	 */
113
	public BuildConsolePage(IConsoleView view, BuildConsole console) {
118
	public BuildConsolePage(IConsoleView view, BuildConsole console, 
119
			String contextId) {
114
		fConsole = console;
120
		fConsole = console;
115
		fConsoleView = view;
121
		fConsoleView = view;
122
		fContextMenuId = contextId;
116
	}
123
	}
117
124
118
	protected void setProject(IProject project) {
125
	protected void setProject(IProject project) {
Lines 187-193 Link Here
187
		fMenu = manager.createContextMenu(getControl());
194
		fMenu = manager.createContextMenu(getControl());
188
		getControl().setMenu(fMenu);
195
		getControl().setMenu(fMenu);
189
		IPageSite site = getSite();
196
		IPageSite site = getSite();
190
		site.registerContextMenu(CUIPlugin.PLUGIN_ID + ".CBuildConole", manager, getViewer()); //$NON-NLS-1$
197
		site.registerContextMenu(fContextMenuId, manager, getViewer());
191
		site.setSelectionProvider(getViewer());
198
		site.setSelectionProvider(getViewer());
192
		createActions();
199
		createActions();
193
		configureToolBar(site.getActionBars().getToolBarManager());
200
		configureToolBar(site.getActionBars().getToolBarManager());

Return to bug 153816