English Español Português Italiano
Tutorials Guide Help
Sitemap Adobe Autodesk Microsoft Corel Sony GNU Others

Eclipse Tutorial


 









Eclipse Tutorial

Eclipse Tutorial FREE DOWNLOAD THIS TUTORIAL
Tutorial in pdf format so you can save it to your PC, e-book reader or print.


Sponsored link



Note: The tutorial you are about to download is compressed format. Rar, if you do not have a decompressor rar files you can download 7-zip and you can display the Foxit PDF Reader.



Index Eclipse Tutorial


Welcome to Eclipse
Who needs a platform?
End users
Software developers
The holy grail
What is Eclipse?
Open architecture
Platform structure
Out of the box
Platform architecture
Platform SDK roadmap
Runtime core
Resource management
Workbench UI
Team support
Debug support
Help System
Java Development Tools (JDT)
Plug-in Development Environment (PDE)
Team support
Repository providers
Extension point
Implementing a RepositoryProvider
Configuring a project
Finding a provider
Repository Providers and Capabilities
Resource modification hooks
Resource properties
Team Repository Provider
Identifier
Since
Configuration Wizards
Identifier
Description
Resource modification hooks
Resource move/delete hooks
File modification validators
General team hook
Move/Delete Hook
Identifier
Since
Team Hook
Identifier
Since
Scheduling rules
Making your own rules
Rule hierarchies
Batching resource changes
Repository resource management
Ignored files
File Types
Team and linked resources
Team private resources
Project sets
Ignore
Identifier
Since
File Types
Identifier
Since
Linked resources
Path variables
Broken links
Compatibility with installed plug-ins
Linked resources in code
Project natures
Defining a nature
Associating the nature with a project
Nature descriptors
Project Natures
Identifier
Description
Project Sets
Identifier
Since
Synchronization Support
Terminology
The Basics - SyncInfo
Managing the synchronization state
Displaying the synchronizations state in the UI
Synchronize Participant Creation Wizards
Identifier
Since
Local History Example
Synchronize Participant Creation Wizards
Defining the variants for local history
Creating the Subscriber
Adding a Local History Synchronize Participant
Conclusion
Beyond the Basics
Implementing a Subscriber From Scratch
ThreeWaySubscriber
ThreeWaySynchronizer
ThreeWayRemoteTree
CachedResourceVariant
Building on Top of Existing Workspace Synchronization
Program debug and launch support
Plugging in help
Table of Contents (TOC)
Identifier
Description
Plug it in: Hello World meets the workbench
A minimal plug-in
Hello world view
Creating the plug-in project
Creating your plug-in project
The Hello World view
The Hello World manifests
Running the plug-in
Launching the workbench
Running Hello World
Views
Identifier
Description
Beyond the basics
Basic workbench extension points
Installing the examples
Installing examples via the Update Manager
Installing examples manually
Example - Readme Tool
Introduction
Running the example
Details
Workbench menu contributions
Advanced workbench concepts
Plugging into the workbench
Quick tour of the workbench
Views
Editors
The JFace UI framework
JFace and the workbench
JFace and SWT
The Standard Widget Toolkit
Portability and platform integration
Resources overview
Resources and the workspace
A sample resource tree
Resources and the local file system
Our sample tree on disk
Our sample tree in code
Mapping resources to disk locations
Resource API and the file system
Auto-refresh providers
Identifier
Since
Refresh providers
Project-scoped preferences
Specifying the scope
Project-scoped preference nodes
Runtime preferences
Preference scopes
Using scopes and nodes
Extending the scopes
Products and features
Products extension point
Products
Identifier
Since
Applications
Identifier
Description
Customizing a product
About dialogs
Window images
Welcome page
Applications
Preferences defaults
Splash screens
Intro Part
Identifier
Since
Intro support
Features
Feature Archives
Eclipse platform plug-in manifest
Eclipse platform feature manifest
Primary feature
Preferences
Identifier
Since
File encoding and content types
Setting a character set
Querying the character set
Content types for files in the workspace
Content types
Using content types
Finding out about content types
Detecting the content type for a data stream
Describing a data stream
Providing content-sensitive features
Resource markers
Marker operations
Extending the platform with new marker types
Resource Markers
Identifier
Description
Modifying the workspace
Tracking resource changes
Threading issues
Native event dispatching
SWT UI thread
Executing code from a non-UI thread
The workbench and threads
Concurrency and the workspace
Incremental project builders
Invoking a build
Defining an incremental project builder
Resource Markers
Associating an incremental project builder with a project
Incremental Project Builders
Identifier
Description
Derived resources
Team private resources
Workspace save participation
Implementing a save participant
Using previously saved state
Workbench wizard extension points
Platform Extension Points
Platform runtime
Workspace
Platform text
Workbench
Team
Debug
Console
Help
Other
Adapters
Identifier
Since
Content Types
Identifier
Since
File Modification Validator
Identifier
Description
Annotation Model Creation
Identifier
Since
Document Creation
Identifier
Since
Document Setup
Identifier
Since
Annotation Types
Identifier
Since
Document Providers
Identifier
Since
Marker Annotation Specification
Identifier
Since
Marker Updaters
Identifier
Since
Editor Template
Identifier
Since
Reference Provider
Identifier
Since
Spelling Engine
Identifier
Since
Accelerator Configurations
Identifier
Since
Commands
Identifier
Since
Action Sets
Identifier
Description
Bindings
Identifier
Since
Contexts
Identifier
Since
Accelerator Scopes
Identifier
Since
Accelerator Sets
Identifier
Since
Action Definitions
Identifier
Since
Action Set Part Associations
Identifier
Description
Activities
Identifier
Since
Activity Support
Identifier
Since
Browser Support
Identifier
Since
Cheat Sheet Content
Identifier
Since
Cheat Sheet Content File XML Format
cheatsheet
intro
description
item
subitem
conditional-subitem
repeated-subitem
action
perform-when
Example
Cheat Sheet Item Extension
Identifier
Since
Decorators
Identifier
Since
Drop Actions
Identifier
Description
Editor Menus, Toolbars and Actions
Identifier
Description
Internal and External Editors
Identifier
Description
Element Factories
Identifier
Description
Encodings
Identifier
Since
Export Wizards
Identifier
Description
Font Definitions
Identifier
Since
Handlers
Identifier
Since
HelpSupport
Identifier
Since
Marker Help
Identifier
Since
Marker Image Providers
Identifier
Since
Marker Resolutions
Identifier
Since
Project Nature Images
Identifier
Since
Resource Filters
Identifier
Since
Import Wizards
Identifier
Description
Intro Part Configuration
Identifier
Since
Intro Part Configuration Extension
Identifier
Since
Intro Content File XML Format
introContent
page
group
link
html
title
text
include
head
img
extensionContent
anchor
contentProvider
Keywords
Identifier
Since
Creation Wizards
Identifier
Description
Perspective Extensions
Identifier
Description
Perspectives
Identifier
Description
Pop-up Menus
Identifier
Description
Preference Pages
Identifier
Description
Preference Transfer
Identifier
Since
Presentation Factories
Identifier
Since
Property Pages
Identifier
Description
Startup
Identifier
Since
System Summary Sections
Identifier
Since
Themes
Identifier
Since
View Menus,Toolbars and Actions
Identifier
Description
Working Sets
Identifier
Since
Synchronize Participants
Identifier
Since
Breakpoints
Identifier
Description
Launch Configuration Comparators
Identifier
Description
Launch Configuration Types
Identifier
Description
Launch Delegates
Identifier
Since
Launcher (Obsolete)
Identifier
Description
Launch Modes
Identifier
Since
Logical Structure Types
Identifier
Since
Process Factories
Identifier
Since
Source Container Types
Identifier
Since
Source Locators
Identifier
Description
Source Path Computers
Identifier
Since
Status Handlers
Identifier
Description
watchExpressionDelegates
Identifier
Since
Breakpoint Organizers
Identifier
Since
Console Color Providers
Identifier
Since
Console Line Trackers
Identifier
Since
Context View Bindings
Identifier
Since
Debug Model Context Bindings
Identifier
Since
Debug Model Presentation
Identifier
Description
Launch Configuration Tab Groups
Identifier
Description
Launch Configuration Type Images
Identifier
Description
Launch Groups
Identifier
Since
Launch Shortcuts
Identifier
Description
Memory Renderings
Identifier
Since
Source Container Presentations
Identifier
Since
String Variable Presentations
Identifier
Since
Variable Value Editors
Identifier
Since
Console Factories
Identifier
Since
Console Page Participants
Identifier
Since
Console Pattern Match Listeners
Identifier
Since
Help Content Producer
Identifier
Since
Contexts
Identifier
Description
Browser
Identifier
Since
Lucene Analyzer
Identifier
Since
Ant Properties
Identifier
Since
Ant Tasks
Identifier
Description
Ant Types
Identifier
Description
Extra Ant Classpath Entries
Identifier
Description
ContentMerge Viewers
Identifier
Description
Content Viewers
Identifier
Description
Stream Merger
Identifier
Since
Structure Creators
Identifier
Description
StructureMerge Viewers
Identifier
Description
Property Testers
Identifier
Since
Dynamic String Substitution Variables
Identifier
Since
Value Variables
Identifier
Since
Copy Participants
Identifier
Since
Create Participants
Identifier
Since
Delete Participants
Identifier
Since
Move Participants
Identifier
Since
Rename Participants
Identifier
Since
Refactoring Change Preview Viewers
Identifier
Since
Refactoring Status Context Viewers
Identifier
Since
Search Pages
Identifier
Description
Result Sorters
Identifier
Description
Search Result View Pages
Identifier
Since
Configuration Duplication Maps
Identifier
Since
Feature Type Factory
Identifier
Description
Global Install Handlers
Identifier
Description
Site Type Factory
Identifier
Description
Runtime overview
The runtime plug-in model
Plug-ins and bundles
Extension points and the registry
Contributing content types
Providing a new content type
Detecting and describing content
Extending an existing content type
OSGi Bundle Manifest Headers
Eclipse Bundle Manifest Headers
Additional Export-Package Directives
The Eclipse-AutoStart Header
The Eclipse-PlatformFilter Header
The Eclipse-BuddyPolicy Header
The Eclipse-RegisterBuddy Header
The Eclipse-ExtensibleAPI Header
The Plugin-Class Header
Concurrency infrastructure
Jobs
Common job operations
Job states
Job change listeners
The job manager
Job families
Reporting progress
Progress monitors and the UI
Progress groups
Workbench concurrency support
Progress service
Showing that a part is busy
Progress Properties for Jobs
Workbench jobs
Long-running operations
Runnables and progress
Modal operations
Job scheduling
Locks
Workbench under the covers
Workbench
Page
Perspectives
Views and editors
org.eclipse.ui.views
OSGi Bundle Manifest Headers
Viewers
Standard viewers
Viewer architecture
Viewers and the workbench
org.eclipse.ui.viewActions
org.eclipse.ui.editors
Contributing new retargetable actions
Content outliners
Text editors and platform text
org.eclipse.ui.editorActions
org.eclipse.ui.popupMenus
org.eclipse.ui.actionSets
Application dialogs
The plug-in class
Plug-in definition
AbstractUIPlugin
Preference pages
Contributing a preference page
Implementing a preference page
Field editors
Dialogs and wizards
Standard dialogs
Dialog settings
Wizards
Wizard dialog
Wizard
Wizard page
org.eclipse.ui.newWizards
org.eclipse.ui.importWizards
org.eclipse.ui.exportWizards
Wizard dialogs
Multi-page wizards
Validation and page control
Actions and contributions
Actions
Contribution items
Contribution managers
User interface resources
Image descriptors and the registry
Plug-in patterns for using images
ResourceManager
Font registry
JFaceResources
Widgets
Widget application structure
SWT standalone example - Hello World
Dialogs and wizards
Hello World 1
Running the example
SWT standalone examples setup
Adding SWT to your workspace
Importing example source
Running the Example
Examples Overview
SWT standalone example - Address Book
Running the example
SWT Example Launcher
Running the Example Launcher
SWT example - Browser
Running the example
SWT standalone example - Clipboard
Running the example
SWT example - Controls
Running the example
SWT example - Custom Controls
Running the example
SWT standalone example - Drag and Drop
Running the example
SWT standalone example - File Viewer
Running the example
SWT standalone example - Hover Help
Running the example
SWT standalone example - Image Analyzer
Running the example
SWT standalone example - Java Syntax Viewer
Running the example
SWT example - Layouts
Running the example
SWT example - Paint Tool
Running the example
SWT standalone example - Text Editor
Running the example
Controls
Events
Custom widgets
Layouts
Custom layouts
Error handling
IllegalArgumentException
SWTException
SWTError
Graphics
Graphics context
Fonts
Dialogs and wizards
Colors
Images
Graphics object lifecycle
UI Forms
UI Forms controls
Form control
Hyperlink control
Expandable composite and Section controls
FormText control
Rendering normal text (label mode)
Automatic conversion of URLs into hyperlinks
Parsing formatting markup
UI Forms Layouts
TableWrapLayout
ColumnLayout
Color and font management
Managed forms
Master/Details block
Multi-page form editors
Recommended practices for Eclipse Forms multi-page editors
Menu and toolbar paths
Menu paths
Tool bar paths
Using paths from another plug-in
Action set part associations
Boolean expressions and action filters
Boolean enablement expressions
Using objectState with content types
Retargetable actions
Setting a global action handler
Undoable operations
Writing an undoable operation
Operation history
Multi-page form editors
Undo and redo action handlers
Application undo models
Undo and the IDE Workbench
Perspectives
Workbench part layout
Linking views and editors with "show-in"
org.eclipse.ui.perspectives
org.eclipse.ui.perspectiveExtensions
Decorators
Workbench key bindings
Commands
Key bindings
Schemes
Contexts and key bindings
Contexts
Element factories
Accessible user interfaces
Assistive technology
Accessibility resources
SWT and accessibility
Tips for making user interfaces accessible
Honoring single click support
Single click in JFace viewers
Single click in SWT controls
Activating editors on open
Working sets
Adding new working set types
Contributing resource filters
Filtering large user interfaces
Activities
Activities vs. perspectives
Guiding the user through tasks
Cheat sheets
Defining an intro part
Contributing a HelloWorld Intro Part
Using the CustomizableIntroPart
Defining an intro config
Defining intro content
Using XHTML as intro content
Displaying static HTML content in a CustomizableIntroPart
Extending an intro config
Extending the content of an intro config
Contributing a standby content part
Defining a custom IntroURL action
Workbench resource support
Contributing a property page
Tips for making user interfaces accessible
Implementing a property page
Marker help and resolution
Text file encoding
Editors
Workbench editors
Editor parts and their inputs
Resetting the editor input
Navigating the editor input
Documents and partitions
Document providers and documents
Syntax coloring
Damage, repair, and reconciling
Configuring a source viewer
Source viewers and annotations
Annotations and rulers
Text and ruler hover
Text hover
Ruler hover
Content assist
Content assist processors
Content assist configuration
Registering editor actions
Editor menu bar actions
Editor context menus
Menu ids
Other text editor responsibilities
Preference handling
Key bindings
Building a help plug-in
Table of contents (toc) files
toc_Concepts.xml
toc_Tasks.xml
Help server and file locations
National language and translated documentation
Cross plug-in referencing
Completing the plug-in manifest
Building nested documentation structures
Top-down nesting
Bottom-up composition
Dynamic topics
Content producer example
Constraints
Context-sensitive help
Declaring a context id
Describing and packaging context-sensitive help content
Context-sensitive help from multiple plug-ins
Dynamic creation of context help
Infopops
Information Search
Federated search engine types
Active help
Writing the help action
Invoking the action from HTML
Tips for debugging active help
Test your action ahead of time
Ensure the JavaScript is running
Search support
Contributing a search page
Implementing the search page
Contributing a search result page
Compare support
Compare viewers
Implementing a content viewer
Simple content viewers
Content merge viewers
Implementing a structure viewer
Tree-like structure viewers
Other hierarchical structure viewers
Merging multiple streams
Advanced compare techniques
Writing compare operations
Compare functionality outside of compare editors
Rich Team Integration
Getting started
Compare support
Enhancing resource views
Handling user editing and changes to resources
Streamlining repository-related tasks
Enhancing platform integration
Adding team actions
Team decorators
Team and linked resources
Project sets
File types
Adding preferences and properties
Launching a program
Adding launchers to the platform
Handling errors from a launched program
Launch configuration dialog
Launch configuration type images
Launch shortcuts
Debugging a program
Platform debug model
Breakpoints
Expressions
Debug model presentation
Debug UI utility classes
Platform Ant support
Running Ant buildfiles programmatically
Special care for native libraries if build occurs within the same JRE as the workspace
Ant tasks provided by the platform
eclipse.refreshLocal
eclipse.incrementalBuild
eclipse.convertPath
Contributing tasks and types
Progress Monitors
Important rules when contributing tasks and types
Why a separate JAR for tasks and types?
Developing Ant tasks and types within Eclipse
Expanding the Ant classpath
Packaging and delivering Eclipse based products
Customizing a primary feature
About dialogs
Window images
Welcome page
Splash screens
Preferences defaults
About.ini File Format
Locale specific files
Platform core mechanism
Defining NL fragments
Plug-ins and fragments
Plug-in Archives
Product installation guidelines
Multi-user issues
Uninstall issues
Reinstalling the product
How to write an Eclipse installer
Product installer creation script
Uninstaller behavior
Installer behavior when product already installed
Associating a JRE installed elsewhere
Extension installer creation script
Uninstaller behavior
Installer behavior when extension already installed
Product extensions
Installing and uninstalling extensions
Updating a product or extension
Feature and plug-in packaging
Update server layout
Update servers and policies
Update server site map
Site Map
Default Site Layout
Mirrors File
Controlling Access
Eclipse Update Policy Control
2. Update policy to the rescue
2.1 Support for creating local (proxy) update sites
2.2 Common update policy control
2.3 Automatic discovery of updates
3. Summary
Deploying eclipse based application with Java Web Start
Step 1, creating a wrappering feature
Step 2, exporting the wrappering feature and the startup.jar
Step 3, creating the main jnlp file
Plug-ins based application
Known limitations
Building a Rich Client Platform application
Eclipse Platform Map of Platform Plug-ins
The browser example
Defining a rich client application
Customizing the workbench
The workbench life-cycle
Defining the actions
Making UI contributions
Adding the perspective
Adding views
Other Reference Information
Basic platform information
User interface information
Help information
Product install and configuration information
Eclipse.org articles index
The Eclipse runtime options
Command line arguments
Obsolete command line arguments
Others
System properties
Locations
More detail
Read-only Locations
Launcher ini file
File format
Starting Eclipse from Java
Eclipse platform API rules of engagement
What it means to be API
How to tell API from non-API
General rules
Calling public API methods
Instantiating platform API classes
Subclassing platform API classes
Calling protected API methods
Overriding API methods
Implementing platform API interfaces
Implementing public API methods
Accessing fields in API classes and interfaces
Casting objects of a known API type
Not following the rules
Eclipse Platform Naming Conventions
Java Packages
Classes and Interfaces
Methods
Variables
Constants
Plug-ins and Extension Points
Glossary of terms
The project description file
Message Bundles In Eclipse 3.1
Description
Summary of the new approach
When creating a new message
Example Files
Client Code
Messages.java
messages.properties
Eclipse multi-user installs
Basic concepts
Locations
Configuration initialization
Scenario #1 - private install
Scenario #2 - shared install
Scenario #3 - shared configuration
Setting the private configuration area location
Updating
Pre-built documentation index
Building a documentation index for a plug-in
Building an index for a product
Packaging and Installation of the product's pre-built index
Installing the stand-alone help system
Installation/packaging
How to call the help classes from Java
How to call the help from command line
[Optional] Installing a minimal set of plug-ins
Help System Preferences
org.eclipse.help plug-in
org.eclipse.help.base plug-in
org.eclipse.help.appserver plug-in
org.eclipse.tomcat plug-in
Installing the help system as an infocenter
Installation/packaging
How to start or stop infocenter from command line
Using the infocenter
How to start or stop infocenter from Java
Making infocenter available on the web
Running multiple instance of infocenter
[Optional] Installing a minimal set of plug-ins
Updating a running infocenter from command line
The platform.xml file
Since
Description
Configuration Markup
Running update manager from command line
Bidirectional Support in the Eclipse Workbench
Enabling Bidirectional Support in the SDK
Enabling your plug-in for looking up alternate icons
How to choose icons to override
JFace Preference Stores
Third party libraries and classloading
Eclipse 3.1 Plug-in Migration Guide
Eclipse 3.1 Plug-in Migration FAQ
IPreferenceStore has more explicit API
IWorkbenchWindow#getShell() has more explict API
Incompatibilities between Eclipse 3.0 and 3.1
1. Plug-in Preferences
2. Changes to IPath constraints
3. Extension registry
4. Code formatter options
5. API contract changes to AntCorePreferences
6. API contract changes to Policy class in JFace
7. API contract changes to allow a null default perspective
8. API contract changes to IViewLayout
9. API contract changes to IVMInstall
10. SelectionEnabler.SelectionClass made package-visible
11. ContributionItem.getParent() can return null
12. Changes to isPropertySet(boolean) in IPropertySource and IPropertySource2
13. handlerSubmission element deleted from the org.eclipse.ui.commands extension point
14. Static non-final API field GLOBAL_IGNORES_CHANGED in TeamUI made final
Incompatibilities between Eclipse 3.0 and 3.1
15. ClassCastException using FillLayout
16. IllegalArgumentException thrown creating a widget with a disposed parent
Changes required when adopting 3.1 mechanisms and APIs
Platform undo/redo support
Platform undo/redo action handlers
Help Enhancements
Eclipse 3.0 Plug-in Migration Guide
Eclipse 3.0 Plug-in Migration FAQ
Incompatibilities between Eclipse 2.1 and 3.0
1. Plug-in manifest version
2. Restructuring of Platform UI plug-ins
3. Restructuring of Platform Core Runtime plug-ins
4. Removal of Xerces plug-in
5. Eclipse 3.0 is more concurrent
6. Opening editors on IFiles
7. Editor goto marker
8. Editor launcher
9. Editor registry
10. Workbench marker help registry
11. Text editor document providers
12. Text editors
13. Headless annotation support
14. Console view
15. Java breakpoint listeners
16. Clipboard access in UI thread
17. Key down events
18. Tab traversal of custom controls
19. Selection event order in SWT table and tree widgets
20. New severity level in status objects
21. Build-related resource change notifications
22. Intermediate notifications during workspace operations
23. URL stream handler extensions
24. Class load order
25. Class loader protection domain not set
26. PluginModel object casting
27. ILibrary implementation incomplete
28 Invalid assumptions regarding form of URLs
29. BootLoader methods moved/deleted
30. Plug-in export does not include the plug-in's JARs automatically
31. Re-exporting runtime API
32. Plug-in parsing methods on Platform
33. Plug-in libraries supplied by fragments
34. Changes to build scripts
35. Changes to PDE build Ant task
Incompatibilities between Eclipse 2.1 and 3.0
36. Changes to eclipse.build Ant task
37. Changes to eclipse.fetch Ant task
38. Replacement of install.ini
Changes required when adopting 3.0 mechanisms and APIs
Getting off of org.eclipse.core.runtime.compatibility
NL fragment structure
API changes overview
SWT Example Launcher
Running the Example Launcher
SWT example - Browser
Running the example
SWT example - Controls
Running the example
SWT example - Custom Controls
Running the example
SWT example - Layouts
Running the example
SWT example - OLE Web Browser
Running the example
SWT example - Paint Tool
Running the example
Example - Java Editor
Introduction
Features demonstrated in the example editor
Features not demonstrated
Running the example Java editor
Principles for creating custom text editors
Code organization of the example
Example - Template Editor
Introduction
Features demonstrated in the template editor
Features not demonstrated
Running the example Template editor
Code organization of the template editor example
Example - Multi-page Editor
Introduction
Running the example
Details
Example - Property Sheet
Introduction
Running the example
Details
Example - Undo
Introduction
Features demonstrated in the example
Features not demonstrated
Running the example
Incompatibilities between Eclipse 2.1 and 3.0
Details
Help
Introduction
Running the example
Details
Team - File System Repository Provider Example
Introduction
Running the example
Team - Local History Synchronize Participant Example
Introduction
Running the example
Compare Example - Structural Compare for Key/Value Pairs
Introduction
Running the example
Code organization of the example
Eclipse Platform XML Compare
Installing the plugin
Using the plugin
ID Mapping Schemes
Ordered entries
Defining ID Mapping Schemes and Ordered entries
Extension Points
Tutorial and Examples
General Matching vs. ID Mapping Schemes:How to create an ID Mapping Scheme to improve compare results
Adding Ordered entries
idMapping
Platform questions index
Getting started
Core runtime
Resources
New file types in the UI
Workbench UI
Installation and upgrade
Notices
About This Content
License







Download the file decompressor 7-zip.
Download the PDF reader Foxit PDF Reader.




TutorialsPDF.com © 2008 - This work is licensed under a Creative Commons License.