|
What this is
Other links
The source code/* * EnhancedDialog.java - Handles OK/Cancel for you * Copyright (C) 1998, 1999, 2001 Slava Pestov * * 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.gjt.sp.jedit.gui; import javax.swing.*; import java.awt.event.*; import java.awt.*; /** * A dialog box that handles window closing, the ENTER key and the ESCAPE * key for you. All you have to do is implement ok() (called when * Enter is pressed) and cancel() (called when Escape is pressed, or window * is closed). * @author Slava Pestov * @version $Id: EnhancedDialog.java,v 1.2 2002/10/07 21:13:19 spestov Exp $ */ public abstract class EnhancedDialog extends JDialog { public EnhancedDialog(Frame parent, String title, boolean modal) { super(parent,title,modal); _init(); } public EnhancedDialog(Dialog parent, String title, boolean modal) { super(parent,title,modal); _init(); } public abstract void ok(); public abstract void cancel(); //{{{ Private members private void _init() { ((Container)getLayeredPane()).addContainerListener( new ContainerHandler()); getContentPane().addContainerListener(new ContainerHandler()); keyHandler = new KeyHandler(); addKeyListener(keyHandler); addWindowListener(new WindowHandler()); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); } //}}} // protected members protected KeyHandler keyHandler; // Recursively adds our key listener to sub-components class ContainerHandler extends ContainerAdapter { public void componentAdded(ContainerEvent evt) { componentAdded(evt.getChild()); } public void componentRemoved(ContainerEvent evt) { componentRemoved(evt.getChild()); } private void componentAdded(Component comp) { comp.addKeyListener(keyHandler); if(comp instanceof Container) { Container cont = (Container)comp; cont.addContainerListener(this); Component[] comps = cont.getComponents(); for(int i = 0; i < comps.length; i++) { componentAdded(comps[i]); } } } private void componentRemoved(Component comp) { comp.removeKeyListener(keyHandler); if(comp instanceof Container) { Container cont = (Container)comp; cont.removeContainerListener(this); Component[] comps = cont.getComponents(); for(int i = 0; i < comps.length; i++) { componentRemoved(comps[i]); } } } } class KeyHandler extends KeyAdapter { public void keyPressed(KeyEvent evt) { if(evt.isConsumed()) return; if(evt.getKeyCode() == KeyEvent.VK_ENTER) { // crusty workaround Component comp = getFocusOwner(); while(comp != null) { if(comp instanceof JComboBox) { JComboBox combo = (JComboBox)comp; if(combo.isEditable()) { Object selected = combo.getEditor().getItem(); if(selected != null) combo.setSelectedItem(selected); } break; } comp = comp.getParent(); } ok(); evt.consume(); } else if(evt.getKeyCode() == KeyEvent.VK_ESCAPE) { cancel(); evt.consume(); } } } class WindowHandler extends WindowAdapter { public void windowClosing(WindowEvent evt) { cancel(); } } } |
... 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.