19. JFace(ContentProvider) IStructuredContentProvider : Table, List 사용 Object[] getEmement(Object) ITreeContentProvider : Tree 사용 Object[] getChildren(Object) : 자식 객체 리턴 getParent(Object) :부모 객체 리턴 hasChildren(Object) : 자식 객체 유무 ILazyContentProvider : SWT.VIRTURAL
20. JFace(LabelProvider) ILabelProvider: Tree, List 사용 getImage(Object) :해당 이미지 리턴 getText(Object) :해당 텍스트 리턴 ITableLabelProvider : Table 사용 getColumnImage(Object, int) getColumnText(Object, int)
21. RAP Architecture RAP Server Side Client Side RWT == SWT & RWT != SWT qooxdoo -> RWT RCP
33. 실행환경 -console : 콘솔 모드로 시작 (osgi커맨드 사용)-consolelog : 콘솔에 로그를 출력 -Declipse.ignoreApp : 응용프로그램을 실행하지 않습니다. -Declipse.noShutdown : OSGi가 종료되지 않는 한 프로그램을 종료하지 않습니다.
34. HelloWorld RAP plugin.xml : plugin 정보를 수록. MANIFEST.MF : Bundle 환경파일로 plugin 이름, 버전 ID, classpath, plugin 의존관계 정보. build.properties : 배포 시에 포함되어야 하는 리소스정보 및 빌드 정보 정의. Application : Workbench, Application UI 시작. ApplicationWorkbenchAdvisor : Workbench의 시작과 종료를 관리. ApplicatonWorkbenchWindowAdvisor : menu, toolbar, StatusLine 등의 window에 대해 정의. ApplicationActionBarAdvisor : menu, toolbar, Statusline등의 실제를 구현. Perspective : 사용자 화면을 구성.
36. HelloWorld RAP Overview : plugin 정보 출력. Dependencies : 사용할 plugin을 정의. Runtime : 외부 plugin이 자신을 참조 할 수 있는지 여부와 외부 library(jar)등을 정의. Extensions : 외부 plugin의 기능을 확장하기 위한 정의. Extension Points : 자신의 기능을 확장하기 위한 확장 점을 정의. Build : 배포 시에 포함되어야 하는 리소스 선택. MANIFEST.MF : plugin.xml : build.properties:
37. Extensions and Extension Point Eclipse는 확장과 기증을 통해 개발합니다. Extensions : Dependencies에 정의된 plugin기능을 확장하여 개발. Extension Point : 자신이 구현한 기능을 외부 에서 확장하여 사용 할수 있도록 정의. -Extension : RAP 시작 포인트
40. Commands and Actions 메뉴나 툴바를 이용하여 사용자에게 행위 부여. 이미 정의된 기능을 사용할 수있도록 구현과 실행의 분리.(참조한 플러그인 및 내가 구현한 플러그인) -Extension
41. Menu and Toolbar 전후관계 표시 가능 : 예를 들어서 신규 추가 일 경우 -> menu:org.eclipse.ui.main.menu?after=additions 표시특 정 메뉴 뒤에 위치 하고자 할경우 after, 이전에 위치하고자 할 경우 before를 사용할 수 있습니다. 예를 들어, menu:org.eclipse.ui.main.menu?after=com.study.sample.rcp.mainMenu.file
45. Selection Services Part간의 이벤트 전달 사용 : public class TestViewer … implement ISelectionListener 서비스 등록 : getSite().setSelectionProvider( tableViewer ); 외부 서비스 실행 : getSite().getPage().addSelectionListener(this); 종류
46. Job and UIJob Job의정의 public class JobExample extends Job protected IStatus run(IProgressMonitor monitor) ; public booleanbelongsTo(Object lastName) ; Job의 실행 new JobExample().schedule(); Job의 관리 IJobManagerjobManager = Job.getJobManager();
47.
48. Preference Pages 시스템 환경변수 설정정의. - Extension org.eclipse.ui.preferencePages org.eclipse.core.runtime.preferencs
49. Help Help -> Help Contents 메뉴 호출 검색엔진(Apache Lucene)이 내장되어 검색 기능. F1눌렀을 때 도움말 지원기능.(문맥감지 기능) 다국어 지원. 독립 실행 도움말 제공. Extension org.eclipse.help.toc org.eclipse.help.contexts http://wiki.eclipse.org/RAP/FAQ#How_to_integrate_the_Eclipse_Help_System_in_a_RAP_application.3F
64. 참고자료 Eclipse RAP Home Using Eclipse Ganymede to develop for the desktop, Web and mobile devices, Part 2: Developing for the Rich Client Platform, the Ganymede way Rich Ajax Platform, Part 2: 애플리케이션 개발하기 Eclipse Rich Ajax Platform (RAP) - Tutorial with Eclipse 3.5 (Galileo) Equinox in a Servlet Container RAP Deployment – Part 2: Deploying as WAR Single Sourcing RAP and RCP PPT Eclipse con 2010 Eclipse con 2011 http://www.cubrid.com http://pierocksmysocks.deviantart.com/art/Mobile-Device-Dock-Icons-64174438 http://www.devx.com/webdev/Article/36101/1763/page/3 https://cs.ucloud.com/portal/ktcloudportal.epc.ucintro.ps.services.html
Notas del editor
여기까지 첫번재 시간 끝
-Dependiency에서 정의한 플러그인의 기능이 command에 정의되어 있다면 커맨드만 알고 있다면 실행하거나 조작할 수 있다는 내용.Action은 자바 코드로 되어 있어 이것을 실행하기 위해서는 코드로 관계가 되어 있어야 해서 많은 문제점 유발. 이것을 commands가 나오면서 xml로 설정하는것으로 해결하고자 함. 현재는 action은 디플리케이튼된 상태
검색엔진 루씬이 내장되어 있습니다.
이클립스 3.7에서는 tool project 로 추가되어 이렇게 복잡하게 하지 않아도 되는듯 합니다.
Styledtext는 좀더 향상된 에디터를 만드는데 기본이 됩니다.아주 중요한 기능중 하나인데,eclipse 버그질라에 문의결과 기약이 없다고 하네요.Web과 Desktop과의 중간자로서 모호 하다.- 개발할때부터 어떤것을 기준으로 개발할 것인지 고민해야합니다.예를들어 Eclipse RCP기준으로 개발해야 한다면 eclipse rap가 안되는 부분(관련 플러그인동작유무)등을 확인하여 개발해야합니다.기본에 더 충실해야 합니다. 즉, 문제가 될만한 기능이 존재한다면 최소한 작은 플러그인으로 쪼개야 합니다.그래서 문제가 된다면 문제가 되는 플러그인의 기능을 추려낼수 있도록 말입니다.확장 포인트 개발을 해야합니다.문제가 될만한 기능이 있다면 확장 포인트를 만들고 개발하여야 합니다.