Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/CrossSectionFacet.java @ 4198:1cdbd8a0c994
Added two new tables ClickableQDTable and ClickableWTable and made Ws and Qs clickable in historical discharge calculation.
The new tables define listener interfaces (clicked lower or upper icon) to listen to user clicks.
In addition to this, there is an enum ClickMode with NONE, SINGLE and RANGE options, which allows to
specifiy, which icons are displayed in the tables. NONE means no icon for user clicks, SINGLE has 1
icon, RANGE 2 icons for lower and upper.
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 22 Oct 2012 13:31:25 +0200 |
parents | 31168ac9c7e7 |
children |
line wrap: on
line source
package de.intevation.flys.artifacts.model; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.CallContext; import de.intevation.artifactdatabase.state.Facet; import de.intevation.flys.artifacts.CrossSectionArtifact; import de.intevation.flys.artifacts.states.DefaultState.ComputeType; /** * Trival Facet for Cross Sections (profiles). */ public class CrossSectionFacet extends BlackboardDataFacet implements FacetTypes { public static String BLACKBOARD_CS_MASTER_DATA = "crosssection.masterprofile.data"; public static String BLACKBOARD_CS_PREV_KM = "crosssection.masterprofile.km.prev"; public static String BLACKBOARD_CS_NEXT_KM = "crosssection.masterprofile.km.next"; private static Logger logger = Logger.getLogger(CrossSectionFacet.class); protected ComputeType type; /** Trivial constructor, set (maybe localized) description. */ public CrossSectionFacet(int idx, String description) { super(idx, CROSS_SECTION, description); type = ComputeType.ADVANCE; } /** Tell world we know about crosssection masters data and its index. */ public List getStaticDataProviderKeys(Artifact art) { CrossSectionArtifact artifact = (CrossSectionArtifact) art; List keys = new ArrayList(); if (artifact.isMaster()) { keys.add(BLACKBOARD_CS_MASTER_DATA); keys.add(BLACKBOARD_CS_PREV_KM); keys.add(BLACKBOARD_CS_NEXT_KM); } keys.add(artifact.identifier() + getIndex()); keys.addAll(super.getStaticDataProviderKeys(art)); return keys; } /** * Can provide the master cross section lines or its index. * @param artifact crosssection-artifact * @param key will respond on BLACKBOARD_CS_MASTER_DATA * @param param ignored * @param context ignored * @return data from artifact (cross section master track). */ public Object provideBlackboardData(Artifact artifact, Object key, Object param, CallContext context ) { CrossSectionArtifact crossSection = (CrossSectionArtifact) artifact; if (key.equals(BLACKBOARD_CS_MASTER_DATA)) { return crossSection.searchCrossSectionLine(); } else if (key.equals(artifact.identifier() + getIndex())) { return getData(artifact, context); } else if (key.equals(BLACKBOARD_CS_NEXT_KM)) { return crossSection.getNextKm(); } else if (key.equals(BLACKBOARD_CS_PREV_KM)) { return crossSection.getPrevKm(); } else { Object obj = super.provideBlackboardData(artifact, key, param, context); if (obj == null) { logger.warn("Cannot provide data for key: " + key); } return obj; } } /** * Gets Cross Section (profile). * @param art artifact to get data from. * @param context ignored */ public Object getData(Artifact art, CallContext context) { logger.debug("Get data for cross section"); CrossSectionArtifact artifact = (CrossSectionArtifact)art; return artifact.getCrossSectionData(); } /** Do a deep copy. */ @Override public Facet deepCopy() { CrossSectionFacet copy = new CrossSectionFacet(this.index, this.description); copy.set(this); return copy; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :