/******************************************************************************* * Copyright (c) 2007, 2014 compeople AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * compeople AG - initial API and implementation *******************************************************************************/ package org.eclipse.riena.ui.filter.impl; import org.eclipse.riena.core.wire.InjectExtension; import org.eclipse.riena.ui.filter.IUIFilterRuleMarkerNavigation; import org.eclipse.riena.ui.filter.IUIFilterRuleMarkerRidget; import org.eclipse.riena.ui.filter.IUIFilterRuleValidatorRidget; import org.eclipse.riena.ui.filter.extension.IRuleMapperExtension; import org.eclipse.riena.ui.filter.extension.IRuleMarkerNavigationMapper; import org.eclipse.riena.ui.filter.extension.IRuleMarkerRidgetMapper; import org.eclipse.riena.ui.filter.extension.IRuleValidatorRidgetMapper; /** * This class provides the correct rule for a given marker type. */ public class RulesProvider { private IRuleMapperExtension[] ruleMapperExtensions; /** * Creates a new instance of {@code RulesProvider}. */ public RulesProvider() { } /** * Returns the rule to set a marker for a ridget. * * @param type * type of marker (hidden, disabled, output or mandatory) * @return rule or {@code null} if no rule was found. */ public IUIFilterRuleMarkerRidget getRuleMarkerRidget(final String type) { if (type == null) { return null; } for (final IRuleMapperExtension ruleMapperExtension : ruleMapperExtensions) { IRuleMarkerRidgetMapper mapper = null; if (type.equals("hidden")) { //$NON-NLS-1$ mapper = ruleMapperExtension.getRidgetHiddenMarker(); } else if (type.equals("disabled")) { //$NON-NLS-1$ mapper = ruleMapperExtension.getRidgetDisabledMarker(); } else if (type.equals("output")) { //$NON-NLS-1$ mapper = ruleMapperExtension.getRidgetOutputMarker(); } else if (type.equals("mandatory")) { //$NON-NLS-1$ mapper = ruleMapperExtension.getRidgetMandatoryMarker(); } if (mapper != null) { final IUIFilterRuleMarkerRidget rule = mapper.getRuleClass(); if (rule != null) { return rule; } } } return null; } /** * Returns the rule to set a marker for a menu-/toolItem. * * @param type * type of marker (hidden or disabled) * @return rule or {@code null} if no rule was found. */ public IUIFilterRuleMarkerRidget getRuleMarkerMenuItem(final String type) { if (type == null) { return null; } for (final IRuleMapperExtension ruleMapperExtension : ruleMapperExtensions) { IRuleMarkerRidgetMapper mapper = null; if (type.equals("hidden")) { //$NON-NLS-1$ mapper = ruleMapperExtension.getMenuItemHiddenMarker(); } else if (type.equals("disabled")) { //$NON-NLS-1$ mapper = ruleMapperExtension.getMenuItemDisabledMarker(); } if (mapper != null) { final IUIFilterRuleMarkerRidget rule = mapper.getRuleClass(); if (rule != null) { return rule; } } } return null; } /** * Returns the rule to set a marker for a navigation node. * * @param type * type of marker (hidden or disabled) * @return rule or {@code null} if no rule was found. */ public IUIFilterRuleMarkerNavigation getRuleMarkerNavigation(final String type) { if (type == null) { return null; } for (final IRuleMapperExtension ruleMapperExtension : ruleMapperExtensions) { IRuleMarkerNavigationMapper mapper = null; if (type.equals("hidden")) { //$NON-NLS-1$ mapper = ruleMapperExtension.getNavigationHiddenMarker(); } else if (type.equals("disabled")) { //$NON-NLS-1$ mapper = ruleMapperExtension.getNavigationDisabledMarker(); } if (mapper != null) { final IUIFilterRuleMarkerNavigation rule = mapper.getRuleClass(); if (rule != null) { return rule; } } } return null; } /** * Returns the rule to add a validator to a ridget. * * @return rule or {@code null} if no rule was found. */ public IUIFilterRuleValidatorRidget getRuleValidatorRidget() { for (final IRuleMapperExtension ruleMapperExtension : ruleMapperExtensions) { final IRuleValidatorRidgetMapper mapper = ruleMapperExtension.getRidgetValidator(); if (mapper != null) { final IUIFilterRuleValidatorRidget rule = mapper.getRuleClass(); if (rule != null) { return rule; } } } return null; } /** * This is the callback method for the extension injector. * * @param ruleMapperExtensions */ @InjectExtension public void update(final IRuleMapperExtension[] ruleMapperExtensions) { this.ruleMapperExtensions = ruleMapperExtensions; } }