Bruce Armstrong TeamSybase bruce.armstrong@teamsybase.com 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