All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.csstudio.utility.adlparser.fileParser.widgetParts.ADLBasicAttribute Maven / Gradle / Ivy

/*
 * Copyright (c) 2007 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
 */
/*
 * $Id$
 */
package org.csstudio.utility.adlparser.fileParser.widgetParts;

//**import org.csstudio.sds.components.model.ArcModel;
//**import org.csstudio.sds.components.model.RectangleModel;
//**import org.csstudio.sds.model.AbstractWidgetModel;
//**import org.csstudio.sds.model.DynamicsDescriptor;
import org.csstudio.utility.adlparser.internationalization.Messages;
//**import org.csstudio.utility.adlparser.fileParser.ADLHelper;
import org.csstudio.utility.adlparser.fileParser.ADLResource;
import org.csstudio.utility.adlparser.fileParser.ADLWidget;
import org.csstudio.utility.adlparser.fileParser.FileLine;
import org.csstudio.utility.adlparser.fileParser.WrongADLFormatException;

/**
 * @author hrickens
 * @author $Author$
 * @version $Revision$
 * @since 05.09.2007
 */
public class ADLBasicAttribute extends WidgetPart{

    /**
     * The default constructor.
     *
     * @param adlBasicAttribute An ADLWidget that correspond a ADL Basic Attribute.
     * @param parentWidgetModel The Widget that set the parameter from ADLWidget.
     * @throws WrongADLFormatException Wrong ADL format or untreated parameter found.
     */
    public ADLBasicAttribute(final ADLWidget adlBasicAttribute) throws WrongADLFormatException {
        super(adlBasicAttribute);
    }

    public ADLBasicAttribute() {
        super();
    }

    /** The Color of (front?) Object. */
    private int _clr;
    /** width of the Border. */
    private int _width;
    /** The style of border. */
    private String _style;
    /** Is type of fill.*/
    private String _fill;

    private boolean _isColorDefined;

    /**
     * {@inheritDoc}
     */
    @Override
    void init() {
        name = String.valueOf("basic attribute");
        _clr = 0;
        _width = 0;
        _style =  String.valueOf("solid");
        _fill = String.valueOf("solid");
        set_isColorDefined(false);
    }

    /**
     * @param adlBasicAttribute The ADL String for an ADL Basic Attribute.
     * @throws WrongADLFormatException this exception was thrown the String not an valid ADL Basic Attribute String.
     */
    @Override
    final void parseWidgetPart(final ADLWidget adlBasicAttribute) throws WrongADLFormatException {
        assert adlBasicAttribute.isType("basic attribute") : Messages.ADLBasicAttribute_AssertError_Begin+adlBasicAttribute.getType()+Messages.ADLBasicAttribute_AssertError_End; //$NON-NLS-1$
        for (ADLWidget adlWidget : adlBasicAttribute.getObjects()) {
            if(adlWidget.getType().equals("attr")){
                for (FileLine fileLine : adlWidget.getBody()) {
                    //TODO Refactor this so that it is not necessary to copy the lines to from the attr object to the atrribute object
                    adlBasicAttribute.addBody(fileLine);
                }
            }
        }
        for (FileLine parameter : adlBasicAttribute.getBody()) {
            if(parameter.getLine().trim().startsWith("//")){ //$NON-NLS-1$
                continue;
            }
            String[] row = parameter.getLine().split("="); //$NON-NLS-1$
            if(row.length!=2){
                throw new WrongADLFormatException(Messages.ADLBasicAttribute_WrongADLFormatException_Begin+parameter+Messages.ADLBasicAttribute_WrongADLFormatException_End);
            }
            if(FileLine.argEquals(row[0],"clr")){ //$NON-NLS-1$
                _clr=FileLine.getIntValue(row[1]);
                set_isColorDefined(true);
            }else if(FileLine.argEquals(row[0],"width")){ //$NON-NLS-1$
                _width=FileLine.getIntValue(row[1]);
            }else if(FileLine.argEquals(row[0],"style")){ //$NON-NLS-1$
                _style=FileLine.getTrimmedValue(row[1]);
            }else if(FileLine.argEquals(row[0],"fill")){ //$NON-NLS-1$
                _fill=FileLine.getTrimmedValue(row[1]);
            }else {
                throw new WrongADLFormatException(Messages.ADLBasicAttribute_WrongADLFormatException_Parameter_Begin+parameter+Messages.ADLBasicAttribute_WrongADLFormatException_Parameter_End);
            }
        }
    }


    /** @return the Color */
    public final int getClr() {
        return _clr;
    }


    /** @return the width */
    public final int getWidth() {
        return _width;
    }


    /** @return the style */
    public final String getStyle() {
        return _style;
    }

    /** @return the fill */
    public final String getFill() {
        return _fill;
    }


    /**
     * @return child objects
     */
    @Override
    public Object[] getChildren(){
        Object[] ret = new Object[4];
        ret[0] = new ADLResource(ADLResource.FOREGROUND_COLOR, Integer.valueOf(_clr));
        ret[1] = new ADLResource(ADLResource.LINE_WIDTH, Integer.valueOf(_width));
        ret[2] = new ADLResource(ADLResource.STYLE, _style);
        ret[3] = new ADLResource(ADLResource.FILL, _fill);

        return ret;
    }

    /**
     * @param _isColorDefined the _isColorDefined to set
     */
    public void set_isColorDefined(boolean _isColorDefined) {
        this._isColorDefined = _isColorDefined;
    }

    /**
     * @return the _isColorDefined
     */
    public boolean isColorDefined() {
        return _isColorDefined;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy