I have created a plugin for a Custom framework , i need to give it a php nature so that while developing using this plugin the developer can use the features of php. Currently i am using custom nature. But i do not know how to switch to a php nature. My plugin.xml looks like this.
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.newWizards">
<category
id="rudraxplugin.category.wizards"
name="%category.name">
</category>
<wizard
category="rudraxplugin.category.wizards"
class="rudraxplugin.wizards.CustomProjectNewWizard"
finalPerspective="rudraxplugin.perspective"
id="rudraxplugin.wizard.new.custom"
name="%wizard.name">
</wizard>
</extension>
<extension
point="org.eclipse.ui.views">
<view
class="org.eclipse.ui.navigator.CommonNavigator"
icon="icons/sample.gif"
id="rudraxplugin.navigator"
name="%view.name">
</view>
</extension>
<extension
point="org.eclipse.ui.navigator.viewer">
<viewerActionBinding
viewerId="rudraxplugin.navigator">
<includes>
<actionExtension
pattern="org.eclipse.ui.navigator.resources.*">
</actionExtension>
</includes>
</viewerActionBinding>
<viewerContentBinding
viewerId="rudraxplugin.navigator">
<includes>
<contentExtension
pattern="org.eclipse.ui.navigator.resourceContent">
</contentExtension>
<contentExtension
pattern="org.eclipse.ui.navigator.resources.filters.*">
</contentExtension>
<contentExtension
pattern="org.eclipse.ui.navigator.resources.linkHelper">
</contentExtension>
<contentExtension
pattern="org.eclipse.ui.navigator.resources.workingSets">
</contentExtension>
</includes>
</viewerContentBinding>
</extension>
<extension
point="org.eclipse.ui.perspectives">
<perspective
class="rudraxplugin.perspectives.Perspective"
id="rudraxplugin.perspective"
name="%perspective.name">
</perspective>
</extension>
<extension
point="org.eclipse.ui.perspectiveExtensions">
<perspectiveExtension
targetID="rudraxplugin.perspective">
<view
id="rudraxplugin.navigator"
minimized="false"
ratio="0.25"
relationship="left"
relative="org.eclipse.ui.editorss">
</view>
</perspectiveExtension>
</extension>
<extension
id="rudraxplugin.projectNature"
point="org.eclipse.core.resources.natures">
<runtime>
<run
class="rudraxplugin.natures.ProjectNature">
</run>
</runtime>
</extension>
</plugin>
Also i have used this tutorial to go through the development process.
https://cvalcarcel.wordpress.com/2009/07/08/
Any help will be appreciated.
Use the following code to add a nature to a project:
IProject project = .... get the project you want to modify
IProjectDescription description = project.getDescription();
String [] natures = description.getNatureIds();
String [] newNatures = new String[natures.length + 1];
System.arraycopy(natures, 0, newNatures, 0, natures.length);
newNatures[natures.length] = "org.eclipse.php.core.PHPNature";
description.setNatureIds(newNatures);
project.setDescription(description, null);