FileDocCategorySizeDatePackage
ToolBarParser.javaAPI DocExample1895Sat Jan 24 10:53:36 GMT 2004je3.gui

ToolBarParser.java

/*
 * Copyright (c) 2000 David Flanagan.  All rights reserved.
 * This code is from the book Java Examples in a Nutshell, 2nd Edition.
 * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
 * You may study, use, and modify it for any non-commercial purpose.
 * You may distribute it non-commercially as long as you retain this notice.
 * For a commercial use license, or to purchase the book (recommended),
 * visit http://www.davidflanagan.com/javaexamples2.
 */
package je3.gui;
import javax.swing.*;
import java.util.*;

/**
 * Parse a JToolBar from a ResourceBundle.  A toolbar is represented
 * simply as a list of action property names.  E.g.:
 *     toolbar: action.save, action.print, action.quit
 **/
public class ToolBarParser implements ResourceParser {
    static final Class[] supportedTypes = new Class[] { JToolBar.class };
    public Class[] getResourceTypes() { return supportedTypes; }

    public Object parse(GUIResourceBundle bundle, String key, Class type)
	throws java.util.MissingResourceException
    {
	// Get the value of the key as a list of strings
	List toolList = bundle.getStringList(key);

	// Create a ToolBar
	JToolBar toolbar = new JToolBar();

	// Create a JTool for each of the tool property names, 
	// and add it to the bar
	int numtools = toolList.size();
	for(int i = 0; i < numtools; i++) {
	    // Get the action name
	    String tool = (String)toolList.get(i);
	    // Get the Action object associated with that name
	    Action action = (Action) bundle.getResource(tool, Action.class);
	    // Add the action to the toolbar, and get the JButton it creates
	    JButton button = toolbar.add(action);
	    // If the action contains a description, use it as the tooltip
	    String tooltip = (String)action.getValue(Action.SHORT_DESCRIPTION);
	    if (tooltip != null) button.setToolTipText(tooltip);
	}
	
	return toolbar;
    }
}