Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] New Class Wizard - inclusion fix


Hello,
A fix for the incorrect inclusion problem in the New Class Wizard.



Thanks

Hoda Amer
Senior Software Engineer
Rational Software - IBM Software Group
Index: model/org/eclipse/cdt/core/model/ICElement.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ICElement.java,v
retrieving revision 1.10
diff -u -r1.10 ICElement.java
--- model/org/eclipse/cdt/core/model/ICElement.java	1 May 2003 19:46:41 -0000	1.10
+++ model/org/eclipse/cdt/core/model/ICElement.java	28 May 2003 16:30:01 -0000
@@ -274,7 +274,7 @@
 	 * @exception CModelException if this element does not exist or if an
 	 *		exception occurs while accessing its underlying resource
 	 */
-	IResource getUnderlyingResource() throws CModelException;
+	IResource getUnderlyingResource();
 
 	/**
 	 * Returns the Corresponding resource for
Index: model/org/eclipse/cdt/internal/core/model/CElement.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElement.java,v
retrieving revision 1.10
diff -u -r1.10 CElement.java
--- model/org/eclipse/cdt/internal/core/model/CElement.java	4 Apr 2003 14:01:29 -0000	1.10
+++ model/org/eclipse/cdt/internal/core/model/CElement.java	28 May 2003 16:30:01 -0000
@@ -69,13 +69,9 @@
 	}
 
 	public IPath getPath() {
-		try {
-			IResource res = getUnderlyingResource();
-			if (res != null)
-				return res.getFullPath();
-		} catch (CModelException e) {
-			e.printStackTrace();
-		}
+		IResource res = getUnderlyingResource();
+		if (res != null)
+			return res.getFullPath();
 		return new Path(getElementName());
 	}
 
@@ -84,13 +80,10 @@
 	}
 	
 	public boolean isReadOnly () {
-		try {
-			IResource r = getUnderlyingResource();
-			if (r != null) {
-				return r.isReadOnly();
-			}			
-		} catch (CModelException e) {
-		}
+		IResource r = getUnderlyingResource();
+		if (r != null) {
+			return r.isReadOnly();
+		}			
 		return false;
 	}
 
@@ -156,7 +149,7 @@
 		fEndLine = endLine;
 	}
 
-	public IResource getUnderlyingResource() throws CModelException {
+	public IResource getUnderlyingResource() {
 		IResource res = getResource();
 		if (res == null) {
 			ICElement p = getParent();
Index: model/org/eclipse/cdt/internal/core/model/CElementInfo.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElementInfo.java,v
retrieving revision 1.4
diff -u -r1.4 CElementInfo.java
--- model/org/eclipse/cdt/internal/core/model/CElementInfo.java	27 Mar 2003 16:05:18 -0000	1.4
+++ model/org/eclipse/cdt/internal/core/model/CElementInfo.java	28 May 2003 16:30:01 -0000
@@ -7,10 +7,8 @@
 
 import java.io.File;
 
-import org.eclipse.core.resources.IResource;
-
 import org.eclipse.cdt.core.model.ICElement;
-import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.core.resources.IResource;
 
 /**
  * Holds cached structure and properties for a C element.
@@ -140,11 +138,7 @@
 	protected boolean hasChanged () {
 		IResource r = null;
 		boolean b = false;
-		try {
-			r = getElement().getUnderlyingResource();
-		} catch (CModelException e) {
-			e.printStackTrace();
-		}
+		r = getElement().getUnderlyingResource();
 		if (r != null && r.exists()) {
 			long modif = 0;
 			switch(r.getType()) {
Index: model/org/eclipse/cdt/internal/core/model/CModel.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModel.java,v
retrieving revision 1.1
diff -u -r1.1 CModel.java
--- model/org/eclipse/cdt/internal/core/model/CModel.java	27 Mar 2003 16:05:18 -0000	1.1
+++ model/org/eclipse/cdt/internal/core/model/CModel.java	28 May 2003 16:30:01 -0000
@@ -40,12 +40,7 @@
 	}
 
 	public IWorkspace getWorkspace() {
-		try {
-			return getUnderlyingResource().getWorkspace();
-		} catch (CModelException e) {
-			e.printStackTrace();
-		}
-		return null;
+		return getUnderlyingResource().getWorkspace();
 	}
 
 	public void copy(ICElement[] elements, ICElement[] containers, ICElement[] siblings,
Index: model/org/eclipse/cdt/internal/core/model/CProject.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java,v
retrieving revision 1.6
diff -u -r1.6 CProject.java
--- model/org/eclipse/cdt/internal/core/model/CProject.java	3 Apr 2003 04:28:03 -0000	1.6
+++ model/org/eclipse/cdt/internal/core/model/CProject.java	28 May 2003 16:30:02 -0000
@@ -37,12 +37,7 @@
 	}
 
 	public IProject getProject() {
-		try {
-			return getUnderlyingResource().getProject();
-		} catch (CModelException e) {
-			e.printStackTrace();
-		}
-		return null;
+		return getUnderlyingResource().getProject();
 	}
 
 	public ICElement findElement(IPath path) throws CModelException {
Index: model/org/eclipse/cdt/internal/core/model/SourceManipulation.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SourceManipulation.java,v
retrieving revision 1.6
diff -u -r1.6 SourceManipulation.java
--- model/org/eclipse/cdt/internal/core/model/SourceManipulation.java	4 Apr 2003 14:01:29 -0000	1.6
+++ model/org/eclipse/cdt/internal/core/model/SourceManipulation.java	28 May 2003 16:30:02 -0000
@@ -137,7 +137,7 @@
 	/**
 	 * @see ICElement
 	 */
