/* * Encog(tm) Workbench v3.4 * http://www.heatonresearch.com/encog/ * https://github.com/encog/encog-java-workbench * * Copyright 2008-2016 Heaton Research, 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. * * For more information on Heaton Research copyrights, licenses * and trademarks visit: * http://www.heatonresearch.com/copyright */ package org.encog.workbench.editor; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.List; public class PropertyCollection { private ObjectEditorModel model; private Object data; private List<Field> fields = new ArrayList<Field>(); private List<String> fieldNames = new ArrayList<String>(); public final static String[] booleanValues = { "true", "false" }; public PropertyCollection(Object data) { this.data = data; this.model = new ObjectEditorModel(this); } public int size() { return this.fields.size(); } public String getFieldName(int field) { return this.fieldNames.get(field); } public Field getField(int field) { return this.fields.get(field); } /** * @return the data */ public Object getData() { return data; } /** * @param data * the data to set */ public void setData(Object data) { this.data = data; this.fields.clear(); this.fieldNames.clear(); if (data != null) { Field[] f = data.getClass().getDeclaredFields(); for (int i = 0; i < f.length; i++) { if ((f[i].getModifiers() & Modifier.FINAL) == 0) { Class c = f[i].getType(); if (isDirectEditableType(c)) { f[i].setAccessible(true); this.fields.add(f[i]); this.fieldNames.add(f[i].getName()); } } } } this.model.updateListeners(); } private boolean isDirectEditableType(Class<?> c) { if ((c == int.class) || (c == short.class) || (c == char.class) || (c == long.class) || (c == byte.class) || (c == String.class) || (c == boolean.class)) { return true; } return false; } /** * @return the model */ public ObjectEditorModel getModel() { return model; } }