Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikhail Khodjaiants2004-10-15 19:33:26 +0000
committerMikhail Khodjaiants2004-10-15 19:33:26 +0000
commitaa6f9b5a002d0df4022a0ed18c22e82ed16759cf (patch)
treeaff52502f4bd6d1c257eb52604df70a663700bba
parent9551479479218feaff500fbf639d52b9f5c3e220 (diff)
downloadorg.eclipse.cdt-aa6f9b5a002d0df4022a0ed18c22e82ed16759cf.tar.gz
org.eclipse.cdt-aa6f9b5a002d0df4022a0ed18c22e82ed16759cf.tar.xz
org.eclipse.cdt-aa6f9b5a002d0df4022a0ed18c22e82ed16759cf.zip
Replaced the "Signal Properties" dialog by the standard property page.
-rw-r--r--debug/org.eclipse.cdt.debug.ui/ChangeLog12
-rw-r--r--debug/org.eclipse.cdt.debug.ui/plugin.properties1
-rw-r--r--debug/org.eclipse.cdt.debug.ui/plugin.xml8
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java16
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIMessages.properties1
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ActionMessages.properties6
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SignalPropertiesActionDelegate.java85
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SignalPropertiesDialog.java132
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/PropertyPageMessages.properties6
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/SignalPropertyPage.java152
10 files changed, 213 insertions, 206 deletions
diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog
index 1a1739bb055..b21aea04ac5 100644
--- a/debug/org.eclipse.cdt.debug.ui/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog
@@ -1,3 +1,15 @@
+2004-10-15 Mikhail Khodjaiants
+ Replaced the "Signal Properties" dialog by the standard property page.
+ * plugin.xml
+ * plugin.properties
+ * CDebugUIMessages.properties
+ * CDTDebugModelPresentation.java
+ * ActionMessages.properties
+ * SignalPropertiesActionDelegate.java
+ * PropertyPageMessages.properties
+ * SignalPropertyPage.java: new
+ * SignalPropertiesDialog.java: removed
+
2004-10-08 Mikhail Khodjaiants
Added the bookkeeping of registers and register groups.
* CDebugImages.java
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties
index 58c0087a68b..7075f2fff19 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.properties
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties
@@ -122,3 +122,4 @@ DebuggingCContext.description=Debugging C/C++ Programs
CommonBreakpointPage.label=Common
FilteringBreakpointPage.label=Filtering
+CommonSignalPage.label=Common
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml
index c5190a25895..c48a098066e 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.xml
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml
@@ -1109,6 +1109,11 @@
class="org.eclipse.cdt.debug.internal.ui.propertypages.CBreakpointFilteringPage"
name="%FilteringBreakpointPage.label"
id="org.eclipse.cdt.debug.ui.propertypages.breakpoint.filtering"/>
+ <page
+ objectClass="org.eclipse.cdt.debug.core.model.ICSignal"
+ class="org.eclipse.cdt.debug.internal.ui.propertypages.SignalPropertyPage"
+ name="%CommonSignalPage.label"
+ id="org.eclipse.cdt.debug.ui.propertypages.signal.common"/>
</extension>
<extension
id="org.eclipse.cdt.debug.ui.editors"
@@ -1275,7 +1280,8 @@
class="org.eclipse.cdt.debug.internal.ui.CBreakpointWorkbenchAdapterFactory"
adaptableType="org.eclipse.cdt.debug.core.model.ICBreakpoint">
<adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/>
- </factory>
+ </factory> dt.debug.core.model.ICSignal"/>
+ <adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/>
</extension>
<extension
point="org.eclipse.ui.themes">
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
index 30c641350fc..1e4cb192ccb 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
@@ -32,6 +32,7 @@ import org.eclipse.cdt.debug.core.model.ICFunctionBreakpoint;
import org.eclipse.cdt.debug.core.model.ICGlobalVariable;
import org.eclipse.cdt.debug.core.model.ICLineBreakpoint;
import org.eclipse.cdt.debug.core.model.ICSharedLibrary;
+import org.eclipse.cdt.debug.core.model.ICSignal;
import org.eclipse.cdt.debug.core.model.ICStackFrame;
import org.eclipse.cdt.debug.core.model.ICThread;
import org.eclipse.cdt.debug.core.model.ICType;
@@ -307,6 +308,10 @@ public class CDTDebugModelPresentation extends LabelProvider implements IDebugMo
label.append( getSharedLibraryText( (ICSharedLibrary)element, showQualified ) );
return label.toString();
}
+ if ( element instanceof ICSignal ) {
+ label.append( getSignalText( (ICSignal)element ) );
+ return label.toString();
+ }
if ( element instanceof IRegisterGroup ) {
label.append( ((IRegisterGroup)element).getName() );
return label.toString();
@@ -594,6 +599,17 @@ public class CDTDebugModelPresentation extends LabelProvider implements IDebugMo
return label;
}
+ protected String getSignalText( ICSignal signal ) {
+ StringBuffer sb = new StringBuffer( CDebugUIMessages.getString( "CDTDebugModelPresentation.12" ) ); //$NON-NLS-1$
+ try {
+ String name = signal.getName();
+ sb.append( " \'" ).append( name ).append( '\'' ); //$NON-NLS-1$
+ }
+ catch( DebugException e ) {
+ }
+ return sb.toString();
+ }
+
/**
* Plug in the single argument to the resource String for the key to get a formatted resource String.
*
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIMessages.properties b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIMessages.properties
index 47789275e49..b6cee4cfb61 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIMessages.properties
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIMessages.properties
@@ -31,6 +31,7 @@ CDTDebugModelPresentation.16=: Breakpoint hit.
CDTDebugModelPresentation.17=: Shared library event.
CDTDebugModelPresentation.18=Thread [{0}] (Suspended{1})
CDTDebugModelPresentation.19=Thread [{0}]
+CDTDebugModelPresentation.12=signal
CDTDebugModelPresentation.20=at
CDTDebugModelPresentation.21=<symbol is not available>
CDTDebugModelPresentation.22=(disabled)
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ActionMessages.properties b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ActionMessages.properties
index c2696c9e4f6..3fe62f1be80 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ActionMessages.properties
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ActionMessages.properties
@@ -17,17 +17,11 @@ LoadSymbolsForAllActionDelegate.Error(s)_occurred_loading_the_symbols_1=Error(s)
LoadSymbolsForAllAction.Load_Symbols_For_All_2=Load Symbols For All
LoadSymbolsForAllActionDelegate.Error_1=Error
LoadSymbolsForAllAction.Unable_to_load_symbols_1=Unable to load symbols.
-SignalPropertiesDialog.Title_1=Properties for signal ''{0}''
-SignalPropertiesDialog.Description_label_1=Signal description: {0}.
-SignalPropertiesDialog.Stop_label_1=Suspend the program when this signal happens.
-SignalPropertiesDialog.Pass_label_1=Pass this signal to the program.
SignalZeroWorkbenchActionDelegate.0=Exceptions occurred attempting to resume without signal.
SignalZeroWorkbenchActionDelegate.1=Resume without signal failed.
SignalZeroWorkbenchActionDelegate.2=Resume Without Signal
SignalZeroObjectActionDelegate.0=Unable to resume ignoring the signal.
SignalZeroObjectActionDelegate.1=Operation failed.
-SignalPropertiesActionDelegate.Unable_to_change_signal_properties_1=Unable to change signal properties.
-SignalPropertiesActionDelegate.Operation_failed_1=Operation failed.
RunToLineActionDelegate.Error_1=Error
RunToLineActionDelegate.Operation_failed_1=Operation failed.
RunToLineAdapter.Empty_editor_1=Empty editor
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SignalPropertiesActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SignalPropertiesActionDelegate.java
index 24d90f5dcc5..8a37b5be49e 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SignalPropertiesActionDelegate.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SignalPropertiesActionDelegate.java
@@ -12,19 +12,16 @@ package org.eclipse.cdt.debug.internal.ui.actions;
import org.eclipse.cdt.debug.core.model.ICSignal;
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.debug.core.DebugException;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
+import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.actions.ActionDelegate;
+import org.eclipse.ui.dialogs.PropertyDialogAction;
/**
* Signal Properties action delegate.
@@ -32,7 +29,6 @@ import org.eclipse.ui.actions.ActionDelegate;
public class SignalPropertiesActionDelegate extends ActionDelegate implements IObjectActionDelegate {
private ICSignal fSignal;
- private SignalPropertiesDialog fDialog;
/**
* Constructor for SignalPropertiesActionDelegate.
@@ -68,6 +64,7 @@ public class SignalPropertiesActionDelegate extends ActionDelegate implements IO
protected ICSignal getSignal() {
return this.fSignal;
}
+
private void setSignal( ICSignal signal ) {
this.fSignal = signal;
}
@@ -76,67 +73,21 @@ public class SignalPropertiesActionDelegate extends ActionDelegate implements IO
* @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
*/
public void run( IAction action ) {
- if ( getSignal() != null ) {
- final MultiStatus ms = new MultiStatus( CDebugUIPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED,
- ActionMessages.getString( "SignalPropertiesActionDelegate.Unable_to_change_signal_properties_1" ), //$NON-NLS-1$
- null );
- BusyIndicator.showWhile( Display.getCurrent(),
- new Runnable() {
- public void run() {
- try {
- doAction( getSignal() );
- }
- catch( DebugException e ) {
- ms.merge( e.getStatus() );
- }
- }
- } );
- if ( !ms.isOK() ) {
- IWorkbenchWindow window = CDebugUIPlugin.getActiveWorkbenchWindow();
- if ( window != null ) {
- CDebugUIPlugin.errorDialog( ActionMessages.getString( "SignalPropertiesActionDelegate.Operation_failed_1" ), ms ); //$NON-NLS-1$
- }
- else {
- CDebugUIPlugin.log( ms );
- }
+ PropertyDialogAction propertyAction = new PropertyDialogAction( CDebugUIPlugin.getActiveWorkbenchShell(), new ISelectionProvider() {
+
+ public void addSelectionChangedListener( ISelectionChangedListener listener ) {
}
- }
- }
- protected void doAction( ICSignal signal ) throws DebugException {
- IWorkbenchWindow window = CDebugUIPlugin.getActiveWorkbenchWindow();
- if ( window == null ) {
- return;
- }
- Shell activeShell = window.getShell();
-
- // If a previous edit is still in progress, don't start another
- if ( fDialog != null ) {
- return;
- }
-
- String name = signal.getName();
- String description = signal.getDescription();
- boolean pass = signal.isPassEnabled();
- boolean stop = signal.isStopEnabled();
- boolean canModify = signal.canModify();
- fDialog = new SignalPropertiesDialog( activeShell, name, description, pass, stop, canModify );
- try {
- if ( fDialog.open() == Window.OK ) {
- setProperties( signal, fDialog.isPassEnabled(), fDialog.isStopEnabled() );
+ public ISelection getSelection() {
+ return new StructuredSelection( getSignal() );
}
- }
- catch( DebugException e ) {
- throw e;
- }
- finally {
- fDialog = null;
- }
- }
-
- private void setProperties( ICSignal signal, boolean pass, boolean stop ) throws DebugException {
- signal.setPassEnabled( pass );
- signal.setStopEnabled( stop );
+
+ public void removeSelectionChangedListener( ISelectionChangedListener listener ) {
+ }
+
+ public void setSelection( ISelection selection ) {
+ }
+ } );
+ propertyAction.run();
}
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SignalPropertiesDialog.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SignalPropertiesDialog.java
deleted file mode 100644
index 2e8e8f4a384..00000000000
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SignalPropertiesDialog.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2004 QNX Software Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
-***********************************************************************/
-package org.eclipse.cdt.debug.internal.ui.actions;
-
-import java.text.MessageFormat;
-
-import org.eclipse.cdt.debug.internal.ui.dialogfields.SelectionButtonDialogField;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Signal Properties dialog.
- */
-public class SignalPropertiesDialog extends Dialog {
-
- private String fName;
- private String fDescription;
- private boolean fPass = false;
- private boolean fStop = false;
- private boolean fCanModify = false;
-
- private SelectionButtonDialogField fPassButton;
- private SelectionButtonDialogField fStopButton;
-
- /**
- * Constructor for SignalPropertiesDialog.
- * @param parentShell
- */
- public SignalPropertiesDialog( Shell parentShell,
- String name,
- String description,
- boolean pass,
- boolean stop,
- boolean canModify ) {
- super( parentShell );
- fName = name;
- fDescription = description;
- fStop = stop;
- fPass = pass;
- fCanModify = canModify;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
- */
- protected void configureShell( Shell shell ) {
- super.configureShell( shell );
- shell.setText( MessageFormat.format( ActionMessages.getString( "SignalPropertiesDialog.Title_1" ), new String[] { getName() } ) ); //$NON-NLS-1$
- }
-
- protected String getDescription() {
- return this.fDescription;
- }
-
- protected String getName() {
- return this.fName;
- }
-
- protected boolean isPassEnabled() {
- return this.fPass;
- }
-
- protected void enablePass( boolean enable ) {
- this.fPass = enable;
- }
-
- protected boolean isStopEnabled() {
- return this.fStop;
- }
-
- protected void enableStop( boolean enable ) {
- this.fStop = enable;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
- */
- protected Control createDialogArea( Composite parent ) {
- Font font = parent.getFont();
- Composite composite = (Composite)super.createDialogArea( parent );
-
- // Create description field
- Label label = new Label( composite, SWT.WRAP );
- label.setText( MessageFormat.format( ActionMessages.getString( "SignalPropertiesDialog.Description_label_1" ), new String[] { getDescription() } ) ); //$NON-NLS-1$
- GridData data = new GridData( GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER );
- data.widthHint = convertHorizontalDLUsToPixels( IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH );
- label.setLayoutData( data );
- label.setFont( font );
-
- // Create pass button
- fPassButton = new SelectionButtonDialogField( SWT.CHECK );
- fPassButton.setLabelText( ActionMessages.getString( "SignalPropertiesDialog.Pass_label_1" ) ); //$NON-NLS-1$
- fPassButton.setSelection( fPass );
- fPassButton.setEnabled( fCanModify );
- fPassButton.doFillIntoGrid( composite, 1 );
-
- // Create stop button
- fStopButton = new SelectionButtonDialogField( SWT.CHECK );
- fStopButton.setLabelText( ActionMessages.getString( "SignalPropertiesDialog.Stop_label_1" ) ); //$NON-NLS-1$
- fStopButton.setSelection( fStop );
- fStopButton.setEnabled( fCanModify );
- fStopButton.doFillIntoGrid( composite, 1 );
-
- return composite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.Dialog#okPressed()
- */
- protected void okPressed() {
- if ( fPassButton != null )
- fPass = fPassButton.isSelected();
- if ( fStopButton != null )
- fStop = fStopButton.isSelected();
- super.okPressed();
- }
-}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/PropertyPageMessages.properties b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/PropertyPageMessages.properties
index f1d4c93d5e4..5be714512a3 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/PropertyPageMessages.properties
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/PropertyPageMessages.properties
@@ -30,3 +30,9 @@ CBreakpointPropertyPage.17=&Ignore count:
CBreakpointPropertyPage.18=Type:
CBreakpointPropertyPage.19=Enabled
ThreadFilterEditor.0=&Restrict to Selected Targets and Threads:
+SignalPropertyPage.0=Description: {0}.
+SignalPropertyPage.1=Pass this signal to the program.
+SignalPropertyPage.2=Suspend the program when this signal happens.
+SignalPropertyPage.3=Error
+SignalPropertyPage.4=Operation failed.
+SignalPropertyPage.5=Unable to change signal properties.
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/SignalPropertyPage.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/SignalPropertyPage.java
new file mode 100644
index 00000000000..1bec276cb7f
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/SignalPropertyPage.java
@@ -0,0 +1,152 @@
+/**********************************************************************
+ * Copyright (c) 2004 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ ***********************************************************************/
+package org.eclipse.cdt.debug.internal.ui.propertypages;
+
+import java.text.MessageFormat;
+import org.eclipse.cdt.debug.core.model.ICSignal;
+import org.eclipse.cdt.debug.internal.ui.dialogfields.SelectionButtonDialogField;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.internal.ui.DebugUIPlugin;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.dialogs.PropertyPage;
+
+/**
+ * The property page for a signal.
+ */
+public class SignalPropertyPage extends PropertyPage {
+
+ private SelectionButtonDialogField fPassButton;
+ private SelectionButtonDialogField fStopButton;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
+ */
+ protected Control createContents( Composite parent ) {
+ noDefaultAndApplyButton();
+ Composite composite = new Composite( parent, SWT.NONE );
+ Font font = parent.getFont();
+ composite.setFont( font );
+ composite.setLayout( new GridLayout() );
+ composite.setLayoutData( new GridData( GridData.FILL_BOTH ) );
+
+ // Create description field
+ try {
+ String description = getSignal().getDescription();
+ Label label = new Label( composite, SWT.WRAP );
+ label.setText( MessageFormat.format( PropertyPageMessages.getString( "SignalPropertyPage.0" ), new String[] { description } ) ); //$NON-NLS-1$
+ GridData data = new GridData( GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER );
+ data.widthHint = convertHorizontalDLUsToPixels( IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH );
+ label.setLayoutData( data );
+ label.setFont( font );
+ }
+ catch( DebugException e1 ) {
+ }
+
+ // Create pass button
+ try {
+ boolean pass = getSignal().isPassEnabled();
+ fPassButton = new SelectionButtonDialogField( SWT.CHECK );
+ fPassButton.setLabelText( PropertyPageMessages.getString( "SignalPropertyPage.1" ) ); //$NON-NLS-1$
+ fPassButton.setSelection( pass );
+ fPassButton.setEnabled( getSignal().canModify() );
+ fPassButton.doFillIntoGrid( composite, 1 );
+ }
+ catch( DebugException e ) {
+ }
+
+ // Create stop button
+ try {
+ boolean stop = getSignal().isStopEnabled();
+ fStopButton = new SelectionButtonDialogField( SWT.CHECK );
+ fStopButton.setLabelText( PropertyPageMessages.getString( "SignalPropertyPage.2" ) ); //$NON-NLS-1$
+ fStopButton.setSelection( stop );
+ fStopButton.setEnabled( getSignal().canModify() );
+ fStopButton.doFillIntoGrid( composite, 1 );
+ }
+ catch( DebugException e ) {
+ }
+
+ setValid( true );
+ return composite;
+ }
+
+ protected SelectionButtonDialogField getPassButton() {
+ return fPassButton;
+ }
+
+ protected SelectionButtonDialogField getStopButton() {
+ return fStopButton;
+ }
+
+ public ICSignal getSignal() {
+ return (ICSignal)getElement();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferencePage#performOk()
+ */
+ public boolean performOk() {
+ boolean result = super.performOk();
+ if ( result ) {
+ try {
+ setSignalProperties();
+ }
+ catch( DebugException e ) {
+ DebugUIPlugin.errorDialog( getShell(), PropertyPageMessages.getString( "SignalPropertyPage.3" ), PropertyPageMessages.getString( "SignalPropertyPage.4" ), e.getStatus() ); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+ return result;
+ }
+
+ private void setSignalProperties() throws DebugException {
+ final MultiStatus ms = new MultiStatus( CDebugUIPlugin.getUniqueIdentifier(),
+ DebugException.REQUEST_FAILED,
+ PropertyPageMessages.getString( "SignalPropertyPage.5" ), //$NON-NLS-1$
+ null );
+ BusyIndicator.showWhile( Display.getCurrent(),
+ new Runnable() {
+ public void run() {
+ if ( !getSignal().canModify() )
+ return;
+ if ( getPassButton() != null ) {
+ try {
+ getSignal().setPassEnabled( getPassButton().isSelected() );
+ }
+ catch( DebugException e ) {
+ ms.merge( e.getStatus() );
+ }
+ }
+ if ( getStopButton() != null ) {
+ try {
+ getSignal().setStopEnabled( getStopButton().isSelected() );
+ }
+ catch( DebugException e ) {
+ ms.merge( e.getStatus() );
+ }
+ }
+ }
+ } );
+ if ( !ms.isOK() ) {
+ throw new DebugException( ms );
+ }
+ }
+}

Back to the top