(1) stopmi phase 2 or “what about using netbeans as a framework for our guis?” vito baggiolini...

25
(1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

Upload: william-wright

Post on 18-Jan-2018

219 views

Category:

Documents


0 download

DESCRIPTION

(3) Outline Introduction –Background –What is Netbeans –Why Netbeans? Netbeans explained –Architecture, APIs, Modularity –Netbeans “added value” and Risks Integrating Netbeans with our environment –StOPMi + Netbeans –Integrating existing GUIs Outline of StOpMI Phase 2 Project –Proposed mandate & organization Conclusions

TRANSCRIPT

Page 1: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(1)

StOpMI Phase 2 or

“What about using NetBeans as a Framework for our GUIs?”

Vito Baggiolini24-May-2002

Page 2: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(2)

Outline• Introduction

– Background– What is Netbeans?– Why Netbeans?

• Netbeans explained– Architecture, APIs, Modularity– Netbeans “added value” and Risks

• Integrating Netbeans with our environment– StOPMi + Netbeans– Integrating existing GUIs

• Outline of StOpMI Phase 2 Project– Proposed mandate & organization

• Conclusions

Page 3: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(3)

Outline• Introduction

– Background– What is Netbeans– Why Netbeans?

• Netbeans explained– Architecture, APIs, Modularity– Netbeans “added value” and Risks

• Integrating Netbeans with our environment– StOPMi + Netbeans– Integrating existing GUIs

• Outline of StOpMI Phase 2 Project– Proposed mandate & organization

• Conclusions

Page 4: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(4)

Background • Many Controls projects are building Java GUIs• GUIs should have full-fledged functionality

– Users are “spoiled” by Windows– Applications are judged by GUIs (“Tip of Iceberg”)

• All GUIs have similar elements– Functionality: Explorer, Menus, Toolbars, Output window, etc.– Building blocks: Buttons, Lists, Dialogs, etc.

• We need a common approach– To share developments (save man-power)– To integrate components from different sources– To have a common GUI Layout and Look & Feel

• StOpMI is a common approach, but it’s not enough

Page 5: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(5)

What is Netbeans?• A GUI development Platform

– Generic building blocks for developing any GUI

• A Java Development Environment (Netbeans IDE)– The Netbeans IDE is just one application built on top of the

GUI development platform

• A mature open source project lead by Sun– Started as a private company in 1997, Open source since 2000– Free version of the Forte IDE

Modulesof the IDE

Framework +Modules =Netbeans IDEEditor Debug.

Javadoc

CVS

ANT EJB dev.XML

Platform

Netbeans

Page 6: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(6)

Why Netbeans? • It adds value to plain Swing and StOpMI

– It provides an architecture and development guidelines– It has generic functionality needed by all GUI developers– It can easily be combined with StopMi and Swing

• It is made for collaborative, multi-team development– Open source project: several NB teams + external contributors

• It’s well done and well organized– Technically sound, standard based– Well documented– Quality Assurance done by Sun, tested by large community

Page 7: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(7)

Outline• Introduction

– Background– What is Netbeans– Why Netbeans?

• Netbeans explained– Architecture, APIs, Modularity– Netbeans “added value” and Risks

• Integrating Netbeans with our environment– StOPMi + Netbeans– Integrating existing GUIs

• Outline of StOpMI Phase 2 Project– Proposed mandate & organization

• Conclusions

Page 8: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(8)

What is an “Architecture”• A set of software components

– Framework components: Explorer, Menu, Toolbar, OutputWindow

– Task-specific Modules

• A set of contracts between them (in form of APIs)– Services that the Framework provides to the Modules– Services (information) that the Modules provides to the

Framework

• A set of guidelines– How to produce components – How to fit them into the Framework

Page 9: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(9)

Example of Architecture

Module

write(“log message”)

getNodes()

getActions()

Explorer

Menus

Toolbars

Output Windows

Page 10: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(10)

Netbeans Architecture

Module

API (Services) provided by Framework

API(Services)

provided byFramework

Explorer

Menus

Toolbars

Output Windows

API that has to be provided by Module

Page 11: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(11)

Modular, Configurable, Extensible• Modular

– Netbeans module = “Shrink-wrapped” component that can be plugged into the Netbeans Frame

– It contains code + configuration (Menus, toolbars, nodes)

• Configurable– Modules can be added/removed independently and at run-time– Configuration based on XML => changes without touching

Java code

• Extensible– Writing new Modules– Extend (modify) existing Netbeans components (e.g. Explorer,

WindowManager, …)

Page 12: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(12)

Demo• Generic GUI functionality

– Menus, Toolbars, Shortcuts, status line, help screens– Workspaces, Settings panels, Tree-Tables, Wizards – Persistence

• Explorer– Actions, Icons, Tooltips, keyboard short-cuts– Pop-up menus with dynamic calculation of items

• Dynamic adaptation of features– Grayed-out menu items and icons– Changing icons

• Module activation/desactivation– Modules add/remove menus, toolbars, pop-up menus, etc.– Dependencies between modules are enforced

• 3rd party components– E.g. scripting console

Page 13: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(13)

Why is it good for collaboration?• Collaboration Scenario

– GUI for LHC Operations– Plug-ins from Alarms, BISCoTO, J/Xcluck, CMW Console, etc.

• Architecture and Guidelines– Make sure that components fit together and can be plugged in

• Version management– Each module has a version number– Dependencies between versions of modules can be enforced– No “misterious” incompatibilities

• Flexible configuration– End Users can experiment with ergonomics– Best configuration can then be packed into Module as default

Page 14: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(14)

Risks of Netbeans• One misbehaving module can affect others

– Modules from different providers are not isolated

• Is it too difficult to use?– Requires some learning (not for novice programmers)– Can be mitigated by on-site expertise

• Does it have hidden flaws?– Memory leaks? Nasty bugs?

• Is it too big, too slow?

• What if IBM buys SUN?– Netbeans project would be discontinued – Would NB

community survive?– We still have the sources…

Page 15: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(15)

Outline• Introduction

– Background– What is Netbeans– Why Netbeans?

• Netbeans explained– Architecture, APIs, Modularity– Netbeans “added value” and Risks

• Integrating Netbeans with our environment– StOPMi + Netbeans– Integrating existing GUIs

• Outline of StOpMI Phase 2 Project– Proposed mandate & organization

• Conclusions

Page 16: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(16)

Integrating Netbeans and StopMi 1E

xplo

rer

MenusToolbars

Output Windows

StOpMI Panels

(OPBeans)

StopMe Look&Feel • Taken from StOPMi– Look&Feel– Modules (GUI panels)

written with OPBeans – OPController can be used

internally in Modules

• Taken from Netbeans– Architecture + APIs – Explorer, Menus, Toolbars,

OutputWindow, etc.

• Integration easy because complementary– Netbeans is the “frame”, StOpMI the “content” (Module)– The Architecture & API have to be respected

Page 17: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(17)

Integrating with existing GUIs• Effort depends on level of integration (c.f. next slide)• Integration of existing Swing JPanels is straight-

forward

• Effort to make your GUIs to use Netbeans functionality:– Use Netbeans output Windows: easy– Use Netbeans Menus + toolbar configuration: easy– Use Explorer: need to use Netbeans data structure (Nodes)

• Development Tools– JPanels can be developed with JBuilder/JDeveloper– Netbeans IDE is needed for integration into Netbeans Frame

Page 18: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(18)

Loose vs. Strong Integration• Loose integration: (integrate GUI panels as-is)

Straight-forward limited functionality (e.g. no Explorer) Redundancy, little/no sharing Low dependency on Netbeans

• Strong integration (Use Netbeans components) Good interaction/data sharing with other modules Full fledged functionality Faster development, no re-inventing of wheels Longer, steeper learning phase Strong dependency on Netbeans

Page 19: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(19)

Hypothetical Example of Integration

Page 20: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(20)

• Loose integration– Take the whole BISCoTO expert as a whole – Netbeans Explorer not used– One item in a Netbeans Menu that launches the whole Biscoto

• Strong(er) integration– BISCoTO Navigator reengineered to use Netbeans Explorer– NB Explorer launches BISCoTO Panels– BISCoTO module adds a menus & toolbar with several items– BISCoTO panels use Netbeans output windows + status bars– BISCoTO donates generic panels to StOpMI Phase 2 ;-)

