You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 22 Next »

GUIFramework (GFW) is the basic module for developing Swing GUIs at SLAC.

Requirements TO-DO

Developer's Guide

Abstract

This guide describes in detail how to use GFW in a Swing application. In general, you create your own Swing components (either programmatically, or with a GUI builder) and add them to the appropriate GFW frame.

Overview

We recommend the following steps:

  1. #Check out GFW from CVS into Eclipse.
  2. #Read and run the example code.
  3. #Create custom components for the desired GFW frame
  4. #Write code that adds custom components to GFW.
  5. #Add event listeners to the appropriate widgets.
  6. #Test the application.
  7. #Optional features.

Check out GFW from CVS into Eclipse

GFW is located in $CVSROOT/physics/GUIFramework

Read and run the example code

An example can be found in the class

edu.stanford.slac.gfw.example.GfwExample

When running the example, please observe

  • the different GFW frames
  • the various areas in which the custom components end up
  • how the GUI behaves when it is resized

Create custom components for the desired GFW frame

For a quick development (e.g. GUI mock ups), we recommend the Netbeans GUI Builder.

Write code that adds custom components to GFW

  1. Instantiate the custom components.
  2. Create an appropriate GFW frame, e.g.
    final BasicFrame myFrame = new BasicFrame("My Frame"); //'final', because it's used later in an anonymous class
    
  3. Add custom components to various areas of the GFW frame, such as
    • Title Bar
      myFrame.addToTitleBar(myComponent);
      
    • Tab 1
      myFrame.addTopTab1(myComponent);
      
    • Tab 2
      myFrame.addTopTab2(myComponent);
      
    • New Tab
      myFrame.addTopTab(myComponent, "My Label");
      
    • Bottom ScrollPane
      myFrame.addToBottomScrollPane(myComponent);
      
  4. Display the GFW frame
    SwingUtilities.invokeLater(new Runnable() {
    	public void run() {
    		myFrame.setVisible(true);
    	}
    });
    

Add event listeners to the appropriate widgets

Below we describe the recommended way, but nothing prevents you from using any other technique.

  • Extend BasicFrameListener by overriding the default behavior and/or adding your own methods, e.g.
    public class MyFrameListener extends BasicFrameListener {
    
    	@Override
    	public void helpButtonPressed(ActionEvent e) {
    		System.out.println("Help me!!!!");
    	}
    	
    	public void myComponentActivated(EventObject e){
    		System.out.println("My component activated");
    	}
    }
    
  • Override registerAsDelegateForSwingListeners method of the BasicFrameController class, e.g.
    public class MyFrameController extends BasicFrameController {
    	
    	protected void registerAsDelegateForSwingListeners(
    			final MyFrameListener myFrameListener) {
    		super.registerAsDelegateForSwingListeners(myFrameListener); //don't forget this!
    		Component myComponent = null;
    
    		... //get your own component
    
    		myComponent.addComponentListener(new ComponentListener(){
    			public void componentActivated(EventObject e){
    				myFrameListener.myComponentActivated(e);
    			}	
    		});
    	}
    
    	public MyFrameController(BasicFrame myFrame) {
    		super(myFrame);
    	}
    
    }
    
  • Add your BasicFrameListener to your BasicFrameController
    BasicFrameListener myFrameListener = new MyFrameListener();
    BasicFrameController myFrameController = new MyFrameController(myFrame);
    myFrameController.addBasicFrameListener(myFrameListener);
    

Test the application

Optional features

  • No labels