/* * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.ws.params.simple; import jalview.ws.params.OptionI; import java.net.URL; import java.util.ArrayList; import java.util.List; public class Option implements OptionI { String name; /* * current value in string format, or "null" if undefined */ String value; /* * default value in string format, or "null" if undefined */ String defvalue; String description; List possibleVals; /* * optional display names corresponding to possibleVals */ List displayVals; boolean required; URL fdetails; /** * Copy constructor * * @param opt */ public Option(Option opt) { name = opt.name; value = opt.value; defvalue = opt.defvalue; description = opt.description; if (opt.possibleVals != null) { possibleVals = new ArrayList<>(opt.possibleVals); } required = opt.required; // URLs are singletons - so we copy by reference. nasty but true. fdetails = opt.fdetails; } public Option() { } /** * Constructor including display names for possible values * * @param name2 * @param description2 * @param isrequired * @param defValue * @param val * @param possibleVals * @param fdetails */ public Option(String name2, String description2, boolean isrequired, String defValue, String val, List possibleVals, List displayNames, URL fdetails) { name = name2; description = description2; this.value = val; this.required = isrequired; this.defvalue = defValue; if (possibleVals != null) { this.possibleVals = new ArrayList<>(possibleVals); } if (displayNames != null) { this.displayVals = new ArrayList<>(displayNames); } this.fdetails = fdetails; } /** * Constructor * * @param name2 * @param description2 * @param isrequired * @param defValue * @param val * @param possibleVals * @param fdetails */ public Option(String name2, String description2, boolean isrequired, String defValue, String val, List possibleVals, URL fdetails) { this(name2, description2, isrequired, defValue, val, possibleVals, null, fdetails); } @Override public OptionI copy() { Option opt = new Option(this); return opt; } /** * toString method to help identify options in the debugger only */ @Override public String toString() { return this.getClass().getName() + ":" + name; } @Override public String getName() { return name; } @Override public String getValue() { return value == null ? defvalue : value; } @Override public void setValue(String selectedItem) { value = selectedItem; } @Override public URL getFurtherDetails() { return fdetails; } @Override public boolean isRequired() { return required; } @Override public String getDescription() { return description; } @Override public List getPossibleValues() { return possibleVals; } @Override public List getDisplayNames() { return displayVals; } }