diff options
7 files changed, 27 insertions, 193 deletions
diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index ee960eeade4..1dd44e27534 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,15 @@ +2006-02-27 Mikhail Khodjaiants
+ The DirectorySourceContainer's UI now supports the subfolders searching option (see bug 89748).
+ Removed CDirectorySourceContainer and related classes.
+ The CDirectorySourceContainerType is kept for migration purposes.
+ - CDirectorySourceContainer.java
+ * CDebugTarget.java
+ * CDirectorySourceContainerType.java
+ * CSourceLookupDirector.java
+ * SourceUtils.java
+ * plugin.properties
+ * plugin.xml
+
2006-02-24 Mikhail Khodjaiants
Fix for bugs 129152 (Keyboard shortcuts are gone in CDT CVS HEAD)
and 128844 (No prompt for Debug perspective on suspend).
diff --git a/debug/org.eclipse.cdt.debug.core/plugin.properties b/debug/org.eclipse.cdt.debug.core/plugin.properties index 20b9d5e4e4f..993a7c448e6 100644 --- a/debug/org.eclipse.cdt.debug.core/plugin.properties +++ b/debug/org.eclipse.cdt.debug.core/plugin.properties @@ -22,5 +22,5 @@ containerName.mapping=Path Mapping containerDescription.mapping=A path mapping. containerName.mapEntry=Path Map Entry containerDescription.mapEntry=An entry in a path mapping. -containerName.directory=File System Directory With Subfolders -containerDescription.directory=A directory in the local file system with the subfolders search option. +containerName.directory=File System Directory +containerDescription.directory=A directory in the local file system. diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/sourcelookup/CDirectorySourceContainer.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/sourcelookup/CDirectorySourceContainer.java deleted file mode 100644 index 3ca2a1969c0..00000000000 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/sourcelookup/CDirectorySourceContainer.java +++ /dev/null @@ -1,178 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2005 QNX Software Systems and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * QNX Software Systems - Initial API and implementation - *******************************************************************************/ -package org.eclipse.cdt.debug.core.sourcelookup; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import org.eclipse.cdt.debug.core.CDebugCorePlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.debug.core.sourcelookup.ISourceContainer; -import org.eclipse.debug.core.sourcelookup.ISourceContainerType; -import org.eclipse.debug.core.sourcelookup.containers.CompositeSourceContainer; -import org.eclipse.debug.core.sourcelookup.containers.LocalFileStorage; - -/** - * It is not supposed to subclass DirectorySourceContainer, but we need to use - * the different browser. - */ -public class CDirectorySourceContainer extends CompositeSourceContainer { - - /** - * Unique identifier for the CDT directory source container type - * (value <code>org.eclipse.cdt.debug.core.containerType.directory</code>). - */ - public static final String TYPE_ID = CDebugCorePlugin.getUniqueIdentifier() + ".containerType.directory"; //$NON-NLS-1$ - - // root directory - private File fDirectory; - // whether to search subfolders - private boolean fSubfolders = false; - - /** - * Consutructs an external folder container for the - * directory identified by the given path. - * - * @param dirPath path to a directory in the local file system - * @param subfolders whether folders within the root directory - * should be searched for source elements - */ - public CDirectorySourceContainer( IPath dirPath, boolean subfolders ) { - this( dirPath.toFile(), subfolders ); - } - - /** - * Consutructs an external folder container for the - * directory identified by the given file. - * - * @param dir a directory in the local file system - * @param subfolders whether folders within the root directory - * should be searched for source elements - */ - public CDirectorySourceContainer( File dir, boolean subfolders ) { - fDirectory = dir; - fSubfolders = subfolders; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainer#getName() - */ - public String getName() { - return fDirectory.getName(); - } - - /** - * Returns the root directory in the local file system associated - * with this source container. - * - * @return the root directory in the local file system associated - * with this source container - */ - public File getDirectory() { - return fDirectory; - } - - public boolean searchSubfolders() { - return fSubfolders; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainer#getType() - */ - public ISourceContainerType getType() { - return getSourceContainerType( TYPE_ID ); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainer#findSourceElements(java.lang.String) - */ - public Object[] findSourceElements( String name ) throws CoreException { - ArrayList sources = new ArrayList(); - File directory = getDirectory(); - File file = new File( directory, name ); - if ( file.exists() && file.isFile() ) { - sources.add( new LocalFileStorage( file ) ); - } - // check subfolders - if ( (isFindDuplicates() && fSubfolders) || (sources.isEmpty() && fSubfolders) ) { - ISourceContainer[] containers = getSourceContainers(); - for( int i = 0; i < containers.length; i++ ) { - Object[] objects = containers[i].findSourceElements( name ); - if ( objects == null || objects.length == 0 ) { - continue; - } - if ( isFindDuplicates() ) { - for( int j = 0; j < objects.length; j++ ) - sources.add( objects[j] ); - } - else { - sources.add( objects[0] ); - break; - } - } - } - if ( sources.isEmpty() ) - return EMPTY; - return sources.toArray(); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainer#isComposite() - */ - public boolean isComposite() { - return fSubfolders; - } - - /* (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - public boolean equals( Object obj ) { - if ( obj instanceof CDirectorySourceContainer ) { - CDirectorySourceContainer container = (CDirectorySourceContainer)obj; - return container.getDirectory().equals( getDirectory() ); - } - return false; - } - - /* (non-Javadoc) - * @see java.lang.Object#hashCode() - */ - public int hashCode() { - return getDirectory().hashCode(); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.core.sourcelookup.containers.CompositeSourceContainer#createSourceContainers() - */ - protected ISourceContainer[] createSourceContainers() throws CoreException { - if ( isComposite() ) { - String[] files = fDirectory.list(); - if ( files != null ) { - List dirs = new ArrayList(); - for( int i = 0; i < files.length; i++ ) { - String name = files[i]; - File file = new File( getDirectory(), name ); - if ( file.exists() && file.isDirectory() ) { - dirs.add( new CDirectorySourceContainer( file, true ) ); - } - } - ISourceContainer[] containers = (ISourceContainer[])dirs.toArray( new ISourceContainer[dirs.size()] ); - for( int i = 0; i < containers.length; i++ ) { - ISourceContainer container = containers[i]; - container.init( getDirector() ); - } - return containers; - } - } - return new ISourceContainer[0]; - } -} diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java index e1360c29948..c5a810d4e1f 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java @@ -78,7 +78,6 @@ import org.eclipse.cdt.debug.core.model.IGlobalVariableDescriptor; import org.eclipse.cdt.debug.core.model.IModuleRetrieval; import org.eclipse.cdt.debug.core.model.IPersistableRegisterGroup; import org.eclipse.cdt.debug.core.model.IRegisterDescriptor; -import org.eclipse.cdt.debug.core.sourcelookup.CDirectorySourceContainer; import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator; import org.eclipse.cdt.debug.core.sourcelookup.ISourceLookupChangeListener; import org.eclipse.cdt.debug.internal.core.CBreakpointManager; @@ -122,6 +121,7 @@ import org.eclipse.debug.core.model.IThread; import org.eclipse.debug.core.sourcelookup.ISourceContainer; import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector; import org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant; +import org.eclipse.debug.core.sourcelookup.containers.DirectorySourceContainer; import org.eclipse.debug.core.sourcelookup.containers.FolderSourceContainer; import org.eclipse.debug.core.sourcelookup.containers.ProjectSourceContainer; @@ -1642,8 +1642,8 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv if ( container != null && container.exists() ) list.add( container.getLocation().toPortableString() ); } - if ( containers[i] instanceof CDirectorySourceContainer ) { - File dir = ((CDirectorySourceContainer)containers[i]).getDirectory(); + if ( containers[i] instanceof DirectorySourceContainer ) { + File dir = ((DirectorySourceContainer)containers[i]).getDirectory(); if ( dir != null && dir.exists() ) { IPath path = new Path( dir.getAbsolutePath() ); list.add( path.toPortableString() ); diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CDirectorySourceContainerType.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CDirectorySourceContainerType.java index a70dfc6f638..f674fd1d469 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CDirectorySourceContainerType.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CDirectorySourceContainerType.java @@ -10,11 +10,11 @@ *******************************************************************************/ package org.eclipse.cdt.debug.internal.core.sourcelookup; -import org.eclipse.cdt.debug.core.sourcelookup.CDirectorySourceContainer; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.Path; import org.eclipse.debug.core.sourcelookup.ISourceContainer; import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate; +import org.eclipse.debug.core.sourcelookup.containers.DirectorySourceContainer; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -38,7 +38,7 @@ public class CDirectorySourceContainerType extends AbstractSourceContainerTypeDe } String nest = element.getAttribute( "nest" ); //$NON-NLS-1$ boolean nested = "true".equals( nest ); //$NON-NLS-1$ - return new CDirectorySourceContainer( new Path( string ), nested ); + return new DirectorySourceContainer( new Path( string ), nested ); } abort( InternalSourceLookupMessages.getString( "CDirectorySourceContainerType.1" ), null ); //$NON-NLS-1$ } @@ -50,7 +50,7 @@ public class CDirectorySourceContainerType extends AbstractSourceContainerTypeDe * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#getMemento(org.eclipse.debug.internal.core.sourcelookup.ISourceContainer) */ public String getMemento( ISourceContainer container ) throws CoreException { - CDirectorySourceContainer folder = (CDirectorySourceContainer)container; + DirectorySourceContainer folder = (DirectorySourceContainer)container; Document document = newDocument(); Element element = document.createElement( "directory" ); //$NON-NLS-1$ element.setAttribute( "path", folder.getDirectory().getAbsolutePath() ); //$NON-NLS-1$ diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupDirector.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupDirector.java index 65a46961b16..81d5a5abb42 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupDirector.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupDirector.java @@ -14,7 +14,6 @@ import java.io.File; import java.util.HashSet; import java.util.Set; import org.eclipse.cdt.debug.core.model.ICBreakpoint; -import org.eclipse.cdt.debug.core.sourcelookup.CDirectorySourceContainer; import org.eclipse.cdt.debug.core.sourcelookup.MappingSourceContainer; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; @@ -28,6 +27,7 @@ import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector; import org.eclipse.debug.core.sourcelookup.ISourceContainer; import org.eclipse.debug.core.sourcelookup.ISourceContainerType; import org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant; +import org.eclipse.debug.core.sourcelookup.containers.DirectorySourceContainer; import org.eclipse.debug.core.sourcelookup.containers.FolderSourceContainer; import org.eclipse.debug.core.sourcelookup.containers.ProjectSourceContainer; import org.eclipse.debug.core.sourcelookup.containers.WorkspaceSourceContainer; @@ -44,7 +44,7 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector { fSupportedTypes.add( WorkspaceSourceContainer.TYPE_ID ); fSupportedTypes.add( ProjectSourceContainer.TYPE_ID ); fSupportedTypes.add( FolderSourceContainer.TYPE_ID ); - fSupportedTypes.add( CDirectorySourceContainer.TYPE_ID ); + fSupportedTypes.add( DirectorySourceContainer.TYPE_ID ); fSupportedTypes.add( MappingSourceContainer.TYPE_ID ); } @@ -131,9 +131,9 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector { return ( file != null && file.exists() ); } } - if ( container instanceof CDirectorySourceContainer ) { - File dir = ((CDirectorySourceContainer)container).getDirectory(); - boolean searchSubfolders = ((CDirectorySourceContainer)container).searchSubfolders(); + if ( container instanceof DirectorySourceContainer ) { + File dir = ((DirectorySourceContainer)container).getDirectory(); + boolean searchSubfolders = ((DirectorySourceContainer)container).isComposite(); IPath dirPath = new Path( dir.getAbsolutePath() ); if ( searchSubfolders || dirPath.segmentCount() + 1 == path.segmentCount() ) return dirPath.isPrefixOf( path ); diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java index 4052319000c..ff26c027df4 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java @@ -22,7 +22,6 @@ import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import org.eclipse.cdt.debug.core.CDebugCorePlugin; import org.eclipse.cdt.debug.core.CDebugUtils; -import org.eclipse.cdt.debug.core.sourcelookup.CDirectorySourceContainer; import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation; import org.eclipse.cdt.debug.core.sourcelookup.IDirectorySourceLocation; import org.eclipse.cdt.debug.core.sourcelookup.IProjectSourceLocation; @@ -32,6 +31,7 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.debug.core.sourcelookup.ISourceContainer; +import org.eclipse.debug.core.sourcelookup.containers.DirectorySourceContainer; import org.eclipse.debug.core.sourcelookup.containers.ProjectSourceContainer; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -181,7 +181,7 @@ public class SourceUtils { containers.add( mapping ); } - containers.add( new CDirectorySourceContainer( d.getDirectory(), d.searchSubfolders() ) ); + containers.add( new DirectorySourceContainer( d.getDirectory(), d.searchSubfolders() ) ); } } return (ISourceContainer[])containers.toArray( new ISourceContainer[containers.size()] ); |