From 301b9f9cc34fc3b7e375a75380a85ff2136df8a0 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Wed, 27 Apr 2005 17:58:16 +0000 Subject: [PATCH] Added path validation to CDirectorySourceContainerDialog. --- debug/org.eclipse.cdt.debug.ui/ChangeLog | 5 +++ .../CDirectorySourceContainerDialog.java | 34 +++++++++++++++++-- .../SourceLookupUIMessages.properties | 4 +++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index 5a058d0f517..e7255d66879 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,8 @@ +2005-04-27 Mikhail Khodjaiants + Added path validation to CDirectorySourceContainerDialog. + * CDirectorySourceContainerDialog.java + * SourceLookupUIMessages.properties + 2005-04-25 Mikhail Khodjaiants Added the new source container type (CDirectorySourceContainer) to provide the UI support for the subfolders search. diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/sourcelookup/CDirectorySourceContainerDialog.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/sourcelookup/CDirectorySourceContainerDialog.java index 93fc0390778..e5a279345ab 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/sourcelookup/CDirectorySourceContainerDialog.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/sourcelookup/CDirectorySourceContainerDialog.java @@ -27,6 +27,7 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.DirectoryDialog; @@ -71,8 +72,7 @@ public class CDirectorySourceContainerDialog extends TitleAreaDialog { new IDialogFieldListener() { public void dialogFieldChanged( DialogField field ) { - // TODO Auto-generated method stub - + update(); } } ); @@ -155,4 +155,34 @@ public class CDirectorySourceContainerDialog extends TitleAreaDialog { fDirectoryField.setText( getDirectory().getPath() ); fSubfoldersField.setSelection( isSearchSubfolders() ); } + + protected void update() { + boolean isOk = updateErrorMessage(); + Button ok = getButton( IDialogConstants.OK_ID ); + if ( ok != null ) + ok.setEnabled( isOk ); + } + + private boolean updateErrorMessage() { + setErrorMessage( null ); + String text = fDirectoryField.getText().trim(); + if ( text.length() == 0 ) { + setErrorMessage( SourceLookupUIMessages.getString ( "CDirectorySourceContainerDialog.5" ) ); //$NON-NLS-1$ + return false; + } + File file = new File( text ); + if ( !file.exists() ) { + setErrorMessage( SourceLookupUIMessages.getString ( "CDirectorySourceContainerDialog.6" ) ); //$NON-NLS-1$ + return false; + } + if ( !file.isDirectory() ) { + setErrorMessage( SourceLookupUIMessages.getString ( "CDirectorySourceContainerDialog.7" ) ); //$NON-NLS-1$ + return false; + } + if ( !file.isAbsolute() ) { + setErrorMessage( SourceLookupUIMessages.getString ( "CDirectorySourceContainerDialog.8" ) ); //$NON-NLS-1$ + return false; + } + return true; + } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/sourcelookup/SourceLookupUIMessages.properties b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/sourcelookup/SourceLookupUIMessages.properties index bd84047dece..52f422ad526 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/sourcelookup/SourceLookupUIMessages.properties +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/sourcelookup/SourceLookupUIMessages.properties @@ -29,3 +29,7 @@ CDirectorySourceContainerDialog.1=&Browse... CDirectorySourceContainerDialog.2=Search sub&folders CDirectorySourceContainerDialog.3=Choose directory to add: CDirectorySourceContainerDialog.4=Directory Selection +CDirectorySourceContainerDialog.5=The directory path must not be empty +CDirectorySourceContainerDialog.6=The specified directory doesn't exist +CDirectorySourceContainerDialog.7=The specified path must be a directory +CDirectorySourceContainerDialog.8=The specified path must be absolute