/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * SearchControlDialog.java * * Created on 13.12.2011, 15:54:15 */ package Sirius.navigator.search.dynamic; import org.openide.util.Exceptions; import java.awt.Color; import java.awt.EventQueue; import de.cismet.cids.server.search.CidsServerSearch; import de.cismet.cids.server.search.MetaObjectNodeServerSearch; import de.cismet.tools.gui.StaticSwingTools; /** * DOCUMENT ME! * * @author jweintraut * @version $Revision$, $Date$ */ public class SearchControlDialog extends javax.swing.JDialog implements SearchControlListener { //~ Instance fields -------------------------------------------------------- private MetaObjectNodeServerSearch search; private SearchControlPanel pnlSearchCancel; private Color foregroundColor; private boolean allowUserToCloseDialog; private boolean isCloseButtonShown; // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnClose; private javax.swing.JLabel lblIcon; private javax.swing.JLabel lblMessage; private javax.swing.JPanel pnlControls; private javax.swing.JSeparator sepMessage; // End of variables declaration//GEN-END:variables //~ Constructors ----------------------------------------------------------- /** * Creates new form SearchControlDialog. * * @param parent DOCUMENT ME! * @param modal DOCUMENT ME! */ public SearchControlDialog(final java.awt.Frame parent, final boolean modal) { this(parent, modal, null); } /** * Creates new form SearchControlDialog. * * @param parent DOCUMENT ME! * @param modal DOCUMENT ME! * @param search DOCUMENT ME! */ public SearchControlDialog(final java.awt.Frame parent, final boolean modal, final MetaObjectNodeServerSearch search) { super(parent, modal); initComponents(); this.search = search; pnlSearchCancel = new SearchControlPanel(this); foregroundColor = lblMessage.getForeground(); lblMessage.setForeground(lblMessage.getBackground()); pnlControls.add(pnlSearchCancel); } //~ Methods ---------------------------------------------------------------- /** * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The * content of this method is always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; btnClose = new javax.swing.JButton(); lblIcon = new javax.swing.JLabel(); lblMessage = new javax.swing.JLabel(); sepMessage = new javax.swing.JSeparator(); pnlControls = new javax.swing.JPanel(); btnClose.setText(org.openide.util.NbBundle.getMessage( SearchControlDialog.class, "SearchControlDialog.btnClose.text")); // NOI18N btnClose.setFocusPainted(false); btnClose.setMaximumSize(new java.awt.Dimension(100, 25)); btnClose.setMinimumSize(new java.awt.Dimension(58, 25)); btnClose.setPreferredSize(new java.awt.Dimension(100, 25)); btnClose.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { btnCloseActionPerformed(evt); } }); setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); setTitle(org.openide.util.NbBundle.getMessage(SearchControlDialog.class, "SearchControlDialog.title")); // NOI18N setMinimumSize(new java.awt.Dimension(300, 200)); addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(final java.awt.event.WindowEvent evt) { formWindowClosing(evt); } }); getContentPane().setLayout(new java.awt.GridBagLayout()); lblIcon.setIcon(new javax.swing.ImageIcon( getClass().getResource("/Sirius/navigator/search/dynamic/SearchControlDialog_lblIcon.png"))); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); getContentPane().add(lblIcon, gridBagConstraints); lblMessage.setText(org.openide.util.NbBundle.getMessage( SearchControlDialog.class, "SearchControlDialog.lblMessage.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); getContentPane().add(lblMessage, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; getContentPane().add(sepMessage, gridBagConstraints); pnlControls.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.TRAILING)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; getContentPane().add(pnlControls, gridBagConstraints); pack(); } // </editor-fold>//GEN-END:initComponents /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void formWindowClosing(final java.awt.event.WindowEvent evt) { //GEN-FIRST:event_formWindowClosing if (allowUserToCloseDialog) { setVisible(false); } } //GEN-LAST:event_formWindowClosing /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void btnCloseActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnCloseActionPerformed setVisible(false); } //GEN-LAST:event_btnCloseActionPerformed /** * DOCUMENT ME! * * @param search DOCUMENT ME! */ public void setSearch(final MetaObjectNodeServerSearch search) { this.search = search; if (isCloseButtonShown) { EventQueue.invokeLater(new Runnable() { @Override public void run() { pnlControls.remove(btnClose); pnlControls.add(pnlSearchCancel); validate(); isCloseButtonShown = false; } }); } } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public CidsServerSearch getSearch() { return search; } /** * DOCUMENT ME! */ public void startSearch() { startSearch(false); } /** * DOCUMENT ME! * * @param simpleSort if true, sorts the search results alphabetically. Usually set to false, as a more specific * sorting order is wished. */ public void startSearch(final boolean simpleSort) { pnlSearchCancel.startSearch(simpleSort); } @Override public MetaObjectNodeServerSearch assembleSearch() { return search; } @Override public void searchStarted() { lblMessage.setText(org.openide.util.NbBundle.getMessage( SearchControlDialog.class, "SearchControlDialog.lblMessage.text")); lblMessage.setForeground(foregroundColor); allowUserToCloseDialog = false; } @Override public void searchDone(final int numberOfResults) { if (numberOfResults == 0) { lblMessage.setText(org.openide.util.NbBundle.getMessage( SearchControlDialog.class, "SearchControlDialog.lblMessage_emptyResult.text")); pnlControls.remove(pnlSearchCancel); pnlControls.add(btnClose); allowUserToCloseDialog = true; isCloseButtonShown = true; validate(); repaint(); } else { setVisible(false); } } @Override public void searchCanceled() { setVisible(false); } @Override public boolean suppressEmptyResultMessage() { return true; } /** * DOCUMENT ME! * * @param args DOCUMENT ME! */ public static void main(final String[] args) { //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ final String[] LAFS = new String[] { "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel", "com.sun.java.swing.plaf.motif.MotifLookAndFeel", "com.sun.java.swing.plaf.windows.WindowsLookAndFeel", "com.jgoodies.looks.windows.WindowsLookAndFeel", "com.jgoodies.looks.plastic.PlasticLookAndFeel", "com.jgoodies.looks.plastic.Plastic3DLookAndFeel", "com.jgoodies.looks.plastic.PlasticXPLookAndFeel" }; try { javax.swing.UIManager.setLookAndFeel(LAFS[4]); } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(SearchControlDialog.class.getName()) .log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(SearchControlDialog.class.getName()) .log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(SearchControlDialog.class.getName()) .log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(SearchControlDialog.class.getName()) .log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the dialog */ final SearchControlDialog dialog = new SearchControlDialog(new javax.swing.JFrame(), true, null); java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(final java.awt.event.WindowEvent e) { System.exit(0); } }); dialog.searchStarted(); StaticSwingTools.showDialog(dialog); } }); try { Thread.sleep(5000); } catch (InterruptedException ex) { Exceptions.printStackTrace(ex); } final Runnable run = new Runnable() { @Override public void run() { dialog.searchDone(1); } }; EventQueue.invokeLater(run); } }