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

RCP/SWT & JFACE|2016. 12. 24. 00:43

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


댓글()

Menifest 파일 설명

RCP/SWT & JFACE|2016. 12. 24. 00:37

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

태그 : jface, menifest, RCP

댓글()

Action 클래스 살펴보기

RCP/SWT & JFACE|2016. 12. 24. 00:35

필요한 액션을 구현하기 위해서 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프레임워크의 shell객체의 이벤트 처리 설명

RCP/SWT & JFACE|2016. 12. 24. 00:28

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

댓글()

event doit 설명

RCP/SWT & JFACE|2016. 12. 24. 00:26

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

태그 : doit, event, jface

댓글()

JFace TreeViewer설명

RCP/SWT & JFACE|2016. 12. 24. 00:24

Viewer

Viewer는 MVC 패턴을 가지고 있다.

Viewer의 하위 클래스인 ContentVier와 StructuredViewer가 있다.

 

ContentViewer는 다양한 인터페이스를 활용해서 도메인 객체 형태를 유지하면서 데이터를 다룬다. 이들 인터페이스는 이름 앞에 I를 붙인다. 이러한 인터페이스는 확장점을 표시하며 이를 사용하여 애플리케이션의 맞춘 로직을 프레임워크에 넣을 수 있다.

 

StructuredViewer는 ContentViewer에게 제공하는 데이터를 구조화 한다. 구조화는 필터링, 정렬 기능 같은 일반적인 작업을 실행하는 메도드들이 이 계층에서 구현된다.

 

각 위젯인 Tree, List, Table 등은 이에 맞는 Viewer의 하위 클래스로 ListViewer나 tableViewer 등이 있다.

 

위젯은 기껏해야 하나의 Viewer와 연결하도록 되어 있고, 연결이 완료되고 나면 모든 작업은 Viewer를 통해서만 해야한다. 위젯과 뷰어에서 동작을 섞어서 처리하다 보면 나중에 꼬일 수 있다.


viewer은 대부분 구성이 비슷하여 하나의 viewer만 잘 공부하면 나머지도 어느 정도 이해할 수 있다.

 

 

주요 Viewer 메소드

getControl()

GetSelection()

Refresh()

SetInput()

 

주요 ContentViewer 메소드

setContentProvider()

SetLabelProvider()

 

주요 StructuredViewer

addFilter()

Reveal()

SetSorter()

 

ContentViewer의 프로 바이더

프로바이더에는 두 개가 존재한다. ContentProvider, LabelProvider.

 

컨텐츠 프로바이더는 화면에 나타날  있는 항목의 전체 집합을 반환한다

 집합을 뷰어에 부착된 뷰어에 부착된 어떤필터에든 넘길  있다.


레이블 프로바이더는 이들을 어떻게 화면에 나타낼지 결정한다.

 

 

Viewer의 첫 번째 하위 클래스인 ContentViewer는 위젯에서 보일 데이터를 다루는 기능을 추가하며, MVC의 M(모델) 부분을 제공한다.

 

1) LabelProvider

레이블 프로바더는 ILabelProvider나 ITableLabelProvider를 구현하는데, 두 인터페이스 모두 IBaseLabelProvider를 확장 했다.

 

ILabelProvider와 ITableLabelProvider는 비슷한 성향을 가지며, ITableLabelProvider는 테이블열을 다루지만 ILabelProvider는 일차원 데이터만 가정한다.

 

레이블 프로바이더의 로직은 세 개의 메소드로 작성할 수 있다.

첫 번째는 isLabelProperty()로 IBaseLabelProvider에서 정의한다.

-> 객체와 프로퍼티 이름을 받아 부울 값을 반환한다. 해당 부울값은 주어진 프로퍼티를 변경할 때 시각적으로 보이는 레이블을 업데이트 해야하는지 나타낸다.

 

두 번째로 getText()와 getImage() 메소드를 통해 해당 객체에 보여줄 텍스트랑 이미지를 설정한다.

 

2) ContentProvider

ContentProvider 레이블 프로바이더로 관여하기도 하지만 컨텐트 프로바이더로도 역할을 한다.

 

레이블 프로바이더가 요소를 보이기 위한 텍스트이미지를 제공하는 반면에 컨텐츠 프로바이더는 실제적으로 요소를 보이게끔 해준다.

 

