/** * */ package com.topsun.posclient.application; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.Platform; public class ApplicationCustomizationsRegistry { public static final String EXTENSION_ID = "com.topsun.posclient.application.customizations"; private static ApplicationCustomizationsRegistry instance = null; public static ApplicationCustomizationsRegistry getInstance() { if (instance == null) { synchronized (ApplicationCustomizationsRegistry.class) { if (instance == null) { instance = new ApplicationCustomizationsRegistry(); } } } return instance; } public ApplicationCustomizationsRegistry() { init(); } private List<ApplicationCustomizationDescriptor> descriptorList = new ArrayList<ApplicationCustomizationDescriptor>(); private void init() { IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(EXTENSION_ID); IExtension[] extensions = extensionPoint.getExtensions(); for (IExtension extension : extensions) { IConfigurationElement[] elements = extension.getConfigurationElements(); for (IConfigurationElement element : elements) { ApplicationCustomizationDescriptor descriptor = new ApplicationCustomizationDescriptor(); descriptor.init(element); descriptorList.add(descriptor); } } if (descriptorList.size() == 0) { descriptorList.add(new ApplicationCustomizationDescriptor()); } } public ApplicationCustomizationDescriptor[] getDescriptors() { return descriptorList.toArray(new ApplicationCustomizationDescriptor[descriptorList.size()]); } public ApplicationCustomizationDescriptor getDefaultDescriptor() { ApplicationCustomizationDescriptor descriptor = getDescriptor(ApplicationCustomizationDescriptor.DEFAULT_ID); return descriptor != null ? descriptor : (descriptorList.size() != 0 ? descriptorList.get(0) : null); } public ApplicationCustomizationDescriptor getDescriptor(String id) { if (id == null || id.trim().length() == 0) { return null; } for (ApplicationCustomizationDescriptor descriptor : descriptorList) { if (id.equals(descriptor.getId())) { return descriptor; } } return null; } }