/** * 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 javax.swing.BorderFactory; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.JTextPane; import javax.swing.text.JTextComponent; import net.miginfocom.swing.MigLayout; import org.appwork.resources.AWUTheme; import org.appwork.storage.JSonStorage; import org.appwork.utils.locale.APPWORKUTILS; public class SearchDialog extends AbstractDialog<String> implements KeyListener, MouseListener { private static final long serialVersionUID = 9206575398715006581L; private final String message; private JTextPane messageArea; private JTextComponent input; private final JCheckBox caseSensitive; private final JCheckBox regularExpression; public SearchDialog(final int flag, final String title, final String message) { super(flag | Dialog.BUTTONS_HIDE_CANCEL, title, AWUTheme.I().getIcon("find", 32), APPWORKUTILS.T.SEARCHDIALOG_BUTTON_FIND(), null); this.caseSensitive = new JCheckBox(APPWORKUTILS.T.SEARCHDIALOG_CHECKBOX_CASESENSITIVE()); this.regularExpression = new JCheckBox(APPWORKUTILS.T.SEARCHDIALOG_CHECKBOX_REGULAREXPRESSION()); this.caseSensitive.setSelected(JSonStorage.getStorage("SearchDialog").get("caseSensitive", false)); this.regularExpression.setSelected(JSonStorage.getStorage("SearchDialog").get("regularExpression", false)); this.message = message; } /* * (non-Javadoc) * * @see org.appwork.utils.swing.dialog.AbstractDialog#getRetValue() */ @Override protected String createReturnValue() { return this.getReturnID(); } public String getReturnID() { if ((this.getReturnmask() & (Dialog.RETURN_OK | Dialog.RETURN_TIMEOUT)) == 0) { return null; } if (this.input.getText() == null || this.input.getText().equals("")) { return null; } try { JSonStorage.getStorage("SearchDialog").put("caseSensitive", this.caseSensitive.isSelected()); JSonStorage.getStorage("SearchDialog").put("regularExpression", this.regularExpression.isSelected()); } catch (final Exception e) { org.appwork.utils.logging.Log.exception(e); } return this.input.getText(); } public boolean isCaseSensitive() { return this.caseSensitive.isSelected(); } public boolean isRegex() { return this.regularExpression.isSelected(); } public void keyPressed(final KeyEvent e) { this.cancel(); } public void keyReleased(final KeyEvent e) { } public void keyTyped(final KeyEvent e) { } @Override public JComponent layoutDialogContent() { final JPanel contentpane = new JPanel(new MigLayout("ins 0,wrap 1", "[fill,grow]")); this.messageArea = new JTextPane(); this.messageArea.setBorder(null); this.messageArea.setBackground(null); this.messageArea.setOpaque(false); this.messageArea.setText(this.message); this.messageArea.setEditable(false); this.messageArea.putClientProperty("Synthetica.opaque", Boolean.FALSE); contentpane.add(this.messageArea); this.input = new JTextField(); this.input.setBorder(BorderFactory.createEtchedBorder()); this.input.addKeyListener(this); this.input.addMouseListener(this); contentpane.add(this.input, "pushy,growy"); contentpane.add(this.regularExpression, "split 2, alignx right, pushx"); contentpane.add(this.caseSensitive, " alignx right"); return contentpane; } public void mouseClicked(final MouseEvent e) { this.cancel(); } public void mouseEntered(final MouseEvent e) { } public void mouseExited(final MouseEvent e) { } public void mousePressed(final MouseEvent e) { } public void mouseReleased(final MouseEvent e) { } @Override protected void packed() { this.input.selectAll(); this.requestFocus(); this.input.requestFocusInWindow(); } }