IStructuredContentProvider getElements() 메소드를 정의하는데, getElements() 메소드는 Object 입력으로 받아들여서 위젯에 보여줄 Object 배열을 반환한다. Viewer에서 setInput() 호출할 객체는 컨텐트 뷰어에게 매개변수로 전달한다컨텐트 프로바이더는 위젯에 의해 보여지는 도메인 객체들의 콜렉션을 반환하기 위해  매개변수를 이용한다.

 

 개의 메소드는 필수로 구현하지 않아도 되는데  것은 dispose() inputChanged(Viewer viewer, Object oldInput, Object newInput)이다우선 dispose() 페기될  깨끗이 정리할때 정의하는 메소드이다.

inputChanged 뷰어가 컨텐츠 프로바이더에게 최상위 입력 객체를 바꾸웠다고 통지할  사용한다.

 

 

트리(Tree)

SWT에서 제공하는 Tree 위젯과 Jface에서의 TreeViewer 트리를 사용할  있다.

 

1. SWT 트리

일반적인 Tree 특별하게 유용한 인터페이스를 가지지 않는다.

- addSelectionListener() 선택 이벤트의 통지를 가능하게 한다.

- addTreeListener()  TreeListener 인터페이스는 트리의  수준을 펼치거나 줄일  통지하기 위한 콜백을 제공한다.

- Select() / deselect() 현재 선택 사항을 변경한다.

- getSelection() 현재 선택 항목을 얻는다.

- Show() 주어진 항목을 보일 때까지 컨트롤을 스크롤 한다.

 

1-1) TreeItem

TreeItem Tree 항목을 추가하기 위해 사용되는 클래스이다.

TreeItem 내용을 나타내는 것을 덧붙여부모와 자식 항목의 관계를 유지한다.

SWT.SINGLE, SWT.MULTI 스타일을 통해 트리 스타일을 지정할  있으며 SWT.CHECK 체크박스를 사용하여 트리 옆에 checkbox 생성   있다.

TreeItem setText(), setImage() 메소드를 사용하여  보여주고자 텍스트와 이미지를 수정하기 위해 제공한다.

직접 TreeItem들을 생성하고 조작하여 트리를 구축할  있지만 너무 어렵기 때문에 Tree Viewer 사영하여 애플리케이션의 로직에 초점을 맞추고 사용자 인터페이스 요소의 상세 항목에  신경   있다.

 

1-2) TreeViewer

TreeViewer 모든 Viewer 공통적으로 제공하는 필터링과 정렬 기능 뿐만 아니라 레이블 프로바이더 기능도 제공한다


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

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
Drag & Drop 구현 방법  (0) 2016.12.24

댓글()

IWizardPage 인터페이스

RCP/SWT & JFACE|2016. 12. 24. 00:20

Jface IWizardPage 인터페이스를 사용하여 마법사의 페이지 하나를 표현한다.

 

getName() : 위자드의 유일한 이름을 가진다.

getNextPage(), getPreviousPage()  메소드들은 다음이나 이전의 페이지로 이동한다.

isPageComplete() 사용자가 해당 페이지에서 필요한 모든 내용을 채웠는지 알아낸다.

canFlipToNextPage() : 다음 버튼을 사용할  있는지 체크 한다.

 

 

마법사를 담는 부분은 Iwizard 인터페이스이고  페이지는 wizardpage 나타낸다.

 

 

 

마법사 컨테이너

 

마법사 컨테이너는 하나 이상의 마법사에 대한 호스트로서의 역할을 수행한다.

 

 

Dialog Setting

DialogSetting IDialogSettings 인터페이스를 구현한다. Xml 형태로 dialog 정보를 저장한다.

 

 

//저장

IDailogSettings setting = new DialogSettings("mydialog");

Settings.put("checkboxOneChecked", true);

Settings.put("defaultName", "TestDialog");

 

Settings.save("Settings.xml");

 

//Load

IDialogSettings loadedSetttings = new DialogSettings(null);

loadedSettings.load("settings.xml");

 

loadSettings.getBoolean("checkboxonechecked");

loadedSettings.get("defaultName");

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

event doit 설명  (0) 2016.12.24
JFace TreeViewer설명  (0) 2016.12.24
IWizardPage 인터페이스  (0) 2016.12.24
Draw2d 설명  (0) 2016.12.24
Drag & Drop 구현 방법  (0) 2016.12.24
이벤트로 받은 키보드 멀티 인식 방법  (0) 2016.12.24

태그 : iwiward, jface, RCP

댓글()

Drag & Drop 구현 방법

RCP/SWT & JFACE|2016. 12. 24. 00:18

