ingo@927: package de.intevation.flys.artifacts.states;
ingo@927: 
ingo@927: import org.apache.log4j.Logger;
ingo@927: 
ingo@927: import org.w3c.dom.Element;
ingo@927: 
ingo@927: import de.intevation.artifacts.Artifact;
ingo@927: import de.intevation.artifacts.CallContext;
ingo@927: import de.intevation.artifacts.CallMeta;
ingo@927: 
ingo@927: import de.intevation.artifacts.common.utils.XMLUtils;
ingo@1159: import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator;
ingo@927: 
ingo@927: import de.intevation.artifactdatabase.ProtocolUtils;
ingo@927: 
ingo@1064: import de.intevation.flys.artifacts.FLYSArtifact;
ingo@927: import de.intevation.flys.artifacts.resources.Resources;
ingo@927: 
ingo@927: /**
ingo@927:  * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
ingo@927:  */
ingo@927: public class ScenarioSelect extends DefaultState {
ingo@927: 
ingo@927:     /** The logger that is used in this class.*/
ingo@927:     private static Logger logger = Logger.getLogger(ScenarioSelect.class);
ingo@927: 
ingo@927: 
ingo@1064:     public static final String FIELD_MODE     = "scenario";
ingo@1064:     public static final String FIELD_BARRIERS = "uesk.barriers";
ingo@927: 
ingo@927:     public static final String SCENARIO_CURRENT   = "scenario.current";
ingo@927:     public static final String SCENARIO_POTENTIEL = "scenario.potentiel";
ingo@927:     public static final String SCENARIO_SCENRAIO  = "scenario.scenario";
ingo@927: 
ingo@927:     public static final String[] SCENARIOS = {
ingo@927:         SCENARIO_CURRENT,
ingo@927:         SCENARIO_POTENTIEL,
ingo@927:         SCENARIO_SCENRAIO };
ingo@927: 
ingo@927: 
ingo@1064: 
ingo@1064:     @Override
ingo@1064:     protected String getUIProvider() {
ingo@1064:         return "map_digitize";
ingo@1064:     }
ingo@1064: 
ingo@1064: 
ingo@927:     @Override
ingo@1159:     protected void appendStaticData(
ingo@1159:         FLYSArtifact   flys,
ingo@1180:         CallContext    cc,
ingo@1159:         ElementCreator creator,
ingo@1159:         Element        ui,
ingo@1159:         String         name
ingo@1159:     ) {
ingo@1159:         if (name != null && name.equals(FIELD_BARRIERS)) {
ingo@1159:             return;
ingo@1159:         }
ingo@1159:         else {
ingo@1180:             super.appendStaticData(flys, cc, creator, ui, name);
ingo@1159:         }
ingo@1159:     }
ingo@1159: 
ingo@1159: 
ingo@1159:     @Override
ingo@927:     protected Element[] createItems(
ingo@927:         XMLUtils.ElementCreator cr,
ingo@927:         Artifact    artifact,
ingo@927:         String      name,
ingo@927:         CallContext context)
ingo@927:     {
ingo@1064:         CallMeta meta = context.getMeta();
ingo@927: 
ingo@1064:         if (name.equals(FIELD_MODE)) {
ingo@1064:             Element[] scenarios = new Element[SCENARIOS.length];
ingo@1064: 
ingo@1064:             int i = 0;
ingo@1064: 
ingo@1064:             for (String scenario: SCENARIOS) {
ingo@1064:                 scenarios[i++] = createItem(
ingo@1064:                     cr, new String[] {
ingo@1064:                         Resources.getMsg(meta, scenario, scenario),
ingo@1064:                         scenario
ingo@1064:                     });
ingo@1064:             }
ingo@1064: 
ingo@1064:             return scenarios;
ingo@927:         }
ingo@1064:         else {
ingo@1064:             FLYSArtifact flys = (FLYSArtifact) artifact;
ingo@1064:             String       data = flys.getDataAsString(name);
ingo@927: 
ingo@1064:             return new Element[] { createItem(
ingo@1064:                 cr,
ingo@1064:                 new String[] {
ingo@1064:                     Resources.getMsg(meta, name, name),
ingo@1064:                     data
ingo@1064:                 }
ingo@1064:             )};
ingo@1064:         }
ingo@927:     }
ingo@927: 
ingo@927: 
ingo@927:     protected Element createItem(XMLUtils.ElementCreator cr, Object obj) {
ingo@927:         Element item  = ProtocolUtils.createArtNode(cr, "item", null, null);
ingo@927:         Element label = ProtocolUtils.createArtNode(cr, "label", null, null);
ingo@927:         Element value = ProtocolUtils.createArtNode(cr, "value", null, null);
ingo@927: 
ingo@927:         String[] arr = (String[]) obj;
ingo@927: 
ingo@927:         label.setTextContent(arr[0]);
ingo@927:         value.setTextContent(arr[1]);
ingo@927: 
ingo@927:         item.appendChild(label);
ingo@927:         item.appendChild(value);
ingo@927: 
ingo@927:         return item;
ingo@927:     }
ingo@927: }
ingo@927: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :