|
What this is
Other links
The source code/* * 09/26/2001 - 20:10:28 * * XMenuHandler.java - Handles xml-menus files for Jext * Copyright (C) 2001 Romain Guy * romain.guy@jext.org * www.jext.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.jext.xml; import javax.swing.*; import java.util.Stack; import com.microstar.xml.*; import org.jext.*; import org.jext.gui.*; import org.jext.menus.*; public class XMenuHandler extends HandlerBase { // private members private JextFrame parent; private JextMenuBar mbar; private Stack stateStack; private String lastAttrValue; private JMenu lastMenu, currentMenu; private boolean enabled = true, labelSeparator = false, debug = false; private String lastAttr, lastName, lastAction, lastPicture, lastID, lastLabel; public XMenuHandler(JextFrame parent) { this.parent = parent; } public void attribute(String aname, String value, boolean isSpecified) { if (aname.equalsIgnoreCase("ACTION")) lastAction = value; else if (aname.equalsIgnoreCase("PICTURE")) lastPicture = value; else if (aname.equalsIgnoreCase("ID")) lastID = value; else if (aname.equalsIgnoreCase("ENABLED")) enabled = value.equalsIgnoreCase("YES"); else if (aname.equalsIgnoreCase("TEXT")) lastLabel = value; else if (aname.equalsIgnoreCase("LABEL")) { lastAttr = aname; lastAttrValue = value; } else if (aname.equalsIgnoreCase("DEBUG")) debug = value.equalsIgnoreCase("YES"); } public void doctypeDecl(String name, String publicId, String systemId) throws Exception { if (!"XMENUBAR".equalsIgnoreCase(name)) throw new Exception("Not a valid XMenu file !"); } public void startElement(String name) { stateStack.push(name); if (debug && !Jext.DEBUG) return; if ("LABEL".equalsIgnoreCase(lastAttr)) { if ("MENU".equalsIgnoreCase(name)) { currentMenu = GUIUtilities.loadMenu(lastAttrValue, true); lastMenu = currentMenu; } else if ("SUBMENU".equalsIgnoreCase(name)) currentMenu = GUIUtilities.loadMenu(lastAttrValue, true); else if ("RECENTS".equalsIgnoreCase(name)) { currentMenu = GUIUtilities.loadMenu(lastAttrValue, true); parent.setRecentMenu(new JextRecentMenu(parent, currentMenu)); } else if ("PLUGINS".equalsIgnoreCase(name)) { currentMenu = GUIUtilities.loadMenu(lastAttrValue, true); parent.setPluginsMenu(currentMenu); } else if ("ITEM".equalsIgnoreCase(name)) lastName = lastAttrValue; } else if ("TEMPLATES".equalsIgnoreCase(name)) currentMenu = new TemplatesMenu(); lastAttr = null; lastAttrValue = null; } public void endElement(String name) { if (name == null) return; if (debug && !Jext.DEBUG) { debug = false; stateStack.pop(); return; } String lastStartTag = (String) stateStack.peek(); if (name.equalsIgnoreCase(lastStartTag)) { if ("ITEM".equalsIgnoreCase(lastStartTag)) { JMenuItem mi = GUIUtilities.loadMenuItem(lastName, lastAction, lastPicture, enabled); if (mi != null) currentMenu.add(mi); enabled = true; lastPicture = lastName = lastAction = null; } else if ("SEPARATOR".equalsIgnoreCase(lastStartTag)) { if (labelSeparator && lastLabel != null && lastLabel.length() > 0) { if (Jext.getFlatMenus()) currentMenu.getPopupMenu().add(new JextLabeledMenuSeparator(lastLabel)); else currentMenu.getPopupMenu().addSeparator(); } else { if (Jext.getFlatMenus()) currentMenu.getPopupMenu().add(new JextMenuSeparator()); else currentMenu.getPopupMenu().addSeparator(); } lastLabel = null; } else if ("MENU".equalsIgnoreCase(lastStartTag) || "PLUGINS".equalsIgnoreCase(lastStartTag)) { if (currentMenu != null) { if (lastID == null) mbar.add(currentMenu); else { mbar.addIdentifiedMenu(currentMenu, lastID); lastID = null; } currentMenu = lastMenu = null; } } else if ("SUBMENU".equalsIgnoreCase(lastStartTag) || "RECENTS".equalsIgnoreCase(lastStartTag) || "TEMPLATES".equalsIgnoreCase(lastStartTag)) { if (currentMenu != null) { lastMenu.add(currentMenu); currentMenu = lastMenu; } } Object o = stateStack.pop(); } else System.err.println("XMenu: Unclosed tag: " + stateStack.peek()); debug = false; } public void startDocument() { try { labelSeparator = Jext.getBooleanProperty("labeled.separator"); stateStack = new Stack(); stateStack.push(null); mbar = new JextMenuBar(); } catch (Exception e) { } } public void endDocument() { parent.setJMenuBar(mbar); mbar = null; } } // End of XMenuHandler.java |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.