PowerBuilder 12 Technologies
Download
Report
Transcript PowerBuilder 12 Technologies
Bruce Armstrong
TeamSybase
[email protected]
Features Since PowerBuilder
11.0
PowerBuilder 11.1
Incremental rebuild for .NET Targets
PowerBuilder 11.2
Certificate Store Support for Smart Client-published
Applications
Usability and UI Enhancements
Database Connectivity Enhancements
Enabling the DEBUG Condition for ORCA and OrcaScript
Application Pools for Web Forms in IIS7
Telerik RadControls Support
EAServer Support for .NET-deployed PowerBuilder
Clients
AJAX Functionality for WebForm-Deployed Applications
PowerBuilder Videos
For more PowerBuilder 11.x detail…
http://www.sybase.com/products/development/powerbuilder/videos
http://www.sybase.com/products/development/powerbuilder/webcasts
Products Packaged with
PowerBuilder 11.5 !
Premiums Packaged
with
PowerBuilder 11.5!
Packaged with PowerBuilder 11.5 !
PocketBuilder
2.5
PowerBuilder Application Server Plug-in 1.1
PowerBuilder Skills for Heterogeneous
Environments
Mobile
J2EE
.NET
Client/Server
PowerBuilder 11.5
PowerBuilder 11.5
Features
PowerBuilder 11.5
.NET
Code Access Security
.NET Code Access Security (CAS)
Allows you to test your application under various
security sandbox settings within the IDE
Security restrictions after deployment
WebForm – based on web.config on web server
WebService - based on web.config on web server
WinForm – based on user machine policy and location
SmartClient – based on manifest file packaged with app
Assembly – based on referencing application
.NET Code Access Security (CAS)
WinForm / SmartClient
Generate (No Manifest/External/Embedded)
Execution Rights
○ Administrator
○ Highest Available
○ As Invoker
Security Levels
○ Full trust
○ Local intranet trust
○ Internet trust
○ Custom
.NET Code Access Security (CAS)
WebForm / Web Service
Security Levels
○ Full trust
○ Custom
Assembly
No Security Tab
PowerBuilder 11.5
PNG Graphics Support
PNG Support
PowerBuilder 11.5 supports the Portable
Networks Graphics (PNG) file format for images
in…
Menus
Toolbars
Treeview controls
DataWindow objects
PNG images have an “alpha” channel for
transparency
Transparent portions of a PNG image display
the background color gradient of the control to
which they are assigned
PowerBuilder 11.5
FDCC Compliance
FDCC Compliance
The Federal Desktop Core Configuration
(FDCC) is a security standard
Mandated by the US Office of
Management and Budget (OMB)
FDCC Compliance
To meet the FDCC security requirements,
PowerBuilder 11.5 can be installed only by
a system administrator
However…
PowerBuilder
Applications that you develop with PowerBuilder
…are designed to be run in a standard user
context without elevated system
administration privileges
FDCC Compliance
Most PowerBuilder files install by default
to Program Files\Sybase subdirectories
Write access to these subdirectories is
restricted to administrative users
FDCC requires all writable files must be
copied or installed to directories where
standard users have write access
FDCC Compliance
Writable files that are shared by all users are
installed in…
C:\Documents and Settings\All
Users\Documents\Sybase\PowerBuilder 11.5
These include…
The EASDemo databases
All Code Examples directories and files
All PowerBuilder Help files
The Translation Toolkit directories and files
FDCC Compliance
Other writable files are installed in the
default Program Files\Sybase
subdirectories but:
Are copied to different locations the first time
a user starts PowerBuilder
There will be as many copies of these files
as there are standard users who use
PowerBuilder
FDCC Compliance
C:\Documents and Settings\UserName
subdirectory
Files copied or written
Local Settings\Application
Data\Sybase\PowerBuilder 11.5
• PBxxx.INI files
• License files
My Documents\Sybase\PowerBuilder
11.5\Tutorial
• PowerBuilder Getting Started
tutorial
PowerBuilder 11.5
Transaction Object
Enhancement
Transaction Object Enhancement
PowerBuilder 11.5 adds two new events for
the Transaction object…
DBError
SQLPreview
Transaction Object Enhancement
With Embedded SQL…
Whenever an error occurs in the
Transaction object, the DBError event is
called
The error code and error message are passed
to the event
The SQLPreview event on the Transaction
object is triggered before SQL statements
are passed to the DBMS
Transaction Object Enhancement
DBError in concert with a DataStore or a
DataWindow…
DataWindow/DataStore DBError event is triggered
before the DBError event of the Transaction object
To coordinate these two events…
Two additional return values have been added for the
DataWindow DBError event
The meaning of the existing return values is
expanded to indicate whether the Transaction
Object's DBError event should be fired
Transaction Object Enhancement
…cont’d…In concert with a DataStore or a
DataWindow…
•
If the return value of the DataWindow or
DataStore’s SQLPreview event is 0:
• Continue processing
• The Transaction object's SQLPreview event is
triggered
PowerBuilder 11.5
Remote Deployment of
.NET Web Targets
Remote Deployment of
.NET Web Targets
PowerBuilder 11.5 .NET targets do not
require you to have IIS installed on the
development computer
When you deploy directly to a remote
computer…
System information about the deployment
computer, including its OS and IIS
versions, is passed to PowerBuilder…
…through the Windows Management
Instrumentation (WMI) interface
Remote Deployment of
.NET Web Targets
If you deploy to an MSI setup file…
Run the setup file on a deployment
computer
PowerBuilder can use the Windows API to
obtain information about the OS and IIS
versions on that computer
Remote Deployment of
.NET Web Targets
•
When you attempt to deploy Web Target
projects on Vista or Windows 2008 under a
standard user account…
Remote Deployment of
.NET Web Targets
The User Account
Control (UAC)
dialog box displays
This dialog box
allows you to
elevate your
privileges for the
purpose of
deployment
Remote Deployment of
.NET Web Targets
Deploying .NET targets to a remote Windows
Vista or Windows 2008 computer might
require changes to…
UAC
Windows firewall
Distributed Component Object Model
(DCOM) settings
PowerBuilder 11.5
Support for
MS SQL Server 2008
SQL Server 2008 Driver:
Transaction Object Syntax
New Database Connection Parameter –
“Provider”
Use the “SQLNCLI10” Provider value
Required to take advantage of new features
Default Provider value is SQLNCLI
○ Only supports SQL Server 2005 features
Example:
SQLCA.DBParm =
“Provider='SQLNCLI10‘”
SQL Server 2008 Driver :
Mirroring Support
High availability feature
Manual or Automatic failover supported
For Automatic failover, a third server is
required
Acts as a “Witness“
SQL Server 2008 Driver :
Mirroring Support
When failover occurs, the existing client
connection is lost
Client has to reconnect and reattempt the
operation
After re-connection:
DBNotification Event will be triggered in
transaction object
Notification argument value… DBFailover!
=2
SQL Server 2008 Driver :
Mirroring Support
New DB Parameter – “FailoverPartner”
e.g.: SQLCA.DBParm =
"FailoverPartner=‘SETIFund'"
SQL Server 2008 Driver :
New Data Types - Caveats
DATE and TIME
SQL Server Type
DATE
DATE
TIME
TIME
DATETIME2
PowerBuilder Type
DATETIME
TIME & DATETIME2 types
Have 0-7 fractional seconds precision.
PowerBuilder supports 0-6 fractional seconds precision.
DATETIMEOFFSET - not supported in
PowerBuilder 11.5
SQL Server 2008 Driver :
New Data Types
New Data Types (cont’d):
CLR Types
HIERARCHYID
SPATIAL DATA – GEOGRAPHY & GEOMETRY
UDT – User defined CLR Types
…seen by PowerBuilder as BLOBs or as
Hexadecimal STRINGs…
…OR…
SQL Server 2008 Driver :
New Data Types
CLR Types (cont’d):
CLR type methods can be used in…
ISQL, Embedded/Dynamic SQL, DataWindow data
source
Resolved by the DBMS!
Select EmpId, EmpName, EmpNode.ToString(), EmpNode.GetLevel()
from Emp
Select id, GeomCol.STAsText(),GeomCol.STGeometryType(),
GeomCol.STArea() from SpatialTable
SQL Server 2008 Driver :
New Data Types
FILESTREAM
NOT strictly a new data type but a new storage
mechanism for Varbinary(max) data
Use SELECTBLOB / UPDATEBLOB
SQL Server 2008 Driver :
T-SQL Support
Row Constructors
INSERT INTO Employees VALUES ('tom', 25, 5), ('jerry', 30, 6);
ESQL / DSQL
FORCESEEK – Table Hint
Forces the query optimizer to use only an index seek
ESQL / DSQL and DataWindow data source
MERGE Statement
Dynamic SQL only
GROUPING SETS
ESQL / DSQL and DataWindow data source
SQL Server 2008 Driver :
Delayed for GA
The MS SQL Server 2008 release was delayed
The GA version of our driver cannot be included
in time for the PowerBuilder 11.5 GA
Resolution: We will release PowerBuilder 11.5
with the SQL Server 2008 RC driver and support
its GA in an EBF
PowerBuilder 11.5
Support for
Oracle 11g
Oracle 11g Support
Client Access through
Proxy
1. The Proxy User logs into the
database (SQLCA.LogID)
2. DBPARM “ConnectAs” is
used to set the End User
3. After the Proxy User passes
authentication, SQLCA.LogID
value is the End User’s id
An additional password is not
needed for the End User
Oracle 11g Support
OCI Connection Pooling
and Session Pooling
Pools will be created for
Connections or Sessions
using the same ServerName
and NLS_Charset
Oracle 11g Support
Session Pooling
Stateless - reusable by middle tier threads
Pool is dynamically “grown” as needed
Clients are bound/unbound to/from a session in the pool at
runtime
Connection Pooling
Stateful – not reusable by middle tier threads
Number of physical connection and server processes is
reduced
O90 and O10 drivers used the now-deprecated CNNPool
DBParm
○ Supported for backward compatibility
New “Pooling” DBParm
"CnnPool='Yes'“ …is now… "Pooling='Connection Pooling‘"
Oracle 11g Support
Implicit Fetching ROWID with SELECT … FOR
UPDATE statements
“ROWID” no longer needs to be explicitly added in the
select items
The syntax in PowerBuilder may remain unchanged to
get a rowid value
Oracle 11g Support
Oracle Client Cache
Enables client-side caching of SQL query result sets
Relies on your Oracle Server and Client configuration
The “StatementCache” DBParm value must be set
“/*+ result_cache */” …query annotation is required
Select /*+ result_cache */ col1, col2 from table1
Oracle 11g Support
OCI Driver Name
Diagnostic aid
“AppDriverName” DPBARM parameter allows you to
set your own client driver name
Client driver name can be used with dynamic
performance view queries
○ V$SESSION_CONNECT_INFO
○ GV$SESSION_CONNECT_INFO
The maximum length is 8 characters
Oracle 11g Support
XML data type support
Oracle XMLType data type - introduced with Oracle 9i
Mapped to the PowerBuilder String data type
However, you cannot use this data type:
○ In the Where clause of a PowerBuilder embedded SQL statement or in
a DataWindow object
○ As a parameter of a procedure or DB function
○ In columns that you select directly in an Oracle cursor statement
…cont’d…
Oracle 11g Support
XML data type support
You can return single XMLType values from an Oracle
cursor…
CREATE OR REPLACE Function p_Ora_sp_char_11 return
types.cursortype
AS
l_cursor types.cursorType;
begin
open l_cursor for select x.col1.getstringval() from
t_Ora_sp_char_11 x;
return l_cursor;
end;
PowerBuilder 11.5
.NET Interoperability
Language
Enhancements
.NET Interoperability
Language Enhancements
PowerBuilder 11.5 will now…
Support method calls on PowerBuilder and
.NET primitive types
Support method calls on PowerBuilder and
.NET enumerated types
Support accessing static members of .NET
classes with instance references
.NET Interoperability
Language Enhancements
Function calls on .NET primitive and
enumerated types:
Must be made inside a conditional
compilation block for a .NET target.
.NET Interoperability
Language Enhancements
Function calls on .NET Primitive Types:
Functionality of the primitive types is now
merged with the functionality of their
corresponding PowerBuilder primitives
#if defined PBDOTNET then
System.Int32 i1
long i2
i1.ToString()
i2.ToString()
…
#end if
.NET Interoperability
Language Enhancements
Function calls are also supported on .NET
enumerated types that you import into a .NET
target
An enumerated type from an imported
assembly:
namespace ns1.ns2;
Public enum TimeOfDay
{
Morning = 0,
AfterNoon,
Evening
}
.NET Interoperability
Language Enhancements
•
e.g.: PowerBuilder allows you to call the
ToString() method on the .NET TimeOfDay
enumerated type after you reference it in
your target:
#if defined PBDOTNET then
ns1.ns2.TimeOfDay daytime
daytime = ns1.ns2.TimeOfDay.Morning!
daytime.ToString()
#end if
.NET Interoperability
Language Enhancements
PowerBuilder 11.5 lets you use instance
references to access static members of .NET
classes
string s
#if defined PBDOTNET then
//OLD WAY
//s=System.Web.HttpContext.Current.ToString()
//NEW WAY
System.Web.HttpContext context
context = System.Web.HttpContext
s = context.Current.ToString()
#end if
PowerBuilder 11.5
DataWindow
Enhancements
New DataWindow Features:
Supported Targets/Platforms
Traditional Win32
Windows Forms Target
Smart Client-Published WinForm Applications
InfoMaker 11.5
Tooltips
Supported in all DataWindow presentation
styles
Except RichText and OLE
New property tab – New properties
Columns and all Control types
All new properties are expression-enabled
Gradients/Translucency of
Backgrounds
Supported in all DataWindow presentation
styles
Except RichText and OLE
New property tab – New properties
Bands
Columns and all Control types
All are expression-enabled (except for DWO
scope/level)
Text Translucency
New Property on Font Properties tab
Columns
Text
Buttons
Group Boxes
Computed Columns
Expression-enabled
New DataWindow
Object-Level Properties
Same as band/column/control background
properties except…
Not expression-enabled
Transparency is not really transparent
○ Defaults to a white background
Extras
Bitmaps and Tiling
New Properties for Picture
Control
transparentcolor
Designate a color in the image to be transparent
Transparency
Expression-enabled
New Column Edit Style - RichText
Supported in all DataWindow presentation
styles
Except RichText and OLE
Comes with Floating Font Toolbar
Can be disabled
Roll your own using new events, functions
New Column Edit Style - RichText
RichTextToolbarActivation
New DataWindow control property – Enumerated
Enumerated values
RichTextToolbarActivationNever!
RichTextToolbarActivationOnEdit!
RichTextToolbarActivationAlways!
New Column Edit Style - RichText
New Events
RichTextCurrentStyleChanged
pbm_dwnrichtextcurrentstlechanged (long row, DWObject dwo)
•RichText column has focus
•The current style of the selection or cursor position has changed
RichTextLoseFocus
pbm_dwnrichtextlosefocus (long row, DWObject dwo)
•RichText column loses focus
RichTextLimitError
pbm_dwnrichtextlimiterror (long row, DWObject dwo, string text)
•RichText data exceeds column size
•The “text “ argument is the plain text of the current column
New Column Edit Style - RichText
New Functions for getting and setting text…
Style (bold/underline/italic)
Color
Size
Alignment
Font
New DirectX Rendering
for 3D Graph Styles
DirectX 9.0c (Direct3D) – Prerequisite
Depends on drivers supporting Direct3D
Graceful degradation to traditional rendering in case
Direct3D is absent
Support can be checked by running DXDIAG.exe from a
command prompt
Installed by PowerBuilder 11.5 for the developer
on “first use”
Anti-aliasing should be disabled
New DirectX Rendering
for 3D Graph Styles
New Functions
GetSeriesTransparency/SetSeriesTransparency
GetDataTransparency/SetDataTransparency
GetSeriesLabelling/SetSeriesLabelling
GetDataLabelling/SetDataLabelling
SUMMARY: PowerBuilder 11.5
Delivers Core Functionality Enhancements
DataWindow Look and Feel
Support for Newer DBMS versions
.NET Interoperability Language Enhancements
.NET Code Access Security
IIS7 and Vista
PowerBuilder 12
PowerScript
Enhancements
-.NET CLS
Compliancy-
PowerScript
Language Enhancements for
.NET
Define and implement interfaces
Support unbounded multidimensional array
and jag-array
Consume .NET delegates
Support parameterized constructors
Define and consume custom attributes
Define namespaces
Consume .NET generic types
Support user-defined enumerations
PowerScript
Language Enhancements for
.NET
PowerBuilder 12 : Fresh from the Labs
WPF Runtime
PowerBuilder Evolving with .NET
Windows Presentation
Foundation
WPF is Microsoft's next generation presentation
technology
Applications can have rich visual appearances
3D graphics
High definition playback
etc…
WPF uses vector-based graphics and is
resolution-independent
WPF Sample
Contoso Healthcare Sample Application, MSDN
WPF Sample
ExpenseIt Sample Application, MSDN
WPF Feature Highlights
Broad Integration
3D graphics, video (HD), speech, rich document viewing
...with one technology
Resolution Independence
Vector-based graphics render/resize to any screen
resolution
Hardware Acceleration
Can take advantage of graphics card performance
…cont’d…
WPF Feature Highlights
…cont’d…
Declarative Programming
XAML for markup
Rich Composition
Any control may “parent” another
Eventual functionality like…
…async video on each line of a DDLB!
Windows Presentation
Foundation
XAML is the declarative markup language with
which you may create complex WPF user
interfaces
XAML allows separation of UI (markup) from
runtime logic
Windows Presentation
Foundation
The change is about the underlying
presentation technology
Windows Forms applications use GDI+
WPF application uses DirectX technology for
rendering
DirectX can be rendered using hardware
resources
Performance may be improved
Windows Presentation
Foundation
Win32 and Windows Forms technology has been
all but deprecated
Eventually we’ll all need to develop Windows
applications with WPF
PowerBuilder will be your entrée to WPF
Your investment, knowledge, and skills in
PowerBuilder will be preserved
Object Models:
Win32 / WinForm vs. WPF
WPF has a different object model from Win32
and WinForm
We’re working to preserve the PowerBuilder
model while incorporating the WPF “style”
Drastically reduces your learning curve for
WPF
XAML knowledge will not be required, just
optional
Object Models:
Win32 / WinForm vs. WPF
For example, WPF controls have a
“content” property
PowerBuilder will abstract that to the “Text”
property
PowerBuilder will extend WPF controls
<my:WPFButton Height="23"
Margin="251,0,268,84"
Name=“WPFButton1"
VerticalAlignment="Bottom" Text="123"
/>
Object Models:
Win32 / WinForm vs. WPF
WPF has introduced many different new
concepts:
Dependency Properties, Attached
Properties, Commands, Routed Events
A design goal of PowerBuilder 12 is to
hide the details of these new concepts
and keep the usage similar to existing
PowerBuilder
Object Models:
Win32 / WinForm vs. WPF
Our goal, our mandate, is to provide you with
a “PowerBuilder Experience” when
developing WPF applications
Migration of Existing Applications
Migration:
The architecture of WPF is significantly
different
The approach to migration will need to be
different than Win32=> WinForm
For example, WPF encourages customers
to use Styles/Templates to create borders
instead of a simple BorderStyle
Migration of Existing Applications
If we run into these kinds of conflicts in the
WPF runtime library implementation…
We will keep the new WPF style, but…
A migration issue will exist for the
developer’s disposition
Migration of Existing Applications
More refactoring will be needed than for
Windows Forms migration
Some behaviors will change
e.g.: MDI applications will be rendered as a
Tabbed document
WPF vs. Win32/WinForm
Look and Feel…
Some properties / metaphors have no
default WPF equivalent
e.g.: BorderStyle, MDI
In a PowerBuilder 12.x time frame…
We may create/ship templates to support
these “legacy” styles
Look-and-feel can be accomplished
through WPF styles/templates
WPF vs. Win32/WinForm
MDI
Not supported by WPF
(yet?)
Viewed by Microsoft as
legacy with drawbacks
For migrated applications
PowerBuilder will convert
MDI applications to a
Tabbed Document
metaphor
http://karlshifflett.wordpress.com/2008/04/10/wpf-sample-series-wpf-mdi-task-switching/
WPF vs. Win32/WinForm
User Defined Custom Events
WPF - the event model is changed
Several custom events have no WPF matching event
Will not be supported in PowerBuilder 12.0
WPF vs. Win32/WinForm
Window Handle Usage:
Win32/WinForm applications
Each control is actually a Window
Each control has its own Window handle
e.g: You can call SetParent(hwnd) to set the parent
Window for the current Window through Win32 API
calls.
…cont’d…
WPF vs. Win32/WinForm
…cont’d…Window Handle Usage:
In WPF, there is only a single handle for the
Window
A control nested in a Window will NOT have its own
handle
API calls using Window handles will not be
supported
For migrated applications, there is no workaround
but to refactor the code
WPF vs. Win32/WinForm
Event Sequence:
Again, the event model of WPF application is
changed
The event sequence of WPF applications is
different than WinForm / Win32
We cannot ensure the event sequence of WPF
controls is exactly the same
For migrated applications, there is no
workaround but to refactor the code
Fully Managed Code at Runtime
.NET applications deployed by PowerBuilder
11.x have a Managed Code runtime…except
for the DataWindow engine
Current PowerBuilder 11.x “Unmanaged”
issues:
Need to specify the path for DataWindow
unmanaged DLLs
Can not run applications in partial trust environments
The DataWindow engine is being rewritten
from the ground up in C# and will be fullyManaged Code
PowerBuilder 12
WPF Application Architecture
• Assemblies of the
WPF runtime library
• WPF DataWindow
engine
• New Managed
database drivers
PowerBuilder WPF Window:
Constraint on Controls
Win32 and WinForm Windows could be the
parent of multiple controls
In WPF, a Window may have only one
control
Workaround:
Place a Panel, Grid or Canvas, in the
Window
We intend to put Canvas Panels in a
migrated Window by default
Default “Panel” in the
PowerBuilder WPF Window class
By default, a “Grid” panel will be put inside
a Window for new WPF applications
“Canvas” will be used for migrated
applications
Approximating absolute positioning
Grid vs. Canvas
Grid:
Can take more advantage of WPF auto sizing
SizeToContent property is available
Can automatically size controls to length of text for
localization/regionalization
Canvas:
Supports positioning elements with explicit
coordinates
If we used Grid for migrated applications…position
information would not be accurate enough
“InnerControl” Property
InnerControl
Arguably, the most important newly-introduced WPF
control property
Allows reference to WPF control directly in
PowerScript
Read Only (but properties like Content are writable)
In theory, WPF controls may be infinitely nested within
any other WPF controls (one at a time)
Cb_1.InnerControl.Content = “Some Contents”;
Third Party Controls
Third party visual controls may now be used in a
WYSIWYG fashion in design mode
Conditional code blocks are no longer required for
interoperability
When placed on the painter, the IDE will trigger a
process to create a proxy object for the control
The proxy will be analogous to traditional
OLE/ActiveX interfaces to minimize your learning
curve
New Controls Courtesy of WPF
Layouts with Panels:
Canvas
Grid
WrapPanel
StackPanel
DockPanel
New Controls Courtesy of WPF
Canvas:
New Controls Courtesy of WPF
Grid:
New Controls Courtesy of WPF
StackPanel:
New Controls Courtesy of WPF
WrapPanel Variations:
New Controls Courtesy of WPF
DockPanel:
New Controls Courtesy of WPF
For the following controls, we may…
•
Create standard runtime controls
…or…
•
Support them though 3rd party controls (proxy
objects)
…TBD
New Controls Courtesy of WPF
Expander (collapsible GroupBox):
New Controls Courtesy of WPF
Expander (collapsible GroupBox):
New Controls Courtesy of WPF
MediaPlayer:
•
Built on top of Windows Media Player
• Formats:
• WAV
• WMA
• MP3
• Etc…
New Controls Courtesy of WPF
Document Viewer (XPS or Print Preview):
New Controls Courtesy of WPF
SpeechRecognizer:
Right-to-Left Support
FlowDirection Layout Property:
Theme Support
(May be in PowerBuilder 12.x time frame)
DISCLAIMER
Anything presented here
is subject to change!
A New PowerBuilder IDE
for WPF Development
Built utilizing
the Visual
Studio
Isolated Shell
A New PowerBuilder IDE
for WPF Development
Leveraging Visual Studio features
Isolated Shell provides framework and features
UI
Editor
WPF Designer
Debugger
Plug-in existing PowerBuilder components
Database Painter
SQL Painter
etc.
A New PowerBuilder IDE
for WPF Development
Provides a familiar PowerBuilder
experience
Little or no re-training
Provides usability enhancements
consistent with other major IDEs
Keeps PowerBuilder current with latest
functionality
A New PowerBuilder IDE
for WPF Development
PowerScript in the VS Core Editor
WPF Painters
Incl. WPF DataWindow Painter
Tabbed documents
Auto-hide for tool panes
3rd Party Add-ins
Import/Export IDE Settings
A New PowerBuilder IDE
for WPF Development…and more…
Benefits for…
WPF Application Targets
.NET Assembly Targets
.NET Web Service Targets
Virtual PowerBuilder Libraries
PBLs are now folders
PowerBuilder classes/objects are now files
PBLs track files
Adding a file to a PBL folder does not by itself add
it to the PBL
Simplification of source control
Saving with compilation errors now
supported
WPF Painters
(Window, Visual UserObject)
WYSIWYG design surface for adding,
moving, resizing, positioning of controls
XAML editor for optional advanced editing of
layout, contents, and behavior
WYSIWYG Preview (WPF, vector-based)
Support for 3rd party controls
Adding 3rd Party
WPF Controls to the Toolbox
A dialog will be
provided to select
the 3rd party WPF
control to import.
Controls may be
added to the
Toolbox of the …
Window
UO
DataWindow
…painters
New PowerScript Editor Features
Improved AutoScript (Intellisense)
Colorization
Bookmarks
Code Outlining (collapsing sections)
Highlight of matching elements
Incremental Search
Line Numbering
Go to definition
Future Features…
Refactoring
Find all references
Other Painters
Database Painter
Query Painter
Structure Painter
…will essentially have the same UI as in the
Win32 IDE
Other Painters
…cont’d…
Menu Painter
The UI may be altered
Library Painter
Will be consolidated with the System Tree
A list tool window for “details”
SQL Dialog
Will have the same UI as in DataWindow .NET 2.5…a
modal dialog
File New and wizard
enhancements
Wizard Based
Treeview navigation
Finish button enables as soon as enough
information is available, event if the wizard provides
more steps
At TechWave 2007
Demonstrated the Managed Code DataWindow
engine
In prototype, we could demo…
Basic presentation styles
Use an Edit Control emulation
A lot of common methods and functionality
Syntax parsing and compiling
Expressions
Data retrieval
Sorting
Filtering
After TechWave 2007: In the Labs
Kept building functionality
○ More presentation styles
N-Up
Grid
Label
Group
Crosstab
Composite and Nested Reports
Graphs
Rich Text
○ More controls
Editmask and Spin Control
State of the DataWindow
New Features:
From PowerBuilder 11.5
New background properties
Support for PNG format
Tooltips for all control and column types
Rich Text Edit style
Support for 3rd party controls
May be used with a data binding mechanism in
the detail band
○ Must be consistent with the column’s data type
Expressions are not supported
State of the DataWindow
New Features…
XML DataWindow syntax
○ SRD syntax is still supported
Can run with limited security permissions
New export formats
○ Excel 2007
○ XML paper specification (XPS)
Nested (and Composite) DataWindows
○ Display in normal, not print preview mode
…cont’d…
State of the DataWindow
New Features …(cont’d)…
Grid style
Grid line color is a property
Enablesort supports sorting the contents on a
specific column
Label
Displays in normal mode, not print preview mode
Managed DataSources in the new Data
Source Interface
ADO .NET
Web Services
The classic data sources are still supported
The DataWindow will run as fully Managed
Code
State of the DataWindow
New Architecture:
Separation of
Core functionality
○ DataWindow objects
Presentation (rendering) functionality
○ DataWindow controls
Data access
○ The new Data Source Interface
State of the DataWindow
Under the hood…
The core functionality contains the object
management
Object definitions
The objects contain their syntax
Parsing
Compiling
Emitting (equivalent of dw.Describe(“datawindow.syntax”)
Property definitions
Getters
Setters
Type converters
Expression handling
WPF DataWindow Painter
WYSIWYG design surface for adding,
moving, resizing, positioning of
DataWindow elements
WYSIWYG Preview
Again, a familiar PowerBuilder experience
Support for 3rd party controls
The New DataWindow Painter
Under the hood again…
Adds a second control library
Uses the same core functionality as the
runtime
The controls:
Analogs to the runtime controls, similar but not
the same
Are actually simpler implementations
Designed to fit into the Visual Studio ecosystem
harmoniously
The New DataWindow Painter
Architecture:
Uses the core functionality
Loading and compiling the syntax
For all of the object state management
Gets the modified syntax when it is time to save
the changes
Uses the design time control library
Expose properties for user modification
Supports the design time UI –
dragging/dropping/moving/resizing
Uses the Isolated Shell to host the controls
And run all the behind the scenes work
Questions