Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface...

19
1 Interface Builders and Interface Description Languages Interface Builders (IB) and Interface Description Languages (IDL) enable Drag and Drop construction of GUI's are part of man;y Visual Studio(2013) WPF / C# Designer interface IB, IDL

Transcript of Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface...

Page 1: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

1Interface Builders and Interface Description Languages

Interface Builders (IB) and Interface Description Languages (IDL)

enable Drag and Drop construction of GUI's

are part of man;y

Visual Studio(2013) WPF / C# Designer interface

IB, IDL

Page 2: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

2IB History

1979 to Steamer Hollan, Hutchins, Weitzman @ BBN,

1985 probably the first OO graphics system.

1981 Trillium D.A. Henderson @ Xerox PARC

1965 MenuLay B. Buxton @ U. Toronto

1984 "Resource Editor” Apple, Macintosh

place and edited widgets (UI objects),

resources are properties of UI objects

1984 SOS Interface J. Hullot @ INRIA, Macintosh first modern

“interface builder”

1988 Interface Builder J. Hullot, Next

part of the Mac OS/X development tool set

Apple developer IB tutorial

IB, IDL

Page 3: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

IB, IDL 3

1990 X-Designer Motif X11 IB

?? UIL Motif X11 User InterfaceLanguage part of Mrm

1991 WindowBuilder Cooper, Peters Eclipse, (initially

for smallTalk) 2003 Eclipse / Java

XWT and other XML (IDLs).

1997 GUI design tool Staněk Oracle's Netbeans IDE for

Java (1999 acquired by Sun / Oracle)

1998 Glade GTK+ Interface Designer

GtkBuilder XML for Glade (IDL)

2007 Qt Creator Digia in Qt cross platform GUI framework

QML Qt Meta (or Modeling) Language (IDL)

2002 Designer Microsoft in Visual Studio IDE

2008 XAML XML based IDL

Page 4: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

4NextStep

Objective C

classes for widgets

Inspectors

class

connections

attributes

Interface Builder

Test Interface

Unix (Mach kernel)

Postscript display fonts

updated and in Mac OSX

Application building

select windows, menu, control and text widgets from pallets

draw wiring of events between outlets and inlets

write behaviors for events and other necessary code

make application

IB, IDL

Page 5: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

5Pallets

window

menu

controltext

IB, IDL

Page 6: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

6connections

To connect widgets select source widget

and control drag the mouse to the

destination widget.

The slider value is sent to the Scribble

window. A value from the Scribble

window is sent to the text field.

Methods are defined to process values

sent along connection paths.

IB, IDL

Page 7: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

7IB components

GUI development requires management of:

code editor, compiler, debugger, versions

geometry UI controls: place, size, drawing

events event properties, handler, generating

IDEs (Integrated Development Environment) technology manages

code for application development.

Graphics editors (Paint, CAD, ...) technology can provide drag and

drop "designing" of UI Controls.

Select from pallets of UI controls

Copy, cut, paste UI controls

Align, distribute UI controls

Group, replicate UI controls

Set attributes: title, name, colors, fonts, menmonics, layout rules

IB, IDL

Page 8: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

8Code generation

Code generation (4th generation programming APIs) technology can be

used to generate "stubs" ("patterns", "templates") for methods that

respond to events.

create method declaration and signature

generate "first draft" method documentation

facilitate editing method definition

Use of an interface builder is not design,

it is construction.

An interface builder is a tool,

not a solution.

IB, IDL

Productivity

Page 9: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

9uni or bi directional interface layout

layout UI controls

create event handlers

set attributes

Create IDL code that declares and constructs

UI controls

Create IDL code that sets values for

attributes of UI controls

Create code that associates an event with a

UI control's event listener attribute and bind

an event handler method to listener.

Create code for the assoicated event handler

Developer builds application.

Interface Builder generates IDL / XML for User Interface

IDE compiles (IDL and code) and executes program

Can the developer edit IB generated code and build again?

IB, IDL

Page 10: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

10Beginner Beware !

Developer may have to separate their code from the IB's generated code

to avoid code loss (IB blocks maybe regenerated every build, older IBs).

Beginning users of IDEs with IBs must be wary of:

IB code generation naming and style may not fit developers

IDE provides interface to code

code style might become less structured

developers may loses "big picture" of source

Does IB produce source code built with the use of composition and

not support developer inheritance ?

Can only drag and drop what is provided.

Subclassing is not as visual.

Can developer's classes (custom controls) be added to pallet?

IB, IDL

Page 11: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

Visual coding IB, IDL 11

Visual programming languages (VPLs) also exist.

Many for teaching introduction to programming.

Alice Pauch CMU

Greenfoot Kolling U of Kent

Scratch Resnick MIT

Page 12: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

Hello 585 WPF application IB, IDL 12

Getting started with WPF

VS 2013 new project | Visual C# | Windows Desktop | WPF Application

Page 13: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

Open the toolbox IB, IDL 13

Open the toolbox of UI controls

Page 14: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

Add a button IB, IDL 14

Drag a button onto the window. If your Toolbox is "auto-hide" it will

disappear when the button is in the window.

Page 15: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

Change the button's properties IB, IDL 15

Select the button in the MainWindow

In the Property window select the following Categories

Brush | change Background color

Layout | play with size, alignment, margins

Common | change Content text, add a tooltip string

Text | change the font and size

Page 16: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

add an Event handler IB, IDL 16

With the button selected in the MainWindow, set Property window to

Event handlers

For the Click event enter an event handler name.

This will cause the view to switch to MainWindow.xaml

Page 17: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

code for buttonPressed(...) IB, IDL 17

For the buttonPressed method add code to change the content of the

button.

Page 18: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

XAML code IB, IDL 18

<Window x:Name="Hello_585" x:Class="Hello585_WPF.MainWindow"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Hello 585" Height="350" Width="525" ShowInTaskbar="False">

<Grid>

<Button Content="Click Me !" HorizontalAlignment="Center"

Margin="0 VerticalAlignment="Center" Width="305" Height="191"

FontFamily="Tahoma" FontSize="24"

ToolTip="really I want to be clicked." Background="#FF2ACDBE"

Click="buttonPressed"/>

</Grid>

</Window>

Page 19: Interface Builders (IB) and Interface Description ...renzo/cs585/InterfaceBuilders.pdf · Interface Builders and Interface Description Languages 1 Interface Builders (IB) and Interface

19build, run

How would you change the application's window title to

"Hello 585"

Compile project

Build | Build Project or Rebuild Project

Run application (will also build)

Debug | Start without debugging

IB, IDL