关闭

GMF学习之十八链接线Editpart

397人阅读 评论(0) 收藏 举报

修改连线是否带有箭头的方案

1、从元模型的角度修改:

第一步:在图形模型中定义连线图形,代码例子如下:

1)带有关闭箭头的实线

<descriptors
        name="SolidLineClosedArrow">
      <actualFigure
          xsi:type="gmfgraph:PolylineConnection"
          name="SolidLineClosedArrow"
          targetDecoration="//@figures.0/@descriptors.0/@actualFigure/@children.0">
        <children
            xsi:type="gmfgraph:PolygonDecoration"
            name="ClosedArrow">
          <backgroundColor
              xsi:type="gmfgraph:ConstantColor"
              value="black"/>
          <template/>
          <template
              x="-1"
              y="1"/>
          <template
              x="-1"
              y="-1"/>
          <template/>
        </children>
      </actualFigure>
    </descriptors>

2)带有打开箭头的虚线

<descriptors
        name="DashedLineOpenArrow">
      <actualFigure
          xsi:type="gmfgraph:PolylineConnection"
          name="DashedLineOpenArrow"
          lineKind="LINE_DASH">
        <children
            xsi:type="gmfgraph:PolylineDecoration"
            name="OpenArrow">
          <template
              x="-1"
              y="1"/>
          <template/>
          <template
              x="-1"
              y="-1"/>
        </children>
      </actualFigure>
    </descriptors>

3)不带箭头的虚线

<descriptors
        name="DashedLine">
      <actualFigure
          xsi:type="gmfgraph:PolylineConnection"
          name="DashedLine"
          lineKind="LINE_DASH"/>
    </descriptors>

第二步:引用链接线

修改在属性面板中Target Decoration属性值。

第三步:重新生成图形编辑器代码

 2、从代码层面的角度修改

直接修改链接类*EditPart代码,加入代码例子如下:

		private RotatableDecoration createTargetDecoration() {
			PolygonDecoration df = new PolygonDecoration();
			df.setFill(true);
			df.setBackgroundColor(ColorConstants.black);
			PointList pl = new PointList();
			pl.addPoint(getMapMode().DPtoLP(0), getMapMode().DPtoLP(0));
			pl.addPoint(getMapMode().DPtoLP(-1), getMapMode().DPtoLP(1));
			pl.addPoint(getMapMode().DPtoLP(-1), getMapMode().DPtoLP(-1));
			pl.addPoint(getMapMode().DPtoLP(0), getMapMode().DPtoLP(0));
			df.setTemplate(pl);
			df.setScale(getMapMode().DPtoLP(7), getMapMode().DPtoLP(3));
			return df;
		}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:30939次
    • 积分:472
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论