Newer
Older
AlgebraicDataflowArchitectureModel / AlgebraicDataflowArchitectureModel / src / models / controlFlowModel / ObjectNodeAttribute.java
k-fujii on 12 Mar 3 KB コメントを追記.
package models.controlFlowModel;

import models.NodeAttribute;

/*************************************************************
 * "mxCell"の持つ, "ObjectNode"に関する情報.
 * "ObjectNode"のインスタンスに応じて
 */
public class ObjectNodeAttribute extends NodeAttribute {
	private ObjectNode objectNode = null;
	private String shapeStyle = "";

	/*************************************************************
	 * [ *constructor ]
	/*************************************************************
	 * 
	 */
	public ObjectNodeAttribute(final ObjectNode objectNode) {
		this.objectNode = objectNode;
		this.objectNode.setAttribute(this);

		// Setting a shape style of cell
		if(objectNode instanceof StatefulObjectNode) {
			shapeStyle = "shape=ellipse;perimeter=ellipsePerimeter;";
		}
		else if(objectNode instanceof EventChannelObjectNode) {
			shapeStyle = "shape=rectangle;perimeter=rectanglePerimeter;";
		}
		else {
			shapeStyle = "shape=hexagon;perimeter=hexagonPerimeter;";
		}

		// Setting a name of cell
		if(objectNode.name != null) return;
		if(objectNode.name.isEmpty()) return;
		
		if( objectNode instanceof StatefulObjectNode ) {
			objectNode.name = objectNode.getName();			
		}
		else if(objectNode instanceof EventChannelObjectNode){
			objectNode.name = "entryPoint";
		}
	}

	/*************************************************************
	*  [ *public ]
	/*************************************************************
	 * [ getter ]
 	/*************************************************************
	 * 
	 */
	public ObjectNode getObjectNode() {
		return objectNode;
	}
	
	/*************************************************************
	 * 
	 */
	public String getDefaultStyle() {
		String style = ";";
		
		return objectNode instanceof StatefulObjectNode
					? shapeStyle + style
					: shapeStyle + style;
	}

	/*************************************************************
	 * 選択状態のセルの色を取得
	 */
	public String getEnableStyle() {
		String style = "fillColor=#7fffd4;";
		style += "strokeColor=#66cdaa;";
		style += "strokeWidth=2;";

		return objectNode instanceof StatefulObjectNode
					? shapeStyle + style
					: shapeStyle + style;
	}
	
	/*************************************************************
	 * 非選択状態のセルの色を取得
	 */
	public String getDisableStyle() {
		String style = "fillColor=#999999";
		
		return objectNode instanceof StatefulObjectNode
					? shapeStyle + style
					: shapeStyle + style;
	}
		
	/*************************************************************
	 * ”制御フローモデリング”の操作が適用可能状態のセルの色を取得
	 */
	public String getDelegatingStyle() {
		String style = "strokeWidth=4;";
		style += "strokeColor=#4169e;";

		return shapeStyle + style;
	}

	/*************************************************************
	 * GUI上に表示するセルの名前を返す. 
	 */
	@Override
	public String toString() {
		return objectNode instanceof StatefulObjectNode
					? ((StatefulObjectNode) objectNode).getResource().getResource().getResourceName()
					:  objectNode.getName();
	}
}