Bug 241849 [Markers] Need a property tester to test the marker type of a MarkerEntry
Build ID: I20080617-2000 Steps To Reproduce: There is no property tester defined in org.eclipse.ui.ide for testing the marker type of a MarkerEntry in a marker view. Such a tester would be very useful for clients who are trying to add popup menu items to a marker view. I could define a property tester in my own plug-in for testing the marker type, but then I run in to plug-in activation issues. It would be better for the tester to be defined in a lower-level plug-in. More information: In 3.4, the marker views no longer support using object contributions to add to the popup menu. This means that existing object contributions need to be migrated to the command/handler infrastructure. However, with object contributions, it was possible to control visibility and enablement using the filters defined in IMarkerActionFilter. The command/handler infrastructure uses property testers to accomplish this sort of filtering instead; it would be nice for the platform to define property testers equivalent to these filters to make migration easier.
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/model/WorkbenchMarker.java
*/
    public Object getParent(Object o) {
        return ((IMarker) o).getResource();
    }
    /**
     * Returns whether the specific attribute matches the state of the target
     * object.
     *
     * @param target the target object
     * @param name the attribute name
     * @param value the attriute value
     * @return <code>true</code> if the attribute matches; <code>false</code> otherwise
     */
    public boolean testAttribute(Object target, String name, String value) {
        IMarker marker = (IMarker) target;
        if (name.equals(TYPE)) {
            try {
                return value.equals(marker.getType());
            } catch (CoreException e) {
                return false;
            }
        } else if (name.equals(SUPER_TYPE)) {
            try {
                return marker.isSubtypeOf(value);
            } catch (CoreException e) {
                return false;
            }
        } else if (name.equals(PRIORITY)) {
            return testIntegerAttribute(marker, IMarker.PRIORITY, value);
        } else if (name.equals(SEVERITY)) {