|
What this is
Other links
The source code/* * 22:21:17 17/12/99 * * XPopupHandler.java - Handles xml-menus files for Jext * Copyright (C) 1999 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.*; public class XPopupHandler extends HandlerBase { // private members private JPopupMenu popup; private Stack stateStack; private JMenu currentMenu; private String lastAttrValue; private boolean enabled = true; private String lastAttr, lastName, lastAction, lastPicture; public XPopupHandler() { } 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("ENABLED")) enabled = value.equalsIgnoreCase("YES"); else if (aname.equalsIgnoreCase("LABEL")) { lastAttr = aname; lastAttrValue = value; } } public void doctypeDecl(String name, String publicId, String systemId) throws Exception { if (!"XPOPUP".equalsIgnoreCase(name)) throw new Exception("Not a valid XPopup file !"); } public void startElement(String name) { stateStack.push(name); if ("LABEL".equalsIgnoreCase(lastAttr)) { if ("SUBMENU".equalsIgnoreCase(name)) currentMenu = GUIUtilities.loadMenu(lastAttrValue, true); else if (name.toUpperCase().equals("ITEM")) lastName = lastAttrValue; } lastAttr = null; lastAttrValue = null; } public void endElement(String name) { if (name == null) return; String lastStartTag = (String) stateStack.peek(); if (name.equalsIgnoreCase(lastStartTag)) { if ("ITEM".equalsIgnoreCase(lastStartTag)) { JMenuItem mi = GUIUtilities.loadMenuItem(lastName, lastAction, lastPicture, enabled, false); if (mi != null) { if (currentMenu != null) currentMenu.add(mi); else popup.add(mi); } enabled = true; lastPicture = lastName = lastAction = null; } else if ("SEPARATOR".equalsIgnoreCase(lastStartTag)) { if (currentMenu != null) { if (Jext.getFlatMenus()) currentMenu.getPopupMenu().add(new JextMenuSeparator()); else currentMenu.getPopupMenu().addSeparator(); } else { if (Jext.getFlatMenus()) popup.add(new JextMenuSeparator()); else popup.addSeparator(); } } else if ("SUBMENU".equalsIgnoreCase(lastStartTag)) { if (currentMenu != null) { popup.add(currentMenu); currentMenu = null; } } Object o = stateStack.pop(); } else System.err.println("XPopup: Unclosed tag: " + stateStack.peek()); } public void startDocument() { try { stateStack = new Stack(); stateStack.push(null); popup = new JPopupMenu(); } catch (Exception e) { } } public void endDocument() { } public JPopupMenu getPopupMenu() { return popup; } } // End of XPopupHandler.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.