YOUR FEEDBACK
Cloud Computing: Do You Really Want Your Data in the Cloud?
Don Dodge wrote: D Cheng, Of course in-house systems go down. What I am sa...
AJAXWorld RIA Conference
$300 Savings Expire July 25
Register Today and SAVE!


2007 West
GOLD SPONSORS:
Active Endpoints
Your SOA Needs BPEL for Orchestration
BEA
Virtualized SOA: Adaptive Infrastructure for Demanding Applications
Nexaweb
Overcoming Bandwidth Challenges with Nexaweb
TIBCO
What is Service Virtualization?
SILVER SPONSORS:
WSO2
Using Web Services Technologies and FOSS Solutions
Click For 2007 East
Event Webcasts

2008 East
PLATINUM SPONSORS:
Appcelerator
Think Fast: Accelerate AJAX Development with Appcelerator
GOLD SPONSORS:
DreamFace Interactive
The Ultimate Framework for Creating Personalized Web 2.0 Mashups
ICEsoft
AJAX and Social Computing for the Enterprise
Kaazing
Enterprise Comet: Real–Time, Real–Time, or Real–Time Web 2.0?
Nexaweb
Now Playing: Desktop Apps in the Browser!
Sun
jMaki as an AJAX Mashup Framework
POWER PANELS:
The Business Value
of RIAs
What Lies Beyond AJAX?
KEYNOTES:
Douglas Crockford
Can We Fix the Web?
Anthony Franco
2008: The Year of the RIA
Click For 2007 Event Webcasts
SYS-CON.TV
TOP LINKS YOU MUST CLICK ON


Java Feature — Developing an Eclipse BIRT Report Item Extension
Architecture and framework

Digg This!

Page 2 of 2   « previous page

Listing 1 shows the automatically generated manifest file plugin.xml for the rotated label report item extension that describes the plug-in's activation framework to the run-time environment.

After defining the plug-in framework in the Eclipse PDE, the developer makes the code-based extensions required to complete the plug-in development process.

The rotated label report item extension implements the following interfaces and classes:

  • org.eclipse.birt.report.designer.ui.extensions specifies the following interfaces:
    - IPropertyTabUI - Represents a new tab in the Property Editor view, creating the UI, updating property values on request, and notifying the BIRT framework of any UI-based property change. PropertyTabUIAdapter is the adapter class that implements this interface.
    - IReportItemLabelProvider - Defines the interface for the accessor method that provides the label text. ReportItemLabelProvider is the adapter class that implements this interface.
    - IReportItemPropertyEditUI - Provides the interface for defining tabs in the Property Editor.
  • org.eclipse.birt.report.designer.ui.views.attributes.providers.PropertyProcessor provides accessor methods for processing general property information.
  • org.eclipse.birt.report.engine.extension
    - IRowSet - Defines the interface to a row set. Provides metadata, grouping level, and row navigation methods.
    - IReportItemPresentation - Defines the interface for presentation of a report item extension. IReportItem-Presentation sets the locale, resolution, output, and image formats and processes the extended item in the report presentation environment. ReportItemPresentationBase is the adapter class that implements this interface.
  • org.eclipse.birt.report.model.api
    - DesignElementHandle - Functions as the base class for all report elements. DesignElementHandle provides a high-level interface to the BIRT report model. The class provides the generic services for all elements. Derived classes provide specialized methods for each element type. DesignElementHandle implements the interface, org.eclipse.birt.report.model.elements.interfaces.IDesignElementModel.
    - DesignEngine - Provides an interface to the BIRT design engine. DesignEngine instantiates a session handle to use when creating a new design, opening an existing design, and managing design processing. The session handle contains the report design's state. DesignEngine implements the interface, IDesignEngine interface.
    - ExtendedItemHandle - Provides a handle to an extended item that appears in a section of a report. The extended report item can have properties such as size, position, style, visibility rules, or a binding to a data source. ExtendedItemHandle extends ReportItemHandle, an abstract base class that extends DesignElement-Handle.
  • org.eclipse.birt.report.model.elements.Style extends org.eclipse.birt.report.model.core.StyleElement, the base class for report elements with a style, and implements org.eclipse.birt.report.model.elements.interfaces.IStyleModel, the interface for storing style element constants.
  • org.eclipse.birt.report.model.api.extension specifies the following interfaces: - IMessages - Defines the interface for getting a localized message from a message file using a resource key.
    - IPropertyDefinition - Defines the interface for the accessor methods that describe a property. PropertyDefinition is the adapter class that implements this interface.
    - IReportItem - Defines the interface for an instance of an extended report element. There is a one-to-one correspondence between the BIRT report item and this implementation. ReportItem is the adapter class that implements this interface.
    - IReportItemFactory - Defines the interface for the factory that creates an instance of the extended element, IReportItem. IReportItem stores the model data and serializes the model state. ReportItemFactory is the adapter class that implements this interface.
  • org.eclipse.birt.report.model.metadata.PropertyType functions as the base class for the metadata of a property type. A property type provides the display name, data validation and conversion methods, XML name, and other processing. PropertyType implements the interface, org.eclipse.birt.re-port.model.api.metadata.IPropertyType.
  • org.eclipse.core.runtime.Plugin defines the basic methods for starting, managing, and stopping the plug-in instance.
