'jface'에 해당되는 글 21건

RCP/SWT & JFACE

대용량 테이블 조회가 가능한 Nattable 예제 실행 방법

TableViewer로는 대용량 데이터를 가져오는데


한계가 있다.


그래서 이클립스에서 제공하는 nattable을 사용하면 조금 더 빠르게 대용량 데이터를


가져올 수 있다.


그 nattable의 예제와 소스코드를 볼 수 있는 방법을 소개한다.


첨부된 파일 두개를 모두 다운 받고


cmd 창에서 다음 명령어를 실행시킨다.


java -cp org.eclipse.swt.win32.win32.x86_64-4.3.jar;NatTableExamples-0.9.0.jar org.eclipse.nebula.widgets.nattable.examples.NatTableExamples


 


관련 주소

https://eclipse.org/nattable/documentation.php?page=getting_started


RCP/SWT & JFACE

Menifest 파일 설명

Menifest


Dependencies 페이지

1. Menifest 플러그인들의 의존관계를 표시

Require-Bundle: org.eclipse.ui,

Org.eclipse.core.runtime

 

 뜻은 해당 두개의 플러그인에 현재 플러그인이 종속된다는 것을 의미한다.

해당 의미는 컴파일시 결정되는 종속성이 아닌 플러그인의 실행시에 사용되는 종속성이다.

실행  참조해야  플러그인이 어떤 것인지 확인한다클래스 로드  Require-Bundle 명시된 항목  클래스를 찾을  없을 경우 NoClassDefFoundError 예외가 발생한다.

 

Require-Bundle: org.eclipse.ui,

Org.eclipse.core.runtime;resolutoin=optional // 없어도 실행되는것(있어도 좋고 없어도 상관 없음)

 

 

Import-package: org.eclipse.ui.views,

Org.eclipse.runtime.model

 뜻은 종속성을 표현하기도 한다.

Import-Package Require-Bundle 비슷하지만 번들 이름을 지정하는 대신에 패키지 이름을 대신한다.

 그대로 Require-Bundle 제공자를 기재하지만 Import-Pageck 필요한 패키지만을 찝어서 기재한다그렇기 때문에 해당 패키지를 가진 다른 플러그인으로 쉽게 대체가 가능하다.(하지만 제공자를 알기는 어렵다)

 

2. Runtime 페이지

Menifest에서 Runtime 페이지는 Bundle-ClassPath 연관이 있다. Bundle-ClassPath 플러그인과 함께 전달함으로써 플러그인을실행할  사용할 라이브러리가 무엇인지다른 플러그인이 라이브러리의 코드를 참조할  있는지 여부 등을 정의힌다.

Bundle-ClassPath: favirites.jar 라고 plugin.xml 기재할 경우 Menifest.xmlRuntime 영역의 Classpath 기재되고

해당 플러그인의 모든 소스는 해당 라이브러리를 참조하게 된다.

 

3. Extension 페이지

해당 페이지는 현재 플러그인이 시스템의 다른 플러그인에서 이미 제공 제공하는 기능을 어떻게 보완하는지   있다.

<extension point="org.eclipse.ui.view">

 

<category

Name = "Quality Eclipse"

Id = "com.qualityeclipse.favorites">

</category>

 

<view

Name = "Favorites"

Icon = "icons/sample.gif"

Category = "com.qualityeclipse.favorites"

Class="com.qualityeclise.favorites.views.FaoviritesView"

Id = "com.qualityeclise.favorites.views.FaoviritesView">

</view>

</extension>

 

위에 내용을 보게 되면 해당 플러그인은 org.eclipse.ui.view 확장점을 사용해 org.eclipse.ui 플러그인에 대한 확장을 선언한다선언된 확장은 Quality Eclipse 라는 이름의  카테고리를 추가하며  카테고리 안에 Favorites라는 이름의 새로운 뷰를 제공한다.


4. Extension Point 페이지

간편하게  확장점을 정의할  있다확장점은 해당 플러그인이 제공하는 기능을 다른 플러그인이 보완할  있게 한다. (확장점을정의 하지 않으면 다른 플러드인에서 해당 플러그인을 확장하여 사용할  없다.)

 

 

플러그인 ID

  • 플러그인 ID  하나의 플러그인을 식별하기 위해 설계된 . (com.<회사명>.<제품명> 형태로 구현한다.)


'RCP > SWT & JFACE' 카테고리의 다른 글

OSGI & Platform  (0) 2016.12.24
RCP 프레임워크 프로젝트의 플러그인 클래스  (0) 2016.12.24
Menifest 파일 설명  (0) 2016.12.24
Action 클래스 살펴보기  (0) 2016.12.24
rcp프레임워크의 shell객체의 이벤트 처리 설명  (0) 2016.12.24
event doit 설명  (0) 2016.12.24
RCP/SWT & JFACE

Action 클래스 살펴보기

필요한 액션을 구현하기 위해서 action클래스를 상속받아서 구현한다.


Action 클래스의 메소드


Run() - action 해당하는 이벤트 처리 수행