어플리케이션에 항목 드롭하기

  • 등록된 컨트롤에 데이터를 올려 놓을 경우 데이터를 받아 들일  있으며이때 DropTarget 인스턴스를 사용한다.
  • DropTarget 위젯이 선택할  있는 데이터의 유형과  위젯에서 수행하기로 공인된 동작 가지 모두 저장할  있다운영체제가 이러한 정보를 사용하여 항목이 해당 위젯을 지나갈 때  항목을 놓을  있는지에 대한 가시적인 피드백을 제공한다.
  • 우선 타겟을 등록하면, DropTargetListener DropTargetEvent 받으며 이벤트는 사용자가 컨트롤내에 어떤 것을 놓을 발생한다.

 

연산 상수

설명

DROP_COPY

 항목을 컨트롤 안이나 밖으로 드래그   복사한다.

DROP_MOVE

마우스를 놓은 위치로 항목을 이동시킨다.

DROP_LINK

항목을 놓으면 원본에 대한 링크를 생성한다.

DROP_NONE

항목을 놓아도 아무런 일이 일어나지 않는다.

 

 

Ex)

 

Int operation = DND.DROP_MOVE | DND.DROP_COPY

DROPTARGET tartget = new DropTarget(control, opration) // 해당 타겟을 지정하고 해당 타겟의 Drag 이벤트가 발생하였을 발생할 동작을 설정한다.

Transfer[] transfer = new Transfer[] { // 데이터의 유형을 선택한다.

TextTransfer.getInstance(),

RTFTransfer.getInstance()

};

Target.setTransfer(transfer);

Target.addDropListener(new DropTargetListener(){..});

 

 

Viewer에서 해당 드래그 이벤트를 실행시킬 경우

Transfer[] types = new Transfer[] {

FileTransfer.getInstance()

};

 

Viewer.addDropSupport(DND.DROP_COPY, types, new FileDropListener(this));

 

가장 중요한 부분은 Listener 동작시키는 작업이다.

  1. dragEnter() 항목을 끌고 가는 동안커서가 컨트롤의 경계부분으로 들어온다.
  2. dragOver() 커서가 항목을 끌고 가면서 컨트롤 위를 이동한다.
  3. dragOperationChanged() 사용자가 사용할 동작 유형을 바꿀 때마다  메소드를 호출 한다 이벤트는 주로 Ctrl이나 Option 등의 기능키를 누르거나   발생한다.
  4. dropAccept() 사용자가 컨트롤에서 항목을 놓는다 때가 애플리케이션이 이런 떨어트리는 작업을 거절하거나 수행할 동작유형을 변경할  있는 마지막 과정이다.
  5. Drop() 데이터를 놓는다리스너에서 주어진 데이터를 적절히 다룰  있는 로직을 구현해야 한다.

 

 메소드 에서는 DropTargetEvent 바등며  이벤트는 현재 동작 정보를 포함한다사용할 데이터 유형과 수행 동작을 변경하기 위해서는 각각의 currentDataType detail 필드를 수정한다.

여섯번재 메소드인 dragLeave() dropAccept()  호출 하기 전에 언제든지 호출   있으며애플리케이션에게 사용자가 커서를컨트롤 밖으로 이동햇지만 드롭하지 않았다고 알려준다.

 

DragSource는컨트롤을 데이터의 소스로 등록하기 위해 생성된다. DragSourListener 드래그 동작을 시작할  이벤트를 받으며 해당 항목을 놓을 때의 처리로직을 구현한다.

 

  1. dragStart() 사용자는  컨트롤에서 데이터 드래그를 시작한다드래그를 진행하기 위해서는 이벤트의 doit 필드를 true 설정해야 한다.
  2. dragSetData() 놓기를 수행한다 메소드 놓을 데이터를 제공하기 위해 이벤트의 data필드에 데이터를 넣는다.
  3. dragFinished() 놓는 동작을 성공적으로 끝낸다마무리 작업 원본데이터 삭제 작업 같은 작업을 여기에서 수행한다.


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

IWizardPage 인터페이스  (0) 2016.12.24
Draw2d 설명  (0) 2016.12.24
Drag & Drop 구현 방법  (0) 2016.12.24
이벤트로 받은 키보드 멀티 인식 방법  (0) 2016.12.24
RCP 확장점 소개  (0) 2016.12.24
rcp toolbar에서 label등 각종 contribution item 생성방법  (0) 2016.12.24

태그 : Drag, Drop, jface

댓글()