Programming/Eclipse RCP 20

Undo/Redo 기능 추가 StyledText

delta 값 기록 방식이 아닌 전체 이미지 저장하는 방식이라 커서 위치 복원 문제나 메모리 과다 사용 문제가 있을 수 있다. event listener를 이용해 caret pos, replaced text, replacing text 등을 얻어와 처리할 수는 있을 것 같다. import java.util.LinkedList; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ExtendedModifyEvent; import org.eclipse.swt.custom.ExtendedModifyListener; import org.eclipse.swt.custom.StyledText; import org.eclip..

View Close Event (pre-closing)

[Pre-closing] View 닫기 전에 체크... implements ISaveablePart2 해준후, interface 메소드 구현하도록 추가한 후, public boolean isDirty() public boolean isSaveOnCloseNeeded() 위 두개는 true 를 리턴하도록 수정하고, public int promptToSaveOnClose() 를 재정의 해주면 된다. http://e-rcp.blogspot.com/2007/09/prevent-that-rcp-editor-is-closed.html [Post-closing] View 활성화 및 닫은 후 체크 IPartListener

ListView, TreeView 처리 정리

* 선택항목 얻기 IStructuredSelection sel = (IStructuredSelection)treeViewer.getSelection(); sel.getFirstElement() * deprecated 된 TableTreeViewer를 TreeViewer로 구현하기 tree - treeViewer - treeColumn - treeColumn 과 같이 만들어 두고, ITreeContentProvider, ITableLabelProvider 를 상속받은 Provider들로 설정해주면 된다. 주의할 점은 TreeColumnViewer 를 사용하면 안된다는 것이다!!! 이것은 오직 LabelProvider 를 써서 column 단위의 처리는 하지않아 오류가 나올 것이다.

SWT Subclassing

몇가지 이유로 SWT 에서 Subclassing 이 금지된다고 한다. (has-a 관계로 이용하도록 권장하는 듯 하다) http://www.eclipse.org/swt/faq.php#subclassing RCP 개발중 Main ToolBar(CoolBar)에 콤보박스를 추가할 일이 있었는데, setWidth 나 어떠한 방법을 이용해도 ToolBar에서 크기가 고정되는 것이었다. 호출 구조를 따라가다 보니 Combo 사이즈를 미리 정해주는 법 밖에 방법이 없었다. 아래와 같이 computeSize 및 checkSubclass 를 재정의 해 주었다. protected Control createControl(Composite parent) { combo = new Combo(parent, SWT.READ_ON..

Key Binding 바꾸기

기존 binding은 org.eclipse.ui.contexts.window 을 통해 이루어 진다. 1. 새 context 를 생성하여 parentId 를 org.eclipse.ui.contexts.window 로 함 2. org.eclipse.ui.bindings 에 새 key binding 추가 - contextId를 새로만든 contextId 로 지정하고 commandId 를 적절히 지정한다. (연결할 command) 3. context 를 바꿔줘야 한다. (기존 책이나 pdf 등에 나오질 않음) - workbench 가 생성된 이후에 아래 코드를 호출하여 바꿔준다. PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { public v..

Preferences

1. manifest 의 extension 탭 열기2. menuContribution 밑으로 command 생성3. commandId 는 org.eclipse.ui.window.preferences 로 하면 main preference page 임 Sample 로 Preference page 를 추가하면 코드가 생성된다.만약 Activator 를 쓰지 않는다면, 관련 에러가 나오는데 이를 PlatformUI 로 바꿔주면 된다. 만약 직접 생성하려면,org.eclipse.ui.preferencePages (preference page 지정)-> preference page 의 왼쪽 트리에 추가 하려면 페이지 별로 계속 추가해주면 됨 org.eclipse.core.runtime.preferences (pre..

Eclipse RCP Issue 정리

Eclipse RCP 개발중 오류 F/U 정리 (상황: RCP + MyBatis(ibatis) 사용...) 1. 일반적으로 ibatis 사이트에서 구한 jar를 lib으로 사용시 content assist 및 compile 까지는 되나 runtime 에서 class 를 찾을수 없다는 오류를 뱉는다. -> Plugin project from JAR 로 새로운 프로젝트를 FQN 으로 만든다. (ex: org.apache.ibatis) (dependency 분석 부분을 체크해 주면 dependencies 에 알아서 관련 plugin 을 추가시켜줌) 2. [Buddy Classloading] java.io.IOException: Could not find resource 오류가 나면서 xml 파일들을 불러들이지..