Tạo một ngôn ngữ mô tả UI XML pot

61 359 0
Tạo một ngôn ngữ mô tả UI XML pot

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

 Tạo một ngôn ngữ mô tả UI XML Tạo một ngôn ngữ mô tả UI XML Xây dựng UI (giao diện người dùng) và khung làm việc đi kèm trong ngôn ngữ Java Arron Ferguson, Giảng viên, British Columbia Institute of Technology Tóm tắt: Việc viết ra các GUI (giao diện người dùng đồ hoạ) bằng mã chương trình có thể thường dẫn đến các lựa chọn thiết kế lộn xộn, đến lượt nó lại trở nên mờ nhạt giữa các logic nghiệp vụ (business logic) và mã UI. Hãy khám phá cách tạo một bộ thẻ UI XML khai báo với một khung làm việc Java™ đi kèm mà phân tích cú pháp, xác thực, xây dựng, và cuối cùng là liên kết các thành phần GUI được mô tả đến các quy tắc nghiệp vụ vào lúc chạy. Giới thiệu Sự phát triển GUI có thể là một công việc mệt mỏi. Các khung làm việc GUI không phải lúc nào cũng được giải thích rõ bằng văn bản, và khối lượng mã yêu cầu có thể phát triển nhanh chóng, làm giảm tốc độ luồng phát triển. Trên tất cả, các công cụ kéo và thả và các IDE hỗ trợ các khung làm việc GUI này thường có thể hướng nhà phát triển phần mềm GUI về tạo bộ mã không thể quản lý và không thể đọc được. Việc này có thể làm mờ nhạt thêm đường phân cách giữa các quy tắc nghiệp vụ và bộ mã mô tả GUI mà có thể làm cho việc bảo trì của phần mềm đó thêm khó khăn. Các từ chữ viết tắt (acronyms) thường sử dụng  API: Application programming interface - Giao diện Lập trình Ứng dụng.  DOM: Document Object Model - Mô hình Đối tượng Tài liệu.  GUI: Graphical user interface - Giao diện Người dùng Đồ họa.  HTML: Hypertext Markup Language - Ngôn ngữ Đánh dấu Siêu văn bản.  IDE: Integrated Development Environment - Môi trường Phát triển Tích hợp.  JAR: Java Archive - Định dạng tệp nén của Java.  UI: User interface - Giao diện Người dùng  URI: Uniform Resource Identifier - Bộ định danh Tài nguyên Thống nhất.  XML: Extensible Markup Language - Ngôn ngữ Đánh dấu Mở rộng.  XSD: XML Schema Infoset Model - Mô hình Infoset lược đồ XML.  W3C: World Wide Web Consortium - Tổ hợp World Wide Web, Đây là nơi ngôn ngữ UI mô tả trở nên tiện lợi. Một UI ngôn ngữ mô tả “cái gì,” không phải là “ra sao”. Thí dụ, HTML mô tả nội dung hiển thị, không trả về các chức năng dùng để trả về nội dung. Bằng cách không quy định “ra sao” trong các ngôn ngữ mô tả, luồng điều khiển cũng được loại ra. Mặc dù sự mất mát này nghe có vẻ như là một sự hạn chế, nó trở thành một sức mạnh, như một tác dụng phụ — chẳng hạn như sửa đổi toàn bộ trạng thái (thí dụ các biến) hoặc gọi ra các hàm hoặc phương thức khác — được loại bỏ. Việc chọn ra một ngôn ngữ mô tả cũng đưa ra lợi ích của việc tách riêng mã UI khỏi mã ứng dụng. Việc tách riêng này có thể đem lại các lợi ích tương lai chẳng hạn như phân biệt rõ ràng giữa vai trò dự án và vai trò tổ nhóm mà thậm chí có thể giảm bớt chi phí tích hợp các quy tắc nghiệp vụ với nhiều khung nhìn hoặc công nghệ khung nhìn. Ngày nay, có khá nhiều mẫu UI XML mô tả đang sử dụng. Các hệ điều hành. Linux® và UNIX® sử dụng môi trường máy tính bàn GNOME có Glade. Những người dùng Microsoft® Windows® có Ngôn ngữ Đánh dấu Ứng dụng Mở rộng được (XAML), hỗ trợ tập hợp nhiều đặc tính, gồm việc lồng vào mã trong XML. Định dạng MXML của Adobe® Flex® Framework mô tả các GUI cho trình chơi nhạc Adobe Shockwave (SWF) và cả việc lồng vào mã. Xem mục Tài nguyên để có các liên kết đến nhiều thông tin hơn. Một tập hợp các yêu cầu cho một khung làm việc UI mô tả cơ sở trong công nghệ Java có thể là:  Xác thực (Validation): Sử dụng lược đồ XML.  A DOM: Một DOM thông lệ để xử lý các đặc điểm riêng chẳng hạn như duy trì sự đồng bộ trạng thái thành phần GUI và trạng thái nút XML.  Persistence: Sắp xếp theo thứ tự (Marshalling) và sắp xếp không theo thứ tự (unmarshalling) của GUI.  Image data: Lưu lại như dữ liệu Base64.  Swing components: Việc trình bày các thành phần Swing thường được sử dụng nhiều hơn để phát triển GUI. Với các yêu cầu này trong đầu, bây giờ là lúc tạo XML mô tả. XML mô tả Một cố gắng đầu tiên ở định dạng XML, trong Liệt kê 1, trình bày một cửa sổ đơn giản, bảng panel, và nút. Các thuộc tính thấy trong Liệt kê 1 đại diện về cơ bản cho các đặc tính được đòi hỏi, chẳng hạn như hệ tọa độ, kích thước, và các định danh duy nhất, tham chiếu đến các thành phần trong-bộ-nhớ riêng lẻ. Liệt kê 1. Khái niệm XML mô tả <?xml version="1.0" encoding="UTF-8"?> <xui:XUI> <xui:Window id="window_0" name="Hello World" width="300" height="300" x="426" y="282" visible="true"> <xui:GridLayout height="1" width="1"></xui:GridLayout> <xui:Panel id="panel_0" x="0" y="0" name="Hello Panel" width="1" height="1"> <xui:GridLayout height="1" width="1"></xui:GridLayout> <xui:Button x="0" y="0" width="1" height="1" id="button_0" label="Press Me" enabled="true" selected="true" orientation="horizontal"/> </xui:Panel> </xui:Window> <xui:Resource type="java" class="ButtonModel" uri="model.jar"/> </xui:XUI> Lược đồ XML UI XML mô tả này sẽ ánh xạ các phần tử XML sang khung làm việc Swing của Java, đưa ra cái lớn nhất về tính khả chuyển, vì Swing được đảm bảo sẵn có trên tất cả các môi trường thời gian chạy Java hiện thời. Nhiều thành phần Swing sẽ có các phần tử XML đại diện ở định dạng XML. Khung làm việc sử dụng một lược đồ XML. Lược đồ XML cho phép áp đặt sắp xếp thứ tự xác định, thứ bậc, và các kiểu dữ liệu trong một cá thể lược đồ. Đây là điều quan trọng; khung làm việc sẽ chờ đợi một tập hợp các phần tử XML nào đó của các kiểu được quy định và theo một thứ tự riêng. Liệt kê 2 trình bày các phần tử và thuộc tính ban đầu của hệ thống phân cấp trong một cá thể lược đồ XML. Liệt kê 2. Lược đồ UI XML mô tả: Các phần tử ban đầu <?xml version="1.0" encoding="UTF-8"?> <xs:schema elementFormDefault="qualified" targetNamespace="http://xml.bcit.ca/PurnamaProject/2003/xui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xui="http://xml.bcit.ca/PurnamaProject/2003/xui"> <xs:element name="XUI"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="128" ref="xui:Window"/> <xs:element minOccurs="0" maxOccurs="1" ref="xui:Resource"/> </xs:sequence> <xs:attribute name="id" type="xs:anyURI" use="required"/> </xs:complexType> </xs:element> <xs:element name="Resource"> <xs:complexType> <xs:sequence> </xs:sequence> <xs:attribute name="uri" type="xs:anyURI" use="required"/> <xs:attribute name="class" type="xs:token" use="required"/> <xs:attribute name="type" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="java"/> <xs:enumeration value="groovy"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="Window"> <xs:complexType> <xs:sequence> <xs:element ref="xui:GridLayout"/> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="xui:BasicDialog"/> <xs:element ref="xui:OpenFileDialog"/> <xs:element ref="xui:SaveFileDialog"/> <xs:element ref="xui:CustomDialog"/> <xs:element ref="xui:Panel"/> <xs:element ref="xui:SplitPanel"/> <xs:element ref="xui:TabbedPanel"/> </xs:choice> <xs:element minOccurs="0" maxOccurs="1" ref="xui:MenuBar"/> </xs:sequence> <xs:attribute name="id" type="xs:ID" use="required"/> <xs:attribute name="x" type="xs:short" use="required"/> <xs:attribute name="y" type="xs:short" use="required"/> <xs:attribute name="width" type="xs:unsignedShort" use="required"/> <xs:attribute name="height" type="xs:unsignedShort" use="required"/> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="visible" type="xs:boolean" use="required"/> </xs:complexType> </xs:element> <xs:element name="GridLayout"> <xs:complexType> <xs:attribute name="width" type="xs:unsignedShort" use="required"/> <xs:attribute name="height" type="xs:unsignedShort" use="required"/> </xs:complexType> </xs:element> </xs:schema> Hãy quan sát chi tiết lược đồ. Đầu tiên, mô tả XML phải đến trước mọi thứ — thậm chí trước cả các khoảng trống và bình luận, như được chỉ ra theo XML Recommendation (tiến cử XML). Tiếp theo, phần tử schema chứa các phần tử khác: [...]... access to a XUI builder through factory // In this framework the term XUI is going to represent the custom DOM XUIBuilder builder = XUIBuilderFactory.getInstance().getXUIBuilder(); // (1) // Validate and parse (unmarshal) the XML document builder.parse("browser .xml" ); // (2) // Build a custom DOM XUI xui = builder.getXUIDocument(); // (3) // Create 1:1 GUI component mapping to custom DOM xui.visualize();... sau:  Đối với mỗi XUINode (đối tượng trong bộ nhớ đại diện cho bất kỳ phần tử XML nào) được khung làm việc đọc vào, một XUIComponent phải được tạo để bao quanh XUINode  Đối với mỗi XUIComponent đã tạo trong bộ nhớ, một đồng đẳng GUI, chẳng hạn như một javax.swing.JFrame, phải được tạo  Mỗi khi một cá thể XUIComponent — hoặc một trong những kiểu con của nó, chẳng hạn như một XUIButton— được sửa đổi... tất cả các phần tử phải có một vùng tên — hoặc là một tiền tố hoặc một vùng tên mặc định  targetNamespace="http:/ /xml. bcit.ca/PurnamaProject/2003/xui" quy định URI vùng tên đích  Cá thể lược đồ sử dụng XML W3C Schema Recommendation và tất cả các phần tử trong nó (xmlns:xs="http://www.w3.org/2001/XMLSchema")  xmlns:xui="http:/ /xml. bcit.ca/PurnamaProject/2003/xui" xác định một không gian tên nữa và... chứa một sự xáo trộn về các thông báo và việc thuyết minh các đối tượng được cài đặt ẩn (under the hood), đáng được khám phá tiếp theo Phần trung tâm của khung làm việc là ở các bước 5 và 6 Cấu tạo thành phần GUI & nút XML Trong Hình 1, bước 5 tạo một mô hình thành phần Việc này cho phép ghép đôi một nút XML (bây giờ là một đối tượng trong bộ nhớ) với thành phần GUI Việc ghép đôi này đòi hỏi một sự... phép lấy một tài liệu XUI Nếu việc phân tích cú pháp hoặc xác thực thất bại, một XUIParseException sẽ xuất hiện và khung làm việc sẽ hủy bỏ việc nạp tài liệu 3 Builder tạo DOM nơi các đối tượng phản ánh các phần tử XML được đọc vào 4 Một đối tượng Realizer, được gọi ra bên trong bởi đối tượng XUI, là một thể hiện và sẵn sàng thực hiện bước tiếp theo 5 Sự hiểu biết rõ ở chỗ khung làm việc tạo hệ thống... cấp các thành phần GUI dựa trên hệ thống phân cấp của các nút XML đã tạo trước đó (lõi thực của công cụ của khung làm việc) 6 Sử dụng khả năng phản chiếu trong môi trường Java, logic mô hình (một phần của ứng dụng điều khiển UI) được gắn với các thành phần GUI đã được nhận biết Hình 1 Luồng khung làm việc và khung nhìn chi tiết của các bước mà API XUI thực hiện để xây dựng nên một GUI Luồng gọi ra sáu... Resource element) xui.bind(); // (6) // Get root node from the XUI document XUINode root = xui.getRoot(); // Save a copy of the DOM to file (marshal) xui.marshalXUI("browser-marshalled .xml" ); } catch (XUIParseException xpe) { xpe.printStackTrace(); } catch (XUIBindingException xbe) { xbe.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } Các bước trong Liệt kê 4 định nghĩa một sự tách... win) của XUIWindow được cung cấp một tham chiếu đến XUINode của thành phần con mới— lời gọi addChildNode() Liệt kê 6 Cài đặt Phương thức addComponent của XUIWindow public void addComponent(XUIComponent component) throws XUITypeFormatException { if(component instanceof XUIBasicDialog || component instanceof XUIOpenFileDialog || component instanceof XUICustomDialog || component instanceof XUIMenuBar... bộ nhớ (được một API cung cấp) như vậy cho phép các lập trình viên đọc dữ liệu XML vào các đối tượng trong bộ nhớ (gọi là unmarshalling), thao tác dữ liệu, và sau đó viết dữ liệu trở lại thành XML (gọi là marshalling) DOM nổi tiếng và thường sử dụng nhất là W3C DOM Hình 1 minh hoạ các bước sau đây 1 Một Builder được lấy ra từ một BuilderFactory 2 Builder trước tiên đảm bảo rằng tài liệu XML đã được... Java mà URI của một tài nguyên (một JAR, trong trường hợp này) chứa các lớp Java được biên dịch mà có thể được nạp vào thời gian chạy và được liên kết đến Tài nguyên này dựa vào một lớp riêng (giá trị của thuộc tính class mà sẽ được gọi ra, về bản chất đưa ra một lớp được biểu hiện ra mà sẽ trả lời tất cả các sự kiện được tạo từ GUI Phần tử Window:  Chứa một chuỗi của một GridLayout, một sự lựa chọn .  Tạo một ngôn ngữ mô tả UI XML Tạo một ngôn ngữ mô tả UI XML Xây dựng UI (giao diện người dùng) và khung làm việc đi kèm trong ngôn ngữ Java Arron Ferguson, Giảng. Consortium - Tổ hợp World Wide Web, Đây là nơi ngôn ngữ UI mô tả trở nên tiện lợi. Một UI ngôn ngữ mô tả “cái gì,” không phải là “ra sao”. Thí dụ, HTML mô tả nội dung hiển thị, không trả về các chức. nhiều hơn để phát triển GUI. Với các yêu cầu này trong đầu, bây giờ là lúc tạo XML mô tả. XML mô tả Một cố gắng đầu tiên ở định dạng XML, trong Liệt kê 1, trình bày một cửa sổ đơn giản,

Ngày đăng: 07/08/2014, 10:22

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan