/*
 * The contents of this file are subject to the Mozilla Public License
 * Version 1.1 (the "License");  you may not use this file except in 
 * compliance with the License.  You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
 * the specific language governing rights and limitations under the License.
 *
 * The Original Code is Protege-2000.
 *
 * The Initial Developer of the Original Code is Stanford University. Portions
 * created by Stanford University are Copyright (C) 2007.  All Rights Reserved.
 *
 * Protege was developed by Stanford Medical Informatics
 * (http://www.smi.stanford.edu) at the Stanford University School of Medicine
 * with support from the National Library of Medicine, the National Science
 * Foundation, and the Defense Advanced Research Projects Agency.  Current
 * information about Protege can be obtained at http://protege.stanford.edu.
 *
 */

package edu.stanford.smi.protegex.widget.graph;

// java
import java.awt.Color;

// stanford
import edu.stanford.smi.protege.util.PropertyList;

public class RelationProperties extends GraphObjectProperties {
    private String lineType;
    private String arrowheadType;

    private Color lineColor;

    private boolean displayText;

    public RelationProperties(String clsName, PropertyList propertyList) {
        super(clsName, propertyList);
        initialize();
    }

    private void initialize() {
        int red, green, blue;
        String prefix = getPrefix();

        // Get the line's color.  Default to black.
        red = getIntProperty(prefix + RelationPropertyNames.LINE_RGB_RED, new Integer(0));
        green = getIntProperty(prefix + RelationPropertyNames.LINE_RGB_GREEN, new Integer(0));
        blue = getIntProperty(prefix + RelationPropertyNames.LINE_RGB_BLUE, new Integer(0));
        lineColor = new Color(red, green, blue);

        lineType = getStringProperty(prefix + RelationPropertyNames.LINE_TYPE, "Solid");
        arrowheadType = getStringProperty(prefix + RelationPropertyNames.ARROWHEAD_TYPE, "Arrowhead");
        displayText = getBooleanProperty(prefix + RelationPropertyNames.LINE_DISPLAY_TEXT, new Boolean(true));
    }

    public void save() {
        String prefix = getPrefix();
        PropertyList propertyList = getPropertyList();

        propertyList.setInteger(prefix + RelationPropertyNames.LINE_RGB_RED, this.lineColor.getRed());
        propertyList.setInteger(prefix + RelationPropertyNames.LINE_RGB_GREEN, this.lineColor.getGreen());
        propertyList.setInteger(prefix + RelationPropertyNames.LINE_RGB_BLUE, this.lineColor.getBlue());
        propertyList.setString(prefix + RelationPropertyNames.LINE_TYPE, this.lineType);
        propertyList.setString(prefix + RelationPropertyNames.ARROWHEAD_TYPE, this.arrowheadType);
        propertyList.setBoolean(prefix + RelationPropertyNames.LINE_DISPLAY_TEXT, this.displayText);
    }

    public String getLineType() {
        return lineType;
    }

    public void setLineType(String lineType) {
        this.lineType = lineType;
    }

    public String getArrowheadType() {
        return arrowheadType;
    }

    public void setArrowheadType(String arrowheadType) {
        this.arrowheadType = arrowheadType;
    }

    public Color getLineColor() {
        return lineColor;
    }

    public void setLineColor(Color lineColor) {
        this.lineColor = lineColor;
    }

    public boolean isTextDisplayed() {
        return displayText;
    }

    public void setDisplayText(boolean displayText) {
        this.displayText = displayText;
    }
}
