/* * Copyright (c) 2010 Stiftung Deutsches Elektronen-Synchrotron, Member of the Helmholtz * Association, (DESY), HAMBURG, GERMANY. THIS SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN * "../AS IS" BASIS. WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO * EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH * THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE IN * ANY RESPECT, THE USER ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS * DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SOFTWARE IS * AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. DESY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, * SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. THE FULL LICENSE SPECIFYING FOR THE SOFTWARE * THE REDISTRIBUTION, MODIFICATION, USAGE AND OTHER RIGHTS AND OBLIGATIONS IS INCLUDED WITH THE * DISTRIBUTION OF THIS PROJECT IN THE FILE LICENSE.HTML. IF THE LICENSE IS NOT INCLUDED YOU MAY * FIND A COPY AT HTTP://WWW.DESY.DE/LEGAL/LICENSE.HTM */ package org.csstudio.sds.components.model.eventing; import static org.csstudio.sds.model.AbstractTextTypeWidgetModel.PROP_PRECISION; import static org.csstudio.sds.model.AbstractTextTypeWidgetModel.PROP_TEXT_TYPE; import static org.csstudio.sds.model.LabelModel.PROP_TEXTVALUE; import static org.csstudio.sds.model.LabelModel.PROP_TEXT_UNIT; import org.csstudio.sds.eventhandling.AbstractWidgetPropertyPostProcessor; import org.csstudio.sds.model.LabelModel; import org.csstudio.sds.model.TextTypeEnum; import org.csstudio.sds.model.commands.HidePropertyCommand; import org.csstudio.sds.model.commands.ShowPropertyCommand; import org.eclipse.gef.commands.Command; import org.eclipse.gef.commands.CompoundCommand; /** * @author hrickens * @author $Author: hrickens $ * @version $Revision: 1.3 $ * @since 06.05.2010 */ public class LabelValueTypePostProcessor extends AbstractWidgetPropertyPostProcessor<LabelModel> { /** * {@inheritDoc} */ @Override protected Command doCreateCommand(final LabelModel tiWidget) { assert tiWidget != null : "widget != null"; return new TextTypeStuffCommand(tiWidget); } private static final class TextTypeStuffCommand extends Command { private final LabelModel widget; private CompoundCommand chain; private TextTypeStuffCommand(final LabelModel widget) { this.widget = widget; } @Override public void execute() { if (chain == null) { chain = new CompoundCommand(); // .. determine the selected border style int optionIndex = widget.getArrayOptionProperty(PROP_TEXT_TYPE); if (TextTypeEnum.DOUBLE.getIndex() == optionIndex ) { chain.add(new ShowPropertyCommand(widget, PROP_TEXTVALUE, PROP_TEXT_TYPE)); chain.add(new ShowPropertyCommand(widget, PROP_TEXT_UNIT, PROP_TEXT_TYPE)); chain.add(new ShowPropertyCommand(widget, PROP_PRECISION, PROP_TEXT_TYPE)); } else if (TextTypeEnum.ALIAS.getIndex() == optionIndex ) { chain.add(new HidePropertyCommand(widget, PROP_TEXTVALUE, PROP_TEXT_TYPE)); chain.add(new HidePropertyCommand(widget, PROP_TEXT_UNIT, PROP_TEXT_TYPE)); chain.add(new HidePropertyCommand(widget, PROP_PRECISION, PROP_TEXT_TYPE)); } else { chain.add(new ShowPropertyCommand(widget, PROP_TEXTVALUE, PROP_TEXT_TYPE)); chain.add(new ShowPropertyCommand(widget, PROP_TEXT_UNIT, PROP_TEXT_TYPE)); chain.add(new HidePropertyCommand(widget, PROP_PRECISION, PROP_TEXT_TYPE)); } } chain.execute(); } @Override public void undo() { chain.undo(); } } }