Action() - 디폴트 생성자

Action(String, ImageDescriptor) - text 필드를 생성하고 이미지를 action 연결하는 생성자

Action(String, int) - TEXT STYLE 필드를 설정하는 생성자.

 

ImageDescriptor 객체는 이미지가 아니고 이미지를 생성하기 위해 필요한 정보를 가진 객체이다.

 

getStyle() - STYLE 필드를 반환한다.

setEnabled(boolean) - ENABLED 필드를 설정한다.

getEnabled() - ENABLED 필드를 반환한다.

setChecked(boolean) - CHECKED 필드를 설정한다.

isChecked(void) - CHECKED 필드를 반환한다.

 

setAccelerator(int) -  코드를 Action 단축키로 설정 //해당 액션에 단축키를 설정하는 부분

getAccelerator() // Action 단축키를 위한  코드 반환

convertAcclerator(int) //단축키를 문자열로 변환

convertAccelerator(String) // 문자열을 단축키로 변환

removeAcceleratorKey(String) // 단축키를 문자열에서 제거

findKeyCode(String) //  이름을 SWT  코드로 변환

findKeyString(int) //  코드를  이름으로 변환

findModifier(String) // 기능키 이름을 기능키 코드로 변환

findModifierString(int) // 기능키 코드를 기능키 이름으로 변환

 

 

addPropertyChangeListener(IPropertyChangeListener) // Action 프로퍼티 변경 리스너를 연결한다.

removePropertyChangeListener(IPropertyChangeListener) // Action 프로퍼티 변경 리스너를 제거한다.

firePropertyChange(Event) // 프로퍼티 변경 이벤트를 발생시킨다.

firePropertyChange(String, Object, Object) // 주어진 객체에 따라 프로퍼티 변경 이벤트를 발생시킨다.

 

//////////HelpListener 컴포넌트와 관련한 정보를 획득하고자 하는 사용자 의도를 처리한다.

setHelpListener(HelpListener) // Action 도움 리스너를 연결한다.

getHelpListener() //action에서 연결된 도움 리스너를 반환한다.

 

setID, setActionDefinitionID(string) //Action 식별자를 설정한다.

setMenuCreator(IMenuCreator) // action 위한 메뉴 생성자를 설정한다.



예제)


public class SlipViewDataExportWithExcel extends

Action {

private static final String ID = "com.wedul.ui.slip.actions.SlipViewDealExcelExportAction";


public SlipViewDataExportWithExcel() {

setId(ID);

setText(Message.msgDealExcelExportLabel);

setToolTipText(Message.msgDealExcelExportLabel);

setImageDescriptor(UiPlugin.getImageDescriptor(IImageKeys.DEAL_EXCEL));


}


@Override

public void run() {

IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();

SlipView currSlipview = (SlipView) activePage.findView(SlipView.ID);


ExcelExportActionNotification notification = new ExcelExportActionNotification(currSlipview.getTableViewer(), currSlipview.getColumnHeader(), currSlipview.getInputData());

SlipViewProcessHandler.getInstance().process(notification);

}

}


'RCP > SWT & JFACE' 카테고리의 다른 글

RCP 프레임워크 프로젝트의 플러그인 클래스  (0) 2016.12.24
Menifest 파일 설명  (0) 2016.12.24
Action 클래스 살펴보기  (0) 2016.12.24
rcp프레임워크의 shell객체의 이벤트 처리 설명  (0) 2016.12.24
event doit 설명  (0) 2016.12.24
JFace TreeViewer설명  (0) 2016.12.24
RCP/SWT & JFACE

rcp프레임워크의 shell객체의 이벤트 처리 설명

Shell 객체는 이벤트를 위젯에 보내고 위젯은 이정보를 리스너로 불리는 인터페이스로 전달하고 리소드 메소드 중에 동작을 처리하는 이벤트 핸들러를 호출한다.

 

어댑터

어댑터는 추상클래스로서 Listener 인터페이스를 구현하고 필요한  메소드의 기본적인 구현을 제공한다.

필요한 메소드만 작성하면 된다.(리스너로 코딩하면 필요하지 않은 부분도 코딩해야 한다.)

위젯을 리스너가 아닌 어댑터와 연결한다면 조금더 편리하다.

 

케이스 1.

리스너로 코딩하기