-	public IResource getUnderlyingResource() throws CModelException {
+	public IResource getUnderlyingResource() {
 		return getParent().getUnderlyingResource();
 	}
 
Index: src/org/eclipse/cdt/internal/ui/CElementAdapterFactory.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CElementAdapterFactory.java,v
retrieving revision 1.5
diff -u -r1.5 CElementAdapterFactory.java
--- src/org/eclipse/cdt/internal/ui/CElementAdapterFactory.java	27 Mar 2003 16:12:17 -0000	1.5
+++ src/org/eclipse/cdt/internal/ui/CElementAdapterFactory.java	28 May 2003 16:30:32 -0000
@@ -5,7 +5,6 @@
  * All Rights Reserved.
  */
 
-import org.eclipse.cdt.core.model.CModelException;
 import org.eclipse.cdt.core.model.IBinary;
 import org.eclipse.cdt.core.model.ICElement;
 import org.eclipse.core.resources.IFile;
@@ -47,36 +46,33 @@
 		ICElement celem = (ICElement) element;
 		IResource res = null;
 		
-		try {
-			if (IPropertySource.class.equals(key)) {
-				if (celem instanceof IBinary) {
-					return new BinaryPropertySource((IBinary)celem);				
-				} else if (celem.getElementType() == ICElement.C_UNIT) {
-					IResource file = celem.getResource();
-					if (file != null && file instanceof IFile) {
-						return new FilePropertySource((IFile)file);
-					}
-				} else {
-					res = celem.getResource();
-					if (res != null) {
-						return new ResourcePropertySource(res);
-					}
+		if (IPropertySource.class.equals(key)) {
+			if (celem instanceof IBinary) {
+				return new BinaryPropertySource((IBinary)celem);				
+			} else if (celem.getElementType() == ICElement.C_UNIT) {
+				IResource file = celem.getResource();
+				if (file != null && file instanceof IFile) {
+					return new FilePropertySource((IFile)file);
 				}
-				return new CElementPropertySource(celem);
-			} else if (IWorkspaceRoot.class.equals(key)) {
-				 res = celem.getUnderlyingResource();
-				if (res != null)
-					return res.getWorkspace().getRoot();
-			} else if (IProject.class.equals(key)) {
+			} else {
 				res = celem.getResource();
-				if (res != null)
-					return res.getProject();
-			} else if (IResource.class.equals(key)) {
-				return celem.getResource();
-			} else if (IWorkbenchAdapter.class.equals(key)) {
-				return fgCWorkbenchAdapter;
+				if (res != null) {
+					return new ResourcePropertySource(res);
+				}
 			}
-		} catch (CModelException e) {
+			return new CElementPropertySource(celem);
+		} else if (IWorkspaceRoot.class.equals(key)) {
+			 res = celem.getUnderlyingResource();
+			if (res != null)
+				return res.getWorkspace().getRoot();
+		} else if (IProject.class.equals(key)) {
+			res = celem.getResource();
+			if (res != null)
+				return res.getProject();
+		} else if (IResource.class.equals(key)) {
+			return celem.getResource();
+		} else if (IWorkbenchAdapter.class.equals(key)) {
+			return fgCWorkbenchAdapter;
 		}
 		return null; 
 	}
Index: src/org/eclipse/cdt/internal/ui/cview/CViewDropAdapter.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewDropAdapter.java,v
retrieving revision 1.3
diff -u -r1.3 CViewDropAdapter.java
--- src/org/eclipse/cdt/internal/ui/cview/CViewDropAdapter.java	29 Oct 2002 21:40:58 -0000	1.3
+++ src/org/eclipse/cdt/internal/ui/cview/CViewDropAdapter.java	28 May 2003 16:30:33 -0000
@@ -10,7 +10,6 @@
 import java.util.Arrays;
 import java.util.List;
 
-import org.eclipse.cdt.core.model.CModelException;
 import org.eclipse.cdt.core.model.ICElement;
 import org.eclipse.cdt.ui.CUIPlugin;
 import org.eclipse.core.resources.IContainer;
@@ -42,7 +41,8 @@
 import org.eclipse.ui.part.PluginDropAdapter;
 import org.eclipse.ui.part.ResourceTransfer;
 import org.eclipse.ui.wizards.datatransfer.FileSystemStructureProvider;
-import org.eclipse.ui.wizards.datatransfer.ImportOperation;;
+import org.eclipse.ui.wizards.datatransfer.ImportOperation;
+;
 
 /**
  * Implements drop behaviour for drag and drop operations
@@ -368,10 +368,7 @@
 		Object obj = getCurrentTarget();
 		IResource res = null;
 		if (obj instanceof ICElement) {
-			try {
-				res = ((ICElement)obj).getUnderlyingResource();
-			} catch (CModelException e) {
-			}
+			res = ((ICElement)obj).getUnderlyingResource();
 		}
 		IContainer targetResource = getActualTarget(res);
 		String[] names = (String[]) data;
@@ -392,10 +389,7 @@
 		Object obj = getCurrentTarget();
 		IResource res = null;
 		if (obj instanceof ICElement) {
-			try {
-				res = ((ICElement)obj).getUnderlyingResource();
-			} catch (CModelException e) {
-			}
+			res = ((ICElement)obj).getUnderlyingResource();
 		}
 		IContainer targetResource = getActualTarget(res);
 		IResource[] sources = (IResource[]) data;
@@ -443,13 +437,10 @@
 	 */
 	protected IStatus validateTarget(Object target) {
 		if (target instanceof ICElement) {
-			try {
-				IResource r = ((ICElement)target).getUnderlyingResource();
-				if (r == null)
-					return info("Target Must Be Resource"); //$NON-NLS-1$
-				target = r;
-			} catch (CModelException e) {
-			}
+			IResource r = ((ICElement)target).getUnderlyingResource();
+			if (r == null)
+				return info("Target Must Be Resource"); //$NON-NLS-1$
+			target = r;
 		}
 		if (!(target instanceof IResource)) {
 			return info("Target Must Be Resource"); //$NON-NLS-1$
Index: src/org/eclipse/cdt/internal/ui/cview/CViewSorter.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewSorter.java,v
retrieving revision 1.5
diff -u -r1.5 CViewSorter.java
--- src/org/eclipse/cdt/internal/ui/cview/CViewSorter.java	3 Apr 2003 04:29:43 -0000	1.5
+++ src/org/eclipse/cdt/internal/ui/cview/CViewSorter.java	28 May 2003 16:30:33 -0000
@@ -5,7 +5,6 @@
  * All Rights Reserved.
  */
  
-import org.eclipse.cdt.core.model.CModelException;
 import org.eclipse.cdt.core.model.CoreModel;
 import org.eclipse.cdt.core.model.IArchive;
 import org.eclipse.cdt.core.model.IArchiveContainer;
@@ -54,10 +53,7 @@
 			return 40;
 		} else if (element instanceof ITranslationUnit) {
 			IResource res = null;
-			try {
-				res = ((ITranslationUnit)element).getUnderlyingResource();
-			} catch (CModelException e) {
-			}
+			res = ((ITranslationUnit)element).getUnderlyingResource();
 			if (res != null) {
 				String ext = res.getFileExtension();
 				if (ext != null) {
Index: src/org/eclipse/cdt/ui/wizards/NewClassWizardPage.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewClassWizardPage.java,v
retrieving revision 1.1
diff -u -r1.1 NewClassWizardPage.java
--- src/org/eclipse/cdt/ui/wizards/NewClassWizardPage.java	27 May 2003 21:33:02 -0000	1.1
+++ src/org/eclipse/cdt/ui/wizards/NewClassWizardPage.java	28 May 2003 16:30:33 -0000
@@ -16,6 +16,7 @@
 import java.lang.reflect.InvocationTargetException;
 import java.text.MessageFormat;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.cdt.core.model.CModelException;
@@ -24,6 +25,7 @@
 import org.eclipse.cdt.core.model.ICProject;
 import org.eclipse.cdt.core.model.IOpenable;
 import org.eclipse.cdt.core.model.IParent;
+import org.eclipse.cdt.core.model.IStructure;
 import org.eclipse.cdt.core.model.ITranslationUnit;
 import org.eclipse.cdt.internal.core.model.IWorkingCopy;
 import org.eclipse.cdt.internal.ui.dialogs.StatusInfo;
@@ -87,6 +89,8 @@
 public class NewClassWizardPage extends WizardPage implements Listener {
 	// the page name
 	private final static String PAGE_NAME= "NewClassWizardPage";
+	private final String HEADER_EXT = ".h";
+	private final String BODY_EXT = ".cpp";
 	
 	// the current resource selection
 	private	IStructuredSelection currentSelection;
@@ -96,6 +100,10 @@
 	// cache of newly-created files
 	private ITranslationUnit parentHeaderTU = null;
 	private ITranslationUnit parentBodyTU = null;
+	// the created class element
+	private IStructure createdClass = null;
+	
+	private ArrayList elementsOfTypeClassInProject = null;
 	
 	// Controls
 	private StringDialogField fClassNameDialogField;
@@ -115,7 +123,6 @@
 	public NewClassWizardPage(IStructuredSelection selection) {
 		super(PAGE_NAME);	
 		currentSelection = selection;
-		eSelection = getSelectionCElement(currentSelection);
 
 		TypeFieldsAdapter adapter= new TypeFieldsAdapter();
 
@@ -160,7 +167,7 @@
 	public void init() {
 		fAccessButtons.setEnabled(false);
 		setPageComplete(false);
-		
+		eSelection = getSelectionCElement(currentSelection);						
 	}	
 	
 	// ----------------- Creating Controls -------------------- 			
@@ -308,14 +315,14 @@
 			String text = fClassNameDialogField.getText();
 			if(!linkedResourceGroupForHeader.linkCreated()){
 				if (text.length() > 0) {
-					linkedResourceGroupForHeader.setText(text + ".h");
+					linkedResourceGroupForHeader.setText(text + HEADER_EXT);
 				} else {
 					linkedResourceGroupForHeader.setText(text);
 				}				
 			}
 			if(!linkedResourceGroupForBody.linkCreated()){
 				if (text.length() > 0) {			
-					linkedResourceGroupForBody.setText(text + ".cpp");
+					linkedResourceGroupForBody.setText(text + BODY_EXT);
 				} else{				
 					linkedResourceGroupForBody.setText(text);
 				}
@@ -337,7 +344,7 @@
 	}		
 	
 	// --------------- Helper methods for creating controls -----
-	private static ICElement getSelectionCElement(IStructuredSelection sel) {
+	private ICElement getSelectionCElement(IStructuredSelection sel) {
 		if (!sel.isEmpty() && sel instanceof IStructuredSelection) {
 			List list= ((IStructuredSelection)sel).toList();
 			if (list.size() == 1) {
@@ -368,35 +375,39 @@
 		}
 	}
 	
+	private ArrayList getClassElementsInProject(){
+		return elementsOfTypeClassInProject;
+	}
+	
 	private ArrayList findClassElementsInProject(){		
-		final ArrayList elementsOfTypeClassInProject = new ArrayList();
-
-		IRunnableWithProgress runnable= new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-				if (monitor == null) {
-					monitor= new NullProgressMonitor();
-				}				
-				monitor.beginTask("", 5); //$NON-NLS-1$
-				try{
-					if(eSelection != null){
-						ICProject cProject = eSelection.getCProject();
-						getChildrenOfTypeClass((IParent)cProject, elementsOfTypeClassInProject, monitor, 1);
+		if(	elementsOfTypeClassInProject == null ){
+			elementsOfTypeClassInProject = new ArrayList();		
+			IRunnableWithProgress runnable= new IRunnableWithProgress() {
+				public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+					if (monitor == null) {
+						monitor= new NullProgressMonitor();
+					}				
+					monitor.beginTask("", 5); //$NON-NLS-1$
+					try{
+						if(eSelection != null){
+							ICProject cProject = eSelection.getCProject();
+							getChildrenOfTypeClass((IParent)cProject, elementsOfTypeClassInProject, monitor, 1);
+						}
+						monitor.worked(5);
+					} finally{
+						monitor.done();
 					}
-					monitor.worked(5);
-				} finally{
-					monitor.done();
 				}
+			};
+			
+			try {
+				getWizard().getContainer().run(false, true, runnable);
+			} catch (InvocationTargetException e) {				
+			} catch (InterruptedException e) {
+			} 
+			finally {
 			}
-		};
-		
-		try {
-			getWizard().getContainer().run(false, true, runnable);
-		} catch (InvocationTargetException e) {				
-		} catch (InterruptedException e) {
-		} 
-		finally {
-		}
-							 
+		}							 
 		return elementsOfTypeClassInProject;
 	}
 	
@@ -418,24 +429,22 @@
 	}
 	
 	// ------------- getter methods for dialog controls ------------- 			
-	public String getHeaderFileName(){
-		return linkedResourceGroupForHeader.getText();
-	}
-	public String getBodyFileName(){
-		return linkedResourceGroupForBody.getText();
-	}
 	public String getNewClassName(){
 		return fClassNameDialogField.getText();		
 	}
+	
 	public String getBaseClassName(){
 		return fBaseClassDialogField.getText();
 	}
+	
 	public boolean isVirtualDestructor(){
 		return fConstDestButtons.isSelected(1);
 	}
+	
 	public boolean isInline(){
 		return fConstDestButtons.isSelected(0);
 	}
+	
 	public String getAccess(){
 		if(fAccessButtons.isSelected(0))
 			return "public";
@@ -454,7 +463,14 @@
 		return parentBodyTU;
 	}
 
-
+	public IStructure getCreatedClassElement(){
+		return createdClass;
+	}
+	
+	public IStructure getBaseClassElement(){
+		
+		return null;
+	}
 	// -------------- Create a new Class  ----------------------	
 	
 	public void createClass(IProgressMonitor monitor){
@@ -465,10 +481,10 @@
 		try{
 			
 			String lineDelimiter= null;	
-			lineDelimiter= System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+			lineDelimiter= System.getProperty("line.separator", "\n"); 
 			
-			parentHeaderTU = createTranslationUnit(linkedResourceGroupForHeader, getHeaderFileName());		
-			parentBodyTU = createTranslationUnit(linkedResourceGroupForBody, getBodyFileName());		
+			parentHeaderTU = createTranslationUnit(linkedResourceGroupForHeader);		
+			parentBodyTU = createTranslationUnit(linkedResourceGroupForBody);		
 			monitor.worked(1);
 	
 			if(parentHeaderTU != null){
@@ -479,6 +495,7 @@
 					headerWC.reconcile();	
 					headerWC.commit(true, monitor);
 				}
+				createdClass= (IStructure)headerWC.getElement(getNewClassName());				
 			}
 			if(parentBodyTU != null){
 				String body = constructBodyFileContent(lineDelimiter);
@@ -498,7 +515,7 @@
 				
 	}
 	
-	protected ITranslationUnit createTranslationUnit(LinkToFileGroup linkedGroup, String fileName){
+	protected ITranslationUnit createTranslationUnit(LinkToFileGroup linkedGroup){
 		ITranslationUnit createdUnit = null;
 		IFile createdFile = null;
 		createdFile= createNewFile(linkedGroup);
@@ -681,103 +698,108 @@
 
 	// ------------ Constructing File Contents -----------------
 	protected String constructHeaderFileContent(String lineDelimiter){
-	   StringBuffer text = new StringBuffer();
-	   boolean extendingBase = false;
-	   String baseClassName = getBaseClassName();
-	   if((baseClassName != null) && (baseClassName.length() > 0))
-	   {
-		   extendingBase = true;
-	   }
-		
-	   if(extendingBase){
-		   text.append("#include \"");
-	   text.append(baseClassName);
-	   text.append('\"');
-		   text.append(lineDelimiter);			
-		   text.append(lineDelimiter);			
-	   }
-	   text.append("class ");
-	   text.append(getNewClassName());
-	   if(extendingBase){
-		   text.append(" : ");
-	   text.append(getAccess());
-	   text.append(" ");
-		   text.append(baseClassName);
-	   }
-	   text.append("{");
-	   text.append(lineDelimiter);			
-	
-	   text.append("public:");
-	   text.append(lineDelimiter);			
-	   text.append(lineDelimiter);			
-		
-	   // constructor
-	   text.append('\t');
-	   text.append(getNewClassName());
-	   text.append("()");
-	   if(isInline()){
-		   text.append(" {};");
-		   text.append(lineDelimiter);						
-	   }else {
-		   text.append(";");
-		   text.append(lineDelimiter);						
-	   }
-		
-		
-	   // destructor
-	   text.append('\t');		
-	   if(isVirtualDestructor()){
-		   text.append("virtual ");
-	   }
-	   text.append("~");
-	   text.append(getNewClassName());
-	   text.append("()");
-	   if(isInline()){
-		   text.append(" {};");
-		   text.append(lineDelimiter);						
-	   }else {
-		   text.append(";");
-		   text.append(lineDelimiter);						
-	   }
-	   text.append("};");
-	   text.append(lineDelimiter);			
+		StringBuffer text = new StringBuffer();
+		boolean extendingBase = false;
+		String baseClassName = getBaseClassName();
+		String baseClassFileName = "";
+		if((baseClassName != null) && (baseClassName.length() > 0))
+		{
+			extendingBase = true;
+			ArrayList classElements = findClassElementsInProject();
+			ICElement baseClass = findInList(baseClassName, classElements);
+
+			if(baseClass != null){
+				baseClassFileName = baseClass.getUnderlyingResource().getName();
+			} else {
+				baseClassFileName = baseClassName + HEADER_EXT;
+			}
+		}
+		
+		if(extendingBase){
+			text.append("#include \"");
+			text.append(baseClassFileName);
+			text.append('\"');
+			text.append(lineDelimiter);			
+			text.append(lineDelimiter);			
+		}
+		text.append("class ");
+		text.append(getNewClassName());
+		if(extendingBase){
+			text.append(" : ");
+			text.append(getAccess());
+			text.append(" ");
+			text.append(baseClassName);
+		}
+		text.append("{");
+		text.append(lineDelimiter);			
+		
+		text.append("public:");
+		text.append(lineDelimiter);			
+		text.append(lineDelimiter);			
+		
+		// constructor
+		text.append('\t');
+		text.append(getNewClassName());
+		text.append("()");
+		if(isInline()){
+			text.append(" {};");
+			text.append(lineDelimiter);						
+		}else {
+			text.append(";");
+			text.append(lineDelimiter);						
+		}
 		
+		// destructor
+		text.append('\t');		
+		if(isVirtualDestructor()){
+			text.append("virtual ");
+		}
+		text.append("~");
+		text.append(getNewClassName());
+		text.append("()");
+		if(isInline()){
+			text.append(" {};");
+			text.append(lineDelimiter);						
+		}else {
+			text.append(";");
+			text.append(lineDelimiter);						
+		}
+		text.append("};");
+		text.append(lineDelimiter);		
 				
-	   return text.toString();
-			 		
-	   }
-		
-	   protected String constructBodyFileContent(String lineDelimiter){
-		   StringBuffer text = new StringBuffer();
-		   text.append("#include \"");
-	   text.append(getNewClassName());
-	   text.append("\"");
-	   text.append(lineDelimiter);			
-	   text.append(lineDelimiter);			
-		
-	   if(isInline())
-		   return text.toString();
-	
-	   // constructor
-	   text.append(getNewClassName());
-	   text.append("::"); 
-	   text.append(getNewClassName());
-	   text.append("()");
-	   text.append(lineDelimiter);			
-	   text.append("{};");
-		   text.append(lineDelimiter);			
-	 
-		   // destructor
-	   text.append(getNewClassName());
-	   text.append("::~"); 
-	   text.append(getNewClassName());
-	   text.append("()"); 
-	   text.append(lineDelimiter);			
-	   text.append("{};"); 
-		   text.append(lineDelimiter);
-						
-		   return text.toString();
-	   }
+		return text.toString();	 		
+	}
+		
+	protected String constructBodyFileContent(String lineDelimiter){
+		StringBuffer text = new StringBuffer();
+		text.append("#include \"");
+		text.append(getCreatedClassHeaderFile().getElementName());
+		text.append("\"");
+		text.append(lineDelimiter);			
+		text.append(lineDelimiter);			
+		
+		if(isInline())
+			return text.toString();
+			
+		// constructor
+		text.append(getNewClassName());
+		text.append("::"); 
+		text.append(getNewClassName());
+		text.append("()");
+		text.append(lineDelimiter);			
+		text.append("{};");
+		text.append(lineDelimiter);			
+		
+		// destructor
+		text.append(getNewClassName());
+		text.append("::~"); 
+		text.append(getNewClassName());
+		text.append("()"); 
+		text.append(lineDelimiter);			
+		text.append("{};"); 
+		text.append(lineDelimiter);				
+		return text.toString();
+	}
 	
 
 	// ------ validation --------
@@ -855,15 +877,29 @@
 		// class name must follow the C/CPP convensions
 
 		// if class does not exist, give warning 
-//		ArrayList elementsFound = findClassElementsInProject();
-//		if(!foundInList(getBaseClassName(), elementsFound)){
-//			status.setWarning(NewWizardMessages.getString("NewClassWizardPage.warning.BaseClassNotExists")); //$NON-NLS-1$
-//		}
+		ArrayList elementsFound = findClassElementsInProject();
+		if(!foundInList(getBaseClassName(), elementsFound)){
+			status.setWarning(NewWizardMessages.getString("NewClassWizardPage.warning.BaseClassNotExists")); //$NON-NLS-1$
+		}
 		return status;
 		
 	}
+	
+	private ICElement findInList(String name, ArrayList elements){
+		Iterator i = elements.iterator();
+		while (i.hasNext()){
+			ICElement element = (ICElement)i.next();
+			if (name.equals(element.getElementName()))
+				return element;
+		}
+		return null;
+	}
+	
 	private boolean foundInList(String name, ArrayList elements){
-		return false;
+		if(findInList(name, elements) != null)
+			return true;
+		else
+			return false;
 	}
 
 }

Back to the top