posted by Thanh Le on 2014-12-03 09:39

1- RCP là gì?

RCP (Rich Client Platform) : Là một Platform sử dụng thư viện SWT(Là bộ thư viện tương tự SWING nhưng ra đời sau SWING. Nó phong phú về các thành phần giao diện khác nhau. Vì ra đời sau SWING, nên nó học hỏi và giải quyết các nhược điểm của SWING) để lập trình các ứng dụng Desktop. Chạy trên mọi hệ điều hành khác nhau.

Như vậy RCP là một Platform sử dụng SWT làm cơ sở để xây dựng nên. Bạn có thể sử dụng Platform RCP để lập trình lên ứng dụng Desktop.

Hình minh họa dưới đây là một ứng dụng đơn giản (Chỉ dùng tới SWT, chưa dùng gì tới những thứ cao cấp của Platform RCP):

Platform RCP đã xây dựng một nền tảng cho phép bạn lập trình ra các giao diện có cấu trúc phức tạp giống IDE Eclipse, nó bao gồm các hệ thống Menu, Toolbar, View, Editor, ...

RCP cũng cho phép bạn phát triển các Plugin tích hợp vào Eclipse mà bạn đang sử dụng.

 

 

2- Công cụ

Công cụ sử dụng là eclipse:

Link download:

https://eclipse.org/downloads/

Theo mình thì bạn nên chọn bản Eclipse for RCP and RAP như trên hình vì bản này đã cài sẵn plugin hỗ trợ RCP không cần phải tự mình cài đặt thêm plugin cho vất vả.

 

Và để thuận tiện cho việc thiết kế giao diện kéo thả trực quan trong Eclipse thì bạn nên cài thêm plugin WindowBuilder. Nó hỗ trợ cả SWING, SWT. Nhưng mình khuyên nếu chưa nắm vững các thành phần giao diện cơ bản của SWT thì bạn nên tự code vài ví dụ cơ bản trước khi sử dụng WindowBuilder.

Link download:

https://eclipse.org/windowbuilder/download.php

3- Tạo project

Sau khi bật Eclipse lên. Chúng ta bắt đầu tạo project đầu tạo project đầu tiên như sau:

  • Trên thanh menu click chọn New->Plug-in Project:

  • Đặt tên cho project:

 

 

  • Check mặc định như ảnh minh họa để sinh các  lớp cơ bản sử dụng cho việc tạo giao diện RCP. Lựa chọn “Woul you like to create 3.x rich client application?” nếu chọn yes sẽ tạo RCP project,  chọn no sẽ tạo RAP(chạy trên web) project.

 

  • Tiếp theo bạn chọn Hello Project. Nó sẽ tạo ra cấu trúc giao diện cơ bản nhất cho bạn

 

  • Bước cuối cùng là đặt title, package cho ứng dụng

 

4- Chạy project

Sau khi tạo xong project bạn nhấn phải chuột vào Project: RCPWorkbenchTutorial chọn RunAs/Eclipse Application để chạy thử ứng dụng

 

5- Cấu trúc ứng dụng RCP và cấu hình RCP

Đây là hình ảnh các class được mặc định tạo ra khi bạn tạo Project RCP từ template "Application Contact"

 

Cấu hình ứng dụng:

 Thay đổi code trong class ApplicationWorkbenchWindowAdvisor để đảm bảo thanh Coolbar, PerspectiveBar,.. sẽ được hiển thị trên Workbench:

ApplicationWorkbenchWindowAdvisor.java

Chạy lại ứng dụng RCP:

 

6- Tạo một vài Command sử dụng trong ứng dụng

Command là một lệnh, bạn có thể tạo các class Command để điều khiển một sự kiện nào đó chẳng hạn:

  • Mở file
  • Thoát khỏi ứng dụng
  • Mở AboutDialog

....

Mỗi Command sẽ được đăng ký với một ID nào đó. Và MenuItem, hoặc ToolItem sẽ gọi tới lên thông qua ID.

Để tạo một Dialog ta click New->Other rồi chọn như hình vẻ

 

Sau khi tạo xong ta sử dụng WindowBuilder để thiết kế giao diện

Tạo Extension Point:

org.eclipse.ui.commands

Tiếp theo chúng ta sẽ tạo class Command có ID:

cominit.com.command.about

Nhập vào:

id: cominit.com.command.about

defaultHandler: cominit.com.command.AboutHander

 

AboutHander.java

7- Thiết kế giao diện

 

 

 

Menu:

Để tạo menu bạn chọn tab Extensions->Add button. Rồi chọn như hình vẽ

Nhập vào:

locationURI:  menu:org.eclipse.ui.main.menu

menu:org.eclipse.ui.main.menu ==> là ID xác định vị trí của Menu, nó là một hằng số có sẵn của RCP workbench.  Bạn cũng có thể tự tạo ra các locationURI để định nghĩa vị trí hiển thị MENU.

Tiếp theo tạo Menu "File"

 

Tiếp tục thêm Command "Open" vào Menu "File". Với command = ContactRCP.handerOpenContact (Chúng ta sẽ tự viết command cho nó)

Tiếp tục thêm Command "Exit" vào Menu "File". Với command = org.eclipse.ui.file.exit(là một command có sẵn để thoát ứng dụng)

 

 

Tương tự vậy chúng ta tiếp tục tạo Menu "Help". Tạo Command "About" con của Menu "Help". Nhập vào ID của command sẽ được gọi đến class cominit.com.command.AboutHander có ID: cominit.com.command.about đã được tạo ở trước đây.

Kết quả:

 

Đang tiếp tục hoàn tất ….


One comment

#568
Hai Bui
2017-03-16 05:46
Cám ơn tác giả về bài viết, mà sao không có phần tiếp à bạn

Leave a Comment

Fields with * are required.