| /******************************************************************************* |
| * Copyright (c) 2011 Red Hat, Inc. |
| * 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 |
| *******************************************************************************/ |
| |
| package org.eclipse.m2e.wtp.preferences; |
| |
| import java.util.LinkedHashSet; |
| import java.util.Set; |
| |
| import org.eclipse.core.runtime.preferences.IEclipsePreferences; |
| import org.eclipse.core.runtime.preferences.InstanceScope; |
| import org.eclipse.m2e.wtp.MavenWtpPlugin; |
| import org.osgi.service.prefs.BackingStoreException; |
| |
| |
| /** |
| * This class allows clients to enable or disable optional Java EE project configurators. |
| * |
| * @provisional This class has been added as part of a work in progress. |
| * It is not guaranteed to work or remain the same in future releases. |
| * For more information contact <a href="mailto:m2e-wtp-dev@eclipse.org">m2e-wtp-dev@eclipse.org</a>. |
| * |
| * @author Fred Bricon |
| * @since 0.17.0 |
| */ |
| public class ConfiguratorEnabler { |
| |
| private String label; |
| |
| private String description; |
| |
| private String id; |
| |
| private Set<String> projectConfiguratorIds = new LinkedHashSet<>(); |
| |
| IEclipsePreferences preferenceStore; |
| |
| public ConfiguratorEnabler(String enablerId, String label, String[] configuratorIds, String description) { |
| //Keep new DefaultScope() to maintain Helios compatibility |
| preferenceStore = new InstanceScope().getNode(MavenWtpPlugin.ID); |
| this.id = enablerId; |
| this.label = label; |
| this.description = description; |
| if(configuratorIds != null) { |
| for(String id : configuratorIds) { |
| projectConfiguratorIds.add(id); |
| } |
| } |
| } |
| |
| /** |
| * @return the label of the meta project configurator this enabler applies to. |
| */ |
| public String getConfiguratorLabel() { |
| return label == null ? id : label; |
| } |
| |
| public String getDescription() { |
| return description == null ? getConfiguratorLabel() : description; |
| } |
| |
| public String getId() { |
| return id; |
| } |
| |
| /** |
| * Checks the <code>org.eclipse.m2e.wtp</code> plugin preferences to see if the configurators this enabler applies to |
| * are enabled. |
| * |
| * @return <code>true</code> if the configurators are enabled, or no preference has been set yet. |
| */ |
| public boolean isEnabled() { |
| return preferenceStore.getBoolean(getPreferenceKey(), true); |
| } |
| |
| /** |
| * Stores in the <code>org.eclipse.m2e.wtp</code> plugin preferences the activation status of this enabler. |
| */ |
| public void setEnabled(boolean enabled) { |
| preferenceStore.putBoolean(getPreferenceKey(), enabled); |
| try { |
| preferenceStore.flush(); |
| } catch(BackingStoreException ex) { |
| ex.printStackTrace(); |
| } |
| } |
| |
| private String getPreferenceKey() { |
| return getId() + ".enabled"; //$NON-NLS-1$ |
| } |
| |
| /** |
| * @return true if the given <code>configuratorId</code> is controlled by this enabler. |
| */ |
| public boolean appliesTo(String configuratorId) { |
| return projectConfiguratorIds.contains(configuratorId); |
| } |
| |
| @Override |
| public String toString() { |
| return getId() + " : " + getConfiguratorLabel(); //$NON-NLS-1$ |
| } |
| } |