View | Details | Raw Unified | Return to bug 186172
Collapse All | Expand All

(-)src/org/eclipse/cdt/debug/mi/core/GDBProcess.java (-7 / +9 lines)
Lines 8-30 Link Here
8
 * Contributors:
8
 * Contributors:
9
 * QNX Software Systems - Initial API and implementation
9
 * QNX Software Systems - Initial API and implementation
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.cdt.debug.mi.core; 
11
package org.eclipse.cdt.debug.mi.core;
12
12
13
import java.util.Map;
13
import java.util.Map;
14
import org.eclipse.cdt.debug.mi.core.cdi.model.Target;
14
import org.eclipse.cdt.debug.mi.core.cdi.model.Target;
15
import org.eclipse.debug.core.ILaunch;
15
import org.eclipse.debug.core.ILaunch;
16
import org.eclipse.debug.core.model.RuntimeProcess;
16
import org.eclipse.debug.core.model.RuntimeProcess;
17
 
18
public class GDBProcess extends RuntimeProcess {
19
17
18
public class GDBProcess extends RuntimeProcess {
20
	private Target fTarget;
19
	private Target fTarget;
21
20
22
	public GDBProcess( Target target, ILaunch launch, Process process, String name, Map attributes ) {
21
	public GDBProcess(Target target, ILaunch launch, Process process, String name, Map attributes) {
23
		super( launch, process, name, attributes );
22
		super(launch, process, name, attributes);
24
		fTarget = target;
23
		synchronized (this) {
24
			fTarget = target;
25
		}
26
		fireChangeEvent();
25
	}
27
	}
26
28
27
	public Target getTarget() {
29
	public synchronized Target getTarget() {
28
		return fTarget;
30
		return fTarget;
29
	}
31
	}
30
}
32
}
(-)src/org/eclipse/cdt/debug/mi/ui/console/actions/MiConsoleVerboseModeAction.java (-11 / +20 lines)
Lines 11-41 Link Here
11
package org.eclipse.cdt.debug.mi.ui.console.actions;
11
package org.eclipse.cdt.debug.mi.ui.console.actions;
12
12
13
import org.eclipse.cdt.debug.mi.core.GDBProcess;
13
import org.eclipse.cdt.debug.mi.core.GDBProcess;
14
import org.eclipse.cdt.debug.mi.core.cdi.model.Target;
14
import org.eclipse.cdt.debug.mi.internal.ui.MIUIPlugin;
15
import org.eclipse.cdt.debug.mi.internal.ui.MIUIPlugin;
15
import org.eclipse.debug.ui.console.IConsole;
16
import org.eclipse.debug.ui.console.IConsole;
16
import org.eclipse.jface.action.Action;
17
import org.eclipse.jface.action.Action;
17
18
18
/**
19
/**
19
 * Verbose console mode switcher
20
 * Verbose console mode switcher
20
 *
21
 * 
21
 */
22
 */
