/** * Copyright (c) 2009 - 2010 AppWork UG(haftungsbeschränkt) <e-mail@appwork.org> * * This file is part of org.appwork.utils.swing.dialog * * This software is licensed under the Artistic License 2.0, * see the LICENSE file or http://www.opensource.org/licenses/artistic-license-2.0.php * for details */ package org.appwork.utils.swing.dialog; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.regex.Pattern; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JTextPane; import javax.swing.text.JTextComponent; import net.miginfocom.swing.MigLayout; import org.appwork.utils.swing.JTextFieldLimited; /** * @author daniel * */ public class InputDialogLimited extends AbstractDialog<String> implements KeyListener, MouseListener { private static final long serialVersionUID = 9206575398715006581L; private String defaultMessage; private String message; private JTextPane messageArea; private JTextComponent input; private int limit = 0; private Pattern validCharsRegex = null; public InputDialogLimited(int flag, String title, String message, String defaultMessage, ImageIcon icon, String okOption, String cancelOption, int limit, Pattern validCharsRegex) { super(flag, title, icon, okOption, cancelOption); this.defaultMessage = defaultMessage; this.message = message; this.limit = limit; this.validCharsRegex = validCharsRegex; } @Override public JComponent layoutDialogContent() { JPanel contentpane = new JPanel(new MigLayout("ins 0,wrap 1", "[fill,grow]")); messageArea = new JTextPane(); messageArea.setBorder(null); messageArea.setBackground(null); messageArea.setOpaque(false); messageArea.setText(this.message); messageArea.setEditable(false); messageArea.putClientProperty("Synthetica.opaque", Boolean.FALSE); contentpane.add(messageArea); input = new JTextFieldLimited(limit, validCharsRegex); input.setBorder(BorderFactory.createEtchedBorder()); input.setText(this.defaultMessage); input.addKeyListener(this); input.addMouseListener(this); contentpane.add(input, "pushy,growy,w 450"); return contentpane; } @Override protected void packed() { input.selectAll(); requestFocus(); input.requestFocusInWindow(); } public String getReturnID() { if ((this.getReturnmask() & (Dialog.RETURN_OK | Dialog.RETURN_TIMEOUT)) == 0) { return null; } if (input == null || input.getText() == null) return null; return input.getText(); } @Override protected String createReturnValue() { return getReturnID(); } public void keyPressed(KeyEvent e) { this.cancel(); } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { } public void mouseClicked(MouseEvent e) { this.cancel(); } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } }