Java/RCP&GEF

Eclipse RCP - plugin.xml에서 View의 데이터 다른 View로 옮기기

기은P 2020. 4. 1. 16:10
반응형

Eclipse RCP - plugin.xml에서 View의 데이터 다른 View로 옮기기

 

 

먼저 https://narup.tistory.com/40의 Sample View를 기준으로 데이터를 옮기는 방법에 대해 설명한다.

 

 

1)     먼저 SampleView에서 Add 버튼을 하나 생성한다.

 

Button 생성하는 방법은 간단하기 때문에 생략한다.

Window Builder를 통해 생성하면 쉽게 만들 수 있다.

 

 

2)     SampleView의 ID와 PW데이터를 받은 새로운 View를 생성한다. Plugin.xml에서 GetSampleView를 생성해준다.

 

 

3)     GetSampleView의 구성은 SWT의 Table로 구성했다.

 

public class GetSampleView extends ViewPart {
	private Table table;
	public GetSampleView() {
		// TODO Auto-generated constructor stub
	}
	@Override
	public void createPartControl(Composite parent) {
		parent.setLayout(new GridLayout(1, false));
		
		table = new Table(parent, SWT.BORDER | SWT.FULL_SELECTION);
		table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
		table.setHeaderVisible(true);
		table.setLinesVisible(true);
		
		TableColumn tblclmnNewColumn = new TableColumn(table, SWT.NONE);
		tblclmnNewColumn.setWidth(100);
		tblclmnNewColumn.setText("ID");
		
		TableColumn tblclmnNewColumn_1 = new TableColumn(table, SWT.NONE);
		tblclmnNewColumn_1.setWidth(100);
		tblclmnNewColumn_1.setText("PW");
		// TODO Auto-generated method stub
	}
	
	public void AddData(String id, String pw) {
	    TableItem item = new TableItem(table, SWT.NONE);
	    item.setText(new String[]{id,pw});
	}

	@Override
	public void setFocus() {
		// TODO Auto-generated method stub
	}
}

 

  AddData() 메소드를 통해서 table tableItem을 추가하는 코드다.

 

 

4)     다시 SampleView로 돌아가서 window builder 편집기로 소스코드를 열고 디자인 탭 클릭 - Button을 오른쪽 버튼 클릭 – Add event handler – selection – widgetSelected를 선택한다.

 

 

 

윈도우 빌더에서 이벤트 핸들러를 생성하면 아래와 같은 코드가 추가된다.

 

Button btnNewButton = new Button(parent, SWT.NONE);
		btnNewButton.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
			}
		});
		btnNewButton.setText("Add");

 

버튼에 리스너를 등록하고, SelectionAdapter wigdetSeleted를 오버라이드해서 이벤트를 발생시키는 흐름이다.

 

 

5)     이제 widgetSeleted함수를 조금 수정한다.

 

		Button btnNewButton = new Button(parent, SWT.NONE);
		btnNewButton.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				GetSampleView view = (GetSampleView) Activator.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage()
						.findView(GetSampleView.ID);
				if (view != null) {
					view.AddData(id.getText(), pw.getText());
				}
			}
		});
		btnNewButton.setText("Add");

 

 

* GetSampleView view를 가져오기 위해

 Activator.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(GetSampleView.ID);로 가져온다는 것. 가장 중요하다!!

 

 

 

6)       perspeectiveExtensions에  view를 등록해주고 실행하면 된다.

 

 

 

7)      실행 결과

 

 

 

 

  • 이처럼 RCP도 복잡하게 생각 할 것 없이 JFace 혹은 SWT의 컴포넌트를 이용해 View에 구성하고 데이터를 전달하는 흐름을 알고 있으면 데이터를 Read하고 Write하는 부분에는 큰 어려움 없이 코드를 작성할 수 있을 것이다.

 

반응형