22
public class MiConsoleVerboseModeAction extends Action {
23
public class MiConsoleVerboseModeAction extends Action {
23
24
	private IConsole fConsole;
24
	private IConsole fConsole;
25
	
25
26
	public MiConsoleVerboseModeAction(IConsole console) {
26
	public MiConsoleVerboseModeAction(IConsole console) {
27
        super();
27
		super();
28
        setToolTipText(MiConsoleMessages.verboseActionTooltip);
28
		setToolTipText(MiConsoleMessages.verboseActionTooltip);
29
        setImageDescriptor(MIUIPlugin.imageDescriptorFromPlugin(MIUIPlugin.PLUGIN_ID,IMiConsoleImagesConst.IMG_VERBOSE_CONSOLE));
29
		setImageDescriptor(MIUIPlugin.imageDescriptorFromPlugin(MIUIPlugin.PLUGIN_ID, IMiConsoleImagesConst.IMG_VERBOSE_CONSOLE));
30
        fConsole = console;
30
		fConsole = console;
31
		GDBProcess fProcess = (GDBProcess) fConsole.getProcess();
32
		setChecked(fProcess.getTarget().getMISession().isVerboseModeEnabled());
33
	}
31
	}
34
	
32
33
	public void updateStateAndEnablement() {
34
	    // initialize button
35
		GDBProcess gdbProcess = (GDBProcess) fConsole.getProcess();
36
		setEnabled(!gdbProcess.isTerminated());
37
		Target target = gdbProcess.getTarget();
38
		if (target != null) {
39
			setChecked(target.isVerboseModeEnabled());
40
		} else {
41
			setChecked(false);
42
		}
43
    }
44
35
	public void run() {
45
	public void run() {
36
		GDBProcess fProcess = (GDBProcess) fConsole.getProcess();
46
		GDBProcess fProcess = (GDBProcess) fConsole.getProcess();
37
		fProcess.getTarget().enableVerboseMode(isChecked());
47
		fProcess.getTarget().enableVerboseMode(isChecked());
38
	}
48
	}
39
49
40
	
41
}
50
}
(-)src/org/eclipse/cdt/debug/mi/ui/console/MiConsolePageParticipant.java (-8 / +18 lines)
Lines 14-19 Link Here
14
import java.util.Observer;
14
import java.util.Observer;
15
15
16
import org.eclipse.cdt.debug.mi.core.GDBProcess;
16
import org.eclipse.cdt.debug.mi.core.GDBProcess;
17
import org.eclipse.cdt.debug.mi.core.cdi.model.Target;
17
import org.eclipse.cdt.debug.mi.ui.console.actions.MiConsoleSaveAction;
18
import org.eclipse.cdt.debug.mi.ui.console.actions.MiConsoleSaveAction;
18
import org.eclipse.cdt.debug.mi.ui.console.actions.MiConsoleVerboseModeAction;
19
import org.eclipse.cdt.debug.mi.ui.console.actions.MiConsoleVerboseModeAction;
19
import org.eclipse.debug.core.DebugEvent;
20
import org.eclipse.debug.core.DebugEvent;
Lines 44-50 Link Here
44
	}
45
	}
45
46
46
	public void dispose() {
47
	public void dispose() {
47
		if(GDBProcess != null) {
48
		if (GDBProcess != null) {
48
			DebugPlugin.getDefault().removeDebugEventListener(this);
49
			DebugPlugin.getDefault().removeDebugEventListener(this);
49
		}
50
		}
50
		fSaveConsole = null;
51
		fSaveConsole = null;
Lines 73-81 Link Here
73
74
74
				// add a debug event listener
75
				// add a debug event listener
75
				DebugPlugin.getDefault().addDebugEventListener(this);
76
				DebugPlugin.getDefault().addDebugEventListener(this);
76
77
				// if we miss change event update enablement manually
77
				// register this object as MISession observer
78
				fVerboseMode.updateStateAndEnablement();
78
				GDBProcess.getTarget().getMISession().addObserver(this);
79
				Target target = GDBProcess.getTarget();
80
				if (target != null) {
81
					// register this object as MISession observer
82
					target.getMISession().addObserver(this);
83
				}
79
			}
84
			}
80
		}
85
		}
81
	}
86
	}
Lines 89-95 Link Here
89
			DebugEvent event = events[i];
94
			DebugEvent event = events[i];
90
			if (event.getSource().equals(GDBProcess)) {
95
			if (event.getSource().equals(GDBProcess)) {
91
				if (fVerboseMode != null) {
96
				if (fVerboseMode != null) {
92
					fVerboseMode.setEnabled(!GDBProcess.isTerminated());
97
					fVerboseMode.updateStateAndEnablement();
98
					Target target = GDBProcess.getTarget();
99
					if (target != null) {
100
						// register this object as MISession observer
101
						target.getMISession().addObserver(this);
102
					}
93
				}
103
				}
94
			}
104
			}
95
		}
105
		}
Lines 101-109 Link Here
101
	 public void update(Observable arg0, Object arg1) {
111
	 public void update(Observable arg0, Object arg1) {
102
		 if((arg1!=null) && (arg1 instanceof VerboseModeChangedEvent) && (fVerboseMode != null)) {
112
		 if((arg1!=null) && (arg1 instanceof VerboseModeChangedEvent) && (fVerboseMode != null)) {
103
			 try {
113
			 try {
104
				 fVerboseMode.setChecked(GDBProcess.getTarget().isVerboseModeEnabled());
114
				fVerboseMode.updateStateAndEnablement();
105
			 } catch (Exception e) {
115
			} catch (Exception e) {
106
			 }          
116
			}          
107
		 }
117
		 }
108
	 }
118
	 }
109
119

Return to bug 186172