Button.addMouseListener(new MouseListener()

{

Public void mouseDown(MosueEvent e){

Clkdevent();

}

 

어댑터로 코딩하기

Button.addMouseListener(new MouseAdapter()

{

Public void mouseDoublicClick(MouseEvent e)

{

Clkdevent();

}

}

 

 

Character : 누른 키를 나타내는 char 값을 제공한다.

stateMask : 키보드에서 기능키의 상태를 표현하는 정수를 반환한다. Alt, ctrl, shift, command 등이 눌렸는지 확인하는데 사용된다.

Keycode : SWT 퍼블릭 상수에 해당하는  코드를 제공한다.

Public void keyPressed(KeyEvent e)

{

If((e.stateMask & SWT.ALT ) != 0 ) string += "ALT-"; //stateMask 필드를 검사하여 alt,ctrl,shift, command 키가 눌렸는지 확인한다.

}

 

Event.doit true이면 해당 행동을 하게 하고 false 못하게 한다.

 

 

해당 위젯에 직접 Listener 부여하는 것을 유형 리스너라고 하고 아래처럼 별도의 리스너를 사용하는것을 무형 리스너라고 한다.

Listener listener = new Listener()

{

Public void handleEvent(Event event)

{

}

}

 

코딩의 유연성은 무형리스너가  있으나 안정성은 유형 리스너가  있다.

 

 

Jface 이벤트 처리

복잡한 사용자 인터페이스를 다룰때이벤트 핸들링 기능을 이벤트를 생성하는 GUI 컴포넌트로 부터 분리하는 것이 좋다.

-> 하나의 그룹이 GUI 처리에 대해 작업하고 다른 그룹은 외관 작업을   있다.

-> 리스너의 기능을 어떤 컴포넌트에다가 붙힐수도 있고 더욱 유연하게 사용이 가능하다.

 

그래서 Jface action actioncontributionitem 클래스를 분리해 제공한다.

간단히 말하면 actioncontributionitem gui 위젯의 기능과 그와 덧붙여진 리스너 클래스를 결합한다.

 

기본적으로 GUI 이벤트 대입하는 것도 좋으나 자주 사용하는 action 경우에는 분리해서 구성해서 여러곳에서 자유자재로 사용하는 것이 좋다. SWT 처럼 모든 위젯에 하나의 이벤트를 대입하게 되면 결국 코드가 복잡해질  있다.

 

루틴

SWT 이벤트 처리방 식처럼 Display 클래스로 시작하여 운영체제의 이벤트 큐를 모니터링 한다하지만 Display 클래스가 display shell 객체를포함하는 ApplicationWindow 정보를 전달한다. ApplicationWindow Action 클래스를 생성하여 이를  이밴트를 생성한 컨트리 뷰션으로전달한다컨트리 뷰션은 단일 이벤트 핸들러 로써 Action 클래스의 run() 메소드를 호출한다.

 

SWT 이벤트와 동일해 보이나 컨트리뷰션 기능은 좀더 복잡하다 개의 주요 컨트리 뷰션 관련 클래스는 ContributionItem 클래스와 ContributionManager 클래스 이다.

ContributionItem  클래스는 액션을 발생시키는 개별적인 GUI 컴포넌트를 제공하고 ContributionManager 클래스는 ContributionItem들을 포함할  있는 객체를 제공한다.

 두개는 모두 추상 클래스로서 하위 클래스에서 구현한다.

ActionContributionItem 클래스는 ContributionItem 많은 하위 구상 클래스중 하나지만 ApplicationWindow에서 GUI 액션을 연결하기 위해 생성구현된다외관은 없지만 fill() 메소드의 사용에 따라 버튼메뉴바 항목툴바 항목의 형태를 취한다.

 

ContributionManager 하위 클래스들은 Contributionitem  컨테이너의 역할을 하며, Contributionitem 묶어서 GUI 객체 구성 방식을 개선하고 프로그래밍을 편하게 한다. MenuManger 클래스는 contributionitem 윈도우 상위 메뉴에 통합한다또한 ToolBarManager 클래스는 객체를 메뉴 아래에 위치한 툴바를 둔다.

 

 

 

Jface 이벤트 처리 규칙

  1. 사용자 입력은 버튼툴바메뉴를 포함한다.
  2.  컴포넌트는  하나의 연관 이벤트만을 갖는다.
  3.  이벤트는  하나의 이벤트 핸들러를 갖는다.


'RCP > SWT & JFACE' 카테고리의 다른 글

Menifest 파일 설명  (0) 2016.12.24
Action 클래스 살펴보기  (0) 2016.12.24
rcp프레임워크의 shell객체의 이벤트 처리 설명  (0) 2016.12.24
event doit 설명  (0) 2016.12.24
JFace TreeViewer설명  (0) 2016.12.24
IWizardPage 인터페이스  (0) 2016.12.24
RCP/SWT & JFACE

event doit 설명

Public void close(Event event) {

Event.doit = false; // event 일어나지 않게 지정

 

If(true)

Event.doit = true;// 어떤 조건에서만 true 변경

 

 

}

'RCP > SWT & JFACE' 카테고리의 다른 글

Action 클래스 살펴보기  (0) 2016.12.24
rcp프레임워크의 shell객체의 이벤트 처리 설명  (0) 2016.12.24
event doit 설명  (0) 2016.12.24
JFace TreeViewer설명  (0) 2016.12.24
IWizardPage 인터페이스  (0) 2016.12.24
Draw2d 설명  (0) 2016.12.24
 [ 1 ]  [ 2 ]  [ 3 ]  [ 4 ]  [ 5 ] 

푸터바

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

카운터

  • Today : 0
  • Yesterday : 460
  • Total : 82,691