xiaoxiaoleemin

          天道酬勤,小小加油
          posts - 19, comments - 12, trackbacks - 0, articles - 0

             要讓GMF編輯器中的圖元更加生動,可以通過在gmfgraph中增加一些元素(比如前景色)來定制圖元的顯示形式,但是有些特征(比如字體)無法僅僅通過gmfgraph來完成,這就需要我們修改GMF生成的Diagram Code來達到所需要的效果。如下圖所示:
           
             1.前景色:
                圖中紫色的橢圓代表Method類型的元素,起前景色可以通過gmfgraph來定制:
               
              2.線條寬度(2),線條種類(LINE_SOLID):
              
              也可以通過修改MethodEditPart中的內部類MethodFigure的構造函數來完成1和2兩個特征的定制:

          public MethodFigure() {
              
          this.setFill(true);
              
          this.setFillXOR(false);
              
          this.setOutline(true);
              
          this.setOutlineXOR(false);
              
          this.setLineWidth(2);
              this.setLineStyle(Graphics.LINE_SOLID);
              this.setForegroundColor(METHODFIGURE_FORE);
              createContents();
          }


             3.字體: 要通過修改MethodNameEditPart的setLabelTextHelper方法來完成。
              

              protected void setLabelTextHelper(IFigure figure, String text) {
                  
          if (figure instanceof WrapLabel) {
                      ((WrapLabel) figure).setText(text);
                      
                      FontData fd = new FontData();
                      fd.setStyle(SWT.BOLD);
                      ((WrapLabel) figure).setFont(new Font(null, fd));


                  }
           else {
                      ((Label) figure).setText(text);
                  }

              }
            
               4.結點默認大小:由于圖中兩個黃色的“BEGINING"和"ENDING"結點中的文字不需要修改,因此這兩個結點的默認大小可以根據字符串的寬度和高度來設置(GMF默認的高度和寬度是40,40)。修改BeginingEditPart中的createNodePlate方法(注:由于編輯器中的結點Shape是放在Plate上,Plate再放在畫布上的,因此Plate的大小決定了編輯器中圖元的大小,修改Shape沒用)。
              protected NodeFigure createNodePlate() {
                  DefaultSizeNodeFigure result 
          = new DefaultSizeNodeFigure(getMapMode()
                          .DPtoLP(EventConstant.BEGINING_DEFAULT_WIDTH), getMapMode().DPtoLP(EventConstant.BEGINING_DEFAULT_HEIGHT));
                  
          return result;
              }
          主站蜘蛛池模板: 廉江市| 措勤县| 航空| 凯里市| 隆尧县| 保亭| 西平县| 西吉县| 钟祥市| 尼勒克县| 汝阳县| 吉隆县| 通渭县| 南康市| 阳江市| 东源县| 大竹县| 蓝田县| 合作市| 临高县| 会同县| 莱芜市| 乌审旗| 克拉玛依市| 兴和县| 合江县| 祁门县| 东丽区| 策勒县| 鄱阳县| 尉犁县| 东海县| 垣曲县| 洪雅县| 明水县| 昌邑市| 永和县| 建宁县| 临高县| 铜梁县| 关岭|