Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] Property page not displaying - any ideas?

> 
> Sometime during Eclipse 3.1 or CDT 3.0 development,=20
> 
> the MBS "resource" property page stopped displaying. =20
> 
> It uses the nameFilter attribute of the=20
> 
> org.eclipse.ui.propertyPages extension point. =20
> 
> =20
> 
> Here is an example
> 
>       =20
> 
> <extension
> 
>     point=3D"org.eclipse.ui.propertyPages">
> 
>   <page
> 
>     objectClass=3D"org.eclipse.core.resources.IFile"
> 
>     adaptable=3D"true"
> 
>     name=3D"%MngResourceProp.name"
> 
>     nameFilter=3D"*.c"
> 
> =20
> class=3D"org.eclipse.cdt.managedbuilder.ui.properties.ResourceBuildProper=
> t
> yPage"
> 
> =20
> id=3D"org.eclipse.cdt.managedbuilder.ui.properties.ResourceBuildPropertie=
> s
> ">
> 
>   </page>
> 
> </extension>
> 
> =20
> 
> A Foo.c file only gets the Info property page now, and the
> 
> Info page identifies the file as Type: File (C++ Header File).
> 
> =20
> 
> Could a CDT change have affected this, or is it time for an
> 
> Eclipse bugzilla?
> 


The problem is that you have the same id=".." tags for all your property pages
so possible solutions:

(a) Just have one <page>..</page>  8-)

(b) provide a different id for each page.  The id should be uniq, so for IFile and nameFilter=*.c
	id="org.eclipse.cdt.managedbuilder.ui.properties.ResourceBuildProperties.c"
   for IFile and nameFilter=*.cpp
	id="org.eclipse.cdt.managedbuilder.ui.properties.ResourceBuildProperties.cpp"
   etc ...

> 
> Eclipse bugzilla?

Yes, 8-) still not out of the woods, NPE when I fix your plugin.xml with solution (a):
java.lang.NullPointerException
at org.eclipse.cdt.managedbuilder.ui.properties.ResourceBuildPropertyPage.createContents(ResourceBuildPropertyPage.java:130)
at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:423)
at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:388)
at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1407)
at org.eclipse.jface.preference.PreferenceDialog$13.run(PreferenceDialog.java:1119)
...


I would recommand  solution (c) for your property page:

(c)
	<page
		objectClass="org.eclipse.cdt.core.model.ITranslationUnit"
		name="%ManagedMakeResourcePropertyPage.name"
		adaptable="true"
		class="org.eclipse.cdt.managedbuilder.ui.properties.ResourceBuildPropertyPage"
		id="org.eclipse.cdt.managedbuilder.ui.properties.ResourceBuildProperties.cunit">
		<filter
			name="projectNature"
			value="org.eclipse.cdt.managedbuilder.core.managedBuildNature">
		</filter>
	</page>

The advantages:
 - save you from providing a <page></page> for all possible nameFilter(*.c, *cpp,*.hxx, *.cxx, *.cc, etc ..)
   leave that to the CDT/Core(ResolverModel or IContentTypeManager)
 - and you probably want to filter this page for only managed builder project(projectNature).

Small drawback:
 - it will not show if you use the navigator.  But that's is a PR for the CDT/Core.
   CDT should provide an adapter factory extension for IFile --> ITranslationUnit.
   For some odd reason we did not provide any.

P.S.: Dinglis is working on a PR about IActionFilter(<filter></filter> tags) and ICElement
      but I could not find the PR number ... 




Back to the top