Hypothetical Example of Integration

Page 21: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(21)

Outline• Introduction

– Background– What is Netbeans– Why Netbeans?

• Netbeans explained– Architecture, APIs, Modularity– Netbeans “added value” and Risks

• Integrating Netbeans with our environment– StOPMi + Netbeans– Integrating existing GUIs

• Outline of StOpMI Phase 2 Project– Proposed mandate & organization

• Conclusions

Page 22: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(22)

“StOpMI Phase 2” Project• Mandate

– “Interpret” NetBeans & StOpMI in accelerator controls context– Support users (GUI developers) in adopting and applying it

• Small core team– Help users set up their development environment + tools– Provide training, examples, documentation entry points, FAQ– Provide “helpdesk” + project-specific consultancy to users– Provide additional tools (testing!)– Identify/adapt/write shared components– Migrate existing StOpMI-based applications– Do not write (or reengineer) new and non-StOpMI Applications

• Netbeans developers in projects– Learn NetBeans with help of core team– Write (or reengineer) Applications– Help NB-agnostic colleagues to integrate Swing panels

Page 23: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(23)

Cost/Benefit of your Commitment• Benefits

Full-fledged GUI functionality Relatively fast development Standard, compatible approach Support and maintenance from a dedicated team Sharing of components (in-house and 3rd party)

• Costs Manpower for learning and reengineering Dependency on NetBeans You do not know all the code

Page 24: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(24)

Conclusions

• We need a common approach

• Netbeans seems a valid solution

• StOpMI and Netbeans will be combined

• We can make it work with a consultancy-oriented project team

Page 25: (1) StOpMI Phase 2 or “What about using NetBeans as a Framework for our GUIs?” Vito Baggiolini 24-May-2002

(25)