package org.intermine.app.view; /* * Copyright (C) 2015 InterMine * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. See the LICENSE file for more * information or http://www.gnu.org/copyleft/lesser.html. * */ import android.content.Context; import android.util.AttributeSet; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import org.intermine.app.R; import org.intermine.app.adapter.SimpleAdapter; import org.intermine.app.core.templates.constraint.ConstraintOperation; import org.intermine.app.core.templates.constraint.PathConstraint; import org.intermine.app.core.templates.constraint.PathConstraintAttribute; import org.intermine.app.util.Strs; import java.util.ArrayList; import java.util.List; import butterknife.ButterKnife; import butterknife.InjectView; /** * @author Daria Komkova <Daria_Komkova @ hotmail.com> */ public class AttributeConstraintView extends ConstraintView { @InjectView(R.id.operations_spinner) Spinner mOperationsSpinner; @InjectView(R.id.base_constraint_value) EditText mValue; @InjectView(R.id.constraint_path) TextView mPath; private PathConstraintAttribute mConstraint; public AttributeConstraintView(Context context, PathConstraintAttribute constraint) { super(context, constraint); mConstraint = constraint; init(); } public AttributeConstraintView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public AttributeConstraintView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } @Override public boolean isValidConstraint() { return !Strs.isNullOrEmpty(mValue.getText().toString()); } @Override public void highlightInvalid() { mValue.setError(getContext().getString(R.string.empty_value_em)); } private void init() { inflate(getContext(), R.layout.attribute_constraint_view, this); ButterKnife.inject(this); SimpleAdapter<ConstraintOperation> adapter = new SimpleAdapter(getContext()); List<ConstraintOperation> data = new ArrayList<>(PathConstraintAttribute.VALID_OPERATIONS); adapter.updateData(data); mOperationsSpinner.setAdapter(adapter); if (null != mConstraint) { mValue.setText(mConstraint.getValue()); mPath.setText(mConstraint.getPath()); for (int i = 0; i < data.size(); i++) { if (data.get(i).equals(mConstraint.getOperation())) { mOperationsSpinner.setSelection(i); } } } } public String getValue() { return mValue.getText().toString(); } public ConstraintOperation getOperation() { return (ConstraintOperation) mOperationsSpinner.getSelectedItem(); } @Override public PathConstraint getGeneratedConstraint() { PathConstraintAttribute constraint = (PathConstraintAttribute) getPathConstraint(); return new PathConstraintAttribute(constraint.getPath(), getOperation(), getValue(), constraint.getCode()); } }