1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

2004-08-31 Alain Magloire

Provide a Proxy wrapper for the includeRefence class
	This will allow us to provide special Icon, a correct
	getParent() etc .. in the C/C++ view.
	* src/org/eclipse/cdt/internal/ui/cview/CViewContentProvider.java
	* src/org/eclipse/cdt/internal/ui/cview/CViewLabelProvider.java
	* src/org/eclipse/cdt/internal/ui/cview/IncludeRefContainer.java
	* src/org/eclipse/cdt/internal/ui/cview/IncludeReferenceProxy.java
This commit is contained in:
Alain Magloire 2004-08-31 17:06:41 +00:00
parent 5efbcb92a6
commit 5976bb29a1
5 changed files with 106 additions and 7 deletions

View file

@ -1,3 +1,13 @@
2004-08-31 Alain Magloire
Provide a Proxy wrapper for the includeRefence class
This will allow us to provide special Icon, a correct
getParent() etc .. in the C/C++ view.
* src/org/eclipse/cdt/internal/ui/cview/CViewContentProvider.java
* src/org/eclipse/cdt/internal/ui/cview/CViewLabelProvider.java
* src/org/eclipse/cdt/internal/ui/cview/IncludeRefContainer.java
* src/org/eclipse/cdt/internal/ui/cview/IncludeReferenceProxy.java
2004-08-30 Alain Magloire
Fix for 72914

View file

@ -153,10 +153,8 @@ public class CViewContentProvider extends CElementContentProvider {
// up the parent for {IInclude,ILibrary}Reference so that they refer
// to the container and containers refere to the project
Object parent = super.internalGetParent(element);
if (element instanceof IIncludeReference) {
if (parent instanceof ICProject) {
parent = new IncludeRefContainer((ICProject)parent);
}
if (element instanceof IncludeReferenceProxy) {
parent = ((IncludeReferenceProxy)element).getIncludeRefContainer();
} else if (element instanceof IncludeRefContainer) {
parent = ((IncludeRefContainer)element).getCProject();
} if (element instanceof ILibraryReference) {

View file

@ -10,11 +10,16 @@
***********************************************************************/
package org.eclipse.cdt.internal.ui.cview;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.IIncludeReference;
import org.eclipse.cdt.internal.ui.CElementImageProvider;
import org.eclipse.cdt.internal.ui.IAdornmentProvider;
import org.eclipse.cdt.internal.ui.StandardCElementLabelProvider;
import org.eclipse.cdt.ui.CElementImageDescriptor;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
/*
@ -73,6 +78,9 @@ public class CViewLabelProvider extends StandardCElementLabelProvider {
if (container != null && container.isAccessible()) {
return getImage(reference.getCProject());
}
ImageDescriptor desc = CElementImageProvider.getImageDescriptor(ICElement.C_CCONTAINER);
desc = new CElementImageDescriptor(desc, 0, CElementImageProvider.SMALL_SIZE);
return CUIPlugin.getImageDescriptorRegistry().get(desc);
}
return super.getImage(element);
}

View file

@ -25,7 +25,6 @@ import org.eclipse.ui.model.IWorkbenchAdapter;
*/
public class IncludeRefContainer extends CElementGrouping {
private Object[] EMPTY = new Object[0];
ICProject fCProject;
/**
@ -55,10 +54,14 @@ public class IncludeRefContainer extends CElementGrouping {
public Object[] getChildren(Object o) {
try {
IIncludeReference[] references = fCProject.getIncludeReferences();
return references;
IncludeReferenceProxy[] proxies = new IncludeReferenceProxy[references.length];
for (int i = 0; i < proxies.length; ++i) {
proxies[i] = new IncludeReferenceProxy(this, references[i]);
}
return proxies;
} catch (CModelException e) {
}
return EMPTY;
return NO_CHILDREN;
}
/* (non-Javadoc)

View file

@ -0,0 +1,80 @@
/*******************************************************************************
* Copyright (c) 2000, 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.internal.ui.cview;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.IIncludeReference;
import org.eclipse.cdt.internal.ui.CPluginImages;
import org.eclipse.cdt.ui.CElementGrouping;
import org.eclipse.jface.resource.ImageDescriptor;
/**
* @author User
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class IncludeReferenceProxy extends CElementGrouping {
IncludeRefContainer includeRefContainer;
IIncludeReference reference;
public IncludeReferenceProxy(IncludeRefContainer parent, IIncludeReference reference) {
super(0);
this.reference = reference;
this.includeRefContainer = parent;
}
/* (non-Javadoc)
* @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
*/
public Object[] getChildren(Object object) {
try {
return reference.getChildren();
} catch (CModelException e) {
// We should log the error.
}
return NO_CHILDREN;
}
/* (non-Javadoc)
* @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object)
*/
public ImageDescriptor getImageDescriptor(Object object) {
return CPluginImages.DESC_OBJS_INCLUDES_FOLDER;
}
/* (non-Javadoc)
* @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
*/
public Object getParent(Object object) {
return getIncludeRefContainer();
}
public IncludeRefContainer getIncludeRefContainer() {
return includeRefContainer;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals(Object obj) {
return reference.equals(obj);
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
public String toString() {
return reference.toString();
}
}