Lines 42-47
Link Here
|
42 |
class="org.eclipse.cdt.internal.ui.CProjectAdapterFactory" |
42 |
class="org.eclipse.cdt.internal.ui.CProjectAdapterFactory" |
43 |
adaptableType="org.eclipse.cdt.core.model.ICProject"> |
43 |
adaptableType="org.eclipse.cdt.core.model.ICProject"> |
44 |
<adapter type="org.eclipse.core.resources.IProject"/> |
44 |
<adapter type="org.eclipse.core.resources.IProject"/> |
|
|
45 |
<adapter type="org.eclipse.core.expressions.IEnablementVetoHolder"/> |
45 |
</factory> |
46 |
</factory> |
46 |
</extension> |
47 |
</extension> |
47 |
|
48 |
|
Lines 1640-1645
Link Here
|
1640 |
<instanceof value="org.eclipse.cdt.ui.CElementGrouping"/> |
1641 |
<instanceof value="org.eclipse.cdt.ui.CElementGrouping"/> |
1641 |
</or> |
1642 |
</or> |
1642 |
</triggerPoints> |
1643 |
</triggerPoints> |
|
|
1644 |
<override |
1645 |
policy="InvokeAlwaysRegardlessOfSuppressedExt" |
1646 |
suppressedExtensionId="org.eclipse.ui.navigator.resourceContent"/> |
1643 |
<possibleChildren> |
1647 |
<possibleChildren> |
1644 |
<or> |
1648 |
<or> |
1645 |
<instanceof value="org.eclipse.core.resources.IWorkspaceRoot"/> |
1649 |
<instanceof value="org.eclipse.core.resources.IWorkspaceRoot"/> |
Lines 1652-1660
Link Here
|
1652 |
<instanceof value="org.eclipse.cdt.ui.CElementGrouping"/> |
1656 |
<instanceof value="org.eclipse.cdt.ui.CElementGrouping"/> |
1653 |
</or> |
1657 |
</or> |
1654 |
</possibleChildren> |
1658 |
</possibleChildren> |
1655 |
<override |
1659 |
Mikhail has pointed out that the previous patch is unsuitable, as it relies on persitent properties on the project, and these are not preserved as part of the project when shared via source control. |
1656 |
policy="InvokeAlwaysRegardlessOfSuppressedExt" |
1660 |
|
1657 |
suppressedExtensionId="org.eclipse.ui.navigator.resourceContent"/> |
1661 |
This second patch introduces a new PropertyTester acting on any type (java.lang.Object) testing a property "org.eclipse.core.expressions.notVetoed" |
|
|
1662 |
|
1663 |
If the object being tested can be Adapted to an IEnablementVetoHolder, then it is queried to see if it vetoes the enablement of the host object, otherwise it has no effect. |
1664 |
|
1665 |
This would allow us to have the Project References enablement check to see if the object its acting upon vetoes its enablement: |
1666 |
|
1667 |
<enabledWhen> |
1668 |
<and> |
1669 |
<test |
1670 |
args="org.eclipse.ui.propertypages.project.reference" |
1671 |
property="org.eclipse.core.expressions.notVetoed"> |
1672 |
</test> |
1673 |
<adapt |
1674 |
type="org.eclipse.core.resources.IProject"> |
1675 |
</adapt> |
1676 |
</and> |
1677 |
</enabledWhen> |
1678 |
|
1679 |
Note that the test operates on the object before it is adapted to an IProject - this would allow CDT a say over what pages are displayed in its ICProject properties pages, without taking control over what is displayed for IProject objects. |
1658 |
<commonSorter |
1680 |
<commonSorter |
1659 |
class="org.eclipse.cdt.ui.CElementSorter" |
1681 |
class="org.eclipse.cdt.ui.CElementSorter" |
1660 |
id="org.eclipse.cdt.ui.commonSorter"/> |
1682 |
id="org.eclipse.cdt.ui.commonSorter"/> |