/*
* Copyright 2015 JBoss, by Red Hat, Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.uberfire.ext.properties.editor.model;
import java.util.ArrayList;
import java.util.List;
import org.uberfire.ext.properties.editor.model.validators.ColorValidator;
import org.uberfire.ext.properties.editor.model.validators.LongValidator;
import org.uberfire.ext.properties.editor.model.validators.PropertyFieldValidator;
/**
* PropertyEditorType define the type of a PropertyEditorField
*/
public enum PropertyEditorType {
TEXT {
@Override
public boolean isType(Class<?> type) {
return isString(type) || isFloat(type) || isDouble(type);
}
private boolean isFloat(Class<?> type) {
return (type.equals(Float.class) || (type.toString().equalsIgnoreCase("float")));
}
private boolean isDouble(Class<?> type) {
return (type.equals(Double.class) || (type.toString().equalsIgnoreCase("double")));
}
private boolean isString(Class<?> type) {
return type.equals(String.class);
}
},
BOOLEAN {
@Override
public boolean isType(Class<?> type) {
return (type.equals(Boolean.class) || (type.toString().equalsIgnoreCase("boolean")));
}
},
NATURAL_NUMBER {
@Override
public List<PropertyFieldValidator> getValidators() {
ArrayList validators = new ArrayList();
validators.add(new LongValidator());
return validators;
}
@Override
public boolean isType(Class<?> type) {
return isInteger(type) || isLong(type) || isShort(type);
}
private boolean isShort(Class<?> type) {
return (type.equals(Short.class) || (type.toString().equalsIgnoreCase("short")));
}
private boolean isLong(Class<?> type) {
return (type.equals(Long.class) || (type.toString().equalsIgnoreCase("long")));
}
private boolean isInteger(Class<?> type) {
return (type.equals(Integer.class) || (type.toString().equalsIgnoreCase("int")));
}
},
COMBO {
@Override
public boolean isType(Class<?> type) {
return type.isEnum();
}
},
SECRET_TEXT {
},
COLOR {
public List<PropertyFieldValidator> getValidators() {
ArrayList validators = new ArrayList();
validators.add(new ColorValidator());
return validators;
}
},
CUSTOM {
};
public static PropertyEditorType getFromType(Class<?> type) {
for (PropertyEditorType candidate : PropertyEditorType.values()) {
if (candidate.isType(type)) {
return candidate;
}
}
return null;
}
public boolean isType(Class<?> type) {
return false;
}
public List<PropertyFieldValidator> getValidators() {
return new ArrayList();
}
}