Skinning Techniques in Web Applications
Transcription
Skinning Techniques in Web Applications
Skinning Techniques in Web Applications „Master Thesis of:” Amagoia Apaolaza Ibañez Semester: 10.th Advisor: Prof. Dr. Jacques Calmet Tutor : Dipl. Math. Klaus Beuse Institute for Algorithms and Cognitive Systems University of Karlsruhe (T.H.) “Hereby, I declare this thesis to be the work of my own, written independently. All the sources and references are correctly cited with complete references to their sources.” Berlin, 30 March 2006 Amagoia Apaolaza Gratitude: First of all, I would like to thank my advisor, Prof. Dr. Jacques Calmet, for having accepted to advise my diploma thesis and having helped me to carry it out. Secondly, I thank the whole ICN (Information and Communication Networks) department of SIEMENS AG, for firstly proposing me a very interesting topic for my diploma thesis and for having also offered me the chance to doing it for them, putting all their server installations and web applications at my disposal. I am particularly grateful to Klaus Beuse, who has been the main tutor of my work in Siemens, to Eckhard Mauersberger, who has helped me especially with the practical part of the diploma thesis, to Henry Hübler and Thomas Schneider, for having read my work and having helped me every time I needed it during the whole time I have been working in my diploma thesis. I would like to thank the rest of people of the department where I have been working, for having also contributed to make the time I was at Siemens very pleasant. 1 Introduction: Overview 4 0 Table of contents 0 TABLE OF CONTENTS ...................................................................... 4 1 INTRODUCTION.................................................................................. 9 1.1 Overview ........................................................................................ 9 1.2 Motivation ....................................................................................11 1.3 State-of-the-Art............................................................................14 1.4 Overview of the expected results .............................................15 2 EXPOSITION OF THE TECHNIQUE OF SKINNING .......................17 2.1 Introduction to Skinning technique..........................................17 2.1.1 Definition of Skinning ............................................................................... 17 2.1.2 Model-View-Controller (MVC) Design Pattern.......................................... 18 2.1.2.1 MVC for Web Sites ......................................................................................... 20 2.1.3 Skins and Themes ................................................................................... 21 2.1.4 Graphical examples of a skinnable program ............................................ 22 2.1.5 Groups of Skins and Themes .................................................................. 23 2.1.6 Where and why is Skinning used? Areas of application of Skinning......... 25 2.1.7 Technique of Skinning ............................................................................. 27 2.1.7.1 What must be done to skin an application? ................................................... 28 2.1.7.2 How can all these Skins and Themes be obtained?...................................... 28 2.1.7.3 How can they be installed? ............................................................................ 29 2.1.7.4 Which kind of programs must or could be used?........................................... 29 2.1.7.5 Conclusion ...................................................................................................... 29 2.1.8 Advantages and disadvantages of Skinning ............................................ 30 Skinning Techniques in Web Applications 1 Introduction: Overview 2.1.9 Limitations of Skinning: Existing patents .................................................. 33 2.1.9.1 Patent 1........................................................................................................... 33 2.1.9.2 Patent 2........................................................................................................... 34 2.1.9.3 Patent 3........................................................................................................... 34 2.2 Deployment of Skinning Methods ............................................35 2.2.1 Skinning methods: Introduction................................................................ 35 2.2.2 Skinning methods: Classification and description .................................... 35 2.2.2.1 Method 1: Skinning method for java coded web applications ....................... 37 2.2.2.2 Method 2: Skinning method for web sites to be skinned by end-users ......... 38 2.2.2.3 Method 3: Skinning method with the use of XML technologies..................... 41 2.2.2.4 Method 4: Skinning method for ASP.NET web applications ......................... 43 2.2.2.5 Method 5: Skinning method for web applications based on XML and CGI... 44 2.2.2.6 Method 6: Skinning method with the skinnable classes of Java Swing ........ 45 2.2.2.7 Method 7: Skinning method with the AWT classes of Java........................... 45 2.2.3 2.3 Advantages/Disadvantages of the methods ............................................. 47 Deployment of Skinning Tools..................................................49 2.3.1 Skinning tools: Introduction...................................................................... 49 2.3.2 Possible alternatives to classify the skinning tools ................................... 49 2.3.2.1 Alternative 1 for a classification: General or specific for a program .............. 50 2.3.2.2 Alternative 2 for a classification: Functionality ............................................... 50 2.3.2.3 Alternative 3 for a classification: Operating system or framework................. 50 2.3.2.4 Alternative 4 for a classification: Programming language.............................. 50 2.3.2.5 Alternative 5 for a classification: Proprietary or standalone tools.................. 51 2.3.2.6 Alternative 6 for a classification: Areas of application of Skinning ................ 51 2.3.2.7 Alternative 7 for a classification: Appliance of MVC model ........................... 51 2.3.3 2.4 3 5 Skinning tools: Overview.......................................................................... 51 Typical boundary conditions (performance, security)...........55 EVALUATION AND APPLIANCE OF SKINNING AT AN EXISTING WEB SERVER .........................................................................................56 3.1 Introduction .................................................................................56 Skinning Techniques in Web Applications 1 Introduction: Overview 3.2 Free-Call-Button: Description of the web application............58 3.2.1 Description of the work environment ........................................................ 58 3.2.2 Technical aspects of FcB......................................................................... 60 3.2.3 HTML-pages of FcB................................................................................. 60 3.2.4 Architectures of FcB ................................................................................ 62 3.2.4.1 Architecture 1.................................................................................................. 63 3.2.4.2 Architecture 2.................................................................................................. 63 3.2.4.3 Architecture 3.................................................................................................. 64 3.2.5 3.3 Existing solution to customize FcB........................................................... 65 Skinning Model: how to customize a Web Application .........67 3.3.1 Considerations to decide an adequate solution........................................ 67 3.3.2 Description of the solution........................................................................ 68 3.3.2.1 The HTML Template....................................................................................... 71 3.3.2.2 The CSS file and support of browsers ........................................................... 73 3.3.2.3 The XML file.................................................................................................... 74 3.3.2.4 The Servlet...................................................................................................... 86 3.3.2.5 Solution particularized for the three architectures ......................................... 90 3.3.2.6 Graphical examples of the solution ................................................................ 91 3.3.2.7 Skinning the applet ......................................................................................... 95 3.3.2.8 Other existing HTML sites in the FcB application ........................................ 100 3.3.3 What must the provider do to customize the sites of a new client .......... 102 3.3.4 Possibilities and limitations of this method ............................................. 103 3.3.4.1 Possibilities: What can be skinned............................................................... 103 3.3.4.2 Limitations: What can not be skinned .......................................................... 104 3.3.5 Problems and difficulties during the practice .......................................... 105 3.3.6 Advantages and disadvantages ............................................................. 107 3.3.6.1 Advantages................................................................................................... 107 3.3.6.2 Disadvantages .............................................................................................. 108 3.4 4 6 Conclusion and evaluation......................................................109 CONCLUSION AND ACHIEVEMENTS OF THE THESIS .............110 Skinning Techniques in Web Applications 1 Introduction: Overview 7 4.1 Summary of the master thesis ................................................110 4.2 Achieved results .......................................................................115 4.3 Possible points of extension...................................................117 5 GENERAL INFORMATION.............................................................119 5.1 Abbreviations ............................................................................119 5.2 Glossary .....................................................................................120 5.3 References.................................................................................124 5.3.1 Links ...................................................................................................... 124 5.3.2 Literature ............................................................................................... 126 5.4 6 List of figures, tables and lists................................................127 5.4.1 Figures .................................................................................................. 127 5.4.2 Tables.................................................................................................... 128 5.4.3 Lists ....................................................................................................... 129 APPENDIX .......................................................................................130 6.1 Description of commercial tools.............................................130 6.1.1 Introduction............................................................................................ 130 6.1.2 MICROSOFT: ........................................................................................ 131 6.1.2.1 Xheo.WebSkin .............................................................................................. 131 6.1.2.2 ActiveSkin ..................................................................................................... 134 6.1.2.3 Skinboxer ...................................................................................................... 135 6.1.2.4 EZSkin .......................................................................................................... 137 6.1.2.5 ExSkin........................................................................................................... 137 6.1.2.6 DirectSkin (Stardock tool)............................................................................. 138 6.1.2.7 Object Desktop (Stardock tool) .................................................................... 138 6.1.2.8 WinCustomize (Stardock tool)...................................................................... 140 6.1.3 Platform independent: programming language: C++ and Delphi............ 140 Skinning Techniques in Web Applications 1 Introduction: Overview 8 6.1.3.1 Skinux ........................................................................................................... 140 6.1.3.2 TMS Skin Factory ......................................................................................... 142 6.1.4 Platform independent: programming language: JAVA............................ 143 6.1.4.1 Action Servlet................................................................................................ 143 6.1.4.2 SkinLF (Skinapplet, Skinit) ........................................................................... 144 6.1.4.3 Pajes ............................................................................................................. 145 6.1.5 Platform independent: programming language: Visual Basic ................. 146 6.1.5.1 6.1.6 vbAccelerator NeoCaption Component ....................................................... 146 Platform independent: application dependent tools................................ 148 6.1.6.1 SAP Editor .................................................................................................... 148 Skinning Techniques in Web Applications 1 Introduction: Overview 9 1 Introduction Outline: In this introductory chapter, an overview of the content of the master thesis, together with the motivation of having written it and the expected results are presented. 1.1 Overview The purpose of this master thesis is to make a complete report of the relatively new concept of Skinning. It will be presented not only a theoretical study, but also a practical one, so that all the knowledge acquired in theory can also be tested and demonstrated in an existing web application. Basically, two main blocks constitute the present document: The theoretical study: Exposition of the technique of Skinning (Chapter 2) The application to practice: Evaluation and appliance of Skinning at an existing web server (Chapter 3). Besides these principal chapters, two more ones complement the content of the thesis: this first chapter that introduces the topic, and chapter 4, which includes a brief summary of the content of the whole document, a conclusion with all results that have been achieved during the period of work, and also an exposition of the possible points of extension of this master thesis. The last two chapters contain only the general information (chapter 5) such as the glossary, the abbreviations list, the references (links and literature), lists of tables and figures in the master thesis, and finally the appendix (chapter 6) that includes some additional information related mostly to the tools existing on the market. The objective of the theory is to present the topic of Skinning in its whole sphere of activity. In general terms, chapter 2 is divided in four main sections, which can be considered as the State-of-the-Art of Skinning, because they expose what is till now done in reference to the topic. However, it must be noticed here that so an exposition of this issue, in the way that it is Skinning Techniques in Web Applications 1 Introduction: Overview 10 presented in this master thesis had been never made before, due to the newness of the subject. The following points describe the four sections of chapter 2: An introduction to the topic: definition, areas of application, advantages and disadvantages of utilization, existing patents, etc. (section 2.1) The presentation of a set of methods to skin an application (section 2.2) The exposition of the existing skinning tools on the market (section 2.3) Typical boundary conditions (performance, security) of the presented skinning methods and tools (section 2.4) The practical part of the master thesis is based on an Industry Example, where the technique of Skinning has been applied to customize a certain web application. The objective of this part of the thesis is to present a suitable skinning method for web applications. It will be tested in a certain environment of work, but it is also expected to demonstrate that it is not only appropriate for the conditions in which it has been tested, but also for any other web application of any other characteristics. The main sections of this chapter are: Introduction to the Industry Example (section 3.1) Description of the web application to work with (section 3.2) Description of the proposed Skinning method (section 3.3) Conclusion and evaluation of the presented method (section 3.4) Finally, chapter 4 presents an interesting summary of the whole work related to the master thesis, together with the general conclusions, and the exposition of those points of possible extension of the topics that have been dealt along this master thesis. Skinning Techniques in Web Applications 1 Introduction: Motivation 1.2 11 Motivation Nowadays, the new tendency of produced software with a Graphical User Interface (GUI) is to offer its users the possibility of modifying it with their own style. This recent feature of programs makes them much more attractive for end-users because the vast majority likes to differentiate him/herself from everybody else, as it usually occurs in the ordinary life. The question now should be how this attracting characteristic of software-programs can be achieved and it is there where the concept of Skinning comes into play. There are plenty of new applications that make it feasible to change the appearance or layout of their user interface and offering it, means a factor of success against their competitors, just because users like it. Moreover, it will be in this master thesis demonstrated that Skinning is not only a fashion feature, as it at first can seem, but also a necessity for the user (for instance: choice of the most appropriate colors for blind people, etc.). These are some of the most significant reasons to consider Skinning as a matter of study; however there are of course other relevant causes of motivation for this master thesis, which are cited in the next list (List 1.2.1) and commented in the following paragraphs. First of all, Skinning is a relatively recent issue and there are almost no research works about it. Though there are a lot of programs that use this technique, little documentation exists that explains how they achieve it. This master thesis presents therefore, a complete exposition of the subject, which had never been done before. Secondly, it is the first time that a deep study and data collection about all possible skinning methods (section 2.2) and tools (section 2.3) are presented. Neither a classification of these methods, attending to different criteria, nor a deployment of commercial existing tools, like the one presented in the current master thesis, have been shown before. Unfortunately, no standards and literature exist about the specific topic of Skinning, which supports even more the fact that no proper technology about it has been yet created. Although some research works about it can have been done, they have been still not important enough to make Skinning a standard technology. Therefore, it is still considered as an absolute young topic, waiting to be developed and deployed in software that needs an advanced GUI. The fact that there is no accurately well-organised documentation relating to the topic of Skinning, as a subject of research, could seem to be a difficulty to carry out this work, but it is actually another relevant reason of having written about it. Skinning Techniques in Web Applications 1 Introduction: Motivation 12 The actuality and newness of Skinning: it is an up-to-date technique The variety of functionalities of Skinning: it is not only a matter of pretty layouts but the way to add helpful and useful properties to GUIs (suitable colors for blind people, etc.) The lack of research and standard-works about the technique of Skinning: it will be the first time that so an exposition of the technique of Skinning is done The classification of skinning methods and exposition of commercial tools that it is here presented, has been never done before The customization and personalization of any GUI can be achieved with the use of Skinning Introduction of a new area of application of Skinning that does not take place at the end-user side, but between the provider and the business customer (B2B) Skinning will also play an important role in the internationalization and localization of applications List 1.2.1: Reasons of interest in writing about Skinning Moreover, what is mostly known about Skinning up to now references mostly to the capability of the end-user to modify the layout at run-time (personalization), but there is also another interesting and important use of case to take into account. Therefore, in the current master thesis, it will not be uniquely considered this attractive (especially for the end-user) aspect of Skinning but also other aspects of its utility, which make the development of flexible and customizable software possible. As a general example, a software-developer could wish to create a customizable application to offer a different layout to every of his/her clients. Skinning would be here again a suitable solution, although it is not the end-user, who alters the external appearance of the application, but the developer him/herself. The previous example introduces indirectly the second area of application, which could even be a new branch of research in the Skinning topic, and that is also here firstly presented. It has relation to the evident desire of a corporation of having its personal style (Corporate Identity), which is, to some extent, connected to the cited case of the developer customizing his/her own application for each of his/her customers. When big companies buy any software-product or application, they like that the products are already outfitted in their own Skinning Techniques in Web Applications 1 Introduction: Motivation 13 branding, and not in the one of the developers-enterprise. That is why flexibility is one of the foremost product design goals in the development of all new applications. Where flexibility takes place, should also be Skinning involved. This new point of view is also expatiated in this master thesis. In fact, the Industry Example exposed in chapter 3, adjusts itself perfectly to this new area of development of Skinning. The example will be implemented in one of the Web Services of the company SIEMENS AG and also tested in one of its servers. The department in charge of the new Multimedia products of SIEMENS has developed different network applications (SURPASS hiQ4000-products) to be utilized by a large number of customers. The objective is to design the web pages that are part of the Web Service, with the personal style of each customer (customization). Due to the huge amount of clients, the task of customizing every of them could be extremely tedious. The use of any of the methods or tools that implement the technique of Skinning could be the solution to this problem. Either the choice of the best one from the presented methods and tools, or the adaptation of one of them for this certain Industry Example, is also an interesting point to consider in the master thesis. It could be also possible that none of the methods or tools from the theory were suitable to solve the problem, and a new model had to be created. Furthermore, the matter to be solved for SIEMENS AG is not only related to the images, colors, and GUI, but also to the language (internationalization and localization) of the application. The Web Services of SIEMENS will be offered all over the world and they must be therefore available in different languages. The use of these two items is already widespread in the development of software, since the companies try more and more to come on to the international market. The words are so often used that many authors have begun to call them in a shorter way: i18n and l10n are the abbreviations of internationalization and localization respectively. The numbers 18 and 10 indicate the number of letters that are found between the first and the last letter of the word, that is, in the word “internationalization”, there are 18 characters between the “i” and the “n”, while in “localization”, there are just 10 letters between the “l” and the “n”. The use of Skinning in order to achieve internationalized and localized software is another point to be evaluated in this thesis. As it will be demonstrated in chapter 3, the i18n and l10n of an existing web application can be one of the most problematic matters to be handled in the practice. Finally, once that all different reasons of motivation have been summarized, the why and wherefore of making this master thesis is still more obvious. It must be only put together all new ambits, in which Skinning could be present, with the absence of research up to now about this topic, to demonstrate the huge interest in writing about it Skinning Techniques in Web Applications 1 Introduction: State-of-the-Art 1.3 14 State-of-the-Art In this section, I will briefly describe the State-of-the-Art of the technique of Skinning. Chapter 2 could be considered, to a large extent, as the State-of-the-Art because, as it was already mentioned in the first section (1.1) of this chapter, all that has been done till now in relation to the topic of Skinning will be exposed in chapter 2. Anyway, what is known and mostly used in relation to the topic of Skinning is presented in the following list (List 1.3.1): A definition of the concept of Skinning has been more than once presented, but an official definition has not been written yet Use of Skinning in different well-known SW applications in PC (Browsers, Desktops, MP-3 Playes, etc), which are designed to be skinned especially by the end-user Existence of particular tutorials to learn how to skin some of the well-known skinnable programs Existence of tutorials to learn how to create and design the Skins for a certain program Existence of a set of commercialized tools to skin certain applications Set of articles and reviews in Internet about the topic of Skinning. Some of them suggest different ways to achieve a skinnable application, not only in PC but also on the Web List 1.3.1: Summary of points of the State-of-the-Art of Skinning I do not want to extend this section much more now because the whole chapter 2 will present all these aspects in detail. I only wanted to make a short touch to the State-of-the-Art in this introductory chapter, before starting with the theoretical study, in order to give the reader an idea about what can be found in the actuality about Skinning. Skinning Techniques in Web Applications 1 Introduction: Overview of the expected results 1.4 15 Overview of the expected results This section outlines the objectives and expected results of the master thesis. The following lists make reference to the expected results of theoretical (List 1.4.1) and practical work (List 1.4.2) respectively. Complete exposition of the topic of Skinning with the categorisation of all the found information: it is expected that any reader of the master thesis becomes the information that he/she may need about Skinning (features, applications, advantages and disadvantafes, boundary conditions, etc) Exposition of different skinning methods classified by different criteria and described in full detail Overview of existing skinning tools on the market and description of their main features and functionality Suggestion of a suitable method/tool to be applied in the Industry Example of Siemens List 1.4.1: Expected results from the theoretical work Presentation of a method/tool that is able to skin any web application Use of this method in a certain Web Service of Siemens and its evaluation Customization and Personalization of the Web Service with the use of the implemented method: it is expected that the web application to work with becomes skinnable, so that each customer can have the UI he/she wishes Internationalization and Localization of the web service with the use of the implemented method: it is expected that the web application can be adapted to any country, which means the change of the language and the adjustment of all those characteristics that are typical from a certain place of the world (way of writing the date, direction of writing etc.) List 1.4.2: Expected results from the practical work Skinning Techniques in Web Applications 1 Introduction: Overview of the expected results 16 With these previous two objectives lists finishes this introductory chapter and starts the body of the master thesis, first with the theory and next with the practice. In chapter 4, I will make reference again to all these expected results, with the appropriate comments about them and a more wide evaluation about what I achieved, which problems and difficulties I had, and the set of points that could be extended in future works of research about this topic. Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 17 2 Exposition of the technique of Skinning Outline: This chapter presents the first main block of the document and contains the whole theoretical study and research of the master thesis. 2.1 Introduction to Skinning technique The purpose of this first introductory section is to give a general overview of all what the concept of Skinning involves. The definition and explanation of related terms, a list of examples, and areas of application of Skinning, together with a table of advantages and disadvantages of its utilization, complete this section. 2.1.1 Definition of Skinning In principle, there is no standard definition of the term Skinning and neither a common one between all those sources where the concept is defined. Therefore, the explanation that will be presented here is just the conclusion of considering the existing information about them. The meaning of the term Skinning can be assumed from the word itself: it refers to the ability of the application to change its skin, that is, to alter the appearance of it. Skinning is till now considered to affect mostly the layout of the applications but also in some extends, the functionality or behaviour of them. The use of the word Skinning in skinnable software makes always reference to the modification of the GUI and in some cases, not only the images and sounds, but also the text (language) may be included in the group of skinning elements. Taking into account all these considerations, my definition for the term “Skinning” is the following: “Skinning is the technique that makes it possible to modify automatically the complete layout of a software application. This means that each user of the application can choose a different GUI at runtime or that the developer him/herself can change the appearance of his/her program without having to add any line of code. “ Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 2.1.2 18 Model-View-Controller (MVC) Design Pattern Since the point of view of the implementation, it is to notice that where Skinning takes place, the content management and the presentation management must be handled separately. According to the necessary division between this two fields in every context of Skinning, I have determined to apply in the whole description of the theoretical work, one of the standard design patterns for User Interfaces, which casually adapts itself perfectly to this necessity: the well-known Model-View-Controller (MVC) design pattern, where the business logic (Model) is separated from the presentation (View). Between both of them must be something (Controller), which interconnects the other two and allows the communication with each other. The following figure (Figure 2.1.1) shows a graphical representation of this idea: Figure 2.1.1: Representation of the MVC design pattern The reason because of which, I have decided to use a design pattern as support of the technique of Skinning, is just the search of simplicity and clarity. The fact that this pattern already exists allows explaining the Skinning concept more clearly and therefore, it permits a better understanding for the readers of this master thesis. Nevertheless, the utilization of this standard model in concrete should not be absolutely necessary to add the feature of skinnability to a program but, as already written, a suitable way to represent what is actually a requirement in the process of Skinning. Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 19 In the following subchapters, where the skinning methods (section 2.2.2) and tools (section 2.3.3) are presented, some references to this design pattern will be mentioned again. For instance, in each of the presented methods, the three different components of the model will be considered separately and the involved technologies in each method will be also classified according to its functionality within the MVC-model. On the other hand, in relation to the tools, in some of them the separation between the three components of MVC model is obvious and easy to represent, but not all tools give the chance of being classified within this pattern, mostly because of the lack of information about the technologies they use. Therefore, since it will be a significant point in the rest of the master thesis, a brief description of this model is here presented: The MVC-model consists in dividing the code in three parts: The data model - the component that handles data in the application The view - the component that presents the data to the user The controller - the component that mediates between the model and the view The MVC abstraction can be graphically represented as follows: Figure 2.1.2: Mode of operation of the MVC design pattern (Picture from source: [7.6], section 5.3.1) How it works (source [7.6], section 5.3.1): Events typically cause a controller to change a model, or view, or both. Whenever a controller changes a model’s data or properties, all dependent views are automatically updated. Similarly, whenever a controller changes a view, Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 20 for example, by revealing areas that were previously hidden, the view gets data from the underlying model to refresh itself. Skinning should mostly affect the view, so that when a new skin is chosen, a new view is presented and the data model must not be changed. This way the user interface code is decoupled from the code that handles data, and another component, the controller, is used to provide the interaction between the two. The benefits are the followings: Multiple views are possible from the same data model (it is exactly what Skinning tries to achieve in an automatically way) Flexibility and re-use (flexibility and re-use are both objectives of using Skins) 2.1.2.1 MVC for Web Sites Web Sites are, for example, a wide area of application of this pattern. It is more and more common that designers and developers work separately, which implies that a proper separation of the content and the presentation must be done. When creating a web application, it must be dealt with two things: the code (application logic) and the look&feel (HTML pages). Traditional approaches use two basic methods to deal with both of them: Code that generates the HTML output - servlets (or CGI scripts etc.) Code that is embedded in HTML - JSP (or ASP, PHP etc.) There is no doubt that the use of a template engine (for example, see in section 5.3.1 WebMacro [7.8] or Velocity [7.9]) provides an advance of the programming model - you can separate Model (data representation), View (HTML template) and Controller (manages the application flow). In MVC model, there is almost no code in the HTML templates - just the simple script of the template engine, which can be easily understood by the web designer, and there is no HTML embedded in the program (servlet) code. See the references (from [7.1] to [7.10] in chapter 5.3.1, and literature [10], [11] in subchapter 5.3.2) for more information about MVC. Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 2.1.3 21 Skins and Themes Once the term Skinning has been defined in section 2.1.1, two of the related terms to this technique, Skins and Themes, will be also explained. The process of Skinning consists actually in replacing any of these Skins/Themes with another one or just in adding or eliminating Skins/Themes from the layout. They allow the user to configure the GUI by choosing different categories of Skins. The difference between the respective definitions of these two terms (Skins and Themes) may be a bit ambiguous. They could be even replaceable with each other in some cases, therefore the fact of differentiate them, is more a matter of opinion than a technical one. In this master thesis, I have presented a small difference in my definitions, though both have the same functional and technical meaning, as it can be read in the following paragraphs: “Skin is the set of elements that includes everything necessary to change the look-andfeel of a particular GUI of a certain application. They could include bitmaps for each element in the layout of the application (buttons, title bars, sliders, radio buttons, check boxes, borders…). “ “Theme is also a set of elements, but it consists in individual files, which are usually ordered in directories. They are used for general things above the operating system layer (for example: the color-patterns of operative systems, background images, etc). On the contrary, Skins are usually created even for a certain program and they can mostly only work properly with it” Though this small difference, as it was already mentioned before, sometimes the two concepts are not properly differentiated and it occurs that a term is used to make reference to the other, for example, in Netscape it is called Theme, what in any other case would be named Skin. Anyway, the difference between both terms is not so relevant for the explanation of the process of Skinning and neither for the use of it; therefore, it is neither an essential point of the master thesis. Besides, examples of both categories (Themes and Skins) are presented in the document (section 2.1.5). It is only necessary to know that Skins and Themes must be created and used, since both of them are necessary in the process of Skinning. Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 2.1.4 22 Graphical examples of a skinnable program Finally, to complete this introductory section, a couple of pictures are presented to expose these concepts in a more illustrative way. I have decided to use some examples from the MP-3 Player Winamp, which is one of the most well known skinnable programs: Figure 2.1.3: Normal aspect of Winamp (From source [2.8], section 5.3.1) Figure 2.1.4: One of the thousand existing Skins for Winamp (From source [2.8], section 5.3.1) Figure 2.1.5: Graphical example of Skins in Winamp (From source [2.8], section 5.3.1) Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 2.1.5 23 Groups of Skins and Themes In the following table (Table 2.1.1) the different existing examples of Skins and Themes on the market are presented and grouped together, attending to the kind of application or program for which they are created. This list represents the variety of programs in which Skinning can be applied and gives also a good idea of the wide use of it, showing all cases in which Skins and Themes are respectively used. For specific programs such as Winamp, Trillian, ICQ, etc, Skins are utilized, whereas for general applications, for instance, those relative to operating systems, the term Themes is used, with some exceptions like, for example, the browser Netscape, where Skins are called Themes. Another characteristic of Skins and Themes, which is also appreciable on the table (Table 2.1.1), is that some of them have been particularised for a specific part of the layout of an application, in such a way, that even attributes to name them have been created. These complete names (hotbar Skins, Surfer Themes, etc.) are widely used to recognise the kind of Skin/Theme, to which they refer. All examples of the table (Table 2.1.1) are a small representation of all those web sites (see chapter 5.3.1, links [1.1]-[1.8]), which offer an amount of Themes or Skins to download and allow the users to customize their applications. They include also the last news about anything that makes reference to the topic of Skinning, especially about all those that make reference to the new methods of Skinning (new specific tutorials) and existence of new Skins for any skinnable program. The last two row entries of the table differentiate themselves from the rest of the examples because there are not certain Skins or Themes created particularly for them, as in the other examples. However, I have found it convenient to add them at the end of the table, since they are also possible skinnable applications; firstly private skinnable websites can be already found in Internet (see examples in section 5.3.1, links [9.1], [9.2] and [9.3]), and secondly, there are already implemented-classes or functions for some programming languages, which facilitate or provide the Skinnability in those SW-applications that are coded with them. Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique Skins/Themes for: Skins or Themes Skinnable examples Operating Systems Themes Linux Desktop 24 Description One of the first expression of the process of Windows Skinning was precisely the possibility of modifying Mac the layout of operating systems Desktop Themes Desktop of Windows, They provide a way of changing the manner a Screensavers Linux, Mac, etc. Wallpapers Litestep Screensavers, wallpapers and icons can also be Icons Talisman considered as skins/themes, because they allow the Skins for specific Hoverdesk user to change the appearance of his/her computer. programs that make a EVWM They are usually classified as Themes. Desktop skinnable Nextstart computer looks and sounds. Outsider99 StyleXP Screenshots WindowBlinds DesktopX Browsers 1) Hotbar Skins 1) Internet Explorer 1) They are used to change the look of IExplorer 4 Surfer Themes and 5 browser bar 2) Browser Skins 2) Neoplanet 2) Neoplanet: one of the first skinnable browsers 3) Browser Themes 3) Netscape, Mozilla 3) Here, the term Themes is used for what actually should be named Skins Chat programs Skins Trillian, ICQ, Yahoo, ICQ: chat program that uses ICQPlus to modify its Messenger look and feel Trillian: SkinXML technology (similar to Winamp) MP-3 programs Web sites and Skins Skins portals Winamp, Sonique, Winamp is one of the first MP-3 players that allowed Freeamp giving a brand new look to the program. SAP portals, private They allow the end-user to modify the web site they skinnable sites visit (they are private skinnable sites that someone hat implemented applying one of the existing methods to do it). The portals refer to the creation of customized Portals, as for instance, SAP does. They customize their SW for each of their customers. Programming Skins Java-Swing, Delphi, There are some programming languages that have languages with (No already created C, C++ libraries skinning Skins exist; for each skinnable applications. libraries/classes application new ones Specific tools exist even to make it easier. They will must be created) be exposed in section 2.3.3. with implemented methods to code Table 2.1.1: Examples of Skins and Themes Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 25 Once that so a long list of examples is presented, there are some important technical questions to answer, in order to explain the process of Skinning and also the way these examples of programs operate with its respective Skins or Themes. I have chosen the following technical matters (List 2.1.1) as the most interesting ones: What must be done to skin an application? How are all these Skins and Themes created? How can they be installed? Which kind of programs must or could be used? … List 2.1.1: Technical questions about the process of Skinning These four questions will not be answered just now, but in section 2.1.7. Firstly, I have decided to expose the areas of application of Skinning (section 2.1.6) in order to situate better all possible examples of this technique and just afterwards, I will present a general sketch of the answers to the previous technical questions. In the rest of subchapters of this theoretical part, especially in those, in which the existing Skinning methods (section 2.2) are classified and skinning tools (section 2.3) are outlined, a better and more detailed description of the process of Skinning is explained. 2.1.6 Where and why is Skinning used? Areas of application of Skinning As it was presented in section 2.1.1, a set of well-known programs offers their users the possibility to customize the appearance of their GUIs. Therefore, Skinning is mainly used by the end-user of the application. None of the common areas of utilization refers to Skinning as a necessity, but as a way for the end-users to enjoy themselves personalizing their software. All this existing tools that allow for example to skin the desktop, browser or any other specific program have this same function. Up to now, one of the main reason of using Skinning has been basically the desire of users to have their own GUIs absolutely different to the ones of the rest of users and the possibility of offering an attractive user interface to the customer, but other functionalities of Skinning have been barely mentioned before. One of the objectives of this master thesis is precisely to find a new utility of Skinning and demonstrate it in any of the web server examples provided by SIEMENS ICN. The reason for SIEMENS, in this case, to use Skinning is to find an easy solution to its problem of customizing its products SURPASS for each customer. On account of this, the Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 26 Skinning process has here a complete new area of application, which is entirely different from what has been till now understood as Skinning. Firstly, because of its functional objective and secondly, due to the use of Skinning in a B2B relation within a web server technology and not direct for the end user (B2C) or in a simple B2B relation for a SW application on PC, as it is till now mostly being applied. Furthermore, there is no standard literature yet about how to implement this idea at a web server example. Given all these considerations about Skinning, one might naturally ask him/herself if it makes sense to change the visual design of professional software. The answer is yes. Companies are increasingly relying on business software to generate parts of their websites and intranets, supplying value-added access and information to employees, customers and partners by linking their entire back-end system to a web interface available from any computer connected to the Internet. For this reason, the front-end must reflect the branding of the company whose data is being interacted with. All this is happening increasing over the Internet and within corporate intranets; for this reason, the visual design of software running in a Web environment must respond accordingly. In general terms, on account of all this previous references, two different wide areas of application of Skinning are considered: “Provider” area: Application of Skinning Business-to-Business (B2B). Use of Skinning between providers and their business-customers. In this case, Skinning process would allow the customization (branding, configuration, and sub-functions), internationalization and localization of applications. As it was already mentioned above, this area, within a web environment, will be a new utility of Skinning that is studied in this master thesis. The Industry Example of Siemens pertains precisely to this area of application. “End-Customer” area: Application of Skinning Business-to-Consumer (B2C). Use of Skinning to permit the end-customer to personalize his/her GUI (personalization). The end-customer is considered as the end-user and both terms will be in this master thesis indifferently used. This area of utilization is the most extended one in the world of Skins and Themes and the majority of existing tools and examples of Skinning make actually reference to it. For example, the Table 2.1.1 contained almost only examples to this area of application. There are not default Skins or Themes for the B2B-area, since the point of view that this B2B-relation will be always more specific as the B2C relation, and the creation of common Skins/Themes and publication of Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 27 them on the Internet has no sense. As it was also already written (section 1.2), the goal of using Skinning in these cases is to provide the applications with the attracting feature, of allowing the end-users adapting the user-interface to their necessities and liking. The following figure (Figure 2.1.6) shows both areas of application in a schematic way: Figure 2.1.6: Representation of B2B and B2C relations A third possible area, which would make Skinning still more attractive for developers and SW companies, is that the business customers could also modify the GUI of the applications that they have bought to providers, and they would also be able to customize the GUIs for their end-customers. It is actually a mixture of both areas (B2B/C when it is not the end-user himself, who skins the application, but the business customers, who personalize the GUI for the end-users). Therefore, it has not been added to the previous classification, since it cannot be considered as a new area of application, but as a mixture of the other two. 2.1.7 Technique of Skinning In this section, the main objective is to outline the answers to those questions, which were already posed (List 2.1.1). I have called this section as the technique of Skinning, because it will be here explained all that is till now understood with this word for the most skinnable programs existing on the market. However, this does not mean, that what in the following paragraphs is presented, must be the only way to achieve skinnability in an application. Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 28 Anyway, all these answers are very recommended to get a better idea of how the property of Skinning could be implemented, since they phrase the most typical concepts that this technique involves, especially in the “End-Customer” area of application. 2.1.7.1 What must be done to skin an application? The process of Skinning in those skinnable programs involves always two different phases: Installation of a new skin in the application: either a new skin is by the user manually created or an existing one is downloaded from one of those web-sites about Skinning in Internet Choice of one of the installed Skins to be viewed in the application: it depends on the kind of program, but the majority of them offer the possibility to do it from its menu of properties, with an easy click on the selected skin 2.1.7.2 How can all these Skins and Themes be obtained? The most common Skins/Themes are a set of bitmaps (.bmp) that represent the graphics to be viewed in the layouts of skinnable applications. They are normally structured in wellorganised directories, whose hierarchy must be always kept. There are three ways to obtain a Skin/Theme: Download them from Internet Create them manually: It depends quite a lot on the program. Nevertheless, the most existing tutorials recommend their readers to download an existing Skin/Theme to follow its structure. With an editor or a paint-program, it is possible to work on a copy of the already existing skin and design a new one. There is always a structure of directories, where the Skins are saved, and whose form must be always kept. However, it is not so difficult to maintain this hierarchy, when an existing Skin is used as pattern. The self-created Skins/Themes can be even uploaded to any place on the web, so that other end-users of the program have the possibility of downloading and installing them in their applications Use a tool: Some tools make it easier to create Skins. Not only the paint-programs or editors, which are necessary to do it, but other more advanced tools that make the conversion from a bitmap to a Skin automatically. These examples are, at most, specific for certain skinnable programs. For example SkinStudio is a tool to create Skins for WindowsBlinds (Windows Skinning) automatically. Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 29 In many skinnable programs (Netscape, Mozilla, Winamp…) web standards are used (XML, CSS…), and this is one of the things that allows Skins/Themes appearing and work identically on any platform. This does not actually mean, that there is a standard work of Skinning, but that some of these applications have adopted standard technologies to find their own solutions in order to achieve Skinnability. Sometimes, the files and directories that compound a Skin/Theme must be compressed together with an executable file for its installation. Anyway, it will always depend a lot on the specific program for which they are created. 2.1.7.3 How can they be installed? Once the Skins/Themes are downloaded from Internet, they must be decompressed and either there is an .exe (for example: Yahoo, Messenger, etc) or they allocate themselves automatically below the directories of the certain program with the proper structure. After the installation, any of the installed Skins can be chosen to be part of the actual layout of the application. It is usual that these skinnable programs have in their menus some properties that refer to the available Skins and Themes. 2.1.7.4 Which kind of programs must or could be used? There are some specific programs or tools for each of those skinnable applications; for example, there are tools that allow making the entire process, which means no effort for the user to skin his/her application. Other kinds of programs that could be also needed in the process of Skinning are for instance, de/compressors (WinZip…), editors (general or destined to work with a certain program), photo/paint-programs (Photoshop…), etc, which do not make the whole process but facilitate it. 2.1.7.5 Conclusion Each of the previous questions (List 2.1.1) could be much better answered particularly for each skinnable program. So it is, that all of them have their own Skinning tutorial. In those already mentioned Skinning web sites, where all Skins and Themes are posted, there are also plenty of links to different tutorials, which can be consulted online or downloaded. See the links to find any specific tutorial (section 5.3.1, links [1.1] - [1.8]). Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 2.1.8 30 Advantages and disadvantages of Skinning The following tables present the set of advantages (Table 2.1.2) and disadvantages (Table 2.1.3) of the use of Skinning. The difference between the two existing areas of application (section 2.1.6) has been also here taken into account, because some of the features of one area are not entirely applicable to the other one and vice versa. They have been grouped in the same cell of the table only when the advantages or disadvantages and their respective consequences were exactly the same for both areas of application. App. area Advantages of the Use of Skinning B2B Differentiation: Skinning makes it possible to customize the applications for each customer, from the point of view of the developer of the program. Any product can be effectively branded and customized with a look and feel that separates it from the rest of the crowd. A skin that uses for example, the company’s colors and logos, can be easily created. It must be also taken into account that companies are increasingly relying on business software to generate parts of their websites and intranets, supplying value-added access and information to employees, customers and partners by linking their entire back-end system to a web interface available from any computer connected to the Internet. For this reason, the front-end must reflect the branding of the company whose data is being interacted with. All this is happening increasing over the Internet and within corporate intranets; for this reason, the visual design of software running in a web environment must respond accordingly. Skinning methods make all this possible and in definitive they provide: o Customization (Branding, Corporate Identity, Configurations, Sub-functions) of applications B2C Differentiation: Skinnable SW and applications are more attractive for the end-user, which implies a reason to be chosen against the not-skinnable competitors. It allows: o Personalization (they can differentiate themselves from the rest of users, and personalize their applications at run-time, which means a factor of attractiveness) Website “stickiness”: Apart from the high demand for customization features in today’s programs, there is also another reason to allow the end-customers changing the skin on the program: website stickiness. It is extremely easy for providers of these programs to build a "skin community" by asking skin authors to create and upload skins to their site. As long as their skin library will be evolving, their customers will continue to visit this site to check out new skins. While they are there, developers can provide information on product releases and so forth Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 31 B2C Multiplicity of choice: The users have the possibility of choosing not only from a couple of Skins/Themes, but from hundred of them. This implies a significant freedom for the end-user to choose, which supports even more the ideas of attractiveness and differentiation already mentioned before No cost: The fact that once an application has been made skinnable, it implies no cost more for the end-user to change the Skins/Themes should be considered an advantage, because the user must not concern him/herself about it. He/she must only know the way to skin her/his application and no more. On the contrary, the words “no cost” cannot be applied to every use case of Skinning. For example, the use of Skins and logos to be showed on the displays of mobile telephones is by no means free. Both Text skinning: Possible to use the technique of Skinning not only to modify the layout B2B (logos, colors...) but also to change the language. This advantage is applicable to both areas & of use, because on the one hand the language might be also a possibility for the end-user to B2C choose when the same application is to be offered in different countries, and therefore the necessity of different languages. On the other hand, big providers and developers companies have mostly customers in different countries, which means they need to offer diversity of languages. It allows, in short: o Internationalization (i18n) and Localization (l10n) of applications Easier presentation: According to the explained pattern (MVC, section 2.1.2) that is applied in Skinning methods, the presentation of the layout should be simplified, since the point of view, that the content management is separated from the presentation management For the developer: Easier modifications in the implemented code: Since Skinning requires and uses the separation of content management from presentation management, it implies also for developers and programmers, easier modifications of the application’s code. It is actually derived from the separation of the view and the model in an application, which means that it is not directly an advantage from Skinning, but an indirect one, because of the requirements of its implementation. Table 2.1.2: Advantages of the use of Skinning Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique App. Area B2B 32 Disadvantages of the Use of Skinning • No standard skinning technique: There is neither a wide area of research, nor standard work about it. For this reason, the skinning technique is not absolutely clear for developers in each case, especially for this area (B2B) of use. Therefore, it implies: o “Time exposure” for the developer: Dedication of time to determinate how to do it, and to choose the suitable method always before building the application code o “Complexity”: The development of applications may be more complicate, if Skinning is used, and the extra task of separating the content from the view is practically always necessary, which forces in some cases to use technologies that may be not very familiar for developers o “More requirements” for systems: Applications become sometimes slower (for example: use of Java Swing) or require more saving space B2C • No standards: Though the existence of a huge number of skinnable programs in this area, there is even neither standard work, nor good documentation about how to do it, which means that the creation of any new skinnable software will force the developer of it, to implement him/herself a method manually, to offer Skinnability in his/her application. It should be also here taken into account the recent existence of more and more Skinning tools in the last three years, which make the process easier and easier. However, there are still not enough tools to cover all use cases and when they are used, it is often necessary to adapt them to the certain case of utilization • Decrease of “expressiveness”: Skinnability reduces paradoxically the expressiveness of the user interface. Only those objects that are supported by the existing Skins can appear in the GUI. This disadvantage refers more to this B2C-area of application, because it exists no offer of already created Skins/Themes for B2B-area. Another example related to this disadvantage is, for instance, the change of the colors of the GUI controls and other elements of an operating system (for example: Windows). The users are not, however, given free reign to modify the colors arbitrarily. Some of these predefined schemes are specially designed to support users with impaired vision • Loss of “recognition”: Sometimes it is also interesting for programs or OS that they are recognized. If the possibility of Skinning exists, they will not be any more identified (they loose their own branding). Software developer-companies that decide to offer Skinnability in their products must assume that their own “look and feel” will be lost. Some companies find it damaging for its image and recognition and decide not allow it. For example, Macintosh, incidentally, has become even more covetous of its brand integrity and no longer allows users to apply predefined schemes to its GUI Table 2.1.3: Disadvantages of the use of Skinning Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 2.1.9 33 Limitations of Skinning: Existing patents In this section, the existing patents in the scope of Skinning are exposed. First of all, it should be written that, the search has been done in IPAS-BUS web site, where it is supposed that all existing patents in the world are registered. IPAS-BUS stands for Intellectual Property Application System - Business Unit Services and is a suite of tools, accessible over the Siemens intranet, so that the companies can back up their corporate decisions with information obtainable from patent publications. IPAS-BUS offers four different modules, each with a different focus: First Publications: It informs about what the competitors are working on and what they are registering. It gives also information about the newly granted patents Siemens usable Patents: It includes all patens which are owned or licensed by Siemens End User searching: It gives the possibility of searching any patent registered in the entire world Direct Document Ordering: It allows searching for a certain patent and receiving it per mail After the search through IPAS-BUS site, only three patents related to Skinning topic have been found (June 2003). From these three patents, only two treat actually totally with the subject. Therefore, the newness of this topic is now even more obvious, since only two registered patents have been found in the entire world. The lack of patents should be considered also as an important advantage, because it implies an absence of limitations in the scope of legal rights, when building a skinnable application. Almost everything is free and anything can be freely used. In the following, the patents are described: 2.1.9.1 Patent 1 “Skin user interface for windows media player, has XML skin model definition files for defining model that allows user to change look of user interface” AN: PAT 2002-690547 … PD: 01.08.2002 Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Introduction to Skinning technique 34 Description: It explains the method of organizing and providing the skin user interface and exposes also the skinning method to skin the user interface of any SW application (PC) used in any computer system. They use XML to describe the user interface, which means flexibility, variety and functionality. 2.1.9.2 Patent 2 “Skin provision method for software application e.g. media player, involves synchronizing two different properties of skin elements, such that change of one property causes change in another property” AN: PAT 2002-682077 … PD: 01.08.2002 Description: It provides two different properties of skin elements to facilitate the skinning of user interfaces. It provides a robust, dynamic skin that can be rendered and re-rendered at run time. Provides a robust degree of flexibility in creating custom skins that can be used by original equipment manufacturers (OEMs), independent hardware vendors, and end users. Provides improved skinning models, a rich user experience and skins that are unique in appearance, function and layout. 2.1.9.3 Patent 3 “Advertisement media management method for on-line advertising involves targeting users based on demographic information and user event logging “ AN: PAT 2002-371741 … PD: 28.02.2002 Description: This is not so interesting, but I have considered adding it here, because there is a wide explanation of how this Skinning module has been built in the documentation of the patent and maybe some readers could be interested in it. Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods 2.2 35 Deployment of Skinning Methods In this section, the existing methods to create a skinnable application in the two possible areas of use of Skinning are outlined and classified according to different criteria. 2.2.1 Skinning methods: Introduction The question now, once that the general idea of the Skinning concept has been already provided, is the “How to” of Skinning and that is precisely what this chapter describes. Before starting with the classification and description of the methods, it is adequate to explain the criteria that have been chosen to sort and describe them. Firstly, it is convenient to notice that the two possible areas of use of Skinning (section 2.1.6) are not considered separately in the classification. A unique list of methods is presented, which is considered valid for both areas of application, and when necessary, different references for each area are added. Besides, the design pattern MVC (see section 2.1.2), which consists in separating the content from the presentation is here again referenced to explain the role of the different technologies concerned in each method. Some of the presented examples are widely extended and even used by very well known applications, such as Winamp, Netscape, Mozilla, etc. As it will be seen, most of them involve the use of web standards (XML, CSS, etc.), combined with the idea of separating the content from the presentation (MVC) to make their goal possible. The functionality of some of these skinnable programs is also described within the presentation of the methods, just after the classification table. Nevertheless, some methods from the ones presented in the table, are just different ways to achieve Skinnability in different environments of work, and are not used in a so extended way as the others. Their small scope of utilization is again due to the lack of research and standard work about this topic. 2.2.2 Skinning methods: Classification and description According to the criteria exposed in the previous section (2.2.1), the following table shows some methods to build skinnable applications. It will be also indicated which of them make use of Industry standards, which of them need a certain framework or any other requirements for their function, as well as the scope of application of every of them. Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods 1 View XML 2.2.2.1 2 Controller HTML Java + Servlet √ Area of application Model Use of Industry Standards Method Technical Characteristics B2B and Features - Web applications - Java platform No - Web applications - Use of CSS No (Any skinnable site for B2C (only HTML is or B2B area of application) not possible) application) CSS Scripting Language 2.2.2.2 (Examples) Requirements (Only for the B2B-area of CSS (X)HTML Scope of application Conditions Framework MVC Pattern Reference 36 √ B2B B2C - Browser with - SW on PC (Browsers such as Mozilla, Netscape) CSS support - Script engine (for redirecting) 3 XML XSL XSLT 2.2.2.3 √ B2B B2C - Web applications - XSLT as (Any skinnable site for B2C controller No or B2B area of app.) - SW on PC (Winamp…) 4 XML CSS ASP.NET 2.2.2.4 √ B2B B2C - Web applications - CSS (only (Any skinnable site for B2C HTML is not or B2B area of application) possible) .NET - Difficult to code a server control - .NET 5 CGI XSL XSLT 2.2.2.5 √ B2B B2C - Web applications - A small (Any skinnable site for B2C executable script or B2B area of application) must be build No - A logic module as data model must be build 6 2.2.2.6 7 2.2.2.7 Skinning with the No B2B skinnable classes of - Java platform No No can be programmed: web Java Swing Skinning with the - With Java Swing, any app No B2C applications & SW on PC B2B - It is a way to code a - Java platform dynamic GUI with java for - Browser that any java application (SW supports at least on PC or web application) JDK 1.1 AWT classes of Java B2C Table 2.2.1: Classification of skinning methods Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods 37 Another point to keep in mind in relation to the Skinning methods is that their function can be divided in two different tasks: Creation and definition of a new Skin, that is: Design Substitution of a certain Skin for another: Functionality It is interesting to write here that Skinning could be also implemented in many other ways. For example, those skinnable applications, where the property of Skinnability is integrated in them (see section 2.1.7), have their own solutions, but from most of them it is difficult to find out something useful, because they only provide documentation about “how to skin them”, but not the way they use to become skinnable. Anyway, the methods that the reader may need to skin any application have been exposed in the previous table (Table 2.2.1) and will be described in full detail in the following sections. The advantages and disadvantages of the methods have been grouped and will be presented in Table 2.2.2 in subchapter 2.2.3. 2.2.2.1 Method 1: Skinning method for java coded web applications 2.2.2.1.1 Description MVC: Data Model: XML, View: HTML + CSS, Controller: Java servlet Model: XML files that act as properties files and contain every customizable element (logos, text style, paths of other files, language, etc.) of the GUI of the application View: HTML template that will be skinned with the values that are contained in the XML file and CSS to define the style of the different elements in the HTML site Controller: Java servlet. There must be a link between the content (Model) and the layout (View). The control can be implemented with any programming language. Here is presented java because it is actually a particular method, destined to java implemented web applications The next figure (Figure 2.2.1) shows the interworking of all participants in the solution. This method will be applied in the practice, when skinning an existing web application. Therefore, it will be here not further described. See section 3.3 for more information about it (description, appliance, advantages, disadvantages…). Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods 38 Figure 2.2.1: Representation of skinning method 1 (XML + HTML/CSS + Java servlet) 2.2.2.2 Method 2: Skinning method for web sites to be skinned by end-users 2.2.2.2.1 Description MVC: Data Model: (X)HTML, View: CSS, Controller: Scripting language Model: With normal tags of (X)HTML the site can be created View: A new Skin implies a new CSS. Each CSS contains some code unique to each Skin and the rest are standard classes that appear in the style sheets of every Skins Controller: Scripting language. There must be a link between the content (Model) and the layout (View). The control can be implemented with any scripting language (php, asp, javascript): o php/asp + css: the basic of this whole system is a script-page that redirects to the correct style sheet based on a cookie (all existing CSS-pages point at it); the use of cookies (see below) is only needed in B2C uses of case. A script that allows people to set their preference of Skins is also necessary if the user will be allowed to modify the layout (B2C). The next picture (Figure 2.2.2) shows the flow diagram between the client and the server when using this method. Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods 39 Figure 2.2.2: Flow diagram of skinning method 2 (php/asp with CSS) o JavaScript + CSS: JavaScript acts similar to php/asp to identify a desired Skin and to switch to it dynamically. For B2C uses of case, it is obviously also needed to read and write cookies, so that the selected item can be stored. The solution to dynamically import a style sheet can not be done only with JavaScript but also with the help of the following method: “document.writeln(‘<link href= “’+SKINS_PATH’.css” type= “text/css” rel=”stylesheet”>’)”. The idea is just write into the document while it is being loaded, a browser will parse this like any other content and load the defined style sheet file, which is applied to the document. To give the users the possibility of choosing between different styles, a reusable function is used. This function receives the name of a Skin as an argument. To call it: <a href="javascript:setTheme('default')">Default Theme</a> Cookies: If this method is used to create a skinnable web site, whose layout can be modified dynamically by the end-user (B2C), the use of cookies is necessary. They maintain the status of the user and save the new skin when the old one is replaced. They store the last choice for a Skin of the end-user. It would not be needed if the one that modifies the layout were the developer of the application (B2B). Moreover, Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods 40 in a B2B area of application, business customers are always against its use, because of the security and privacy of personal data. 2.2.2.2.2 Example of Mozilla: “Skinning a browser”: Mozilla is an example of those skinning applications that make use of web standard technologies and it fits perfectly with this second presented method The concept of separating the content from the view has been here also taken into account. o o MVC: Data Model: XUL/DOM, View: CSS, Controller: JavaScript / XPCOM • XUL/DOM: Structure • JavaScript/XPCOM: Behaviour • CSS + Images: Skin XUL: XML-based User-interface Language. It was created for Mozilla and it defines its user interface. See in section 5.3.1, reference [3.3], the XUL tutorial o DOM: Document Object Model for XML files. It is a programming interface for XML documents and defines the way an XML document can be accessed and manipulated o XPCOM: Cross Platform Component Object Model. It is a framework for writing cross-platform, modular software. As an application, XPCOM uses a set of core XPCOM libraries to selectively load and manipulate XPCOM components. These components can be written in C, C++, and JavaScript, and they can be used from C, C++, and JavaScript with extensions for Perl and Python that are under development o CSS files are applied to the XUL interface by means of special import statements, processing instructions and the special hierarchy Advantages and disadvantages of the method that Mozilla uses to skin: o Advantages: XUL and CSS provide real UI development tools that are genuinely cross-platforms and that anyone can use. In the very near future, it will be possible to skin XUL files dynamically and completely (by pressing a button, selecting a skin from a menu, or by accepting a skin from over the web). Skins will be than defined in a global skin file and it will be possible to apply this file to the whole application (like the Mozilla browser), so that all the various windows and parts will look consistent. Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods o 41 Disadvantages: It is still necessary a manual interaction and a bit knowledge of XML is needed to learn XUL; the use of CSS is also required and they may be cause problems with some browsers See more information about Skinning Mozilla in section 5.3.1, reference [2.7] 2.2.2.3 Method 3: Skinning method with the use of XML technologies 2.2.2.3.1 Description MVC: Data Model: XML, View: XSL, Controller: XSLT Model: All data are put in a XML file and they can be transformed into completely different layouts using XSLT View: A new Skin implies that a few XSL files must be created for the Skin and uploaded to the server Controller: XSLT makes the junction between the Model and View. See Figure 2.2.3 to view the graphical representation of the interworking between these technologies 2.2.2.3.2 Example of tool that uses this technology: xReporter is an open-source, web-based database-reporting framework. It allows you to create flexible reports without any programming. The reporting server outputs a XML file, which will be transformed with the use of XSLT into the HTML code that forms the layout of the site. Basically, adjusting the look of the site is thus a matter of editing the XSLT style sheets. However, to avoid having problems with the style sheets, there's a skinning system available. (See link [5.20] in section 5.3.1 for more information) Figure 2.2.3: Transformation of XSL files in (X)HTML to be viewed in a browser Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods 42 2.2.2.3.3 Example of XML with ASP.NET Framework: The web-skinning engine in ASP.NET defines a number of special tags that represent dynamic content to be pulled in at run time. These special tags are defined as part of the “urn:schemas-DevHawk-net:webskinui” namespace, which is mapped by convention to the skin namespace prefix. These tags allow the engine to find content exposed by SQL 2000 for XML queries, business objects, and intrinsic HTTP request data collections (forms, query strings, and so on) Once all WebSkin [tool 6.1.2] nodes have been processed, an XSLT Skin must be applied before sending the content to the browser. The transform tag can specify the XSLT either statically or dynamically. If the transform tag specifies a: o Default attribute: XSLT file is than statically chosen to skin the XML content o Variable and method name: the handler calls than the specified method of the variable to determine the XSLT skin file to use See the article: “Rich XML Classes Let Users Personalize their Visual Experience on your ASP.NET Site” in the references (section 5.3.1, reference [2.9]) for more information about it. 2.2.2.3.4 Example “Skinning a MP-3 player” (Winamp, Trillian): Winamp and Trillian, for instance, are other examples of those skinnable programs (B2C), that use XML to skin their GUI, but in a bit different way How does Winamp use XML? o It is fully implemented in XML: from the skinning files to the playlist o The use of XML here is, however, to give form to each skin. The separation of Model-View-Controller is not so well defined o See tutorial of skinning Winamp for more information (section 5.3.1, link [2.8]) o Trillian utilizes the same method: it is there called SkinXML technology Advantages and disadvantages of the method used by Winamp: o Advantages: It is easy to add new Skins for end-users. They have freedom to create their own Skins or download them from Internet. All advantages mentioned for Skinning in B2C area (see 2.1.8) are also here applicable Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods o 43 Disadvantages: A bit of knowledge in XML is needed to create a new Skin by the end-user, which could imply a bit effort for them and be the cause of refusing it. 2.2.2.4 Method 4: Skinning method for ASP.NET web applications 2.2.2.4.1 Description MVC: Data Model: XML, View: CSS, Controller: server controls of ASP.NET (it helps to separate the content from logic) Model: An XML file organizes the information and passes it to the control. It can help to add, update and delete skins without modifying any pages or shutting down the application. See the code in Figure 2.2.4 View: A Skin is a CSS file, where styles are defined for various HTML files and CSS classes. It can optionally include a JavaScript file, which is associated with a page by a script element in the head section of the page. Another optional component of a Skin is a subdirectory where graphic files restored Controller: Layer of abstraction: server controls render HTML text at runtime, therefore HTML text has not to be worked directly any more. The application of a Skin to a page is achieved by placing a link element in the head section of the page: <link rel="styleSheet" href="[styleSheetFile]"> <?xml version="1.0" encoding="utf-8" ?> <skins> <skin name="red" styleFile="styles/red.css" scriptFile="scripts/red.js imageFilePath="images/red"/> <skin name="green" styleFile="styles/green.css" scriptFile="scripts/green.js" imageFilePath="images/green"/> <skin name="blue" styleFile="styles/blue.css" scriptFile="scripts/blue.js" imageFilePath="images/blue"/> </skins> Figure 2.2.4: Example of XML file that makes references to the existing skins To create a new skin, it is necessary to: o Create a CSS file o Create a script file o Create a subdirectory to store skin-specific graphic files Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods o Add a new XML element to the XML file Delete a skin is even more easy: o 44 Delete the corresponding XML element from the file What does the Server Control? o It needs the location of the XML file o When the Skin to be applied is chosen, the control reads the Skin file and finds the full paths of the CSS and script files specific to the current Skin o It renders them in the link and script HTML elements o It finds also the path of the directory that stores graphic files specific to the current skin and make the path available as a property, whose value can be used by the page developers to specify the source attribute of image elements It must be here noticed that the basis of this method is very similar to the first presented method (see 2.2.2.1), but with the difference that now the framework ASP.NET has been used, with its respective advantages and disadvantages (see 2.2.3) 2.2.2.5 Method 5: Skinning method for web applications based on XML and CGI 2.2.2.5.1 Description MVC: data Model: CGI (logic module), View: XSL, Controller: XSLT This example is only exposed to see that XML could be used with other technologies such as CGI, but the way Skinning will be achieved is actually the same as the already presented with XML (method 2.2.2.3) This presented method is actually an implemented application that provides a modular, XML-based alternative to traditional CGI scripting It consists of four parts: o A small executable script that provides access to the application o Model: A logic module that implements various handler methods that are called in response to the current state of the application o View: What the logic module returns should be XSL files, which are transformed with any XSLT processor Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods o 45 Controller: One or more XSLT style sheets that are used, based on application-state, to transform the data returned by the module (XSL) into something that a browser can display to its users 2.2.2.6 Method 6: Skinning method with the skinnable classes of Java Swing 2.2.2.6.1 Description This method consists on the use of the well-known programming language: Java Swing. It allows building skinnable applications because it has classes, whose functionality is precisely to add the property of skinnability to all those applications programmed with java swing. It is a bit different from the ones presented before but very interesting since the point of view, that it adapts itself perfectly to the pattern of Model-View-Controller. It is actually one of the most known cases of application of this MVC-model. The way the MVC-model is used in java swing is a bit different: while the MVC design pattern is typically used for constructing entire user interfaces, the designers of the Java Foundation Classes (JFC) used it as the basis for each individual Swing user interface component. Each component (whether a table, button, or scrollbar) has a model, a view, and a controller. Furthermore, the model, view, and controller pieces can be changed, even while the component is in use. The result is a user interface toolkit of almost unmatched flexibility. See in references (subchapter 5.3.1, link [7.10]) for more information about MVC with java swing 2.2.2.7 Method 7: Skinning method with the AWT classes of Java 2.2.2.7.1 Description It is a method to code a customizable interface. It is actually an example of how to code a skinnable application with the set of awt classes of java. The example here presented is for an absolute basic user interface. The following points are needed: o A new layout manager (SkinLayout) o A properties file that contains information about how the interface is laid out o An ImageLabel (lightweight) component for no interactive areas of the screen o An ImageButton (lightweight) component for interactive areas of the screen Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods o 46 Other lightweight components, if the application need them See in references (section 5.3.1 link [8.1]) for more information about how it should be coded. Points to consider: o Class Utils: to load images o ImageLabel and ImageButton are implemented o SkinLayout: it can be constructed with two methods, but always specifying the location of the properties file (input stream or filename) o Properties file: it must include all the elements that are present on the layout and their properties (size, position, etc). In the following example, the properties file of a button is presented. The attributes here show the image, the pressed image and the focused image of the width=230 height=42 back.width=50 back.height=40 back.xpos=0 back.ypos=0 back.visible=true back.attributes=image=back1_nf.gif ,imagepress=back1_press.gif, imagefocus=back1_f.gif button. Figure 2.2.5: Example of properties file in java skin method (source: section 5.3.1 link [8.1]) In the following figure, an example of an applet coded with this method is showed. If the Button Layout 1 is pressed the first layout can be seen (Figure 2.2.6) and when the button Layout 2 is pressed, the other layout is shown (Figure 2.2.7): Figure 2.2.6: Layout 1 (Java Skins) Figure 2.2.7: Layout 2 (Java Skins) (source of pictures: section 5.3.1 link [8.1]) At the moment, the custom attributes that can be set for AWT components, when using SkinLayout are fairly limited. For example, the layoutContainer() method of SkinLayout() requires that a set of methods in a component have a single string as a parameter. That means that an attribute such as background = #FF00FF (background color of a component) will not work successfully on an AWT component Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods 47 (unless it is subclassed to provide a setBackground (String color) method). Alternative to the previous problem: o Altering the tagging structure slightly, the layout manager could construct an object (for example, color) from the hex color code, and pass that into the set method. SkinLayout could also be extended to handle specific set cases (setFont(), setBackground()) o Another alternative: use of XML to define the user interface, which could provide enormous opportunities for extending the capabilities of the layout manager. That is: use a packaging structure for the skins (such as Winamp does). The layout property could be zipped up, along with the images it needs to implement the interface. SkinLayout should then be able to unzip the package to retrieve properties and images AWT requires sometimes many panels to implement a relatively simple design (unless a GridBagLayout is used, which adds an additional level of complexity) Comparing to Swing: Java Swing can be a very slow download; it can, however, provide a larger palette of components than AWT 2.2.3 Advantages/Disadvantages of the methods Once all methods have been described, the advantages and disadvantages of them will be presented in the following table (Table 2.2.2). I have decided to show them all together in one table, because most of them have common components or technologies and therefore they coincide with some characteristics. So it is, that those advantages or disadvantages that are consequence of the use of a certain technology, will be the same in all methods that utilize the technology. The list of advantages and disadvantages is presented on the left side of the table and on the right the methods related to each of them are referenced. Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Methods Advantages 48 Methods - Only cross-platform web standards, instead of proprietary toolkits or Methods: 2.2.2.1, languages, are used to create the Skins or in the process of Skinning 2.2.2.2, 2.2.2.3, 2.2.2.5 - Well-known programs (browsers, mp-3 players, etc) use the same Methods: 2.2.2.2, methods to skin the application. It is an advantage because that 2.2.2.3 means that there is a lot of information about it and that the method works properly - If .NET Framework is part of the solution, there is always a deep Methods: 2.2.2.4 support behind it. For example: XML and XSLT have support in the Microsoft .NET Framework Base Class Library The down-level rendering capability of ASP.NET server controls (method 2.2.2.4) is a great advantage for those browsers that do not support the CSS because it is not necessary to write any line of code more Use of tools created to work with .NET. There are plenty of tools for .NET platform (see section 2.3.3) - If a programming language with skinnable classes is used, the Methods: 2.2.2.6 process is much easier Disadvantages Methods - Use of CSS implies that the browser must support them; the more Methods: 2.2.2.1, dependence the GUI has on the CSS, the more problems will be with 2.2.2.2, 2.2.2.4 different browsers - If a framework, such as .NET is used, the whole application is Methods: 2.2.2.4 bound to it and there is no freedom to use any other framework - Slowness of Java Swing; many browsers do not support it Methods: 2.2.2.6 - Limitation of awt compared to Swing Methods: 2.2.2.7 - Cookies are not well considered, though they must not be used if Methods: 2.2.2.2 the application is not thought to be personalized by the end-user - A previous differentiation of content and design must be done and it Methods: 2.2.2.1, could be a tedious task. It is actually a requirement for all skinning 2.2.2.2, 2.2.2.3, methods but for the ones cited on the right, it implies more time 2.2.2.4, 2.2.2.7 Table 2.2.2: Advantages and disadvantages of the skinning methods Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Tools 2.3 49 Deployment of Skinning Tools As the previous chapter (2.2) has shown, there is a set of different methods in the ambit of Skinning. They allow integrating manually the feature of Skinnability in some applications. In this chapter, the most interesting products and tools, in relation to Skinning, will be presented, and grouped according to different criteria. A more detailed description of each of them can be also found in the appendix (section 6.1). 2.3.1 Skinning tools: Introduction What is till now written in the master thesis is that Skinning is a very recent topic and that not many research works have been done about it. Therefore, everything points that the number of existing tools should be very reduced and limited; it is actually so. The number of tools here presented is not superior to 15. However, it must be taken into account that this number is supposed to be increased in the following years, because firstly, Skinning is an up-to-date technique still in development, and secondly, SW companies have already realized the importance that Skinning may have for the end-user and also for the customization of their applications. My first idea was to make a classification of the existing tools according to different criteria, but after my research about the topic, I realized that it would not be worth. The main reason of not having made a classification is that the number of tools that have similar features and characteristics is not big enough so that they could be classified according to the same criteria. Although the classification could not be done, it is interesting to show some of the possible alternatives to classify the skinning tools. It could be even useful for future research works, when the market of skinning products had grown up. Before presenting the alternatives in the next section (2.3.2), the following question will be answered: What should be understood with the words “Skinning tool”? In principle, any software program that makes it possible to skin a certain application could be considered as a Skinning tool. On the contrary, not all tools here presented have the same functionality and area of application. 2.3.2 Possible alternatives to classify the skinning tools As it was already written, the alternatives to classify the skinning tools are here presented, although the classification will not be done, due to the lack of common characteristics Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Tools 50 between the different tools. There are not so many, so that the possibility of choice exists when some of the conditions in the application to skin are already fixed, such as the framework, programming language, functionality, etc. That is, there are not many tools that have the same function or work in the same area of application, under the same framework, so that a comparison or classification of them can be done. In any case, the alternatives are presented in the next subchapters. 2.3.2.1 Alternative 1 for a classification: General or specific for a program Two kinds of tools can be differentiated: those tools created for a specific program, which correspond usually to the “Customer-area” of application and those that can be applied to any implemented SW and utilized to skin any new coded application. 2.3.2.2 Alternative 2 for a classification: Functionality As it was already mentioned, the process of Skinning involves two tasks: Create a new Skin (Design) Switch dynamically from the old Skin to the new one in runtime (Functionality) Therefore, it is here necessary to make a difference between those tools that make it easier to create a new Skin or Theme, and those that make it possible to replace dynamically one Skin by another. A third type of tool would be naturally the one that integrates both functions. 2.3.2.3 Alternative 3 for a classification: Operating system or framework A third alternative would be a classification according to the operating system for which they have been created or the framework with which they can work properly. In the following section, some tables will show the different existing skinning tools, and one of the characteristic to separate the tools in different tables will be precisely the dependence or not on a certain framework or operating system. As it will be seen, there are many tools created exclusively for Microsoft (see Table 2.3.1) and are totally dependent on it. 2.3.2.4 Alternative 4 for a classification: Programming language This fourth group attend to the programming language for which the tools are suitable. All these tools could be also added to the group of which have not been created for a certain skinnable program, but for general applications (see alternative 2.3.2.1). Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Tools 51 In the following section, where the tables of tools are presented, there are some dedicated to different programming languages (see Table 2.3.2 for C++/Delphi, Table 2.3.3 for Java, and Table 2.3.4 for Visual Basic). 2.3.2.5 Alternative 5 for a classification: Proprietary or standalone tools A significant criterion is also the fact of being proprietary or standalone tools; however, all of the found ones are by chance, proprietary tools. There are no standalone programs and that fits actually to the lack of standards in the world of Skins and Themes, as it has been more than once written in this master thesis. It could be however, a good alternative for future works of research. 2.3.2.6 Alternative 6 for a classification: Areas of application of Skinning This feature (section 2.1.6 to see the areas of application) will be taken into account when presenting the tables of tools; many of them work in the B2B area of application, and have the functionality of allowing the developer to create customizable applications. The fact that not so many tools are designed to work in the B2C-area of application is because the most skinnable existing programs (MP-3 players, browsers, etc) pertain to this area (B2C), but do not need any tool, since they have internally the way to offer skinnability for the end-user. Only tools that help to create new Skins (design) may be created for these skinnable programs because they have already a skinning module that makes the rest. 2.3.2.7 Alternative 7 for a classification: Appliance of MVC model The appliance of the separation between content and presentation in the function of the tools is also an alternative to classification. In the description (section 6.1) of tools it will be graphically presented the model for all those tools that make use of it and in the tables, it will be also a characteristic to take into account. 2.3.3 Skinning tools: Overview In this section, the existing skinning tools and frameworks are presented in different tables. No classification has been done, but a division of them in different tables according to some of the common characteristics, which are: Platform or Operating System dependent tools (Table 2.3.1): Microsoft Not dependent on Platform tools: Programming language C++/Delphi (Table 2.3.2) Not dependent on Platform tools: Programming language C++/Delphi (Table 2.3.3) Not dependent on Platform tools: Programming language Visual Basic (Table 2.3.4) Rest of tools (Table 2.3.5) Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Tools Tool or Framework 6.1.2.1 WebSkin Area of Kind of Tool/Framework Programming (Functionality) Languages App. B2B and B2C Skinning of ASP.NET C/C++ Platform Price 52 MVC Requirements License ASP.NET sites tool FREE (noncommercial) to MICROSOFT Yes (ASP.NET) >1000$ ActiveX control tool that Visual Basic Windows FREE Active allows the developers to 5-6, Borland 95/98/ 100$ Skin dynamically change many Delphi 3-6, Me/NT/ (Vs. 4.25) components of the visual Microsoft appearance of their apps. Visual C++5- 6.1.2.2 B2B to < MICROSOFT No 2000/XP 6 6.1.2.3 B2B Skinboxer 6.1.2.4 B2B EZSkin Windows Complements ActiveSkin Microsoft providing more facilities, Visual Basic 95/98/ (1 license) such as Skinning also the 5-6, Borland Me/NT/ to < 500$ MessageBox, Open/Save Delphi dialogs, Browse for folder, Microsoft ChooseFont, VisualC++ 5- FindText, ReplaceText 6 Open source framework C++ 3-6, 2000/XP Any < 100$ MICROSOFT No (unlimited) FREE to build skinnable app. in MICROSOFT No C++ 6.1.2.5 B2B ExSkin ActiveX control that enables the developers to C++, ATL, STL Windows 98, NT change the GUI of their 4.0, projects, providing them 2000, with the Skin (or look & ME feel) support; it contains a Builder component that >140.00 EUR (download MICROSOFT No only) To > 2000EUR (unlimited developers) helps you to create Skins 6.1.2.6 B2B DirectSkin Skinning tool program: it for any COM objects Win98, From < 1000$ (Delphi, VC, WinMe, To > 8000 $ change the appearance of C++, VB, Win2K, STARDOCK any application and some etc) WinXP PRODUCTS allows to functions can be even added (technology WindowsBlinds in MICROSOFT No (excluding of Terminal any Server) program) 6.1.2.7 B2C It is a suite of desktop No Win98, MICROSOFT < $100 + s/h Object tools to customize a lot (Created for Desktop of aspects of Windows a certain WinNT, STARDOCK (Package of tools) skinnable Win2000, PRODUCTS application) 6.1.2.8 B2C Package of tools that No WinMe, No WinXP Win98, From FREE to < 100$ MICROSOFT Win customize Windows and (Created for WinMe, Customize pertain to WinCustomize a certain WinNT, STARDOCK skinnable Win2000, PRODUCTS application) No WinXP Table 2.3.1: Overview of skinning tools that depend on Microsoft Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Tools Tool or Area of Framework App. 6.1.3.1 B2B Skinux Kind of Tool/Framework Programming (Functionality) Languages Developing/Consulting Firm that product adapts GUIs to Platform Price Any Unknown 53 MVC Requirements License C++ the GUIs with Yes C/C++ No No the aesthetic preferences of the specific customers 6.1.3.2 skinning Delphi 4,5,6,7 Skin B2B Tool capabilities to Delphi & to add & C++ Builder Any Commercial < 100 USD Factory C++ Builder applications 4, 5 use license Table 2.3.2: Overview of platform independent skinning tools (C++/Delphi) Tool or Area of Kind of Programming Framework App. Tool/Framework Languages Platform Price MVC Requirements License (Functionality) 6.1.4.1 B2B ActionServlet 6.1.4.2 Open source web Java Any FREE B2B SkinLF Skin any Java Java support Yes application framework Java Swing Any application; a total Free to use and customization Browser with at No distribute least JRE 1.2.2 support framework for Swing 6.1.4.3 B2B Pajes Open Source Servlet Presentation Implemented Any FREE Java support Yes in Java Framework to create skinnable web app. separating HTML from java code Table 2.3.3: Overview of platform independent skinning tools (Java) Tool or Framework 6.1.5.1 Area Kind of Programming Languages of Tool/Framework App. (Functionality) B2B Component to skin the NeoCaption non -client area (menu, Component border, titlebar, Visual Basic Platform Price MVC Requirements License Any FREE to download No No menu, control box and buttons) of a VB project adding it to a project Table 2.3.4: Overview of platform independent skinning tools (Visual Basic) Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Deployment of Skinning Tools Tool or Framework 6.1.6.1 Area Kind of Programming Languages of Tool/Framework App. (Functionality) B2B Platform Price MVC 54 Requirements License No Any that SAP SAP, which is able (Created for a supports (also Portal (specific for it) Editor to skin the web certain app.) any browser that Use CSS: problems SAP supports) with browsers portal of SAP Unknown Yes Editor created by SAP Bound to mySAP Table 2.3.5: Overview of other tools (application dependent) Each tool in the previous tables has a direct link to its detailed description in the appendix (chapter 6). I must write here, that not all features were tested with the tools, but only the most important. The subchapters of the appendix outline the functionality and add a couple of important features of each tool, but not much more could be taken out from the documentation in Internet or from the own experience. I have tried to expose here all existing tools in relation to Skinning so that the reader becomes an idea of what can be found on the market in the actuality. It was not an objective from the master thesis to test and use all these tools, firstly because none of them was suitable for the Industry Example presented in the practice, and secondly there was not so interesting in comparison to other parts of the master thesis. Anyway, every reader will become with the subchapters in appendix enough information about the tools that could be needed to skin an application and choose one of them if any suits to the necessities, according to the characteristics the application. So it is, after the choice more information can be read in Internet (all links will be given) or contacting directly with the provider. Skinning Techniques in Web Applications 2 Exposition of the technique of Skinning: Typical boundary conditions 2.4 55 Typical boundary conditions (performance, security) In this section the existing limitations of the technique of Skinning are outlined. It was already mentioned the lack of existing patents (section 2.1.9), which in other case could have been an intellectual property right limitation in the implementation of skinnable applications. In this section, it will be written more about the implications that Skinning has in the performance and security of all those skinnable programs and skinning methods, that have been described in the master thesis. Firstly, as it was cited in the description of the disadvantages of Skinning (section 2.1.8), the fact that the use of this technique could reduce the expressiveness of the GUI is one of the boundary conditions to consider. The reason is that not every Skins/Themes can be utilizable in a certain layout. Skins are designed for a specific program and sometimes they are even implemented for a certain version of the program and are not more valid to be used with other versions of it. The end-customers have oft run into this problem, when they have tried to install any Skin in a different version of the program for which it was created. Secondly, it should be here considered if the property of being skinnable in an application could affect the security, the performance, the slowness, and other possible limitations. In principle, as it was already said, the fact of adding skinnability in an application could imply a waste of time since the point of view that there are no standards and a way to make it possible must be still thought by the programmer of the application. On the other site, once that it is implemented, the skinnability does not affect the performance, neither the security of the application. It must be only considered the method to be used: for instance, when Java Swing is utilized, the application is much slower. However, it is slower not because of the skinnability, but because of the programming language. Java Swing is itself very slow and that should be considered before deciding to use it. In conclusion, there are not many limitations in the world of Skinning methods, which implies another significant reason to consider it only as a good quality in a program and even another advantage of Skinning to take into account. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Introduction 56 3 Evaluation and appliance of Skinning at an existing Web Server Outline: This chapter constitutes the second main block of the master thesis. Some of the theoretical research about Skinning will be put into practice in this chapter. 3.1 Introduction The objectives and expected results related to the practice were also mentioned in the beginning of the thesis (see section 1.4). It will be here exposed an Industry Example, where the technique of Skinning has been applied. In the theoretical study, the Skinning issue has been handled in all its sphere of activity and areas of utilization. However, the practical work will only look at the appliance of Skinning in the world of the web applications and particularized for the “Provider-Area” of application (see section 2.1.6). I would like to mention firstly the problem to be solved in this introduction. I make here a very brief description of it, in a couple of sentences, because I think it will help the reader to have always in mind, what is supposed to be done: Problem description: Siemens has some new web applications to be offered to a large number of customers, which could be located in any place of the world. These clients want to have the web applications they buy, with a customized and internationalized GUI, so that they can read in their language and maintain their Corporate Identity, when they offer this Web Services to their own customers. The actual existing solution (see section 3.2.5) for customization of them could be too tedious when the number of clients is too high, and therefore, it has been thought about using a technique/tool to achieve it faster an easier. The objective now is to find the way to solve the problem as easy and quickly as possible. According to what was presented in this document, the use of Skinning could be a very good solution to this matter, and that is precisely what is going to be done in the practical part of the master thesis: “Applying the technique of Skinning to achieve the Customization, Personalization and Internationalization of a specific Web Application”. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Introduction 57 The aim of the whole practice does not only consist in customizing the specific web application of Siemens, but also in proposing a general method and demonstrating its validity for any other one. Once an overview of the problem has been written, I present in the following paragraphs the way the rest of sections of this chapter will be organised. First of all, in order to give a better idea of the work environment for the practical work, I will describe the Web Service that has been chosen from one of those web applications that Siemens offers in its new products (SURPASS products), and where the skinning technique has been applied (see section 3.2). Secondly, the proposed solution will be presented in full detail (see section 3.3), with all its characteristics, advantages and disadvantages, together with all the experiences and difficulties that I had during the practical work. Finally, the last section (see 3.4) is dedicated to depict the advantages and disadvantages, the possibilities and limitations of the proposed method, but not for the web application where it was particularly tested, but for any existing web application, together with an evaluation and conclusion of the whole obtained results from the praxis and tests on the server. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Free-Call-Button 3.2 58 Free-Call-Button: Description of the web application This section includes a description of the functionality of the Web Application to work with, which is called “Free-Call-Button” and offer its end-users the possibility of being called free of charge and get information about what they need. 3.2.1 Description of the work environment Before starting with the detailed description of the Web Application, a graphical exposition of the interworking between providers and customers in the particular case of Free-Call-Button is shown in the next picture (see Figure 3.2.1): Figure 3.2.1: Areas of Application particularized for Free Call Button Web Application As the figure shows, Siemens will sell its Services to different customers (TELCO in Figure 3.2.1), who in turn, offer these services to all their subscribed clients (Call-Centers) and the end-users will be able to make use of the service and be called free of charge by the respective Call-Centers. It will be also explained where the customization of the application must take place. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Free-Call-Button 59 Siemens must offer customized and internationalized software to its customers. That is the first B2B relation presented in the whole system and it is an example of “Provider Area” of application of Skinning. Moreover, the customers of Siemens have to customize the service for each of its customers (Call-Centers). This is the second B2B relation to take into account and it corresponds also to the “Provider Area” of application of Skinning. Between the two existing places (1 and 2 in Figure 3.2.1) where Skinning must be applied, the second one has been thought to be more usual in the future. The objective for Siemens is to offer a customizable application, so that its customers can do it themselves in the easiest way as possible. However, the application will be sometimes directly customized by Siemens, especially in relation to the language, because one assumed customer might only act in one country, require only one language and ask Siemens for an already internationalized application. Anyway, it is the task of Siemens to implement the method to customize the application, regardless of whether the final customization will be done by Siemens or by its business customers. In spite of the existence of two B2B relations in this particular case, the perspective of the problem cannot be lost; the objective is always the same: implementation of a method that customizes (skins) a Web Application. The words Customization, Personalization, Internationalization and Localization have been used more than once in the diploma thesis. In order that the use of these concepts in this Industry Example remains absolutely clear, I add a brief explanation about the reason of using them here: The Call-Centers want that the application they use, looks like the rest of their web site, with the same logos, colors, images, language, etc; that is, they do not want to loose their GUI and want to be identified by the end-client, even when their end-clients enter into the web pages of the web service they offer (such as FcB). All that implies the customization, personalization, internationalization and localization of the application. Once the environment of work and all the participants have been presented, it remains only the description of the functionality of Free-Call-Button. The web service consists on the possibility for the end-client to be called (via telephone or via PC) to receive information that the provider (for example: Call-Center) wants to give. All that the end-client has to do is click on a button installed on the home page of the web he/she is looking and follow all the Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Free-Call-Button 60 instructions that Free-Call-Button application presents: enter his/her telephone number, choose how and when to be called, etc. Another significant characteristic of the application is that this call will be free of charge when the end-user is called. 3.2.2 Technical aspects of FcB Once the problem has been exposed, it must be decided which method or tool from the theoretical study can give a suitable solution. To take the best decision, it is important to consider the way the application has been implemented, which platform has been used, etc. The following table and figures summarize the most important aspects of “Free-Call-Button” web application, which have been taken into account for the proposed solution: Characteristic Value Programming Language Java + JavaScript Platform Java Server Apache, Tomcat Layout and GUI HTML + JavaScript + java applet Web pages to customize (only five are call_callId.htm relevant for the customisation) error_callId.htm error.htm notificationviewer.htm calendar.htm Other web pages of the application menuhaut.htm e_401.htm ... e_500.htm help.htm Table 3.2.1: Technical characteristics of Free-Call-Button 3.2.3 HTML-pages of FcB The actual GUI of FcB has been created with the Corporate Identity of Siemens (logos, colors, style, etc.). The following pictures give a better idea not only about the appearance of the web sites, but also about the functionality of the application. The first picture (Figure 3.2.2) is the home page of the Call-Center web site, where the button of FcB will be inserted. When clicking on this button, FcB starts its function. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Free-Call-Button 61 Free-Call-Button button to click on and enter the application Figure 3.2.2: Site of the Call-Center with the FcB-button (menuhaut.htm) When the FcB-button is clicked on, a new window is opened (see Figure 3.2.3). It contains the first site of the application. The user can in this site choose if he/she wants to be called via Phone or via PC (1). In the first case, he/she must write his/her telephone number (2). The number must not be showed to the Call-Center because the option of maintaining it hidden is also possible (3). Date (calendar option, see Figure 3.2.4) and time to be called can be chosen by the end-user too (4). If the user needed some help or any information about the service, he/she could send e-mail to the provider or consult the help page, which is also provided by the application (5). Figure 3.2.3: FreeCallButton page (call_callId.htm) The following figure (Figure 3.2.4) shows the calendar site. This should also be different for each client (language and GUI). Because of its size and the simplicity of its elements, the proposed skinning method will not be here applied, and a new HTML site will be created for each client if they want to have a personalized calendar. This idea will be again mentioned and explained in the exposition of the method (see section 3.3). Figure 3.2.4: Site calendar.htm Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Free-Call-Button 62 When the whole site has been filled in, and the button is clicked on, the web service starts and the next site that the end-user can see would be the following figure (Figure 3.2.5), together with an applet that will monitor the call. This web site informs the end-user with a message if the call has been already initiated, if it will be postponed, or if any error has occurred. The applet (see Figure 3.2.6) comes into play at the same time as the call takes place. It will inform about the different required steps before the call is really started (connection, routing, etc). Each of this information is based on pictures and notifications messages that appear in the applet and should be also customized. Figure 3.2.5: Site error_callId.htm The applet is called in the HTML site notificationviwer.htm. In this example of one of the layouts of the applet can be seen how the user will be informed when one of the evolved parties has answered. Figure 3.2.6: Site notificationviewer.htm 3.2.4 Architectures of FcB Another point to take into account before explaining the skinning solution is the three existing architectures of FcB application depending on the place where the Call-Center’s pages are located. As it will be demonstrated in the practice, the solution can be suitable for these three architectures. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Free-Call-Button 63 3.2.4.1 Architecture 1 The web site of the Call-Center and the FcB sites are on the same server: on the CWS (Click-to-dial Web Server). This CWS is the server of the provider (for example: TELCO in Figure 3.2.1), which is at the same time the direct business client of Siemens. In the following picture the first architecture is represented (Figure 3.2.7): Figure 3.2.7: Architecture 1 of FcB 3.2.4.2 Architecture 2 The pages of call-center and the FreeCallButton application are also on the same server, but normally on the Call Center’s server. It is to remark here, that the error.htm pages must be always located on the CWS (provider of the application). See Figure 3.2.8. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Free-Call-Button 64 Figure 3.2.8: Architecture 2 of FcB 3.2.4.3 Architecture 3 In this architecture the pages of Call Center and the FreeCallButton pages are not on the same server. In this case, the Call Center has only to integrate the ‘Button’ at its own page. The FreeCallButton page and the error/information – page are also located at the CWS server. See Figure 3.2.9 for the details. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Free-Call-Button 65 Figure 3.2.9: Architecture 3 of FcB After all these explanations about Free-Call-Button, the proposed solution to skin the web application will be better understood. There will be only small differences between the three of them, when applying the skinning method. It will be anyway suitable for any of them, although it suits better with the third one because in that, the servlet will be called since the first click on the FcB button and the page call_called.htm will be served. In the proposed solution everything runs through the servlet, because it is precisely the servlet the responsible for an important part of the customization of the sites. The details for each one will be added when describing the solution (section 3.3) 3.2.5 Existing solution to customize FcB This section outlines the actual way to customize FcB. I think it is interesting to explain it now, before describing the proposed method, because the advantages of a skinnable web application, in comparison to a not skinnable one, can be then better exposed. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Free-Call-Button 66 Till now, the customization of the application must be done manually, which means implementing new HTML sites for each client, a new jar file for the applet of each client, new JavaScript for each necessary language, and many other changes. Moreover, when the customer of Siemens (for example TELCO in Figure 3.2.1) must do the customization, they must be informed about the directory structure of the server, so that they know exactly where all the HTML sites, etc must be saved. It is not only a tedious task if the number of clients is high, but also a quite large storage space. When exposing the advantages and disadvantages (section 3.3.6) of offering skinnable software to the client, references to this section will be written again. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 3.3 3.3.1 67 Skinning Model: how to customize a Web Application Considerations to decide an adequate solution First of all, I will write about all the considerations that I have done before deciding which technique could be used to create a web application as most customizable as possible. Taking into account the previous section (3.2), the characteristics of the already implemented web application to work with, are actually limitations to be considered. When I write limitations, I mean that it is not the same to create a complete new application from the beginning, which must be skinnable, as to make skinnable an existing one. This is the case of Free-Call-Button, and therefore, the solution here must be always an adaptation or continuation of the already implemented one. The limitations of having a certain application to customize (FcB) and the properties that a skinnable application must have, are the two most relevant concepts to consider. On account of this, I have summarized both ideas more schematically in the following table; the points on the left side are actually what Siemens need for its web services and the list on the right are the limitations to be taken into account. Conditions to customize FcB Conditions of an skinnable application Java (servlet) HTML + JavaScript A separation as the one explained by (MVC –Model) MVC (see Figure 2.1.2) model has not been done Existing skinnable Separation of View and Functionality position, images frameworks (e.g. Customizable: text format, colors, layout, Language could also be considerate as a skinning property (i18n, l10n), as it was pajes, struts of java) have not been used already mentioned in the master thesis. The current Customization of FcB implies This point will be actually one of the most the creation of new HTML sites for each significant ones for the Siemens interests, client due to its internationality. Figure 3.3.1: Considerations to propose a solution to skin the FcB application With this table of characteristics, it is at least clear which tools of the ones presented in section 2.3 and which of my presented methods (see section 2.2) cannot be here used, and they are: Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 68 All those tools (see Table 2.3.1) dependending on Microsoft, .NET platform, because the Web Services presented by Siemens are thought to be independent from not only the platform but also the operating system. Therefore, and together with other reasons, they have chosen Java to implement the applications. Those tools, frameworks or methods of my classification (see Table 2.2.1, Table 2.3.2, Table 2.3.4) destined to be used with other programming languages different to Java are also not suitable. Java frameworks to make a skinnable web application, such as Pajes (see 6.1.4.3) and ActionServlet (see 6.1.4.1) should have been used from the beginning of the implementation. It would be now too costly to adapt all the java code to those frameworks, which would mean almost re-writing the applications. Those methods of my classification (see Table 2.2.1) that do not use HTML are not very suitable here, because all the application is based on HTML pages. So is it, that the possibilities to prove here with FcB application boil down to: - Methods: It will be applied the first proposed method in the classification of the theoretical study (see Table 2.2.1). It is actually a mixture of methods 2.2.2.2 and 2.2.2.3 where there is no dependence on the platform. From the method 2.2.2.2, I take out the idea of using HTML with CSS as View. From the second one (2.2.2.3), I take the concept of using a XML file that contains the necessary data for the application. In other words, I utilize this XML file as the Content of the MVC-model. The controller must be implemented in Java, and it will be precisely the Java servlet of FcB application, the one that plays this role within the MVC pattern. That describes exactly the method 2.2.2.1 and it will be actually the one that will be used in the practice. 3.3.2 Tools: None of them is appropriate enough. Description of the solution In this section the main concept of the proposed solution is explained. In general terms, the main factors of it, can be perfectly presented with the following picture (Figure 3.3.2). Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 69 Figure 3.3.2: MVC- model in the solution for FcB Looking the previous picture (Figure 3.3.2), it will be relatively easy to present each of the components that play a role within the proposed solution. All that must be done is described in the next five points: Creation of a template for the HTML sites that will be customized Creation of an XML file for each client (each Call-Center must have its XML file), which will contain the data and elements that are part of the GUI of the web pages of FcB, and that must be inserted in the template Creation of a CSS file for each client (each Call-Center can define its style with a CSS file) Creation of a JavaScript file for each language (and not for each client), to personalize the language of messages that appear with the alert() function Adequate modifications in the java application to make it possible that all these files work together to create a skinnable web application With the previous list of points, it is almost clear that the Model-View-Controller design pattern has been also here applied: Model: The XML file describes the content of the HTML sites Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 70 View: The template (HTML) represents the way the different elements will be shown in the web + the CSS file, which represents the style of each client Controller: Java (servlet) that makes the union between the Model and the View. The XML file will be opened and read by the servlet, the template will be also customized by the servlet, with the obtained data from the XML file. The JavaScript files are also a way to add functionality to the HTML pages. If the language must not be customized, only one JavaScript file is needed With this solution, the most significant requirements for an application to be skinnable have been achieved. Besides, it means almost no effort for the Provider (see section 3.3.3) to customize the sites of FcB for each of its clients (Call-Centers), and what is also important, if a client does not want to customize his/her site or wants to make a total different layout, which can not be achieved with this skinning method, he/she can always choose the option of “no template”, and use the old way to do it (the solution described in section 3.2.5 that Siemens has till now to customize the application). To indicate the use of a template or not, a parameter will be given to the servlet through the URL when clicking on the FcB-button, in the following way: With template: - ‘http://ttm7-server/fcb/FreeCallButton?phoneCallId=bb4ac181&template=true’ Without template: - ‘http://ttm7-server/fcb/FreeCallButton?phoneCallId=bb4ac181&template=false’ The use of this parameter implies that the HTTP interface must be extended, so that it can be sent. This parameter will be also sent in every HTML site that compounds the application as “hidden” parameter of a <FORM> in a HTML site. It could be also possible to save the value of the template from the beginning, so that the HTTP interface must be extended only in the first required HTTP request to the servlet. The solution has been only outlined. Each component will be described in detail in the following sections and the whole method will be also more widely exposed. The next picture shows a flow diagram, so that the order of the facts can be followed from the first click on the FcB button till the end of the application: Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 71 Figure 3.3.3: Flow diagram of the solution 3.3.2.1 The HTML Template It has been created one template for each page to be customized and they are (List 3.3.1): HTML site TEMPLATES call_callId.htm template.htm error_callId.htm errorId_template.htm error.htm error_template.htm List 3.3.1: HTML sites to be customized in FcB web application The objective of the template is to create a total flexible HTML model site that can be valid for every client. The more flexible it is, the easier to customize, the more skinnable the application can be. Therefore, I have decided to replace all following parameters with markers, which mean that each client may have different values for all them, since they will be substituted by the servlet with the data extracted from the XML file (see Table 3.3.1). Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model Element Objective 72 Example Images: The paths and names of the images are now easily replaced <IMG SRC= <!--path_image_1--> SRC and ALT in the HTML site, which means that all the images, logos, etc ALT= <!--alt_image_1--> ...> arguments can be substituted simply adding a new path and name in the XML File. SRC refers to the path and ALT to the name of the image that appears when the mouse goes over it. Texts The texts can be personalized by the client, which means also <P> <!--text_1--> </P> an easy way to skin the language. The XML file will have the proper encoding rule for each language (see 3.3.2.3) Links Links to other sites, links to write an e-mail, etc are elements <A HREF= <!--path_link_0--> > </A> that must be obviously personalized for each client. Style The path to the CSS File is also an element to personalize, so <link rel="stylesheet" type="text/css" that each client can have its own css file, and therefore its href= <!--path_css--> /> own style Script The path to the script file is also an element to change. In the <SCRIPT FcB application, it will be used only one JavaScript file pro LANGUAGE="JavaScript"></SCRIPT> SRC= <!--path_script--> language and not pro client, but in other applications, the JavaScript file could be different for each client, meaning that the events on the HTML site are different for each client Parameters of This is specific for the example that I have here studied; I ONMOUSEOVER=<!--image_over_0- JavaScript have -> function found that in the HTML sites, the event of ONMOUSEOVER and ONMOUSEOUT of JavaScript had been used. To maintain this effect, but with different images, I had to replace not only the path of the image, but the whole arguments, because they are part of a string of characters, ONMOUSEOUT=<!--image_out_0--> <A HREF='javascript:op(<!-- between “”, and the markers would not have been identified path_calendar-->,<!-- when looking for them and would not have been replaced. color_calendar-->)'> The calendar.htm is different for each client (a total new site for each of them, therefore the path of this site has been here added as a parameter of JavaScript function, as well as the color of the background of the site) Parameter Each client is in this application identified with a number, <INPUT TYPE="HIDDEN" phoneCallId which is the callId; the functionality of the application depends NAME="phoneCallId" VALUE=<!-- in big terms on the callId. Therefore, when the template is used, the servlet must also replace this parameter value with phoneCallId-->> the proper one so that when the next page is again received by the servlet, the client can be always identified Parameter This parameter informs the server if the template must be <INPUT TYPE="HIDDEN" useTemplate used or not. It was already said that this value could be saved NAME="template" VALUE=”true”> by the servlet and be send only on the first http request, so that the http interface must be extended only once Table 3.3.1: Elements to replace with markers and other characteristics of the template Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 73 With all these changes a big part of the HTML site can be easily customized, but nothing about the style is till now mentioned. To make use of the CSS file, whose path is also known by replacing a marker on the template, the elements of the HTML site must be identified with the argument class, so that every component of the site may be referred from the css file and create a different style for each of them. For instance, the different texts can have in this way different formats (color, size, font-type, etc) between clients and also in the same HTML site. The same occurs with the rest of elements of the site. In section 3.3.4, there is a detailed description about what can be exactly skinned and what not with this method. In reference to the use of CSS, it must be considered that not every browser supports the utilization of CSS and also not every browser interprets the style-sheets in the same way. Since I had myself this problem, I decided to write a section (3.3.2.2) about the CSS file and support of different browsers. 3.3.2.2 The CSS file and support of browsers As it was already explained in the previous section, the CSS file has a significant role within the proposed skinning solution. This file will be the responsible of many aspects of the GUI’s layout in the application, such as colors of elements, resizing, position, background images or colors, etc. In order to create an absolutely customizable GUI, where every element can be skinned, the argument class has been used for almost each component of the template (images, texts, cells of tables, etc), so that they can be referred from the CSS file. See in the following picture (Figure 3.3.4) an example of a CSS file, and the respective elements in the template: td.b1b2, td.b1d2, td.b1f2, td.b1a3, td.b2{background-color:"33CC00";} New color img.logo_call{height: 90 px;width: 90 px} Resize font.titel{color: "#000000";font-family: "Arial";font-size: "+18"} Format td.c1k2, td.c1l2, td.c1l3{visibility:hidden;} text Disappear <td class="b1b2" BGCOLOR="FF6600"> </td>//the color will be replaced … <img class="logo_call" SRC=…ALT=… WIDTH="50" HEIGHT="50" BORDER="0" NAME="logo"> //the image will be resized … <font class="titel" COLOR="#330066" SIZE="+1" FACE="Verdana">”..”</font> //the text will have a different format … <td class="c1k2" COLSPAN="2"><font class ="whentocall" COLOR= "#000000" FACE="Arial" SIZE="2"><!--text_7--></font></td>//this text element will not be seen in the GUI Figure 3.3.4: Example of CSS file and respective HTML code lines Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 74 As it has been demonstrated with the previous figure, the use of a CSS file to modify the elements of a HTML site is relatively easy. However, the CSS file can provoke some problems with different browsers, because not every of them support CSS in the same way. It is therefore very important to know exactly for which browser the application will be offered and make only use of those elements of CSS that every of those browsers support. I had also this problem, because in my practical work, I designed all GUIs firstly to be shown with Internet Explorer 6.0 and when I tested the same application with other browsers (Netscape and Opera), the results were by no means the same. See reference [2.10] in section 5.3.1, to look for information about what each browser supports, which must be taken into account when offering this skinning method to the customers. It is also significant to say that new versions of browsers will have better and better support of CSS, which means that this problem will take no much longer in the future. Anyway, for an immediate solution for Siemens, which offers its products for the browsers: Netscape (since version 5.0) and IExplorer (since version 5.0), is necessary to show what could be done with CSS, so that every browser supports. 3.3.2.3 The XML file The XML file is a simply text document where all content to be inserted in the template is clearly structured. I add part of the XML file in the following figure (Figure 3.3.5). It can be seen that this XML file has no more function as the one of any properties file. It is not a complicate XML file and it is here in this example only used to save all values of the customizable elements of the HTML template. There are other alternatives with java to implement a properties file and they will be also commented at the end of this section (see 3.3.2.3.1.4). The XML file will be read from the servlet to take out the content to be inserted in the template. Therefore, it must be structured so that the time of searching and customizing is not too long. Firstly, referring to the structure, it is also important that each component of the template has a direct relation and easy identification with the correspondent content field in the XML file. Each tag of the XML file is therefore called with the same name of the correspondent markers in the template. It is so easier for the provider (client of Siemens) to personalize the application. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 75 <?xml version = "1.0" encoding="ISO-8859-1"?> /* encoding must be the suitable for the language of textss*/ <Pages> <enc_language>iso-8859-1</enc_language> /* argument to know which encoding must be used in the HTML site*/ <pageid> /* page identification, so that only the necessary elements are read from the XML file*/ <pagenumber>0</pagenumber> <path_css>"../css/tennis.css"</path_css> /*style of the site*/ <path_script>"../script/valid_temp_es.js"</path_script> /*javascript file to be used*/ <color_calendar>"33CC00"</color_calendar> /*color of the calentar.htm site*/ <path_calendar>"../page/calendar_es.htm"</path_calendar>/*path of the calendar.htm site*/ // images in the template <image> <path_image_0>"../images/logo_tennis_1.gif"</path_image_0> <alt_image_0>"Identity Links"</alt_image_0> </image> <image> <path_image_7>"../images/dot-wt.gif"</path_image_7> <alt_image_7>""</alt_image_7> </image> // images to be changed with javascript functions; the whole function must be written <image_change> <image_over_0>"changeImages('contact_us','../images/contact_tennis_over.gif')"</image_over_0> <image_out_0>"changeImages('contact_us', '../images/contact_tennis1.gif')"</image_out_0> </image_change> // texts to be written in the HTML site. This an easy way to customize the language // each client can write wht he/she wants <text> <content_text_0>FreeCallButton</content_text_0> </text> …. <text> <content_text_13>Por favor, no olvide comprobar que la línea esté libre</content_text_13> </text> // links in the HTML site <link> <path_link_0>"http://www.siemens.de/"</path_link_0> </link> ..... </pageid> ... Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 76 // the next page number will be destined for the error messages <pageid> <pagenumber>1</pagenumber> <path_css>"../css/tennis.css"</path_css> <notValid>El servidor web no está disponible. Por favor, inténtelo más tarde.</notValid> <out>El servidor web no está disponible. Por favor, inténtelo más tarde.</out> </pageid> // the next page is for the customization of the error_callId.htm <pageid> <pagenumber>2</pagenumber> <path_css>"../css/tennis.css"</path_css> /* style for this page. The style of the 2 sites will be often the same. This value could be read and saved the first time the XML file is read*/ <path_applet>tennis_app.txt</path_applet> /* the applet will be only called in this site*/ <path_script>"../script/valid.js"</path_script> /*the script file is here the same*/ <image> /* images of this HTML site*/ <path_image_0>"../images/logo_tennis_1.gif"</path_image_0> <alt_image_0>"Identity Links"</alt_image_0> </image> ….// rest of images ….// rest of links /* the following text are the error messages that appear in the mitte of the site*/ <ok>Su llamada ha sido iniciada</ok> <okLater>Su llamada ha sido aceptada y será establecida en su momento</okLater> ...// rest of error messages <noSWS>La sesión Surf no puede ser iniciada.</noSWS> <out>El servidor web no está disponible. Por favor, inténtelo más tarde.</out> </pageid> </Pages> Figure 3.3.5: Example of the XML File With the previous picture and the explanations, the functionality of the XML file within the method is already clear for the reader. However, all till now written corresponds to the definitive solution for the XML file, and nothing is said yet about the intermediate trials. In next section (3.3.2.3.1), all experiences from the practice, related to the XML file are exposed. 3.3.2.3.1 Trials and experiences of the practice in relation to the XML file Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 77 In this section, experiences in relation to the XML file are exposed. The intermediate solutions, the evaluation within the performance of the application, together with some suggestions for other alternatives to the definitive presented method, are here presented. 3.3.2.3.1.1 Intermediate solutions for the XML file The first implementation was not done with an XML file for each client, but an only XML file was used for all and each client was there identified by the callId-tag. It was tested with a little number of clients and it worked perfectly. However, when testing with more than 200 clients, the time of search for the callId along the XML file was extremely long. The obtained times with 230 clients (size of the XML file > 1 MB), when the searched one was the last entry of the file, can be summarized in this table (Table 3.3.2): Java Method Duration in seconds (with 230 Clients) parse(): open an XML File and check the structure > 1 sec CallId - Search algorithm (sequential) > 14 sec (when the desired callId was the last one) Pagenumber – Search algorithm (sequential, there <0.1 sec are only 3 needed pagenumbers) Insert the content in the template <0.1 sec Table 3.3.2: Obtained times in the search of the callId along the XML file I thought about not using the method parse(), because it is actually not necessary to check the XML file every time it is opened, about changing the search-algorithm to a better one and about sorting the callIds. However, I decided that the actual solution, which consists on having an XML file for each client, would be much better as correcting the search-algorithm. There are actually two reasons why this second solution works much better: - The callId-search-algorithm is not more necessary. The proper XML file must just be opened (they will be named with the value of the callId: callId.xml). Only the pagenumber must be now searched (pagenumber 0,1 or 2). - The encoding parameter of the XML file must not be the same for every client; each of them can use a different one depending on the language they want since each one has a different XML file. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 78 With all this description about the XML file, there is no more doubt about its functionality within the proposed method. 3.3.2.3.1.2 Role of the XML file within the performance of the application From the point of view of the performance of the application, there are a couple of things to consider in reference to the XML file. It was already written (section 3.3.2.3) the importance of the speed of the application when exposing the why and wherefore of using a different XML file for each client instead of an only one for all of them. In this section, the velocity of work of the application will be again considered. I will present the actual times for opening and reading the XML file in different cases, and also the times of inserting these values in the template. I think it is an important factor for a future evaluation of the proposed skinning solution and especially for Siemens, when they take the decision of using it or not in the next versions of their applications. In the next table (Table 3.3.3) the important times within the customization of the template are presented. I have made the measures for two different clients that differentiate themselves not only in the GUI (logos, images, etc), but also in the language (Russian and Spanish). What must be taken into account from these two differences is that their XML files will have also a different size, which will have obviously consequences in the obtained times when reading and parsing the XML file. Before presenting the table, I think it will be helpful for the reader if I explain which times will be measured and in which cases; the three functions that could have more effect in the performance of the application are the followings: - parse: it is a java method that opens and checks the content and structure of an XML File - readXMLFile: function that reads from the XML file all the required elements that will be needed to customize the next HTML page to be send by the servlet - customize_template: it inserts all those obtained values from the XML file into the correspondent template - sum of times: it will be also presented in the table the sum of the times in order to show the approximate extra-time that the skinnable application will need in comparison to the not skinnable one Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 79 The presented use cases have been chosen so that the customization of the three existing templates (see List 3.3.1) has been measured. Client 1: Spanish Client 2: Russian Size of the XML file: 7KB Size of the XML file: 15KB Use case 1: Use case 2: Use case 1: Use case 2: Normal Function of FcB Error in FcB Normal Function of FcB Error in FcB page=0 page=2 page=1 page=0 page=2 page=1 template.htm errorId_ error_ template.htm errorId_ error_ template.htm template.htm template.htm template.htm 0.012564 0.012234 0.016046 0.021706 0.009137 0.023036 sec. sec. sec. sec. sec. sec. Read 0.008142 0.004308 0.001615 0.009105 0.003906 0.001403 XMLFile sec. sec. sec. sec. sec. sec. customize_ 0.040300 0.005550 0.000200 0.043882 0.005117 0.000201 template sec. sec. sec. sec. sec. sec. Sum of 0.061006 0.022092 0.017861 0.074693 0.018160 0.024640 times sec. sec. sec. sec. sec. sec. Method/ Function Parse Table 3.3.3: Measured times of the customization of the template 3.3.2.3.1.3 Conclusions of experiences with the XML file and the measured times Some interesting conclusions from the results presented in Table 3.3.3 are described in the following paragraphs: First of all, the results of the total sum of times represent clearly how much time more will be needed in the skinnable application in comparison with the no skinnable one. It is a factor to take into account when deciding if the proposed solution is suitable to be applied in future versions. The difference between having a XML file of 7KB and having one of 15KB is only of 0.01 sec, when customizing the first page, and it is so because of the parse() method. It must be taken into account that, the bigger the XML file is, the longer will last the parse() method. Apart from this, there is no more significant difference between the times measured for the two different clients (the two different sizes of XML file). That makes that the alternative of Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 80 opening the XML file only once, instead of opening and reading it each time a page is sent, could be in some cases a better solution. I have not implemented it but a consideration about the supposed times can however be done, using the results from Table 3.3.3. Suggestion of an alternative to reduce the measured times: The idea would be opening the XML file the first time it is needed, read all elements of it, for the three existing templates, and save the values, so that in the next call to the servlet, only the insert of values in the template must be done. Making use of the times of Table 3.3.3, the results for two different clients are the followings: Client 1(Spanish, 7KB) and use case 1 (without error): - Send the first page (template.htm) would last: o parse(): 0.012564 sec o readXMLFile (the whole of them and save the required values for the next templates): 0.008142 sec + 0.004308 sec o customize_template: 0.040300 sec o total sum: 0.065314 sec (0.004308 sec longer as what was presented in Table 3.3.3) - Send the second page (errorId_template.htm) would last: o parse(): 0 sec; it must not be done o readXMLFile(): 0 sec; it must not be done o customize_template: 0.005550 sec o total sum: 0.005550 sec (0.016542 sec shorter as the result from Table 3.3.3) Client 2 (Russian, 15KB) and use case 1 (without error): - Send the first page (template.htm) would last: o parse():0.021706 sec o readXMLFile (the whole of them and save the required values for the next templates): 0.009105 sec + 0.003906 sec o customize_template: 0.043882 sec o total sum: 0.078599 sec (0.003906 sec longer as what was presented in Table 3.3.3) - Send the second page (errorId_template.htm) would last: o parse(): 0 sec; it must not be done o readXMLFile(): 0 sec; it must not be done Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 81 o customize_template: 0.005117 sec o total sum: 0.005117 sec (0.013043 sec shorter as the result from Table 3.3.3) Conclusion to this alternative: In general terms, reading the XML file only once, implies that the performance of the application in the first use case would be: - 0.004308 + 0.016542= 0.012234 sec faster and for the second one: - 0.005117 + 0.013043 = 0.007926 sec faster. However, there are a couple of points that have not been here considered. First of all, there are many possible error/information messages of the errorId_template.htm and till now, with the solution I have implemented (reading the XML file each time a page is sent), only the needed error/information message was read because the status of the application was known, since it is determined in runtime (when for example the user determines the time of call, or an error occurs suddenly). On the contrary, when opening only once the XML file, all the values must be read and saved, since it is unknown what will choose the user or what will happen with the application. This means that the used times from Table 3.3.3 cannot be so exactly considered. The times required for the readXMLFile method when sending the first page would be therefore a bit longer (< 0.005 sec) as supposed. Assuming a maximal extratime of 0.005, the final value of the improvement would be at least: 0.012234 – 0.005 = 0.007234 sec faster as the first solution for the first client (Spanish) and at least: 0.007926 – 0.005 = 0.002926 sec faster for the second use of case (Russian). Comparing these two last assumed results of time improvement when reading the XML file only once, for client 1 (size of XML file 7 KB) and client 2 (size of XML file 15 KB), it is something to notice; surprisingly, the improvement has been better for the smaller XML file (0.007234 sec) than for the bigger one (0.002926 sec). It is because when applying the method parse() twice, the second time will be always shorter than the first time. The longer the first time lasts (bigger XML file), the more advertent will be the difference between the times of the first and second parse() call. Once the use of the XML file, as well as its performance, have been evaluated, it can be considered if its use will be profitable or not for the application. If the presented times were too long for what Siemens expects for the performance of its Web Services, different ways of optimization could be suggested. I describe in the next section (3.3.2.3.1.4) other possible alternatives to play the role of the XML file in this proposed skinning solution. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 82 3.3.2.3.1.4 Other alternatives to replace the XML file functionality Since the point of view of the performance of the application, the presented times in Table 3.3.3 could result too long if the number of simultaneous access of end-users to the same server is very high. Therefore I make a suggestion in this section of another possible alternative to replace the role of the XML file in the proposed skinning solution. A list of advantages and disadvantages of this alternative, as well as the reasons of having decided to present my solution with the XML file, instead of with any other, are presented in this section. One first way to implement the function of the XML file would be the creation of a Data Basis where all these values of customizable elements of the HTML sites were saved. I will not extend this alternative, nor implement it, because I think it would be too complicate and an unnecessary waste of place to maintain a Data Basis in order to replace the role of the XML file in this skinning solution. It is obviously much easier to create new XML files as to create, administrate and manage a Data Basis. I write this suggestion here only for those readers that may be interested in other alternatives and could find the idea of the Data Basis appropriate for their application. Considering that FcB has been implemented with Java, the classes that this programming language offers, can be utilized for implementing the second alternative. One of these java methods will be precisely the possible substitute of the XML file within the skinning solution. This java class is named “ResourceBundle” and it was implemented for the introduction of internationalization and localization in the Java programming language. It is based on the creation of one properties file for each desired language, with all the texts that will be shown in the web application. All these properties file must have the same content but in different languages and are also named similarly: only the three syllables that identify the country, the language and a possible variant, differentiate the names of the properties files. For example, in order to have the application in Spanish, English and Russian, three properties files would be needed and named as follows: “ResourceBundleName_language_country_variant”. For the three examples, it could be done, for instance: - English in the United Kingdom: MessagesFcB_en_UK - Spanish in Spain: MessagesFcB_es_S - Russian in Russia: MessagesFcB_ru_RU Besides the ResourceBundle object, a Locale object must be defined in order to determine which properties file will be used during the runtime of the application. From the java code, Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 83 any of these ResourceBundles is created with the proper Locale for the client and the properties file is accessed with a simple call to the java function, in order to read the customizable elements of the application: - ResourceBundle.getString (“name_of_the_string_to_read_from_properties”) These mentioned classes were created in Java to change the language of an application automatically. However, it can be obviously used for reading the value of any customizable element of the application. Therefore, the XML file could be perfectly replaced with one of these properties file, in the following way: enc_language = iso-8859-1 /* argument to know which encoding must be used in the HTML site*/ path_css_page0 = "../css/tennis.css" /*style of the first page*/ path_script_page0 ="../script/valid_temp_es.js" /*javascript file to be used*/ color_calendar = "33CC00" /*color of the calentar.htm site*/ path_calendar = "../page/calendar_es.htm"/*path of the calendar.htm site*/ // images in the template path_image_0="../images/logo_tennis_1.gif" alt_image_0="Identity Links" … // and so forth with the rest of the content of the XML file This ResourceBundle Method has been actually utilized till now in the FcB application for the internationalization of all those error/information messages in the correspondent HTML pages: error_callId.htm and error.htm. However, the way in that it has been implemented does not allow an automatic change of the language for each customer, because the definition of the Locale object has been asserted to the configuration file. When the servlet is initiated, it will be read the language and country from the configuration file and it will be fixed for the whole application. The next lines of code show how it has been implemented in FcB: String language=confFileManager.getString("LANGUAGE");/*confFileManager is another ResourceBundle to read the properties file of the configuration*/ String country=confFileManager.getString("COUNTRY"); String addMessages=confFileManager.getString("addMessages"); // the Locale remains unchangeable for all the customers of this Server Locale currentLocale=new Locale(language,country); _messages=ResourceBundle.getBundle(addMessages,currentLocale); Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 84 The way to make that each client (each Call-Center) has its properties file and with it, a skinnable GUI and language is separating the definition of the Locale from the configuration file. An easy form to achieve it, could be for example naming the changeable part of the name of the properties files with the callId of each client. See the following table (Table 3.3.4) for three different examples: CallId Language Name of the Properties File tennis Spanish in Spain MessagesFcB_es_SP_tennis bb468ce9 English in the USA MessagesFcB_en_USA_bb468ce9 bb4ac181 Russian in Russia MessagesFcB_ru_RU_bb4ac181 Table 3.3.4: Examples to name the properties files of the callIds I have regrettably not implemented this method for the servlet during the practical work of my diploma thesis. However, I wanted to add it here as a suggestion for possible future implementations of FcB, as I have already mentioned at the beginning of this section. Moreover, I have utilized this variant to skin the applet (section 3.3.2.7) and demonstrated that it works properly. Before finishing this section, a couple of advantages and disadvantages of using ResourceBundle instead of the XML file for the customization of a web application are presented: Advantages of ResourceBundle (in comparison to the XML file) - It means no loose of time, while the XML file requires more time to be opened and read (see Table 3.3.3) - It takes up less space in the server (the XML file is obviously bigger because of its structure) - It is a java method and therefore it is no necessary to import all required packages to work with an XML file: - o javax.xml.parsers.DocumentBuilderFactory o javax.xml.parsers.DocumentBuilder o org.xml.sax.SAXException o org.xml.sax.SAXParseException The way to code it is relatively easier Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 85 Disadvantages of ResourceBundle (in comparison to the XML file) - It should be manually written, while an editor to write XML automatically can be always found and used - The fact that the parse () method can be used is also an advantage, since the structure of the XML file will be checked, while there is no way to test the properties file of ResourceBundle - The XML file can be always utilized, in any web application, regardless of the programming language of the application is java or not - The properties files from ResourceBundle must always be saved as ASCII files, which is a bit problematic with those languages that have different characters to those installed in the machine. It is actually not so difficult to solve this problem. It must be done only a conversion of ASCII into Unicode. Java offers a tool that makes it automatically: native2ascii. That is not necessary to be done with the XML file. See the section of skinning the applet (section 3.3.2.7) for more information about this conversion. Why have I used the XML file for my proposed skinning method? Once that the advantages and disadvantages of the two possibilities of implementing the Model of the application (from the MVC design pattern), I would like to explain the why and wherefore I have decided to expose the solution with the XML file and not with the java class ResourceBundle. On the one hand, the use of ResourceBundle has some advantages since the point of view of the performance of the application, when it is compared to the use of an XML file. However, it cannot be forgotten, that this is only applicable when java is the programming language of the web application. On the other hand, in my opinion the XML file works properly enough to convert FcB into a skinnable web application. Moreover, it has also a couple of advantages (disadvantages of ResourceBundle), and which is more important, it suits much better as a general skinning method than ResourceBundle, which is a particular and exclusive class of Java. Fortunately, one method does not reject the other, which means that both can be together used and the one can always complement the other. I make this suggestion, especially for FcB and similar Web Services of Siemens, where Java is the main programming language and the use of ResourceBundle can be in many cases more profitable. Each web application Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 86 should be separately analyzed and the most suitable method from the two here presented could be particularly chosen. Finally, in my opinion, a general “Skinning Method” cannot have a component that is totally dependent on a certain programming language. Therefore it must be separated the concept of “Skinning Method”, which is actually the objective of my master thesis, from the possible variants or modifications that this general method can suffer in order to adapt it to a particular application, such as, for example, the Web Services of Siemens, where all the tests for the practical work of the thesis have taken place. 3.3.2.4 The Servlet In this section, the controller of the proposed skinning solution is outlined. As it was already explained in Figure 3.3.2, the servlet has here the role of the controller and it will make the connection between the model and the view. First of all, a brief description of the servlet and the interworking of the Handlers of the application will be presented, so that it can be better understood, how and where has been the java code changed to implement the controller of the skinnable application. See picture (Figure 3.3.6) to view the involved methods within the servlet of FcB: Figure 3.3.6: Description of the servlet in FcB Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 87 As the previous figure (Figure 3.3.6) represents, the adequate PageHandler will each time handle the different main methods (validate and serve) with the correspondent functions (read, customize, send, etc). The interworking of these components, since an end-user clicks on the FcB-button till he/she is called free of charge can be shown in Figure 3.3.7: Figure 3.3.7: Description of the FcB servlet in the normal functionality of the app. In the next figure (Figure 3.3.8) the same example of FcB servlet will be presented, but remarking in red and orange the main modified methods of the java code. As it can be seen, the structure is still the same and the whole acting of the servlet will be always decided according to the received parameter useTemplate. If this parameter has any other value different to “true”, no change of the code will be noticed. On the contrary, when useTemplate is equal to “true”, the new-implemented code will take place in the application. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 88 First of all, the method validate() asks if the template must be used or not. In the case of using it for the customization, the name of the page to be sent is template.htm, instead of call_callId.htm. Secondly, when serving the certain page, the template will be customized with means of the XML file. It is read and all the values are inserted in the template. Finally, I had to modify also the write() method, because of the internationalization of the web application. The HTML sites in some languages need to be encoded so that all the characters of the site can be interpreted. I had here some difficulties at the beginning because I tried firstly to encode the response when it is sent by the servlet with the print() method of java. This method does not support sending an encoded text and therefore, it was necessary to implement a new java class that extends the PrintWriter, as follows: public class MscPrintWriter extends PrintWriter { public MscPrintWriter() throws UnsupportedEncodingException {this(null,null);} public MscPrintWriter(OutputStream out, String encoding) throws UnsupportedEncodingException { super(new BufferedWriter(new OutputStreamWriter(out,encoding)), false);} } The code in the write() method of the FcB servlet would be the following: if(_useTemplate.equals("true")) { response.setContentType("text/html; charset=" + encoding ); response.setContentLength(_pageHtml.length()); MscPrintWriter out = new MscPrintWriter(response.getOutputStream(),encoding ); out.print(_pageHtml); out.close(); } The problem in the previous code was that when the response was encoded, for example with Unicode, the length of the encoded response was bigger as the not encoded one. Therefore, the String that has the content of the HTML site must be firstly encoded; then the length of the response must be set and finally, the encoded page can be sent. See the following code: Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 89 if(_useTemplate.equals("true")) { //the HTML site to send must be encoded with the proper code of this language byte [] b_temp = _pageHtml.getBytes(); //parameter encoding will be read from the XML file too String temp = new String(b_temp, encoding); response.setContentType("text/html; charset=" + encoding ); //the length must be also set and always before having encoded it, because for //example, unicode is always longer as any other code response.setContentLength(temp.length()); //the new implemented class must be here also used to encode what is send MscPrintWriter out = new MscPrintWriter(response.getOutputStream(),encoding ); //send the HTML site;it will be encoded by //the print method out.print(_pageHtml); out.close(); } The next figure (Figure 3.3.8), as it was already mentioned, shows these previous explanations graphically: Figure 3.3.8: Description of the FcB Servlet when the app. has been skinned Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 90 The main changes to the servlet have been already exposed. The rest of them are only littlenesses and there is no much more to comment about them. Both figures presented in this section (Figure 3.3.7 and Figure 3.3.8) about the FcB-Servlet correspond to the third architecture of FcB (see section 3.2.4), in which all HTML sites are in the provider´s server. In the following section (3.3.2.5) a couple of comments are written in reference to what must be taken into account in each of the three existing architectures. 3.3.2.5 Solution particularized for the three architectures In this section the solution is particularised for each of the three architectures (see section 3.2.4) of FcB. The skinning solution proposed in the master thesis works with all them but with some differences, which are based on the fact that the servlet is required to customize the template. Therefore, in those architectures, in which the first HTML site of FcB is in the Call-Center’s server, the servlet of the application will not be called to serve this first page. That means that this must be a new HTML site, created by the Call-Center if it must be customized, or a copy of the one offered by the provider. On the contrary, the rest of the sites of the application could be customized with the proposed skinning method in this master thesis. 3.3.2.5.1 Solution for Architecture 1: FcB’s HTML pages and Call-Center’s home page are at the FcB-server, therefore in the first html site, when clicking on the FcB-button, the link is the following: <.…HREF="javascript:window.open('http:../../freephone_call/call_callId.htm?phoneCallId= abcd1234)"> In this case the first HTML site (call_callId.htm) exists locally at FcB server, the servlet will not be called, and therefore the template will not be used. The Call-Center is responsible for the complete page. If the client wants to use the template in the other HTML sites (error.htm and error_callId.htm), the “template” parameter must be added in page call_callId.htm: <INPUT TYPE="HIDDEN" NAME="template" VALUE="true">, so that the servlet reads from the template and customizes the next served pages. 3.3.2.5.2 Solution for Architecture 2: FcB’s pages and Call-Center’s site are at the Call-Center server. It is the same solution as the previous one, only that a specific FcB page for the Call-Center must exist, but there are no more differences with Architecture 1. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 91 3.3.2.5.3 Solution for Architecture 3: In this case, FcB and Call-Center’s pages are not located on the same server. Therefore, the template can be used with the first site call_callId.htm too. The link when clicking the FcB-button to receive the first page of the application would be: <AHREF="javascript:window.open('http://ttm7server/fcb/FreeCallButton?phoneCallId=ten nis&template=true')"> The servlet will be than called and it recognises the use of the template with the parameter template=true and does the necessary to customize it. If the parameter is template=false, the servlet will read by default the call_callId.htm page, created by the client. That is the case of a client, who does not want to use a template and chooses the design by default or a complete new HTML site that he/she has created with a total different layout from the template, which cannot be achieved with the technique of Skinning. It must be taken into account that if the template is chosen since the beginning, the rest of HTML pages of the application (error.htm, etc) will be also created with a template. Otherwise, if the first page (call_callId.htm) is not created with the template, using it with the rest of HTML sites is even possible, only by adding the hidden parameter template=true in the first created HTML page. 3.3.2.6 Graphical examples of the solution This section is one of the most explicative and representative of the whole chapter 3, just because it is precisely in this subchapter, where the graphical results of the implemented method are exposed. The best way of presenting these three different layouts is to show firstly the original web pages of Siemens (Figure 3.3.9) and secondly, to mark the skinned elements in the new GUIs, comparing them with the original one. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 92 Figure 3.3.9: Web Pages of Siemens style I have chosen three different styles to present: The first one is similar to the original layout of Siemens, though all the typical Skinning properties can be there demonstrated; colors, text-format, images, invisible elements, language, links, etc are in this style customizable (Figure 3.3.10) In the second one, I have tried to make a more different layout to the one of Siemens style, with the same concept of Skinning, in order to prove what can be actually Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 93 achieved with this method and how fix it can be, when a client wants to move every element of the site (Figure 3.3.11) In a third and last one, I have tried to add new images that were not fixed within the template. That is, the path of the image will not be read from the XML file, but CSS will be used to insert a picture in a cell of an existing table of the template (Figure 3.3.12). Figure 3.3.10: Skinned FcB (Style 1) Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 94 Figure 3.3.11: Skinned FcB (Style 2) Figure 3.3.12: Skinned FcB (Style 3) Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 95 3.3.2.7 Skinning the applet The proposed skinning method for the web application has been modified a little for the applet’s customization. The idea of separating the content and the view of the application will be also applied, but the content will be no more implemented by a XML file, but by a properties file related to the java class ResourceBundle. See the following figure to view the components of the MVC-Model of the skinning solution for the applet: Figure 3.3.13: MVC-Model when skinning the applet The reasons of having implemented with the applet a variant of the first proposed skinning method are in this section also explained. Actually, the why and wherefore of having modified the general skinning method is that it has not properly worked with the applet. To explain the idea, I will describe in the following paragraphs the intermediate solutions that I thought for the applet, before achieving the definitive one, and the reasons of having rejected them. Firstly, I make a brief description about the applet of FcB; it will be always called from a HTML site (notificationviewer.htm), which is shown in a small new window that is opened with the following JavaScript function: window.open (“path_html_site?parameter1=value1¶meter2=value2+ more parameter for the JavaScript function”); Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 96 This line of code is inserted in the HTML site errorId_template.htm by the servlet when the customer wants to have the monitoring option (this option consist in viewing the applet, where the steps of the call will be shown till the end of it). So it is, the applet comes into play together with the errorId_template.htm and will show the different stages between the calling parts. It is important to mention these details because the way that the applet will have to recognise which client is served, is precisely reading the parameters that the servlet inserts in the JavaScript function. Once the implementation of the applet has been exposed, the different tested solutions will be described. 3.3.2.7.1 Solution 1: This first solution consists in having a different .class file, which means also a different .jar file for each client. The texts and images will be written direct in java code and a new .java file is needed for each client or language, when only the internationalization comes into play and the pictures must not be customized. The name of the .class and .jar file of the applet will be known through a parameter in the window.open JavaScript function. These values are also values that the servlet reads firstly from the XML file that identifies each client. Reasons of rejection: It is by no means a good method to skin the applet. A big part must be manually done; that means it is not a good skinning method, but only a way to achieve a customized applet. Not only a new .class file is required for each client, but also a new .jar file. That implies a big extra storage place and an important waste of time every time the applet must be customized: o Modify the java code o Compile to create the .class file o Create the new .jar file and save it on the server Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 97 3.3.2.7.2 Solution 2: The second solution corresponds exactly with the proposed skinning method for the rest of the web application (see section 3.3.2). The applet was supposed to read from a XML file, where all texts and paths of images are written. An only .jar file would have been enough for all clients. However, the problem with the applet is that the java classes that make it possible to read an XML file cannot be found and a SAXException comes when compiling the application. It would be possible to compile it without exceptions if the java classes related to a XML file were added to the jar file and downloaded with it. Reasons of rejection: The only way that this solution can work is adding in the jar file the SAX package of java, which means an extra size of 600Kb. Since the point of view of the performance of the application, that is a weighty argument to reject this solution automatically. 3.3.2.7.3 Solution 3: After the results from solution 2, I tried to replace the XML file with a normal text file, where all texts and images to be displayed are written. With this solution a unique .jar file would be enough for all clients. One advantage of it is that the text file must not be included in the jar file, because the URL method from java classes makes it possible to open a connection with the server and read from this text file. Reasons of rejection: Those languages that need another encoding (Japanese, Chinese, Russian, etc) different to iso-8859-1 (encoding for Latin languages) could not be read because the applet cannot find the java classes that make the conversion from byte to any other encoding different to iso8859-1 (for example: java.io.ByteToCharunicode.class) when compiling the code, and gives an IOException. 3.3.2.7.4 Solution 4: Finally, the last and definitive solution, which was already mentioned but not explained at the beginning of this section (see section 3.3.2.7), is based on a properties file and ResourceBundle method of Java. It can be achieved exactly the same as what the solution 3 tried to do. This java method was already exposed in section 3.3.2.3.1.4, when exposing other alternatives to the XML file. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 98 Since it is the definitive and best solution of the four presented ones, I will explain it in full detail in the following points: The java code of the Servlet replaces the marker <!--monitoring--> in the errorId_template.htm HTML site. See the following lines of code, where the key parameters for the solution have been marked in bold: insert("monitoring","window.open(\"../applet/notification_viewer_fph.htm?callId="+callId+"&lan guage="+language_code+"&country="+country_code+”&phonecallId="+_phcallId+"&text ="+errorText+"\",\"notif\",\"width=360,height=190,toolbar=no,menubar=no,location=no,scroll bars=no,resize=no\");"); In the HTML site (notification_viewer_fph.htm), where the applet is called, the parameters must be also read with java script, so that the applet can use them: var temp1 = document.location.search.substring(document.location.search.indexOf("language=")+9); var language_code = temp1.substring(0, temp1.indexOf("&")); var temp2 = document.location.search.substring(document.location.search.indexOf("country=")+8); var country_code = temp2.substring(0, temp2.indexOf("&")); var temp3 = document.location.search.substring(document.location.search.indexOf("_phcallId=")+10); var phcallId = temp3.substring(0, temp3.indexOf("&")); In the java code from applet, these parameters can be read in order to know which properties file form ResourceBundle must be used and which Locale object must be created: String language=getParameter("language_code"); String country=getParameter("country_code"); String variant=getParameter("phcallId"); String messagesName=”MessagesFcBApplet”; /* the same properties file could be here used as the one for the rest of the application but it is important that this properties file is saved in the same directory where the jar file of applet is it could be also defined as a Parameter from the HTML site*/ Locale currentLocale=new Locale(language,country, variant); messages=ResourceBundle.getBundle(messagesName,currentLocale); Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 99 Once the ResourceBundle is created, the texts from the properties file can be easily read: messages.getString("name_of_the_key_that_identifies_the_string_in_the_properties_file"); Finally, I will resume a set of points where I had difficulties, and that must be always taken into account when implementing this solution (List 3.3.2): The properties file will be named as follows: NameoftheResource_language_country_variant f.e. : MessagesFcBApplet_es_SP_xxx The properties file must always be saved in the same directory as the jar file of the applet, so that it can be found by the java method The properties file must be firstly created and saved as an ASCII text file. In order to be used with any language, the most profitable way to do it, in my opinion is to use the native2ascii tool of java. With this tool, the ASCII file can be easily encoded into unicode with a simple unique command line: native2ascii –encoding UTF8 input_file_name output_file_name I had problems when using other encodings, different to UTF8, because the conversion was not properly done. Therefore I suggest to use always UTF8 with this tool or make a test with the needed language and choose the suitable encoding. All that must be customizable (different for each customer) in the applet must be in the properties file: texts, images, etc. What must be also considered are the characteristics of the awt elements in the applet, such as type of font (not every font is installed or even available to be used in all languages). Another important point to take into account in the customization of the applet is that not every language needs the same space to be shown and therefore the resizing, indexing, etc of the text within the awt elements must be always done, which means implementing a general code, that can be suitable for all languages. List 3.3.2: Interesting points when skinning the applet Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 100 The main points and difficulties when skinning the applet have been written. I will end this subchapter with a picture (Figure 3.3.14), where the applet is skinned. They have only a different language but customizing the images would be so trivial like adding them in the properties file: Figure 3.3.14: Examples of the skinned applet 3.3.2.8 Other existing HTML sites in the FcB application This section is dedicated to those HTML sites that must not be customized or will not use the proposed skinning method to be customized: 3.3.2.8.1 Calendar.htm: a different calendar for each client This html site will be almost sure different for each client, but it has not been customized with the proposed skinning method, due to the following reasons. Firstly, it has no sense to make a template for it, because it is much easier and faster to create a new HTML site, due to the few elements that it has. Customizing the template would be much more costly than creating a new HTML site. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 101 The site is called from another HTML site and managed by code in java script. There is something that could be here customized: the way the date is shown in the HTML site from which the calendar is called. The application works so, that the chosen date by the end-user in the calendar.htm site, will be also shown in the call_callId.htm site, where the calendar was called. The way the date is in this site presented has not been internationalized, that is, it has a fixed order and format. The way to localize it for each country/customer would be through the JavaScript code of the calendar site. In order to know which calendar.htm must be opened for a certain customer, the path of this calendar.htm site has been added as another entry of the XML file, so that it is read directly from it where to find the site for each different client. If only the color of the background of calendar.htm site must be changed, there is also an entry for this property in the XML file. 3.3.2.8.2 error400.htm….error.500.htm These HTML sites are used to alert the user of some typical errors that can occur on the web server, such as: e400.htm: Bad Request. Your request cannot be completed e401.htm: Authorization Required. You are not authorized e403.htm: Forbidden. Sorry, you do not have permission to access this server. e404.htm: Document not found. Sorry, the requested URL was not found on this server. e500.htm: Internal Server Error. The server encountered an internal error or misconfiguration and was unable to complete your request. They are fixed in the initialisation of the web server; therefore the proposed method cannot be used. Moreover, it is not so relevant that these sites are personalized for each call-center, since most of these errors occur even before the end-client has entered in call-center’s web site. Although in the case of FcB web application it is not worth at all to customize these sites, I have read something about customizing these error pages and the methods that can be there used. The topic of this master thesis is actually “Skinning in web applications” and therefore, it is also interesting to write about the way to customize these error sites, since they are always present in any web service. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 102 First of all, Apache can be configured to do one of the four following things in the event of errors: 1. Output a simple hardcoded error message 2. Output a customized message 3. Redirect to a local (relative) URL to handle the problem/error 4. Redirect to an external URL to handle the problem/error The default configuration is to output a simple hardcoded error message (Option 1). Options 2 to 4 are configured within the .htaccess file with the command ErrorDocument: ErrorDocument 401 http://www.xxxx.xx/~callId/xxx.html ErrorDocument 403 http://www.xxxx.xx/~callId/xxx.html ErrorDocument 404 http://www.xxxx.xx/~callId/cgi-bin/xxx.pl ErrorDocument 500 http://www.xxxx.xx/cgi-bin/tester Not only a redirection to a new-implemented HTML site can be done, but also a program can be started. The servlet (or another new servlet) could be here called and the proposed skinning method applied. I have not implemented it with FcB, because the most error pages come into play even before the phoneCallId is known, and in the use case of FcB, it is precisely the callId the one that determines which properties file must be read in order to skin the application. 3.3.3 What must the provider do to customize the sites of a new client From the point of view of the commercialization of the web application, it should be evaluated what must do a provider in order to customize the application for each of its customers. Therefore, this subchapter, together with the next one (3.3.4) will be in some terms, determinant when deciding if a new installation and production of the skinnable version of FcB will be worth or not. It is a fact, that every business-client of Siemens will want to know how difficult or how much effort must be inverted to personalize the application for every client. The proposed solution makes it relatively easy for a provider to customize the FcB web application. All that must be done can be summarized in the next 4 points: Have a total knowledge of the structure of the template and which parts of it are fixed and which of them are skinnable (see section 3.3.4). Siemens should give their customers the proper documentation about it Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 103 Create a .css file with the style that the client (call_center) wants. To make it properly, it is very important to know the class argument of each element on the template and consider for which browsers must it work (see section 3.3.2.2) Create an XML file for each client (callId.xml) with all the contents to be inserted in the template (paths, images, links…). I think it would be a good idea for Siemens to offer a tool (such as the company SAP makes with its SAPEditor, see section 6.1.6.1 to take the idea), which asks for every element on the XML file and on the CSS file, and create both automatically, so that their business clients do not make errors when creating those files, which would mean an error in the whole skinning method Save all files and images, etc of the client in a suitable structure of directories. I would propose the following one: - All original html sites (for those who do not want to use the template) + the template in the /…/htdocs/freephone_call directory - All the images in the /…/htdocs/images/callId - All the css (only one for each client that uses the template is enough) in the /…/htdocs/css - Script files /…/htdocs/script - The XML file in /…/htdocs/xml - The .jar file, properties files and images of applet in /../applet With these previous points, together with the explanations of section 3.3.2.5, concerning to the solution for each architecture of FcB, is already clear which modifications must be done by the provider to offer a skinnable web service. 3.3.4 Possibilities and limitations of this method 3.3.4.1 Possibilities: What can be skinned As it has been explained in the previous sections all the typical properties of Skinning can be achieved with this method. How difficult or costly for the provider is to skin the application depends on how many changes the client wants in the GUI. On one hand, there is a set of things that are very easily skinned, which are: Exchange logos und images with other ones, but in the same position where the original were Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 104 Making some images or text elements invisible Change the size of the logos and images Change the text (language, format, etc) but in the same position where the original text was Exchange the colors of the background Exchange the links with other ones but also in the same position Make elements of the site invisible, so that they have no function in the application, for example, the FcB service without calendar On the other hand, there are some changes, apart from the ones listed before, that could be made in the layout, but dedicating much more time in studying the possibilities that the template can offer. For example, the position and size of the elements can be with .css specified. However, there some always some limits because of the way the template has been constructed. What I mean with this consideration is that the template has a structure of tables, with different cells and this is actually difficult to modify. The possibility of creating a more flexible template should not be discarded. An interesting point to remark is that the language, one of the most desired characteristic by the customer is very easy replaceable. That is, the internationalization of the web application is one of the things that can be always achieved. 3.3.4.2 Limitations: What can not be skinned It is a bit difficult to precise what cannot be skinned at all, however it must be clear that there are two main factors, because of which the provider can find some problems when trying to skin some elements: The template has a fixed structure of tables and a fixed maximum number of texts and picture-elements The excessive use of CSS in the design of GUIs may cause problems with some browsers (see section 3.3.2.2 for the details of browser’s support of CSS) In the following picture (Figure 3.3.15), the image of the template and its table-structure can be observed. The colors are exchangeable, the images and texts replaceable, but the cells will always be there. For instance, one of the things that the client could not do with this method is to add more text elements than the planed ones for the template. A maximum is fixed, because if no more Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 105 markers exist, the texts cannot be inserted. It is again here demonstrated that Skinning technique has always some limitations. When I described the advantages and disadvantages of Skinning in section 2.1.8, the decrease of “expressiveness” was added as a disadvantage. This is something that can be now better showed: it is not possible to create any new layout when the decision of using a skinning technique has been done. If one customer wanted to create a total different layout, the template should not be used and the actual existing solution of customizing FcB should be applied (see 3.2.5) with the disadvantage of inverting much more time and effort to do it. Figure 3.3.15: View of the template.html without being customized 3.3.5 Problems and difficulties during the practice In this subchapter, I will mention again the main difficulties that I had during the practical work of my master thesis. Most of them have been already described along this chapter; therefore I will make also references to those sections when exposing them here. The following list of points show these problems schematically, and more to them comes in the following paragraphs: Working with an already implemented java application First solution was thought to use only a XML file for all clients: too slow Internationalization: encoding of the HTML site, XML file and output of servlet Support of CSS of the required browsers by Siemens Applet: problems with the XML file, with the encoding and the adaptation of graphical elements to different language sizes List 3.3.3: List of problems and difficulties during the practical work Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 106 First of all, I had to work with an already coded application, which implies a waste of time to understand the whole functionality and the role of each java class within the entire application. Secondly, the very first solution was thought to use only one XML file for all clients and that was too slow, as it has been already explained before (section 3.3.2.3 and Table 3.3.2 to see the measured times). Another difficulty was the internationalization, what means the use of different languages. The main problem here was that not every language has the same alphabet, which in computer terms means the use of a different encoding mode. In order to make it possible, the following modifications had to be done: In the XML file: o Use the proper encoding parameter: o Add an encoding tag to be read by the servlet <?xml version = "1.0" encoding="ISO-8859-1"?> <enc_language>iso-8859-1</enc_language> In the Java application (servlet): o New java class that extends PrintWriter in order to send the data to the client with the proper encoding parameter. Java has an encoding by default (iso8859-1), which is only valid for the languages that come from Latin. Therefore, for any other language (Russian, Chinese, etc.) the suitable encoding parameter must be explicitly added. It should be valid for all languages the Unicode/UTF8 o When using Unicode as encoding, I had firstly problems with the size of the html site that the servlet reads, which is in this case the template. It must be also encoded with Unicode before setting the length of the content of the response. I had not noticed it, till I tested the application in Russian, with Unicode encoding, and only the half site was received. The use of CSS can carry some undesirable effects when using different browsers. That is actually a problem that I had. See all the details in section 3.3.2.2. Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 107 Finally, to skin the applet I had to implement another method and try different solutions till it worked properly. All the details about the internationalization and localization of it can be read in section 3.3.2.7. 3.3.6 Advantages and disadvantages This section outlines the advantages and disadvantages of using the proposed method for the concrete application of FcB. For a general evaluation of the method in any web application see the next section (3.4). 3.3.6.1 Advantages FOR … Siemens AG ADVANTAGES Easy to offer it: o Small modifications in the java application o Creation of the template based on the original html sites that Siemens had o The customer will only need a good documentation about it Notable improvement of the web service without much effort Provider (Telco) Easy to customize the web applications they buy; it is in fact, one of the most important advantages of this method, the easiness to achieve it. See section 3.3.3 to read what the provider must do and know to skin the FcB sites (time saving) If the template is used by many clients (call-centers) the amount of data to maintain in the server could be smaller: a unique HTML template is valid for all of them (space saving) although there must be a XML file for each B-Client (Call-Center) They become a customized and internationalized application and their end-users EndCustomer None will always recognise their Corporate Identity Table 3.3.5: Advantages of the proposed skinning method for FcB Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Skinning Model 108 3.3.6.2 Disadvantages FOR … DISVANTAGES Siemens AG Time exposure: for the customization of the rest of the web services that Siemens has, all the changes that have been done for FcB should be also applied. The time exposure is however not extreme at all; on the contrary, this method offers the possibility of being applied relatively quickly Loss of recognition: this, as well as the “time exposure” is also a disadvantage of Skinning in general (see 2.1.8). The loss of recognition for Siemens here is not a matter of the proposed method of skinning but a consequence of the personalization of any application. I write it here, because it is so demonstrated that the end-client will not know any more who is the developer of the service, which can be sometimes an advantage but also a disadvantage Complexity: it was another disadvantage of Skinning but I think here it is not relevant at all, as it was seen when the method has been described Provider (Telco) None B-Client (Call-Center) None End- Slower because of the whole process of customization (read XML file, read Customer template, customize it by inserting the content). See Table 3.3.3 for viewing the measured times Loss of expressiveness: not every layout is achievable with this method (see section 3.3.4.2, where the limitations are described). These disadvantages (time requirements + expressivity) are actually proper of Skinning (see the disadvantages of Skinning in section 2.1.8) Table 3.3.6: Disadvantages of the proposed skinning method for FcB Skinning Techniques in Web Applications 3 Evaluation and appliance of Skinning at an existing : Conclusion 3.4 109 Conclusion and evaluation In this final section of Chapter 3, a brief evaluation of the solution in general will be written. I will consider again here the proposed method to skin FcB web application, but as a general Skinning Technique for any web application, which is actually one of the most important aspects of this diploma thesis, as its title (Skinning technique in Web Applications) already suggests. What is significant to take into account in the evaluation is whether this method could be applied in any other web application, how difficult would it be, for which applications would it be most suitable, etc. First of all, the principle of the proposed method is very flexible and therefore it can be used and applied in many situations. Since the point of view of its independence of platform, the flexibility is always guaranteed. Besides, it should not be considered as a totally java-based method, because other programming languages could implement the same functionality as java here does. It must be taken from the proposed method only the general idea of implementing the following elements: - Template (it must not be HTML) that suits for all customers - Data file that contains the data to customize the template (XML is a good alternative to do it, but not the only one) - Controller, which could be implemented with any programming language (C, C++, Java, etc) With the previous three points it is already demonstrated that the basic idea of the proposed method is actually the appliance of the MVC (Model-View-Controller) design pattern. It is very difficult, if not impossible, to skin an application when the data and the view are mixed. Extending the concept to other type of utilities, such as applications on PC, the idea persists equally suitable and could be used to customize many other cases. Some modifications should always be done, to particularize the solution for different software, but the base should be always the same. My conclusion to this chapter is that Skinning may be achieved with many alternatives, but all of them should have a concept in common, which is applying the MVC-model. Skinning Techniques in Web Applications 4 Conclusion and Achievements of the thesis: Summary of the master thesis 110 4 Conclusion and Achievements of the thesis Outline: This chapter presents a summary of the whole content of the master thesis, together with the exposition of all achieved results during the time of research and work, and also a subchapter with all the possible points of extension about the topics that were handled along the whole document. 4.1 Summary of the master thesis The main points and conclusions of the whole master thesis are again in this section mentioned and summarized. This will be actually the subchapter, where all the statements about my master thesis are presented and reasoned. From the theoretical research about Skinning the following aspects have been concluded (see List 4.1.1 for a schematic representation of them and read the next paragraphs for a more detailed description of them). Skinning is a relatively recent issue that makes it possible to change automatically the whole layout of a software application. Where Skinning takes place, Skins and Themes are also necessary. These two words refer to all those elements that compound a skinnable user interface, such as logos, images, colours, buttons, slide bars, etc. There is a small difference between Skins and Themes, but in general terms, since the point of view of functionality, they can be even replaceable with each other. The technique of Skinning has two different areas of application that depend basically on where it takes place, that is, between the provider and a business customer (B2B) or between a business part and the end-customer (B2C). However, the most extended one is the one that takes place at the end-user side. The most popular skinnable programs are those in which the end-user can easily personalize his/her user interface with the use of the existing Skins in Internet or even creating him/herself his/her own Skins, with the help of “how-to” tutorials. This area of application has made of Skinning a well-known and fashionable technique, which is considered by the end-user as a desirable characteristic for the software he/she uses. So it is, that the best known functionality of Skinning till now is the Skinning Techniques in Web Applications 4 Conclusion and Achievements of the thesis: Summary of the master thesis 111 one oriented to the enjoyment of the end-users when they design their own layouts for their favourite skinnable programs. There is actually a lot of information about the Skinning of these applications in the Web (tutorials, thousands of Skins to download and install, last news about new Skins or skinnable software…). Skinning is an up-to-date technique that makes it possible to change the layout of GUI automatically Skins and Themes are the customizable elements in the GUI The technique of Skinning has two areas of application: Provider- (B2B) and User(B2C) area Skinning is mostly known because of its B2C-area of application, while the B2Barea is practically new There are lots of skinnable programs, where end-users can change their GUIs in a simple way, but the methods that these programs utilize are not so clear A proper way to achieve Skinnability is the use of the Model-View-Controller design pattern, where content and presentation of the application must be dealt separately There are no standards related to Skinning and only three patents have been found (June 2003) about the topic Skinning has also limitations: not every application can be skinned, and not every element in the GUI of an application can be skinned Many of the presented skinning methods make however use of web standards (XML, CSS…) which makes of Skinning a platform-independent technique in those cases A set of skinning tools exists already on the market, but not enough to have the possibility of choice Skinning can be an easy way to achieve customization and internationalization List 4.1.1: Summary points of theory about Skinning of applications On the contrary, there is almost nothing written about the methods that these programs use to become skinnable. Therefore one of the objectives for the master thesis was actually to make a research about which methods could be applied when creating an own skinnable software application. A classification of some skinning methods and an overview of the existing commercial skinning tools have been even exposed in the thesis. All these methods and some of the tools are based on a design pattern, known as the Model-View-Controller model. It consists on separating the data of content (Model) from the presentation (View) and having a third element (Controller) to make the union between the other two. This idea has Skinning Techniques in Web Applications 4 Conclusion and Achievements of the thesis: Summary of the master thesis 112 been also taken into account in the practical part of the diploma thesis, when implementing a skinning method for a certain web application. Once that the technique of Skinning has been introduced, the reader may ask him/herself what can really be achieved with this technique; I must unfortunately write that not everything can be skinned in the UI of an application. Which it is more, Skinning can even provoke a loose of expressiveness in the UI where it is applied. Other disadvantages of this technique are that the software may become slower when it is modified to be skinnable, and since the point of view of the implementation, it costs time and effort for the developers when they must create a skinnable application. The main reason of resulting sometimes complicate to implement skinnable software is the lack of standards and research about this technique. This was actually one of the main points of motivation of choosing this topic for a master thesis. Nevertheless, not only disadvantages should be here mentioned; the process of Skinning has also enough important advantages to be here again cited, especially related to those, not so well known functionalities that are typical of the technique of Skinning. More about the new area of application of Skinning must be then written, which takes place between provider and business-customer (B2B), and whose objectives are often to offer the customization, internationalization and localization of the software application. These three words, together with the personalization of an application, have been more than once used along this document. Skinning can in some terms make it possible to create customizable and internationalizable applications, which implies a new functionality to be considered also as an advantage. Since this point of view, Skinning is not more only a way that end-users have to enjoy themselves creating different layouts for their programs, but also a possible way to customize and internationalize an application. Below, the summary of the practical work will be presented. See List 4.1.2 for a schematic view of the points related to the practice and read the following paragraphs for a more detailed description. In the Industry Example presented in the practical part of the master thesis, the technique of Skinning has been applied for a certain web application. The proposed skinning method to use with one of the web services of Siemens was firstly mentioned in the theoretical study and then carried into the practice. It consists in separating the content and the view of the web application following the MVC-pattern, and creating the controller with the programming language in which the application has been programmed. This general skinning method, Skinning Techniques in Web Applications 4 Conclusion and Achievements of the thesis: Summary of the master thesis 113 based on a template, a content file (e.g. a XML file) and a controller implemented with the main programming language of the application, can be easily extended and particularized for many different web applications and also software on PC. Appliance of Skinning in a certain web application of Siemens to achieve the customization and internationalization of it The Industry Example of Siemens pertains to the “Provider”-area of application. There are actually in this example two B2B areas of application The whole application of Siemens, called Free-Call-Button had to be studied in order to find the most suitable skinning method for its characteristics The proposed method is based on the MVC design pattern: XML file (Model), HTML Template with CSS (View) and Java Servlet (Controller) For each customer, a different layout and language can be chosen automatically (Skinning) Evaluation and optimizations of the first proposed method till the definitive one was achieved, have been also an important part of the practical work Other alternatives for the Model component within the MVC pattern have been also proposed and tested The method used to skin the applet in the application for example, was a bit different than the one utilized for the rest of the application: the Model component for the applet was a properties file, making use of a certain java class The use of CSS implies problems with the support of browsers: The more the UI depends on CSS, the more differences there are between the different browsers The internationalization of the application was one of the most interesting matters to be solved and also one of the most problematic, because of the encoding of the texts and the newness of it List 4.1.2: Summary points of the practical work What I had to do with the web service of Siemens is actually applying this idea, but for the characteristics of the application in particular, that is, as the web pages were based in HTML, the template, which is part of the view within the MVC model, had to be also in HTML; as the main programming language was Java, it is clear that the controller had to be implemented also in Java; finally, for the content, it was first presented a XML file with the functionality of a properties file, but other alternatives, making use of some java classes were also presented to improve the performance of the application. Skinning Techniques in Web Applications 4 Conclusion and Achievements of the thesis: Summary of the master thesis 114 In this Industry Example of Siemens, the “Provider-area” of application (B2B) of Skinning was put into practice, and also some of the new functionalities of Skinning have been with it demonstrated. The objective with the web service of Siemens was not to offer the end-users the possibility of changing the layout of their GUI, but more to achieve the customization and internationalization of the application to be offered to different business customers in different countries, who wanted to maintain their Corporate Identity and language in the layout of the web application that they would offer to their own also business customers. To the practical work corresponds also the evaluation of the first proposed method, followed by the optimization of it. The very first method was not exactly the same as the final and definitive one. The general idea of separating content and presentation was since the beginning, but some modifications had to be done along the time of work in order to achieve a proper solution, since the point of view of the performance of the web service. It was firstly thought, for example, to use only a XML file for all customers, which had very bad consequences in the performance, because the application became too slow, due to the management of a XML file of large size and the algorithm of search in the XML file for each customer. In definitive, not only proposing and applying the Skinning method was part of the practical work, but also analyzing the whole web application of Siemens, learning its functionality, the development process and finally searching for the most suitable and optimum skinning method. Finally, the conclusion of the practice for future works and appliance of Skinning is that, when creating a new skinnable application, the content and the view should be considered separately and a third element should play the role of controlling the junction between both of them. The application in particular must be studied in order to decide which element will play each role within the proposed solution. Nothing is fixed; nothing is marked to be in a certain way, but only the separation between presentation and content. Skinning Techniques in Web Applications 4 Conclusion and Achievements of the thesis: Achieved results 4.2 115 Achieved results This subchapter outlines all achieved results from the expected ones at the beginning of the master thesis, which were already listed in section 1.4. The following tables show again the list of results that should have been achieved, together with the check if they were achieved or not. In those cases in which they were not achieved, a couple of comments are written. From the theory, it was expected … Achieved? Complete exposition of the topic of Skinning with the categorisation of all the found information: it is expected that any reader of the master thesis becomes the information that he/she may need about Skinning √ (features, applications, advantages and disadvantages, boundary conditions, etc) Exposition of different skinning methods classified by different criteria and described in full detail Overview of existing skinning tools on the market and description of their main features and functionality Suggestion of a suitable method/tool to be applied in the Industry Example of Siemens From the practical work, it was expected … The presentation of a method/tool that is able to skin any web application Use of this method in a certain Web Service of Siemens and its evaluation √ √ √ Achieved? √ √ Customization and Personalization of the Web Service with the use of the implemented method: it is expected that the web application to √ work with becomes skinnable Internationalization and Localization of the web service with the use of the implemented method: it is expected that the web application can be √ adapted to any country Installation and production of the new version of software, with the proper documentation about it (It will be done) Table 4.2.1: Achieved results in the master thesis Skinning Techniques in Web Applications 4 Conclusion and Achievements of the thesis: Achieved results 116 As it has been exposed in the table (Table 4.2.1) all the expected results for the master thesis have been achieved, and only the installation and new production of the web service has not been done yet. The reason of having waited to do it, and not having included it in the master thesis, has more to do with organizational matters than with the master thesis itself. Moreover, some other results that had not been expected have been also achieved (see List 4.2.1): Introduction to the topic internationalization and review of the new methods of java to achieve it Report of all those points to take into account when different languages come into play in an application Best skinning method to customize also the applets of web applications Outline of the problems that the use of CSS may cause with browsers Overview of the customization of the error sites with Apache List 4.2.1: Achieved results that had not been expected All these points have been concluded from the research work or from the problems that were found during the practice. Skinning Techniques in Web Applications 4 Conclusion and Achievements of the thesis: Possible points of extension 4.3 117 Possible points of extension This last subchapter will present the possible points of extension of the current master thesis. Due to the newness of the technique of Skinning, it can be written that there is still much to do in the world of Skins and Themes. In the master thesis many aspects of this technique have been handled and almost each of them could be a matter of research in the following years, since Skinning is a developing technique that will be make great progress in the very near future. There are actually three directions in which the points of extension can be oriented: Research of the same topics that have been here handled because of the possibility of its extension in the near future o Looking for new skinnable programs on the market and the methods they use o Looking for new skinning tools on the market o Looking for new skinning methods or new documentation about the already existing ones o Looking for software developer companies that begin to offer customizable and internationalizable applications with the appliance of Skinning o Looking for new patents o With this new information, a more complete document similar to the present one could be rewritten Extend those topics that were already handled in the master thesis but in more detail. The next list present all these topics in order of importance (from the most interesting one to the least one): o Internationalization and localization of SW are two words that were more than once mentioned along this master thesis. There is still much to do about these topics and both terms are more and more important since companies desire to go on to international markets. The technique of Skinning has been here used in order to achieve them has been here used, but not widely enough. Research about these concepts should be one of the points of maximum interest in the possible extension of this thesis. Questions such as, how to do it with other programming languages different to java, how to create Skinning Techniques in Web Applications 4 Conclusion and Achievements of the thesis: Possible points of extension 118 localizable Skins/Themes, how to create a localizable UI with the use of Skins/Themes, should be answered in future works o Try to implement new web applications, instead of working with an existing one and use some of the skinnable frameworks presented in this master thesis. For example, for applications with java, there are two possible ones: Struts and Pajes. Both of them separate the content from the presentation of the application and give the possibility of creating skinnable web applications with java o The introduction of XML to define the UI will be, in my opinion, the future of customizable applications. The use of a web standard like XML makes it easier to create UI independent from platforms. For example, XUL (Language based on XML to define UI, created and used by the browser Mozilla) could be a solution to define the future UI in any application. This is also a possible point of extension: try to use XUL in an Industry Example. There are already some developing projects that use XUL in their UI. See information about XUL in section 5.3.1,reference [3.3] Since the point of view of the particular Industry Example of Siemens, some things must be still done. They are of course not so relevant for other research works about Skinning, although some conclusions could be anyway taken from: o The way the awt elements of an applet could be customized (skinned): resizing when the text needs more space, etc o Replace of CSS with another style element that provokes no problems with the browsers o Optimization of the proposed skinning method for the practice, since the point of view of the performance The previous points of extension corroborate again the newness of this technique, together with its importance within the development of new software applications. There is still much to do in the world of Skinning, and therefore, it should be no more considered only as an enjoyment of end-users, but as a developing technique that has much to offer to the future of customizable software on the market. Skinning Techniques in Web Applications 5 General Information: Abbreviations 119 5 General Information Outline: In this chapter the general information of the master thesis is presented. Glossary, abbreviations and references complement its content. 5.1 Abbreviations Ads: Active Directory Server MPL: Mozilla Public License ASP: Active Server Pages MVC: Model View Controller ASP.NET: Active Server Pages .NET Nds: Novell Directory Service ATL: Active Template Library OS: Operating System B2B: Business to Business PHP: Hypertext Pre-processor B2C: Business to Customer RDF: Resource Description Framework CGI: Common Gateway Interface SAP: Software Application Provider CMS: Content Management System STL: Standard Template Library COM: Component Object Model WYSIWYG: What You See Is What You Get CSS: Cascade Style Sheets XHTML: Extensible Hypertext Markup Language CWS: Click-to-Dial Web Server XML: Extensible Markup Language FcB: Free Call Button XSL: Extensible Style sheet Language GPL: General Public License XSLT: Extensible Stylesheet Language Transformation GTK: Gimp Tool Kit XUL: Extensible User-interface Language GUI: Graphical User Interface IDE: Integrated Development Environment i18n: Internationalization IPAS-BUS: Intellectual Property Application System - Business Unit Services JFC: Java Foundation Classes JSP: Java Server Pages KDE: K Desktop Environment l10n: Localization MFC: Microsoft Foundation Classes Skinning Techniques in Web Applications 5 General Information: Glossary 5.2 120 Glossary Active X: A loosely defined set of technologies developed by Microsoft. ActiveX is an outgrowth of two other Microsoft technologies called OLE (Object Linking and Embedding) and COM (Component Object Model). As a moniker, ActiveX can be very confusing because it applies to a whole set of COM-based technologies. Most people, however, think only of ActiveX controls, which represent a specific way of implementing ActiveX technologies. (Source: http://www.webopedia.com/TERM/A/ActiveX.html) Active X controls: A control using ActiveX technologies. An ActiveX control can be automatically downloaded and executed by a web browser. ActiveX is not a programming language, but rather a set of rules for how applications should share information. Programmers can develop ActiveX controls in a variety of languages, including C, C++, Visual Basic, and Java. An ActiveX control is similar to a Java applet. Unlike Java applets, however, ActiveX controls have full access to the Windows operating system. This gives them much more power than Java applets, but with this power comes a certain risk that the applet may damage software or data on your machine. To control this risk, Microsoft developed a registration system so that browsers can identify and authenticate an ActiveX control before downloading it. Another difference between Java applets and ActiveX controls is that Java applets can be written to run on all platforms, whereas ActiveX controls are currently limited to Windows environments. (Source: http://www.webopedia.com/TERM/A/ActiveX_control.html) Branding (look and feel): It means in the scope of Customization all that represents the identity of a Company. Sounds, colors, graphics, icons, or also special handling (e.g. a way of login) may form an identity and belongs to branding related material. (Source: SIEMENS intern: SURPASS Products, Description P30309-A0077-A321-04-7618, “Adaptations for MMA Customer Projects Guideline”) Build-in class (in java): It is a class whose instances have restricted capabilities or special representations. (Source: http://www.franz.com/support/documentation/6.2/ansicl/dictentr/built-in.htm) Business Logic: The code that implements the functionality or business rules of an application. (Source: http://java.about.com/library/glossary/bldef-buslogic.htm) Content Management: The management of all the data that an application may contain. Configuration: It means in the scope of Customization the adaptation of information in order to fit an application to the need of a customer (e.g. special numbers like the country code). (Source: SIEMENS intern: SURPASS Products, Description P30309-A0077-A321-04-7618, “Adaptations for MMA Customer Projects Guideline”) Cookies: Cookies are pieces of information generated by a Web server and stored in the user's computer, ready for future access. Cookies are embedded in the HTML information flowing back and Skinning Techniques in Web Applications 5 General Information: Glossary 121 forth between the user's computer and the servers. The main purpose of cookies is to identify users and possibly prepare customized Web pages for them. When you enter a Web site using cookies, you may be asked to fill out a form providing such information as your name and interests. This information is packaged into a cookie and sent to your Web browser, which stores it for later use. The next time you go to the same Web site, your browser will send the cookie to the web server. The server can use this information to present you with custom web pages. So, for example, instead of seeing just a generic welcome page you might see a welcome page with your name on it. (Source: http://www.cookiecentral.com/content.phtml?area=2&id=1, http://www.webopedia.com/TERM/c/cookie.html) Corporate Identity: The consistent image created by a company's offline and online communications. This image usually consists of: consistent use of specified colors, typefaces, graphics, layout and logo. (Source: http://www.templatecentral.com/newsletters/corpidglossary.asp) Customization: Adaptation of the existing application to the needs of the customer. It is subdivided in to the following topics: Branding, Configuration, (Sub-) Functions. (Source: SIEMENS intern: SURPASS Products, Description P30309-A0077-A321-04-7618, “Adaptations for MMA Customer Projects Guideline”) HTMLB controls: HTMLB (HTML-Business for Java) provides a full set of easy-to-use Web controls. These guidelines describe the HTMLB controls, their types, usage, attributes, and how to set the attributes with the JSP-taglib and the classlib. For each control there is a general page that describes its usage, types, and design-relevant attributes. This description is on the interaction design level. A further page describes more technical issues, such as browser compatibility, edit-ability in the Style Editor, and accessibility issues. Thirdly, the Control API page provides a development-oriented view of the control with detailed descriptions of attributes and parameters. In addition, there are pages that describe general interaction design aspects, such as page layout, correct usage of certain often-used controls, as well as hints on finding the right control for a given purpose. (Source: http://sapdesignguild.org/resources/htmlb_guidance/getting_started.html) Industry Example: A practical and real example implemented for any company. Internationalization: It describes how to design an application in a way that country dependent parts can be easily adapted later on. It facilitates the later executed modification of the final (pre-)product to local target markets. (Source: SIEMENS intern: SURPASS Products, Description P30309-A0077A321-04-7618, “Adaptations for MMA Customer Projects Guideline”) Localization: Project specific adaptation of an application to specific needs of a given country/region. It applies the mechanisms of Internationalization. (Source: SIEMENS intern: SURPASS Products, Description P30309-A0077-A321-04-7618, “Adaptations for MMA Customer Projects Guideline”) Skinning Techniques in Web Applications 5 General Information: Glossary 122 MMX technology: It is a technology designed expressly to improve the performance of image processing and graphics. This technology dramatically enhances image processing operations such as alpha blending and blurring, resulting in performance that is 2-to-4 times faster than conventional Intel processors. Furthermore, this technology is relatively universal; although MMX is not generally found in chip sets that are not made by Intel, competing processors such as the power PC use similar processing instructions capable of displaying SUI (Skin User Interfaces) at no extra cost to the user. (Source: http://www.supelec-rennes.fr/ren/fi/elec/ftp/docs/mmx/mmx_overview.pdf) Personalization: It means the adjustment of possible options, e.g. color schemes, tones and so on, to personal habits. Only foreseen options can be personalized und, in contrast to Customization, it will be executed during runtime of an application at the target environment (e.g. end user PC or in Browser at end user PC), and performed by end user, not by developer or vendor of a product. (Source: SIEMENS intern: SURPASS Products, Description P30309-A0077-A321-04-7618, “Adaptations for MMA Customer Projects Guideline”) Plug-In: Plug-ins are software programs that extend the capabilities of one browser in a specific way giving, for example, the ability to play audio samples or view video movies from within the browser. (Software: http://wp.netscape.com/plugins/?cp=dowdep2) Presentation Management: all code of an application that refers to the layout and view of it. Sablotron: It is a fast GPL or MPL licensed XSLT engine fully implemented in C++. It is an Open Source Toolkit for XML. For the programming languages Perl, PHP, Python, Object Pascal, Ruby, Erlang, Tcl and Ada there are Wrappers that make it possible to use Sablotron with this languages. (Source: http://genomenews.free.fr/tutorials/sablot.html) Server Controls (ASP.NET): Server controls are tags that are understood by the server. There are three kinds of server controls: HTML Server Controls (Traditional HTML tags), Web Server Controls (New ASP .NET tags), Validation Server Controls (For input validation). With Classic ASP it is impossible to separate executable code from the HTML itself. This makes the page difficult to read, and difficult to maintain. ASP .NET has solved this problem with server controls. (Source: http://www.w3schools.com/aspnet/aspnet_controls.asp) Servlet: A Java program, which resides and executes on a server to provide functionality to the server or processing of data on the server. (Source: http://www.learnthat.com/define/s/servlet.shtml) Skin: It is the set of elements that includes everything necessary to change the “look and feel “ of a particular GUI of a certain application. They could include bitmaps for each element in the layout of the application (buttons, title bars, sliders, radio buttons, check boxes, borders…). The process of Skinning consists actually in replacing any of these Skins with another one or just adding and eliminating Skins from the layout to show a completely different GUI. They allow the user to configure the GUI by choosing different categories of Skins. Skinning Techniques in Web Applications 5 General Information: Glossary 123 Skinning: It is the technique that makes it possible to modify automatically the complete layout of a software application. This means that each user of the application can choose a different GUI at runtime or that the developer him/herself can change the appearance of his/her program without having to add any line of code. Template Engine: Any tool/means/element/program that allows separating business logic from layout when coding an application. Template Technology: Any technology that makes use of templates: a template is a document or file having a preset format, used as a starting point for a particular application so that the format does not have to be recreated each time it is used. Themes: Set of elements, but they consist in individual files, which are usually ordered in directories. They are used for general things above the operating system layer (for example: the color-patterns of operating systems, background images, etc). On the contrary, Skins are usually created even for a certain program and they can mostly only work properly with it. WebMacro: WebMacro is a 100% Java open-source template language that enables programmers and designers to work together while promoting the ModelViewController pattern. WebMacro is a viable alternative to JavaServerPages, PHP, and ASP. It's the fundamental page technology behind several major websites such as Altavista. WebMacro separates concerns about program code from concerns about the way a page looks: HTML should not clutter up program code, program code should not clutter up HTML. (Source: http://www.webmacro.org/) Wrappers: Wrappers are a type of software "glueware" that is used to attach together other software components. A wrapper encapsulates a single data source to make it usable in a more convenient fashion than the original unwrapped source; this distinguishes wrappers from another kind of glueware, mediators that combine data from different data sources. Wrappers are assumed to be "simple", although there is no clear demarcation between what belongs in a "simple" wrapper and a "complex" higher level component. Wrappers can be used to present a simplified interface, to encapsulate diverse sources so that they all present a common interface, to add functionality to the data source, or to expose some of the data source's internal interfaces. (Source: http://www.objs.com/survey/wrap.htm) WYSIWYG: Editor or program that allows an interface or content developer to create a graphical user interface or page of text so that the developer can see what the end result will look like while the interface or document is being created. A WYSIWYG editor can be contrasted with more traditional editors that require the developer to enter descriptive codes (or markup) and do not permit an immediate way to see the results of the markup. (Source: http://whatis.techtarget.com/definition/0,,sid9_gci213392,00.html) Skinning Techniques in Web Applications 5 General Information: References 5.3 References 5.3.1 [1] 124 Links Most important Skinning Sites [1.1] http://www.customize.org [1.2] http://www.deskmod.com [1.3] http://www.deviantart.com [1.4] http://www.lotsofskins.com [1.5] http://www.skinbase.org [1.6] http://www.skinz.org [1.7] http://www.velocityart.com [1.8] http://www.wincustomize.com [2] Skinning Methods [2.1] http://www.domesticat.net/skins/howto.php [2.2] http://www.feenysfunhouse.com/journal/archives/jasons_thoughts/000128.html [2.3] http://www.oreillynet.com/pub/a/javascript/2001/04/27/essential_js.html?page=1 [2.4] http://feeny.verberweb.com/journal/archives/jasons_thoughts/000128.html [2.5] http://www.snazzykat.com/archives/002623.php [2.6] http://www.deliriouscool.org/archives/cat_weblog_widgets.php [2.7] http://www.mozilla.org/docs/ora-oss2000/skins/index.htm [2.8] http://www.winamp.com/ [2.9] http://msdn.microsoft.com/msdnmag/issues/03/03/SiteSkinning/default.aspx [2.10] http://www.westciv.com/style_master/academy/browser_support/ [3] XML and XUL [3.1] http://www.oreillynet.com/pub/a/network/2000/04/28/feature/xul-xml.html?page=1 [3.2] http://www.xmlsoft.org/ [3.3] http://www.xulplanet.com/tutorials/xultu/intro.html [4] Additional Skinning Sites: [4.1] http://www.ezskins.com [4.2] http://www.anyskins.com/faq.html [4.3] http://www.giggle.de/faq.php [4.4] http://www.gillsthemes.fsnet.co.uk/faq.htm [4.5] http://www.xp-styles.de, http://www.style-xp.com [4.6] http://www.themes.org [4.7] http://www.screensandthemes.com/ Skinning Techniques in Web Applications 5 General Information: References 125 [4.8] http://www.themesunlimited.com/ [4.9] http://www.freethemes.com/ [4.10] http://www.wm.themes.org/ [4.11] http://www.kde.themes.org/ [4.12] http://freshmeat.net/ [4.13] http://www.themeworld.com/ [4.14] http://www.gtk.themes.org/ [4.15] http://www.topthemes.com/ [4.16] http://www.invisionskins.com/index.php?p=skinguide&cat=templates [5] Products: [5.1] http://www.enterprisecustomization.com/ASPNET1.htm [5.2] http://www.devexpress.com [5.3] http://www.ingenuware.com [5.4] http://www.l2fprod.com [5.5] http://www.pajes.org [5.6] http://www.codeproject.com/dialog/skinstyle.aspserver33.hypermart.net/celibol/skinsys.htm [5.7] http://www.softshape.com/activeskin [5.8] http://www.stardock.com [5.9] http://www.xheo.com/products/webskin/ [5.10] http://www.skinux.com/technology.php#applications [5.11] http://www.skinux.com/technology.php [5.12] http://www.actionframework.org/ [5.13] http://www.smartbrainsoftware.com/Smart%20Brain%20Software_Fles/SkinBoxer.htm#top [5.14] http://www.windowblinds.net/skinning/ [5.15] http://www.codeproject.com/dialog/ezskin.asp [5.16] http://www.exontrol.com/sg.jsp?content=products/exskin [5.17] http://www.tmssoftware.com/tsf.htm [5.18] http://www.vbaccelerator.com/codelib/gfx/skin.htm [5.19] http://www.netbeans.org/kb/articles/skin-old.html [5.20] http://xreporter.cocoondev.org/index.html [5.21] http://www.theskinsfactory.com/skinsfactory/?page=wd [5.22] http://sapdesignguild.org/editions/edition6/theme_editor.asp [5.23] http://www.stardock.com/products/directskin/ [6] Programs with Skinning support: [6.1] http://sonique.lycos.com/ [6.2] http://drweb.de/browser/netscape6_themes.shtml [6.3] http://www.linux-magazin.de/Artikel/ausgabe/2000/10/KDE/kde.html Skinning Techniques in Web Applications 5 General Information: References 126 [6.4] http://wp.netscape.com/eng/mozilla/ns6/themes/creating.htm [6.5] http://themes.mozdev.org/ [6.6] http://community.borland.com/article/0,1410,28423,00.html [6.7] http://www.smbessentials.com/link_directory/index_skin.htm [6.8] http://delphi.about.com/cs/toppicks/tp/aatpxpthemes.htm [7] Separate Model from Content and MVC links [7.1] http://www.object-arts.com/EducationCentre/Overviews/MVC.htm [7.2] http://ootips.org/mvc-pattern.html [7.3] http://c2.com/cgi/wiki?ModelViewControllerAsAnAggregateDesignPattern [7.4] http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html [7.5] http://javanook.tripod.com/patterns/java-mvc.html [7.6] http://www.enode.com/x/markup/tutorial/mvc.html [7.7] http://rd13doc.cern.ch/Atlas/Notes/004/Note004-7.html [7.8] http://www.webmacro.org/ [7.9] http://jakarta.apache.org/velocity [7.10] http://www.javaworld.com/javaworld/jw-04-1998/jw-04-howto.html [8] Java Skinning and Internationalization [8.1] http://www.javaworld.com/javaworld/jw-05-2000/jw-0518-skins.html [8.2] http://java.sun.com/docs/books/tutorial/i18n/resbundle/concept.html [9] Private skinnable websites examples [9.1] http://acting-natural.com/ [9.2] http://astarael.net/ [9.3] http://blogblogbaby.com/ 5.3.2 Literature [10] Design Patterns, Elements of Reusable Object-Oriented Software Author: Erich Gamma et al Editorial: Addison Wesley [11] Pattern Oriented Software Architecture: A System of Patterns Author: Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad (contains detailed description of MVC, and also of a related architecture: Presentation-AbstractionControl) Skinning Techniques in Web Applications 5 General Information: List of figures, tables 5.4 5.4.1 127 List of figures, tables and lists Figures Figure 2.1.1: Representation of the MVC design pattern............................................................... 18 Figure 2.1.2: Mode of operation of the MVC design pattern ......................................................... 19 Figure 2.1.3: Normal aspect of Winamp .......................................................................................... 22 Figure 2.1.4: One of the thousand existing Skins for Winamp....................................................... 22 Figure 2.1.5: Graphical example of Skins in Winamp.................................................................... 22 Figure 2.1.6: Representation of B2B and B2C relations................................................................. 27 Figure 2.2.1: Representation of skinning method 1 (XML + HTML/CSS + Java servlet) ........... 38 Figure 2.2.2: Flow diagram of skinning method 2 (php/asp with CSS)......................................... 39 Figure 2.2.3: Transformation of XSL files in (X)HTML to be viewed in a browser .................... 41 Figure 2.2.4: Example of XML file that makes references to the existing skins ........................... 43 Figure 2.2.5: Example of properties file in java skin method......................................................... 46 Figure 2.2.6: Layout 1 (Java Skins).................................................................................................. 46 Figure 2.2.7: Layout 2 (Java Skins).................................................................................................. 46 Figure 3.2.1: Areas of Application particularized for Free Call Button Web Application .......... 58 Figure 3.2.2: Site of the Call-Center with the FcB-button (menuhaut.htm) ................................. 61 Figure 3.2.3: FreeCallButton page (call_callId.htm) ...................................................................... 61 Figure 3.2.4: Site calendar.htm......................................................................................................... 61 Figure 3.2.5: Site error_callId.htm................................................................................................... 62 Figure 3.2.6: Site notificationviewer.htm......................................................................................... 62 Figure 3.2.7: Architecture 1 of FcB.................................................................................................. 63 Figure 3.2.8: Architecture 2 of FcB.................................................................................................. 64 Figure 3.2.9: Architecture 3 of FcB.................................................................................................. 65 Figure 3.3.1: Considerations to propose a solution to skin the FcB application ........................... 67 Figure 3.3.2: MVC- model in the solution for FcB.......................................................................... 69 Figure 3.3.3: Flow diagram of the solution...................................................................................... 71 Figure 3.3.4: Example of CSS file and respective HTML code lines ............................................. 73 Figure 3.3.5: Example of the XML File ........................................................................................... 76 Figure 3.3.6: Description of the servlet in FcB ................................................................................ 86 Figure 3.3.7: Description of the FcB servlet in the normal functionality of the app..................... 87 Figure 3.3.8: Description of the FcB Servlet when the app. has been skinned.............................. 89 Figure 3.3.9: Web Pages of Siemens style ........................................................................................ 92 Figure 3.3.10: Skinned FcB (Style 1)................................................................................................ 93 Skinning Techniques in Web Applications 5 General Information: List of figures, tables 128 Figure 3.3.11: Skinned FcB (Style 2)................................................................................................ 94 Figure 3.3.12: Skinned FcB (Style 3)................................................................................................ 94 Figure 3.3.13: MVC-Model when skinning the applet.................................................................... 95 Figure 3.3.14: Examples of the skinned applet .............................................................................. 100 Figure 3.3.15: View of the template.html without being customized ........................................... 105 Figure 6.1.1: MVC in tool Xheo.WebSkin ..................................................................................... 131 Figure 6.1.2: Development process of WebSkin tool..................................................................... 133 Figure 6.1.3: Creation of the HTML page with WebSkin ............................................................ 134 Figure 6.1.4: The MessageBox is not skinned................................................................................ 136 Figure 6.1.5: The MessageBox is here skinned, thank to SkinBoxer ........................................... 136 Figure 6.1.6: DirectSkin Tool (source: section 5.3.1 reference [5.23]) ............................... 138 Figure 6.1.7: MVC in tool Skinux .................................................................................................. 141 Figure 6.1.8: MVC pattern in tool ActionServlet .......................................................................... 143 Figure 6.1.9: Folder hierarchy in themepack.zip .......................................................................... 144 Figure 6.1.10: Tool PAJES, separation of content and presentation management .................... 145 Figure 6.1.11: Example of mySAP Portal with logo of SAP ......................................................... 148 Figure 6.1.12: Example of mySAP Portal with custom logo......................................................... 149 5.4.2 Tables Table 2.1.1: Examples of Skins and Themes.................................................................................... 24 Table 2.1.2: Advantages of the use of Skinning............................................................................... 31 Table 2.1.3: Disadvantages of the use of Skinning .......................................................................... 32 Table 2.2.1: Classification of skinning methods .............................................................................. 36 Table 2.2.2: Advantages and disadvantages of the skinning methods ........................................... 48 Table 2.3.1: Overview of skinning tools that depend on Microsoft................................................ 52 Table 2.3.2: Overview of platform independent skinning tools (C++/Delphi) .............................. 53 Table 2.3.3: Overview of platform independent skinning tools (Java) .......................................... 53 Table 2.3.4: Overview of platform independent skinning tools (Visual Basic) ............................. 53 Table 2.3.5: Overview of other tools (application dependent)........................................................ 54 Table 3.2.1: Technical characteristics of Free-Call-Button............................................................ 60 Table 3.3.1: Elements to replace with markers and other characteristics of the template........... 72 Table 3.3.2: Obtained times in the search of the callId along the XML file .................................. 77 Table 3.3.3: Measured times of the customization of the template ................................................ 79 Table 3.3.4: Examples to name the properties files of the callIds .................................................. 84 Table 3.3.5: Advantages of the proposed skinning method for FcB ............................................ 107 Skinning Techniques in Web Applications 5 General Information: List of figures, tables 129 Table 3.3.6: Disadvantages of the proposed skinning method for FcB........................................ 108 Table 4.2.1: Achieved results in the master thesis......................................................................... 115 Table 6.1.1: Compatibility features of the product ExSkin.......................................................... 137 Table 6.1.2: Tools of ObjectDesktop .............................................................................................. 139 Table 6.1.3: Tools of WinCustomize .............................................................................................. 140 5.4.3 Lists List 1.2.1: Reasons of interest in writing about Skinning ............................................................... 12 List 1.3.1: Summary of points of the State-of-the-Art of Skinning ................................................ 14 List 1.4.1: Expected results from the theoretical work ................................................................... 15 List 1.4.2: Expected results from the practical work ...................................................................... 15 List 2.1.1: Technical questions about the process of Skinning ....................................................... 25 List 3.3.1: HTML sites to be customized in FcB web application .................................................. 71 List 3.3.2: Interesting points when skinning the applet .................................................................. 99 List 3.3.3: List of problems and difficulties during the practical work ....................................... 105 List 4.1.1: Summary points of theory about Skinning .................................................................. 111 List 4.1.2: Summary points of the practical work......................................................................... 113 List 4.2.1: Achieved results that had not been expected ............................................................... 116 Skinning Techniques in Web Applications 6 APPENDIX 130 6 APPENDIX Outline: In the appendix some information about the commercial Skinning tools will be presented. 6.1 6.1.1 Description of commercial tools Introduction There is a set of commercial tools in the world of Skins and Themes. The most important ones were already presented in section 2.3 and they will be here in the appendix described in more detail. Nor all tools, neither all features here presented were tested because firstly, none of them was suitable for the Industry Example of the practice and secondly, other points of the master thesis were more important to dedicate more time with them. So it is, many characteristics here written are exactly the same as the ones that can be found in the respective web sites of these tools, in their user guides, tutorials, or any of their documentation. Some of the descriptions are summaries or conclusions of all sources of information. In any case, the links will be given, so that any interested reader in a certain tool can find more about it. It must be noticed, that in some tools the MVC model has been used for the implementation, which remarks the idea that I already explained when exposing the skinning methods, that the separation of the content from the presentation will always help to skin an application. In those tools, in which this model has been used, I have described also which components play the role of Model, View and Controller within the method. I have not used the same structure to describe the tools because all the features that they have in common have been already presented in tables in section 2.3. What it is going to be shown in the appendix are more those specific characteristics that each of them has. Skinning Techniques in Web Applications 6 APPENDIX 6.1.2 131 MICROSOFT: 6.1.2.1 Xheo.WebSkin It is a tool to create skinned ASP.NET websites. It is absolutely bound to ASP.NET and works of course only with this platform. In order to explain the basis of this tool, it must be written that the MVC-model will be here used. In the following picture, it is shown precisely which components play the roles of content, model and view respectively. Figure 6.1.1: MVC in tool Xheo.WebSkin In order to understand the function of this tool, the technology ASP.NET should be known or at least have a general idea about it. For example, a little knowledge of the existing components, such as the server controls, or validators, is necessary to manage this tool. What Xheo.WebSkin includes is a set of classes that can be summarized in the followings: - - Page Templates: they define the general layout of a page The Page Control The Content Control The XmlContent Control The Target Control Server Controls: they are one of the most important elements of the Skinning engine. The server controls of ASP.NET have been modified so that they can be skinnable. For example, a button control skin might render as an image, a hyperlink or as standard HTML input button. - Validators: they have been also modified so that they can be skinned. - Free Controls: they are new controls that WebSkin offers. Skinning Techniques in Web Applications 6 APPENDIX 132 It separates content from design (MVC) and maintains a consistent look and feel across the entire application. The content can be developed separately from the layout engine of the site. It can be added to pages through a CMS (Content Management System), HTML or custom content system. It could be also automatically imported from plain HTML files located in the file system or from external URLs on another machine. More interesting characteristics are (source: section 5.3.1 reference [5.9]) Multiple Layout Page Templates: From each web page developers can select which template should be used to display the content on the page. It is possible to provide multiple templates for different page styles, such as product listings, press releases, administration, etc Skinning of Common Controls (including DataGrid control): Many of the ASP.NET server controls have been replicated as skinnable controls. Developers can alter the look of buttons, validators, images, icons, tab strips, menus, page titles, page paths, multi page views and more. Even input forms can be altered to achieve a different look for each Skin through the use of section wrappers. Design-time Support: Support for skin rendering within the design-time environments of VisualStudio.NET and ASP.NET Web Matrix. All of the skinned controls provide full design-time support providing semi-WYSIWYG support for skinned controls. Content for the page templates can be edited directly in the editor rather than requiring code level expertise as most template technologies require. Browser Compatibility: You can provide downlevel and browser specific skins for each skin control template and page template. The skin rendering engine automatically detects the browser and uses the template that most closely matches the profile Dynamic Skin Selection: Skins can be selected either explicitly by the user (B2C), or the developer can provide selection logic to provide skins based on various criteria. For example, he/she can select the specific skins of his/her business customer (B2B). It is possible to skin different portions of the application. It can be even used as a marketing tool to skin product areas with a look and feel specific to that product. A random skin could be selected per visit Skinning Techniques in Web Applications 6 APPENDIX 133 Based on XSLT, Server Controls and User Controls: Each page template is contained within a UserControl (ASCX file). The page template defines target areas for content that can be placed anywhere on the page. The skinned pages then define content blocks that will be injected automatically into the template target areas. Each of the skinned server controls (like the button and DataGrid) renders their visual style from XSLT templates defined for each skin. Figure 6.1.2: Development process of WebSkin tool Visual "Inheritance”: Similar to Windows.Forms visual inheritance, skins that do not define their own look and feel inherit from their parent skin. This allows developers to easily create "sub-skins", or skin collections, that only make small visual changes, like color or fonts, and leave the remaining styles the same. Easy migration from current XML -> XSLT solutions: Using either the Generic control or XmlContent, content transformations can be easily performed similar to the current XSLT solutions. The Generic control and XmlContent make it possible to specify an external XML source and perform transformations on that data with a template unique to each skin. Skinning Techniques in Web Applications 6 APPENDIX 134 Figure 6.1.3: Creation of the HTML page with WebSkin Add "Print This Page" Buttons with Print Skin: a printable version of the web page is also possible: generally this has required the use of a CMS system with a special template just for printing. Using a Print skin that has a stripped down page template it is relatively ease to add a print button to the pages More Information about the tool: section 5.3.1 reference [5.9] 6.1.2.2 ActiveSkin It is an ActiveX control that allows the developers to dynamically change almost any aspect of the visual appearance of their application (for use with: Microsoft Visual Basic 5-6, Borland Delphi 3-6, Microsoft Visual C++ 5-6). In short, it provides full support to skin the application. Summarized features from source section 5.3.1 reference [5.7]: Use skin script language support and includes skins Skinning Techniques in Web Applications 6 APPENDIX 135 Full support for standard skins makes it possible to skin the entire application with a single line call Full support of translucent layered windows for soft shadows, glows or glass-like effects Powerful animation system, based on key-frame concept Animated, interactive skins can be created entirely in SkinBuilder, without any additional coding needed Improved performance and reduced memory usage Compiled skins, that can be built directly into executable An easy to use yet powerful SkinBuilder application Most of new SkinObjects can work both in windowed and windowless mode. For example, SkinButton object is capable to skin the Button control, and be used as the windowless Maximize Button for the SkinForm, or windowless "Play" button for imaginary music player skin A SkinForm object that represents a common window, with left, right, top and bottom edges, non-client and client area, menu bar and popup menu settings. Lots of new transitions and animated procedural texture effects Powerful and easy to use key-frame animation technique, no more complicated scripts are needed. An open architecture, that enables to create the standalone SkinObjects. Greatly improved performance and reduced memory usage. A completely new SkinBuilder, that exploits new features of ActiveSkin to create a really easy-to-use and powerful skin editor software. 6.1.2.3 Skinboxer It is actually a complement to ActiveSkin that provides more facilities, such as Skinning also the MessageBox, Open/Save dialogs, Browse for folder, ChooseFont, FindText, ReplaceText in an application. Built as a COM object, it works pretty much as a plug-in to ActiveSkin. By applying only a few lines of code SkinBoxer allows the developers to skin even the standard common dialogs. The folllowing information and figures have been taken from source: section 5.3.1 reference [5.13]. It intercepts the standard dialogs and replaces them with skinned dialogs. The code doesn't need to change. Whether the application is programmed with VB and there is a call to MsgBox or the used programming language is C++ and a call to MessageBox (or AfxMessageBox from MFC) is required, SkinBoxer will find out and skin it. That means that Skinning Techniques in Web Applications 6 APPENDIX 136 even if the application calls functions from a DLL and the DLL pops up a common dialog box, SkinBoxer will also intercept it and skin it. This means that basically the native calls MessageBox, MsgBox, GetOpenFileName, etc) don't have to be changed Here is an example of an application before and after applying SkinBoxer: Figure 6.1.4: The MessageBox is not Figure 6.1.5: The MessageBox is skinned here skinned, thank to SkinBoxer (Source: section 5.3.1 reference [5.13]) (Source: section 5.3.1 reference [5.13]) Characteristics to mention in comparison to ActiveSkin (also source: section 5.3.1 reference [5.13]): Improved performance and reduced memory usage Its most important components are presented below: o ISkinBoxer Interface: This interface derives from IDispatch. It is the interface exposed by the SkinBoxer class and it is the only one that can be created directly. All the other interfaces can be obtained from this class, calling different methods o IskinObject: it will be used in the skinning process. The ISkinObject that is passed here needs to be an ISkinForm object. This is the only ActiveSkin object currently supported by SkinBoxer o Mask: it specifies what kind of common Window dialogs to skin (MessageBox, Open dialog, Save dialog, etc) o Install: this method will install the SkinBoxer object in the current process, allowing to skin the common dialog boxes o Uninstall: this method will uninstall the SkinBoxer object in the current process. This will cause all the dialog boxes appearing unskinned. Skinning Techniques in Web Applications 6 APPENDIX 137 It is easy to use its SDK; How to apply SkinBoxer in an application: o Applying it on top of the application is quite simple. All that must be done is to call the set of SkinObject that is to be used in the skinning process (once the ActiveSkin form object is instantiated) and call the Install method. 6.1.2.4 EZSkin It is a framework for building Skinnable UI’s for Microsoft Foundation Classes Apps. It is by no means complete and presently only supports Dialog based apps. But it is highly extensible. It is not a tool, but an open source framework that can help to build a skinnable application in C++. See section 5.3.1 reference [5.15] for more information about it. 6.1.2.5 ExSkin It is an ActiveX control that enables the developers to change the visual appearance of their project's forms, providing them with the skin (or look & feel) support. The control contains a Builder component that helps you to create new Skins. The ExSkin ActiveX component allows the developer to make their program look like any program from MacOS, BeOS, Unix, and more. The following table (source: section 5.3.1 reference [5.16]) shows the compatibility of the product in general terms: Operating System for Deployment Windows 98, NT 4.0, 2000, ME Architecture of Product 32Bit Tool Type Component Component Type ActiveX (OCX) Development Language C++, ATL, STL Built Using ActiveX Template Library (ATL) .NET Ready/Tested with .NET RCW No General OCX96 Compatible Compatible Containers Microsoft Visual Studio 6.0, 97 Microsoft Visual Basic 6.0 Microsoft Visual C++ 4.0, 5.0, 6.0 Microsoft Visual FoxPro 6.0 Microsoft ActiveX Control Pad Microsoft Office 97, 2000 Microsoft FrontPage Microsoft Internet Explorer 5.5 Product Class User Interface Components Table 6.1.1: Compatibility features of the product ExSkin Skinning Techniques in Web Applications 6 APPENDIX 138 6.1.2.6 DirectSkin (Stardock tool) It is a skinning tool for any program: it allows changing the appearance of any application and some functions can be even added, like window rollup or always on top. It allows using the technology of WindowBlinds but in any property program, using any of the available WindowBlinds (over 1700) skins or providing the own ones to personalize the product with the company branding. The option to allow the end-users to choose their skins is also possible. Programming Languages: all that support COM objects (Delphi, VC, C++, VB, etc) What can DirectSkin skin: title bar of the application, title bar buttons. Borders of the window, push buttons, radio buttons and checkboxes, scrollbar arrows, scrollbar backgrounds, scrollbar thumb, menu bar, menus, toolbar buttons, toolbar rebars, tabs, progress bars, status bars, resize bars, resize grips, listbox, groupbox, MDI applications, headerbars, dropdown/combo list box (except their scrollbars). There are plenty of methods available with DirectSkin that provide all these features. Figure 6.1.6: DirectSkin Tool (source: section 5.3.1 reference [5.23]) Create/Get a Skin: there are three possibilities to get a Skin for DirectSkin: Get it from WinCustomize site: Most of the there presented Skins should work well with DirectSkin, but they are not automatically free to use. The author should be contacted and asked to use his/her Skins. If the end-user is allowed to change the layout, directing them to WinCustomize site is absolutely acceptable. Create it manually: See a “Skinning Guide” to do it (see section 5.3.1 reference [5.14]) Find a Skin author: If an own Skin is needed, a designer can also be contacted and paid for his/her design (rates >$400) See section 5.3.1 reference [5.23] for more information about this tool. 6.1.2.7 Object Desktop (Stardock tool) It is a suite of desktop enhancements designed to customize every aspect of the Windows environment. The following table (Table 6.1.2) shows the components of ObjectDesktop. Skinning Techniques in Web Applications 6 APPENDIX 139 Component Tool WindowBlinds IconPackager Description Platforms It is a program that makes the Windows GUI fully Windows skinnable (title bars, scrollbars, push buttons, the Start 98/ME/2000/XP bar…) There are plenty of Visual styles that can be (version 4 only for downloaded from these already mentioned Skinning sites Windows XP) It allows changing the icons on PC (individually created Windows icons by the user or by applying created icon packages). 98/ME/2000/XP Price < $20 <$20 It complements WindowBlinds in that it comes with icon packages that are of a particular theme. When a theme is applied all the icons on the system are changed (not just a few like Plus! 98 does) Controlcenter It is the ultimate virtual desktop manager. It allows users Windows to manage windows on many desktops while at the same 95/98/NT/2000 <$20 time monitoring while at the same time monitoring their resources. It can be configured any way the user wants (flexibility). Because of its object oriented design, several uniquely configured ControlCenters can be run at the same time WindowFX It allows adding a huge number of special effects to Windows 2000/XP <$20 It allows to create skins for Win 98/ME/2000/XP to be Windows <$20 applied with WindowBlinds. It will describe all the skins 98/ME/2000/XP Windows SkinStudio (not necessary to know any skin language). It supports also ObjectBar, WebBlinds, PocketBlinds and Koala Player skins ObjectBar It allows users to create their own custom Start Bars, Windows finders, pop-up Menus, program launchers, wharfs, 98/ME/2000/XP <$20 docks, etc. It is completely customizable: users can download plenty of themes and bars for it from the theme library WinStyles It extends window theming to support third party Windows programs such as Object Desktop. It is the part of Object 98/ME/2000/XP <$20 Desktop that allows the users to have all the parts of its work together to build a complete desktop environment WebBlinds It is an Internet Explorer extension that makes IE 5 or Windows <$20 It makes possible that users build their own desktops. Windows <$20 Rather than replacing the Windows shell (Explorer), it 98/ME/2000/XP later a fully skinnable Web Browser. It uses WindowBlinds technology (called DirecSkin) to do this. It is integrated with IE, therefore users do not loose any function of IE; moreover, it uses less memory than a fully featured stand alone skinnable browser. The Enhanced Registered version gives the IE SmartBlocking*, Internet Performance extensions and more DesktopX extends Windows giving it new object-oriented abilities Table 6.1.2: Tools of ObjectDesktop Skinning Techniques in Web Applications 6 APPENDIX 140 * SmartBlocking: it is a new Internet technology that returns control of the Browser to the user. Pop-ups are not just blocked, they are placed into the IE status bar allowing the user to choose whether they want to view it or not. The website is still paid for the pop-up because it is still loaded, WebBlinds simply keeps it from showing it. See section 5.3.1 reference [5.8] for more information about these products. 6.1.2.8 WinCustomize (Stardock tool) It is a set of programs that customize Windows, which are part of the WinCustomize series of programs. The following table () shows the different components of this tool: Description Component Tool Cursor XP Platforms It is a program that allows to design different “looks Price Windows 2000/XP <$20 Windows XP Free It allows skinning the Pocket PCs. It integrates Windows CE 3.x or Free directly into the OS by extending the Windows CE later and feels” for the Windows mouse LogonStudio It allows editing, changing and applying new logon screens. It comes built with a visual editor to make it easy to create the own logos, which can then be uploaded to websites to be used by other users PocketBlinds GWE subsystem, so it is small and fast. The Skins are truly free form. Table 6.1.3: Tools of WinCustomize See section 5.3.1 reference [5.8] for more information about these products. 6.1.3 Platform independent: programming language: C++ and Delphi 6.1.3.1 Skinux Skinux is a development consulting firm that specializes in implementing custom skin user interfaces. Their technology separates the XML description of a skin from the C++ program (MVC) so that designers and developers can work with each other independently, in parallel. All Skinux SUI (Skin User Interface) are specified in standard XML with XSLT support. See figure Figure 6.1.7 to view the components of the MVC pattern. Skinning Techniques in Web Applications 6 APPENDIX 141 Figure 6.1.7: MVC in tool Skinux All the following information has been taken from the web site of Skinux (section 5.3.1, references [5.10] and [5.11]). For more information these references offer much more about the technology. GUIs in Skinux are extremely compact: very little memory is required to encode them; gut for low bandwidth environments, such as wireless Internet appliances or consumer entertainment devices. Their procedural imaging model enables products to be downloaded very quickly and rendered on the fly. Skinux GUIs are based on a patent pending imaging technology that combines effects such as semi-transparency, animation, sub-pixel positioning, anti-aliasing, and layering to achieve 3-dimensional, photo realistic, dynamic effects. Their technology enables them to create visual experiences and functionality that are not possible with the API of traditional graphical user interface technology, which provides little imaging support. Skinux offers the imaging technology necessary to deliver a truly cross platform solution for both Windows and Linux systems. Its technology is interoperable with the Win32 and GTK+ APIs, enabling the business customer (B2B) to add a skin user interface to their existing software without rewriting all their code. Skinux is a cross platform skinning solution for Microsoft Windows and Linux systems. It is not dependent on any particular windowing system or operating system manufacturer. When using a SUI it is important to consider whether or not it is interoperable with the display technology of the native operating system environment. Skinux excels at it because it Skinning Techniques in Web Applications 6 APPENDIX 142 does not try to replace the entire display architecture. This is particularly beneficial if a new SUI is to be applied to a legacy SW, because it is not necessary to rewrite all the code to fit into a new architecture, resulting in significant savings of time and money. Skinux is extensible: because they use standard XML with XSLT support, their system can be extended quickly and easily to meet the specific demands of customers (from common controls, such as buttons, to customized controls designed by the developers, such as a play list in a media player). Skinux architecture: consists of the modular and portable Skinux Software Development Kit (SDK); the Skinux XML Language, which is easy to use and based on standard XML; and the MMX Optimized Imaging Library, which enables animation effects and procedural imaging in real time. The architecture of a Skinux program and its relationship to the Skinux libraries is shown in the diagram below: Skinux set provides also plug-in for Adobe Photoshop that export artwork created in Photoshop to the Skinux format. Applications of the SUI: Entertainment/Media (MP-3 players...), emulators/simulators, control panels, launchers (SW installers), Games, Embedded Devices (embedded Linux consumer device interfaces. 6.1.3.2 TMS Skin Factory It allows adding skinning capabilities to the Delphi & C++ Builder applications (formerly known as Varian Skin Factory). The components and the complete designing process are fully integrated within the IDE (Integrated Development Environment). It uses no external window hooks like many other third-party skin components. Everything is done on component/runtime level. The library has already proven itself to be solid and reliable. It is applicable for the following Programming Languages: Delphi 4,5,6,7 & C++ Builder 4, 5. See section 5.3.1 reference [5.21] for more information about these tools. Skinning Techniques in Web Applications 6 APPENDIX 6.1.4 143 Platform independent: programming language: JAVA 6.1.4.1 Action Servlet It is an open source web application framework. It enhances MVC programming model, which means that it provides support to create skinnable, multilingual or device dependent web applications. Figure 6.1.8: MVC pattern in tool ActionServlet Important features from source (see section 5.3.1 reference [5.12]) are: Action-driven: allows easy mapping of user actions (HTTP requests) to methods of objects Component-based: any type of components (JavaBeans, Corba objects, EJBs etc) can be used to build applications Configurable: by a simple XML file which allows to define action mapping, parameter passing, automatic type conversions, linking components etc It tries to minimize the dependence on the framework. ActionServlets components can be classes of any type and can be used directly (without wrappers) and therefore, components can be reusable. See section 5.3.1 reference [5.12] for more information about this framework. Skinning Techniques in Web Applications 6 APPENDIX 144 6.1.4.2 SkinLF (Skinapplet, Skinit) It allows skinning any Java application; it provides a total customization framework for swing. When it is downloaded, the developer becomes not only the look and feel part but also plenty of utility classes that help him/her in enabling skins in his/her applications. It has plenty of classes that make it possible to skin any application. There is plenty of documentation for each of the implemented classes in java. Some of them are, for example: LinuxLookandFeel, SkinApplet, SkinWindow, SkinLookandFeel... Skinning an applet is also possible with SkinL&F: “Skinit” has shipped with “SkinL&F” since version 0.3 and has enabled easy skinning of applications. /themepack How does “Skinit” work? Using Skinit, it is possible to load skins /gtk gtkrc from theme packs, GTK themes or KDE themes. Skinit needs file01.png the path to the theme and the path to the main class of the application to be "skinned" (Details of Skin LF's Skinit utility are ... /icons Computer.gif documented in the docs/ subdirectory of the Skin LF ... /kde installation). kde.themerc file01.png Figure 6.1.9: Folder hierarchy in themepack.zip ... skinlf-themepack.xml Source of the figure 6.2.4 and the following information about SkinLF is in section 5.3.1 reference [5.4]. SkinLF is useless for skinning an applet. Therefore SkinApplet has been created. Its goal is to offer a simple way to set up the themepack of an applet using the themepack applet tag. SkinApplet extends JApplet and adds the required method to load a themepack. See Figure 6.1.9 to see the hierarchy of the themepack. It is able to read GTK (The Gimp ToolKit) and KDE (The K Desktop Environment) Skins to enhance the application GUI controls such as Buttons, Checks, Radios, Scrollbars, Progress Bar, Lists, Tables, Internal Frames, Colors, Background Textures, Regular Windows. It allows developers to bundle a GTK and a KDE theme into one single archive for easy delivery: a themepack. A themepack is a ZIP file with a specific format: it contains the GTK theme, the KDE theme and a descriptor written in XML. The purpose of theme packs is to save the developer the time of searching for proper GTK+KDE theme pairs. Several themepacks are available at http://www.javootoo.com/ under the SkinLF topic. Skinning Techniques in Web Applications 6 APPENDIX 145 It has been tested with: Sun Microsystem JDK 1.2.2 (Windows, Solaris, Linux) and Sun Microsystems JDK 1.3 (windows) 6.1.4.3 Pajes All the following information has been taken from the web site of PAJES (see section 5.3.1 reference [5.5] for more information about this framework) Servlet presentation framework that uses pure HTML templates and MVC to allow skinning of applications and easy creation of sophisticated browser-based user interfaces for JEE (Java Enterprise Edition) and other servlet-based applications. 100% Java Tool; Pajes separates presentation content from presentation logic and provides an object-oriented programmatic interface for the manipulation of visual content. Standards based, Open Source Servlet Presentation Framework for generating HTML without having to embed HTML tags within the Java Code, and without having to embed any Java or other non-HTML instructions with the HTML documents. The visual content of a paje is maintained in absolutely standard HTML pages - no embedded script components or specialised tags. These HTML page "templates" can be maintained using whatever tools you or your designers currently employ. The functional content of a paje is maintained separately. Links between the functional Java classes and the HTML templates are made via the standard HTML "id" attributes in the template. Pajes provides "factories" to deliver instances of paje classes built from the templates as needed, responding to updates to templates (without restart or recompile). The following picture (Figure 6.1.10, source section 5.3.1 reference [5.5]) shows how the components of the MVC design pattern are distributed in PAJES: Controller View Model Result Figure 6.1.10: Tool PAJES, separation of content and presentation management Skinning Techniques in Web Applications 6 APPENDIX 146 It allows coding the HTML page with any HTML Editor. The HTML Page is made available to the java Servlet as an object, where any element within the page can be easily referenced or changed. Differentiation between HTML design and Java code will be here also done. The user interface is hold in an external html file, not in code. These files are dynamically loaded as needed. It allows multiple simultaneously active skins and dynamic alteration of skins (no recompile, no regeneration, no restart of the web or application server). A Paje application is abstracted into standard HTML/JavaScript files, which are read, templated and used as required. Multiple sets of templates can be used by the same server, allowing a single Pajes instance to provide completely different GUI experiences to different users simultaneously from the same application. This process is dynamic. If you alter these HTML Skins Pajes detects it and loads the revised skin and presents it the next time that paje is to be viewed. The user interface can “slip its skin” and look completely different, simply by adding varying HTML templates. Importantly Pajes allows multiple simultaneously active skins and dynamic alteration of skins - no recompile, no regeneration, and no restart of the web or application server. Maybe more importantly, multiple Skins can be active at any time. The same application or website can be made to look and behave differently for different users or at different times. The uses for this are many from tailoring look and feel for multiple clients from a single implementation to simultaneously serving international users with differing local languages. The variations in the skins can be anything that a static page can contain, including variations to colors, fonts, layout, logos, images, language, javascript/vbscript and elements of DHTML (Dynamic HTML). 6.1.5 Platform independent: programming language: Visual Basic 6.1.5.1 vbAccelerator NeoCaption Component It is a component that allows skinning the entire non-client area (titlebar, border, menu, control box and buttons) of a VisualBasic project adding it to a project. The information that is here given has been taken from the website of this component (see section 5.3.1 reference [5.18]). Skinning Techniques in Web Applications 6 APPENDIX 147 This code sample provides a DLL that can be used right away to radically modify the nonclient area of a form, similar to the sort of customization provided by NeoPlanet and WindowBlinds. And, since the full source code is available, there is also the chance to build customized client area derivatives. The DLL supplied with the download exposes two classes for public use: CNeoCaption: is a reference implementation of the Non-Client area modifier, including the drawing code and menuing. It implements the INCAreaModifier interface which must be supported in order to take advantage of the cNCCalcSize class CNCCalcSize: is the basic framework for building radically customized non-client areas cNeoCaption Interface: This should prove to be quite simple to use. There is one property to initialize the custom caption drawing and a number of others to control colors and fonts: ActiveCaptionColor, InActiveCaptionColor, ActiveMenuColor, ActiveMenuColorOver, etc. The sample provided in the demonstration download show how to use the NeoCaption component to swap different skins at runtime and even how to remove a skin from a form. These samples could be improved by putting the caption information into an XML file using the XML Property Bag component and loading it from there. cNCCalcSize Object: To gain lower level control over non-client area processing, you can implement the INCAreaModifier interface and attach directly to the cNCCalcSize object. Implementing the INCAreaModifier interface involves doing the following: o Returning Specific Values o Performing NonClient Painting o Assigning Window Areas to their non-client function o Non-Client MouseDown and MouseUp processing o Menu Processing Implementing these functions from scratch is quite a lot of effort. If someone wants to do it, the best place to start is to examine how the cNeoCaption class works Skinning Techniques in Web Applications 6 APPENDIX 6.1.6 148 Platform independent: application dependent tools 6.1.6.1 SAP Editor This is an editor, created by SAP, which is able to skin any web portal that has been created with it. The well-known company SAP uses it, precisely to achieve the goal of branding of its applications and offer its customers the possibility of seeing their own logos and colors in the software they buy. It is therefore an absolute clear example of “Provider” (B2B) area of application. Since 1998, SAP began a concerted effort to maintain a consistent branding language for its software products regardless of the OS on which the software is running. So far as technology allows, the Java and Windows GUIs of SAP's applications are identical. It offers customers design flexibility to adapt the look and feel of the portal to reflect their own corporate branding. Modifying the portal's visual design is easy with the SAP Theme Editor, a Web-based tool that supports customers in the redesign process. The Theme Editor even makes comprehensive design changes possible without expertise in Web programming or scripting languages. It offers a certain amount of design flexibility that is achieved by: Placing all design information in cascading style sheets (CSS) instead of writing it directly into the code. Using only central style sheets in all HTMLB controls and in the portal outer frame. Shipping predefined design variants (theme templates) of the portal from which customers can choose. Figure 6.1.11: Example of mySAP Portal with logo of SAP Skinning Techniques in Web Applications 6 APPENDIX 149 The Theme Editor allows a designer or administrator to copy and then modify predefined theme templates to create a new design. The term "design" is used here to refer to the colors and imagery of a Web application. With the Theme Editor, an authorized user can change the look-and-feel of an application without having to be an HTML expert. After saving your theme, users can then select the newly created theme with the portal personalize function. If myTheme is chosen, the new theme is activated and the company logo will be seen on each portal screen (see Figure 6.1.11 and Figure 6.1.12 to view how different logos can be chosen with the use of this Editor). Figure 6.1.12: Example of mySAP Portal with custom logo Customer branding with the Theme Editor works for controls that use central style sheets. If an attribute is defined directly in the HTML code or if a style sheet is used that is not known by the Theme Editor, it cannot be changed with this tool The look of most visible HTMLB controls can be adapted with the Theme Editor. Their attributes can be found in the SAP HTMLB Guidelines on the SAP Design Guild Website. Note that this document refers to the mySAP Enterprise Portal 5.0. Note also that the browser platform determines which attributes can be edited or not. In general, the branding options for Netscape 4.7 are more restricted than those for other Web browsers. The Theme Editor as a tool for adapting the portal design runs in the mySAP Enterprise Portal, but it can also be used outside the portal. As of mySAP Enterprise Portal EP 5.0 Skinning Techniques in Web Applications 6 APPENDIX 150 Support Package 5, this stand-alone version is shipped as part of the Portal Development Kit. Currently, customization functionality is provided for: o SAP Portal Style Editor for partners and external design companies o Version 3.0 of the SAP Business Intelligence System Limitations: The Theme Editor exclusively changes values in style sheets and replaces image files. This means that only attributes and images which are controlled by style sheets can be changed, such as colors, fonts, spacing, background images, etc. As no HTML code is changed, layout changes (for example, changing the position of the detailed navigation) are not possible with the Theme Editor. All the previous information and figures have been taken from the web site of this editor, within the site of SAP (see section 5.3.1, reference [5.22]). Skinning Techniques in Web Applications