/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.utils.common.configuration; import java.lang.reflect.InvocationTargetException; /** * A {@link org.eclipse.ui.views.properties.IPropertyDescriptor} representing an <code>enum</code> * valued property. * * @author Christian Weiss */ public class EnumPropertyDescriptor extends SelectionPropertyDescriptor { public EnumPropertyDescriptor(final Class<? extends Enum<?>> enumType, final Object id, final String displayName) { super(id, displayName, new ValueProvider() { @Override public Object[] getValues() { return EnumPropertyDescriptor.getValues(enumType); } }); } private static Object[] getValues(final Class<? extends Enum<?>> enumType) { try { return (Object[]) enumType.getMethod("values").invoke(null); } catch (IllegalArgumentException e) { throw new RuntimeException(e); } catch (SecurityException e) { throw new RuntimeException(e); } catch (IllegalAccessException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { throw new RuntimeException(e); } catch (NoSuchMethodException e) { throw new RuntimeException(e); } } }