gernotbelger@8851: /* Copyright (C) 2011, 2012, 2017 by Bundesanstalt für Gewässerkunde gernotbelger@8851: * Software engineering by Intevation GmbH gernotbelger@8851: * gernotbelger@8851: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@8851: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@8851: * documentation coming with Dive4Elements River for details. gernotbelger@8851: */ gernotbelger@8851: package org.dive4elements.river.artifacts.states; gernotbelger@8851: gernotbelger@8851: import org.w3c.dom.Element; gernotbelger@8851: gernotbelger@8851: import org.apache.log4j.Logger; gernotbelger@8851: gernotbelger@8851: import org.dive4elements.artifacts.Artifact; gernotbelger@8851: import org.dive4elements.artifacts.CallContext; gernotbelger@8851: import org.dive4elements.artifacts.CallMeta; gernotbelger@8851: gernotbelger@8851: import org.dive4elements.artifacts.common.utils.XMLUtils; gernotbelger@8851: gernotbelger@8851: import org.dive4elements.artifactdatabase.ProtocolUtils; gernotbelger@8851: gernotbelger@8851: import org.dive4elements.river.artifacts.resources.Resources; gernotbelger@8851: gernotbelger@8851: /** gernotbelger@8851: * Generic state for a boolean choice. Only difference between real implementations are the human readable labels. gernotbelger@8851: * gernotbelger@8851: * @author Ingo Weinzierl gernotbelger@8851: * @author Gernot Belger gernotbelger@8851: */ gernotbelger@8851: public abstract class BooleanChoiceState extends DefaultState { gernotbelger@8851: gernotbelger@8851: private String optionMsg; gernotbelger@8851: private String activeMsg; gernotbelger@8851: private String inactiveMsg; gernotbelger@8851: gernotbelger@8851: public BooleanChoiceState( String optionMsg, String activeMsg, String inactiveMsg ) { gernotbelger@8851: this.optionMsg = optionMsg; gernotbelger@8851: this.activeMsg = activeMsg; gernotbelger@8851: this.inactiveMsg = inactiveMsg; gernotbelger@8851: } gernotbelger@8851: gernotbelger@8851: private static final Logger log = gernotbelger@8851: Logger.getLogger(BooleanChoiceState.class); gernotbelger@8851: gernotbelger@8851: @Override gernotbelger@8851: protected String getUIProvider() { gernotbelger@8851: return "boolean_panel"; gernotbelger@8851: } gernotbelger@8851: gernotbelger@8851: @Override gernotbelger@8851: protected Element[] createItems( gernotbelger@8851: XMLUtils.ElementCreator cr, gernotbelger@8851: Artifact artifact, gernotbelger@8851: String name, gernotbelger@8851: CallContext context) gernotbelger@8851: { gernotbelger@8851: CallMeta meta = context.getMeta(); gernotbelger@8851: gernotbelger@8851: Element option = createItem( gernotbelger@8851: cr, gernotbelger@8851: new String[] { Resources.getMsg(meta, optionMsg, optionMsg), "true" }); gernotbelger@8851: gernotbelger@8851: return new Element[] { option }; gernotbelger@8851: } gernotbelger@8851: gernotbelger@8851: gernotbelger@8851: @Override gernotbelger@8851: protected String getLabelFor( gernotbelger@8851: CallContext cc, gernotbelger@8851: String name, gernotbelger@8851: String value, gernotbelger@8851: String type gernotbelger@8851: ) { gernotbelger@8851: log.debug("GET LABEL FOR '" + name + "' / '" + value + "'"); gernotbelger@8851: if (value != null && value.equals("true")) { gernotbelger@8851: return Resources.getMsg(cc.getMeta(), activeMsg, activeMsg); gernotbelger@8851: } gernotbelger@8851: else { gernotbelger@8851: return Resources.getMsg(cc.getMeta(), inactiveMsg, inactiveMsg); gernotbelger@8851: } gernotbelger@8851: } gernotbelger@8851: gernotbelger@8851: gernotbelger@8851: protected Element createItem(XMLUtils.ElementCreator cr, Object obj) { gernotbelger@8851: Element item = ProtocolUtils.createArtNode(cr, "item", null, null); gernotbelger@8851: Element label = ProtocolUtils.createArtNode(cr, "label", null, null); gernotbelger@8851: Element value = ProtocolUtils.createArtNode(cr, "value", null, null); gernotbelger@8851: gernotbelger@8851: String[] arr = (String[]) obj; gernotbelger@8851: gernotbelger@8851: label.setTextContent(arr[0]); gernotbelger@8851: value.setTextContent(arr[1]); gernotbelger@8851: gernotbelger@8851: item.appendChild(label); gernotbelger@8851: item.appendChild(value); gernotbelger@8851: gernotbelger@8851: return item; gernotbelger@8851: } gernotbelger@8851: } gernotbelger@8851: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :