Sunday, May 31, 2009

Learning Japanese with Eclipse RCP applications

I'm not good in any language not even my mother language but I want to learn Japanese.Yes you guessed I like those cartoons. There is a great application to learn Chinese called ZDT. The ZDT (Zhongwen Development Tool) is an easy to use, open-source Mandarin Chinese flashcard application that can help you learn Chinese. It is written in Java using the Eclipse RCP platform.
I don't have interest on the Zhongngwn language, I want to learn Japanese! Do you want to help me to add a Japanese database to this great tool? may be for the project? Let a comment!

Eclipse E4 the next generation

There are plans to change the name of Eclipse RCP to something else, I will make a post about it later. But I want to avoid confusion Eclipse E4 is a completely new version of the Eclipse Platform. Is a one of those software redesign that are wonderful and can only happen in the context of a project like Eclipse whose contributors are top professionals, domain super experts. Java is not only a language is also a culture, through Java frameworks, tools, books, community the developers get in contact with the cutting edge ideas of software design, development methodologies, testing techniques. Millions of programmers around the world trying to solve similar problems with the same tools make those tools evolve, that happens with Java and that is happening with Eclipse. If you read the Eclipse E4 design documentation you will discover how they are trying to apply those great principles of software design that are just being massively recognized by the industry and academy in the last few years. But the people implementing it are not just trying to look clever like Web 2.0 startup geniuses trying to do complex web apps with a stone age tool like Ruby. They are the early adopters os those great new discoveries of the software industry because they were there needing to solve those problems years before the rest of us. So I'm very excited waiting for Eclipse E4 to be ready to be used by the masses.
Read more about Eclipse E4 here

Friday, May 22, 2009

Java Puzzles - 25

I read Twisters - The new age Java Quiz a blog with cool content. This is one of the latest puzzles and it made me think a lot! Enjoy it
package com.twisters;
public class UnIncrement{
public static void main(String[] args) {
int x = 0;
x
++;
System.out.println(
"X is : " + x);//This must print 'X is 0'
}
}

The idea is that you have to make that code print 0 changing only one char in the source!


Hint: think about bits

Tuesday, May 12, 2009

netifera


Netifera another excellent Eclipse RCP based application.
Netifera is a new modular open source platform for creating network security tools. This project provides many advantages for both security developers and researchers who want to implement new tools as well as the community of users of these tools. It is available for Linux and Mac. Based on Eclipse RCP a Windows version sholdn't require a big effort, in their blog the netifera team says a Windows version will be available. I tested the Linux version in Ubuntu and works great.
To learn more about it see netifera screenshots watch the netifera video

Monday, May 11, 2009

Eclipse training

I'm not sure yet, but I would like to do some Eclipse RCP course. I'm researching it and I would like my readers feedback about the available training companies. One friend recommends AvanSoft. They are member of the Eclipse Foundation and it seems they know a lot about Eclipse. This is one of the labs they are offering and I would like to take, at least the content is exactly what I want to dominate!

Eclipse is an open platform for tool integration built by an open community of tool providers. It is designed for building integrated development environments (IDEs) and Rich Client Platform (RCP) based applications that can be used to create applications as diverse as websites, embedded Java mechanism for discovering, integrating and running modules called plug-ins. This allows the Platform to be extended to work with new content types or to do new things with existing content Rich Client Platform (RCP), and the Workbench IDE. While the Eclipse types. Except for a small kernel known as the Platform Runtime, all of the Eclipse Platform's functionality is located in plug-ins which are coded in Java. This is an in-depth course on how to build Eclipse plug-ins of increasing complexity.


Topics covered include:
1. Eclipse Plug-in architecture
2. Plug-in Development Environment
3. Eclipse RCP – Introduction and Concepts
4. Minimal RCP Application
5. The Standard Widget Toolkit (SWT)
6. Views
7. Adding Actions in Workbench window and Views
8. Editors
9. Dialogs (Preference Pages)
10. Wizards
11. Add help contribution and product customization
12. Add Feature, Branding and Updates
13. Eclipse Forms to create rich and powerful user interface
14. Multi-page form editor


Contents:
  1. Eclipse Plug-in Architecture
    • Eclipse Overview
    • Plug-in architecture
      • Plug-in, Extension Point, and Extension
      • Plug-in manifest
      • Eclipse overview
      • Plug-in features and fragments
    • Platform architecture
      • Workspace Component
      • Workspace and Resource API
      • Incremental Project Builders
      • SWT
      • JFace
      • Workbench, Editors, Views, Perspectives
      • Debug component
    • PDE Introduction
  2. Plug-in Development Environment (PDE) & Eclipse Plug-in Development
    (includes lab)
    • Why PDE?
    • Concepts
      • RCP application file structure
      • Run an RCP application
    • Plug-in and Life cycle
      • Overview and Application control flow
      • Main application class and how it creates and run workbench
      • WorkbenchAdvisor class and its lifecycle events
      • Default (Initial) perspective
    • Plug-in structure
    • Work with PDE
      • Configure PDE
      • Create a new Plug-in project
      • Plug-in manifest file and editor
      • Dependencies
      • Runtime
      • Extensions and Extension points
      • Running the plug-in
    • Plug-in communication
    • Plug-in fragments
  3. Eclipse RCP – Introduction and Concepts
    • The Term – Rich Client Platform
    • The Eclipse Rich Client Platform Buzzwords
    • Uses of RCP
    • Eclipse RCP Concepts
      • Component Framework and a Community of Plug-ins
      • Plug-ins - in a closer look
      • Putting all together – The anatomy of an Eclipse installation
      • The OSGi Framework
      • The Runtime
      • Standard Widget Toolkit (SWT) – A low-level graphics library
      • JFace – A UI toolkit
      • UI Workbench
  4. Minimal RCP Application
    (includes lab)
    • About RCP
    • Minimal RCP application (Physical artifacts)
      • RCP application file structure
        • Configuration directory and Configuration file - config.ini
        • plugin directories and plugin's .jar file
        • eclipse.exe
        • startup.jar
        • workspace
      • Run an RCP application
    • Minimal RCP application (runtime artifacts)
      • Overview and Application control flow
      • Main application class and how it creates and run workbench
      • WorkbenchAdvisor class and its lifecycle events
        • WorkbenchAdvisor
        • WorkbenchWindowAdvisor
        • ActionbarAdvisor
      • Default (Initial) perspective
    • Minimal RCP application (Development)
      • Steps for developing RCP application
      • Run application within eclipse
      • Export the application and execute it outside of eclipse
      • Customize the workbench
        • Saving window location and size
        • Setting workbench window title, status-line etc.
  5. SWT - The Standard Widget Toolkit
    (includes lab)
    • About SWT
    • Brief History and Goals
    • The Basic Structure of an SWT Application - Display And Shell
      • How to create a simple Shell
      • Setting the Shell title text
      • Setting the Shell icon
    • SWT packages
    • Relationship between Thread and Display
    • SWT widgets and its lifecycle
    • Useful widgets
    • SWT events
    • Menus
      • Menu
      • MenuItem
      • Listeners
    • Layout managers in SWT
      • FillLayout
      • RowLayout
      • GridLayout and GridData
      • FormLayout and FormData
    • Resource Management - Colors, Fonts, Images
    • Error handling
    • SWT application at work
  6. Views
    (includes lab)
    • Introduction
    • JFace Viewer Framework – In details
    • Views : The General-Purpose Workbench Part
      • Behavior and Architecture
      • Class diagram and Lifecycle
    • How to create custom view
      • View Declaration
      • Adding the View to a Perspective
      • Creating the View Class (View Part)
    • Linking with the Properties View
      • Providing content in the Properties View
  7. Adding Actions in Workbench window and Views
    (includes lab)
    • Introduction
    • Add a top-level menu and toolbar
      • Create Top-level Menu
      • Add standard File > Exit and Help > About actions
      • Create a custom action and place the same in the toolbar and menu
      • Customize Toolbar by adding separator
    • System Tray Integration
      • Add Application icon to the task tray
      • Allow Application to minimize to the task tray
      • Add the standard action to the context menu of the task tray item.
    • Adding View Actions
      • Defining a view context submenu
      • Defining a view context menu action
      • Defining a view toolbar action
      • Defining a view pull-down submenu and action
      • Filtering the View
      • Sorting the View
      • Add a view opened indicator to the status line
      • Saving and Restoring View State
  8. Editors
    (includes lab)
    • Introduction
    • The difference between a View and an Editor
    • Editor behavior and architecture
    • Editor class diagram and its lifecycle
    • How to create custom editor
      • Editor declaration
      • Creating Editor class (Editor Part)
      • Editing – using Cell editors
      • Handling the Saving of the Editor input
      • Synchronizing the Model and the Editor
      • Editor Actions
        • Context menu
        • Top-level Menu
        • Toolbar buttons
        • Keyboard actions
        • undo / redo /cut /copy /paste
      • Linking an Editor and the outline view
  9. Dialogs
    (includes lab)
    • Introduction
    • Eclipse packages for Dialogs
    • Logical view of the Workspace
    • Standard dialogs
    • Preferences dialog (JFace)
      • Structural view
      • Preferences class
      • Preference page at work
    • Field editor preference page
      • Field editor preferences classes
      • Build a field editor preference page
    • Common reusable dialogs
  10. Wizards
    (includes lab)
    • Introduction
    • Eclipse packages for Wizards
    • Contributing Wizards
    • Defining a Wizard Extension
    • Implementing a Wizard
    • Implementing a Wizard Page
    • Customizing a Wizard
    • Controlling Wizard Page Progression
      • Enable/ disable Next , Previous and Finish buttons
      • Finish Processing
    • Displaying messages on the title of the wizard
    • Reusable specialized wizard pages
  11. Add help contribution and product customization
    (includes lab)
    • Introduction
    • Getting the Help Plug-ins and It’s Configuration
    • Add the Help Action and Content
    • Help Content Structure
    • Context-Sensitive Help (F1)
    • Branding - Introduction
    • Define Product Configuration
    • Branding
      • Window Images
      • Program Launcher – Customizing the launcher
      • Splash Screen
      • About Dialog
    • Packaging – Introduction
    • Exporting an RCP Application
  12. Add Feature, Branding and Updates
    (includes lab)
    • Introduction
    • Add the Updates Manager Wizard (Help > Software Updates action)
    • Eclipse packages for adding Updates Manager wizard
    • Create eclipse Feature based product
    • Feature Branding - Introduction
    • Feature Branding
      • About.ini
      • About.properties
      • About.mappings
      • About.html
    • Create eclipse Update-site project to host the product feature and plug-ins
    • Exporting an RCP Application based on the Feature
  13. Eclipse Forms to create rich and powerful user interface
    (includes lab)
    • Introduction
    • Concept of forms (eclipse scrolled form)
    • Use of Eclipse plug-ins to create forms
    • Toolkit to manage colors, hyperlink groups and other aspects of a form, and serve as a factory for many SWT controls
    • Create common controls
      • Hyper link
      • Image link
      • Sections
      • Expandable controls
      • FormText
    • Achieving a flat look using toolkit
    • Use of Layout manager that lays out controls in a manner similar to an HTML table layout algorithm
    • Concept of custom controls
    • Exporting an RCP application
  14. Multi-page Form Editor
    (includes lab)
    • Introduction
    • Use of FormEditor to create eclipse multi-page editor
    • Concept of Managed Forms
    • Create FormPages with the concept of master-details block, nested tab etc
    • Manage events like dirty state, saving, commit for FormPage
Hands-on Labs:
  1. ExPDE: Develop a ReadDataPlugin using PDE in Eclipse
  2. ExMinimalRCP: Building a minimal standalone RCP application
  3. ExSWTRCP: Using SWT in an Application
  4. ExViewsRCP: a custom View using JFace viewer Framework
  5. ExActionsRCP: Adding Actions to Workbench Window and Views
  6. ExEditorRCP: Create customized Database Table Editor using JFace Framework
  7. ExDialogRCP: Set file name through Preference Page and view the data from the same
  8. ExWizardRCP: Wizard to create JDBC database access configuration
  9. ExHelpNBrandingRCP: Add help contribution and product customization
  10. ExUpdatesRCP: Add Feature, Branding and Updates
  11. ExFormUIRCP: Eclipse Forms to create rich and powerful user interface
  12. ExMultiPageEditorRCP: Multi-page form editor

Prerequisites:
Extensible Markup Language (XML), Strong knowledge of Java, design patterns, and GUI development experience. Prerequisites can be satisfied by taking AvantSoft courses: "Java Programming using Eclipse" and "XML for Java programmers using Eclipse".

Eclipse RCP: A Platform for Building Platforms

That is the key, one of the big differences between Eclipse and other similar frameworks, it makes Eclipse unique : "Eclipse is a platform for building platforms".

What Does it Mean?

The same extensibility that you see in the Eclipse IDE is what you an get in your application if you base it on the Eclipse RCP platfrom. The incredible component framework (OSGi), the smart designed extensibility mechanism, the clean and well documented API.

Interesting concept? keep learning!, read this awesome article to http://www.onjava.com/pub/a/onjava/2006/08/23/eclipse-rich-client-platform.html

Eclipse newsgroups

The Eclipse community is big and rich, you will find a lot of interesting and smart people, individuals that love to help and contribute. One of the best places to ask questions related to Eclipse, the IDE, the platform, SWT, and any other related subject is the newsgroup server. Do you know what a newsgroup is? is like a forum but you don't need to visit a webpage you use a news reader clien. NNTP is the name of the protocol used to access this kind of forums. For beginners this is not the easiest way to ask a question because you need to register and install a news reader client but is easy! you can use thunderbird, then you go an create a newsgroup account in the Eclipse website and one! go and ask question there is a wonderful community waiting to help you.

Eclipse RCP tutorials blog

Is just starting, is beta but looks good http://eclipsercptutorials.blogspot.com/
About
You
This website is about you because without you there would be no community around Eclipse RCP technology. You may be here to learn from the tutorials others have shared or you may be here to contribute your own tips and examples. Hopefully you're here to do both! Check out the available tutorials! The open source philosophy encourages receiving and giving back in return. You may not have the time or skills to contribute new source code to the project, but there are plenty of other ways to return the favor. Don't hesitate, get sharing right away. It's easy!

Alison Redding
Alison has been programming in Java since 1997 and a fan of Eclipse RCP for the last 2 years. She currently works at a west coast University writing image processing software in a biotechnology lab. Alison handles our public relations and site promotion.

Tim Molter
Tim has been creating Eclipse RCP applications for over 3 years, first just for fun, and now professionally. His background and passion for physics and mathematics have lead him to seek out programming projects involving scientific automation and analysis. Tim is our main internal contributor of tutorials.

Frederik McGee
Frederik is a retired sailor/network administrator and programming enthusiast. Fred is our wesite designer and technical troubleshooter.

Friday, May 8, 2009

JCrypTool cryptography e-learning platform


If you have ever read about cryptography, history, classical ciphers and even more advanced and modern concepts you probably wanted to experiment and play the codebreaker game. Well here is another cool Eclipse RCP application, it is called "platform for e-learning" Eclipse RCP is a good platform to create platforms to create very easy to extend applications based on a really advanced and tested plug-in mechanism.
From their site JCrypTool is the upcoming cryptography e-learning platform. Developed as an Eclipse Rich Client Platform (RCP) based open source project, it enables students and teachers, developers and others interested in cryptography to apply and analyze cryptographic mechanisms in a modern and easy-to-use application. Its aim is to create a new form of e-learning, by not only encouraging users to learn all about cryptography and to use it, but also to develop their own cryptographic plug-ins and extend the JCrypTool platform in various ways. JCrypTool already supports users in experimenting with various cryptographic mechanisms such as classic, symmetric and asymmetric encryption, hash values, cryptographic analysis and games.
I'll try to write a plug-in for this application and post the results here.

Wednesday, May 6, 2009

Eclipse LIve

Eclipse Live is your source of multi-media material about Eclipse projects and Eclipse-based products. You can register for a live webinar or browse and view webinars and podcasts their extensive library. My life would have been really different (better, happier) with a result like eclipse live but 15 years ago when I was a VB programmer, when every piece of information was so difficult to get. The knowledge bases in .HLP format, do you remember? I'm almost crying... :~(...

Eclipse SWT: Standar Widget Toolkit


SWT is awesome. Many people still associate Java with ugly graphical user interfaces. It is really unfair and makes me sad, I suffer a lot every time I heard comments about Java GUIs. I'm a very sensible person? may be. SWT is a toolkit to build Java GUIs. Most Java applications you know are proably using SUN's Swing. Swing is the official GUI toolkit, it provides the buttons, the text, the input boxes, all the widgets that you see in any GUI.The look and feel of Swing applications is pluggable, allowing a choice of look and feel. For example, the same program can use either the Java or the Windows look and feel. SWT is an open source widget toolkit for Java designed to provide efficient, portable access to the user-interface facilities of the operating systems on which it is implemented. SWT is a really think layer over the operating system, a lightweight library that wraps the operating system specific UI objects into standard easy to use well-designed Java classes. I will talk a lot about SWT in this blog so take it as the first introduction.

Azureus/Vuze


Azureus, Probably, the first application using Eclipse technology I have used. And one of the most popular ones. Is a Bittorrent open source client. Full of great features, for advanced P2P users that need to know every detail about the transfers, peers, performance, network status. Many plug-ins are available making it more interesting and powerful than other p2p clients. I thought it was based on the Eclipse Rich Client Platform, but it doesn't seem to be the case, looking at the source the plug-in system is not OSGi. It seems they only use SWT but not the RCP framework

The german guide

Soon after googling about Eclipse RCP and SWT related information you will find the german guide to the Eclipse Rich Client Platform. Lars Vogel, did an excellent job making it and keeping it up to date with the latest changes in the API.Don't miss it! Eclipse Rich Client Platform Tutorial

Discovering the framework

Hello readers.
First I found some cool applications and as a developer I was curious about how they were done. Java, but with native looking GUI's. Soon I discover the great advantages of the Eclipse RCP platform, but the documentation was not as excellent as the design and implementation of the framework, so I'm starting this blog to share my experiences learning this exciting technologies.