This article provides the implementation details for the most important classes in the rotated label report item extension.

For example, the RotatedLabelItemFactoryImpl class instantiates a new report item when the user drags a rotated label report item from the Palette and drops the report item in the BIRT Report Designer Editor. This class extends the adapter class, org.eclipse.birt.report.model.api.extension.ReportItemFactory.

In the implementation class, the newReportItem( ) method receives a reference to DesignElementHandle, which provides the interface to the BIRT report model. The newReportItem( ) method instantiates the report item, as shown in Listing 2.

In the RotatedLabelUI class, the getLabel( ) method provides the text representation for the label to BIRT Report Designer. RotatedLabelUI extends the adapter class, org.eclipse.birt.report.designer.ui.extensions.ReportItemLabelProvider. Listing 3 shows the code for the getLabel( ) method.

The RotatedLabelPresentationImpl class specifies how to process and render the report item at presentation time. This class extends the org.eclipse.birt.report.engine.extension.ReportItemPresentationBase class.

The method, onRowSets( ), renders the rotated label report item as an image, rotated by the angle specified in the report design, as shown in Listing 4.

In the RotatedLabelReportItemImpl class, the method, getPropertyDefinitions( ), instantiates RotatedLabelPropertyDefinitionImpl objects for the displayText and rotationAngle properties. RotatedLabelReportItemImpl extends the adapter class, org.eclipse.birt.report.model.api.extension.ReportItem. Listing 5 shows the code for the getPropertyDefinitions( ) method.

The RotatedLabelPropertyEditUIImpl class builds the UI using the RotatedLabelGeneralTabUIImpl class to set up the controls for the UI. RotatedLabelPropertyEditUIImpl implements the org.eclipse.birt.report.designer.ui.extensions.IReportItemPropertyEditUI interface.

In the RotatedLabelPropertyEditUIImpl class, the getCategoryTabs ( ) method instantiates the RotatedLabelGeneral-TabUIImpl class, as shown in Listing 6.

The RotatedLabelGeneralTabUIImpl class contains an internal class GeneralCategoryWrapper that creates the UI contents, as shown in Listing 7.

The GraphicsUtil class creates the image containing the specified text and rotates the text image to the specified angle, using the following methods:

  • createRotatedText( ) performs the following operations:
    - Gets the display text and rotation angle properties
    - Sets the display text font and determines the font metrics
    - Creates an image the same size as the display text String
    - Draws the display text as an image
    - Calls the rotateImage( ) method to rotate the image at the specified angle
    - Disposes of the operating system resources used to render the image
    - Returns the image object
  • rotateImage( ) rotates the image and determines the width, height, and point of origin for the image
Listing 8 shows the code for createRotatedText( ) method.

On the PDE Manifest Editor, in Overview, the Testing section contains links to launch a plug-in as a separate Eclipse application in either Run or Debug mode. In Testing, choose Launch an Eclipse application. Eclipse launches the runtime workbench.

In Report Design, choose File->New->Project, and choose Report Project. Create a new report in the project by choosing File->New->Report.

In File name, type a file name if you want to change the default file name. Choose Next. New Report displays the report templates. In Report templates, choose Blank Report, and choose Finish.

