FineReport의 사용자 정의 컨트롤 개발 방법 확인

Fine Report는 플러그인화 개발된 보고서 소프트웨어로서 일부 특수한 수요의 기능은 스스로 개발해야 한다. 개발된 플러그인 패키지 플러그인은 정부에서 제공하여 플러그인 포럼에서 찾을 수 있다. 본고는 사용자 정의 컨트롤러를 어떻게 개발하는지 소개하고자 한다. 여기서 방법론을 설명한다.
첫 번째 단계: 등록 컨트롤의 인터페이스를 실례화합니다.
네 가지 정보에 대한 우리의 컨트롤 클래스, 인터페이스 클래스, 아이콘 경로, 컨트롤 형식 이름

package com.hg.free.plugin.customcombo.param;
import com.fr.design.designer.creator.XComboBox;
import com.fr.design.fun.impl.AbstractParameterWidgetOptionProvider;
import com.fr.form.ui.Widget;
public class WidgetRegister extends AbstractParameterWidgetOptionProvider {
  @Override
  public Class<? extends Widget> classForWidget() {
    return CustomComboBox.class;
  }
  @Override
  public Class<?> appearanceForWidget() {
    return XComboBox.class;
  }
  @Override
  public String iconPathForWidget() {
    return "/com/fr/web/images/combobox.png";
  }
  @Override
  public String nameForWidget() {
    return " ";
  }
} 
두 번째 단계, 컨트롤 클래스 다시 쓰기

package com.hg.free.plugin.customcombo.param;
import com.fr.form.ui.ComboBox;
import com.fr.ui.DataFilter;
public class CustomComboBox extends ComboBox {
  private static final long serialVersionUID = 7169771062153345236L;
  @Override
  public String getXType() {
  return "customcombo";
 }
  @Override
  protected DataFilter createDataFilter() {
  return new CustomComboBoxDataFilter();
 }
}
필터 방식을 바꾸려면 필터를 다시 써야 하기 때문에

package com.hg.free.plugin.customcombo.param;
import com.fr.form.ui.ComboBoxDataFilter;
public class CustomComboBoxDataFilter extends ComboBoxDataFilter {
  @Override
  public boolean isMatch(String txt, String filter) {
    if(null==txt && null!=filter)return false;
    if(null==txt && null==filter)return true;
    return txt.indexOf(filter)!=-1;
  }
} 
3단계, 프런트엔드 컨트롤 JS 계승

(function($){
  FR.CustomComboBoxEditor = FR.extend(FR.ComboBoxEditor, {
   _init: function () {
   FR.CustomComboBoxEditor.superclass._init.apply(this, arguments);
   }
  });
  $.shortcut("customcombo", FR.CustomComboBoxEditor);
})(jQuery);
자, 지금까지 코드 개발이 전부였습니다~ 그리고 xml을 써서ant로 플러그인으로 포장하면 됩니다.
코드 설명:
일단 이 코드는 무슨 뜻인가요?
바로 제가 컨트롤 유형을 Custom Combox Editor로 정의한 컨트롤입니다. 그는 Combo Box Editor의 모든 방법과 속성을 계승했습니다. 그리고 제가 새로 정의한 컨트롤 유형의 태그를custom combo라고 설명했습니다. 이 태그가 무슨 소용이 있는지 다른 용도는 말하지 않았습니다. 여기에서의 용도만 말하자면 JAVA 자체가 컨트롤을 만들 수 없게 하는 것입니다. 대신 앞에 설정을 알려주면앞부분의 JS엔진(일단 이렇게 불러주세요)~이 설정에 따라 대응하는 스크립트를 실행하고 대응하는dom 스타일을 생성하는 것~shortcut를 그렇게 이해합니다~백그라운드에서 하나의 설정을customcombo라는 컨트롤을 생성하는 것입니다~그러면 맵처럼 대응하는 키값 FR.CustomCombox Editor를 찾았습니다~그리고 이 컨트롤의 설정을 이 방법에 던져서 실행합니다.우리의 컨트롤이 생성됩니다.
이 예에서 앞부분에 대한 수정 요구가 없기 때문에 아무런 변경도 하지 않았습니다.
우리의 이 예는 모호하게 일치하는 방식을 수정하는 것이다.
그럼 원래 컨트롤러가 일치하는 메커니즘은 어떻게 된 거예요? 그렇습니다. 만약에 제가 사장이라고 가정하면 (엄마알도 가설할 수 밖에 없어요) 지금 종이 계약서의 세부 사항을 알고 싶은데 회사에 종이 계약서가 있는데 어떻게 찾을까요~ 당연히 비서를 사야겠죠(미녀가 제일 좋아요). 제가 원하는 계약서에 어떤 정보가 있는지 알려드릴게요. 그리고 그녀가 찾아서 마지막으로 찾은 계약서를 저에게 주면 돼요.
여기 컨트롤 ComboBox가 사장이고 Combox Data Filter가 비서라는 뜻이에요. 여기 있는 모든 비서는 자기가 계약을 찾는 방법이 있을 거예요. 예전에 그 비서는 관련된 것만 찾으면 다 찾았어요. 새로 온 이 비서는 사장님이 제시한 정보만 찾으면 일치하는 계약이에요. 일치하는 방법을 찾으면 isMatch예요. 이 코드가 이렇습니다.코드의 개발은 사실 자세하게 분석하면 현실 생활의 많은 사무 처리에 비칠 수 있다. 코드도 사람이 설계한 것이기 때문에 논리는 사람이 사무를 처리하는 사고방식에서 벗어날 수 없다.
이상은 본문의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 일정한 도움을 줄 수 있는 동시에 저희를 많이 지지해 주시기 바랍니다!

좋은 웹페이지 즐겨찾기