The layout editor displays the report design, new_report.rptdesign. The Palette contains the RotatedText report item.

From the Palette, drag RotatedLabel to Layout, as shown in Figure 1. In new_report.rptdesign, choose Preview. The preview appears, displaying the rotated label report item, as shown in Figure 2.

This article is an excerpt from the book, Integrating and Extending BIRT by Jason Weathersby, Don French, Tom Bondur, Jane Tatchell, and Iana Chatalbasheva, soon to be published by Addison-Wesley. The book is the second volume in a two-book series about business intelligence and reporting technology. The book introduces programmers to BIRT architecture and the reporting framework. It shows programmers how to build and deploy customized reports using scripting and BIRT APIs. It also describes how to use key extension points to create a customized report item, a rendering extension for generating output other than HTML or PDF, and an Open Data Access (ODA) driver for a new data source. Integrating and Extending BIRT. Copyright 2007 Actuate. ISBN 0321443853. For more information, please visit www.awprofessional.com.


Page 2 of 2   « previous page

About Jason Weathersby
Jason Weathersby is a member of the extended BIRT development team at Actuate Corporation and has backgrounds in both computer science and technical writing. He has many years experience in technical consulting, training, writing, and publishing about reporting, business intelligence tools, and database technologies.

About Iana Chatalbasheva
Iana Chatalbasheva is a member of the extended BIRT development team at Actuate Corporation and has backgrounds in both computer science and technical writing. She has many years experience in technical consulting, training, writing, and publishing about reporting, business intelligence tools, and database technologies.

About Tom Bondur
Tom Bondur is a member of the extended BIRT development team at Actuate Corporation and has backgrounds in both computer science and technical writing. He has many years experience in technical consulting, training, writing, and publishing about reporting, business intelligence tools, and database technologies.

JDJ News Desk wrote: The Eclipse platform is an Open Source, integrated system of application development tools that you implement and extend using a plug-in interface. Eclipse provides a set of core plug-ins that configures the basic services for the platform's framework. A platform developer can build and integrate new tools in this application development system.
read & respond »
LATEST ECLIPSE STORIES . . .
Adobe's Kevin Lynch and Microsoft's Scott Guthrie to Keynote AJAX World RIA Conference & Expo
Two of the biggest launches in Rich Internet Application history took place in 2007/2008 when Adobe launched AIR 1.0 in February '08 and Microsoft launched Silverlight (September '07). At the 6th International AJAXWorld RIA Conference & Expo in October SYS-CON Events is delighted to be
Virtualization Conference Keynote Webcast Live on SYS-CON.TV
Brian Stevens, the Chief Technology Officer and Vice President of Engineering of Red Hat, delivered his Virtualization Keynote 'The Future of the Virtual Enterprise' at SYS-CON's Virtualization Conference & Expo 2007 West in San Francisco. 'Virtualization is the hottest subject today,
Java GUI Squish Supports New Eclipse Ganymede 3.4
Squish for Java is a leading functional GUI and regression testing tool enabling the creation and execution of automated GUI tests for Java SWT/RCP and AWT/Swing applications.
Instantiations Rolls Out Product Updates in Conjunction with Eclipse 3.4 and Ganymede
Instantiations announced that its entire Eclipse-based product line has been updated to coincide with the annual Eclipse open source release, Ganymede. Included with the roll-out are additions in the area of security to its CodePro AnalytiX comprehensive code quality product, bringing
Quest Software's JProbe Now Available as Eclipse Plug-In
Quest Software announced the latest release of its Java profiler, JProbe 8.0, which is now offered as a plug-in to the Eclipse Java Integrated Development Environment (IDE). The release of this capability aligns with the increased adoption of the open source development. Launching JPro
Migrate to Eclipse 3.4 Ganymede, Manage Configurations with Pulse
Genuitec announced the general availability of Pulse 2.2, a way to obtain, manage and configure Eclipse Ganymede and plugins. Genuitec is pleased to offer this product to Pulse users on the day of the Ganymede release. As of today, Pulse 2.2 will support full Ganymede tool stacks.
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021

SYS-CON FEATURED WHITEPAPERS

ADS BY GOOGLE