001    /*
002     *  Licensed to the Apache Software Foundation (ASF) under one
003     *  or more contributor license agreements.  See the NOTICE file
004     *  distributed with this work for additional information
005     *  regarding copyright ownership.  The ASF licenses this file
006     *  to you under the Apache License, Version 2.0 (the
007     *  "License"); you may not use this file except in compliance
008     *  with the License.  You may obtain a copy of the License at
009     *  
010     *    http://www.apache.org/licenses/LICENSE-2.0
011     *  
012     *  Unless required by applicable law or agreed to in writing,
013     *  software distributed under the License is distributed on an
014     *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015     *  KIND, either express or implied.  See the License for the
016     *  specific language governing permissions and limitations
017     *  under the License. 
018     *  
019     */
020    package org.apache.directory.server.core.partition.impl.btree.gui;
021    
022    
023    import java.awt.Frame;
024    import java.awt.event.ActionEvent;
025    import java.awt.event.ActionListener;
026    import java.awt.event.WindowEvent;
027    
028    import javax.swing.JButton;
029    import javax.swing.JDialog;
030    import javax.swing.JPanel;
031    import javax.swing.JScrollPane;
032    import javax.swing.JTable;
033    import javax.swing.JTextArea;
034    import javax.swing.JTree;
035    import javax.swing.ListSelectionModel;
036    import javax.swing.event.ListSelectionEvent;
037    import javax.swing.event.ListSelectionListener;
038    import javax.swing.table.TableModel;
039    import javax.swing.tree.TreeModel;
040    
041    
042    /**
043     * Dialog showing the search results.
044     *
045     * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
046     * @version $Rev: 517448 $
047     */
048    public class SearchResultDialog extends JDialog implements ListSelectionListener
049    {
050        private static final long serialVersionUID = 3256999964914757684L;
051    
052        private JPanel jPanel1 = new JPanel();
053        private JTree jTree1 = new JTree();
054        private JPanel jPanel2 = new JPanel();
055        private JPanel jPanel3 = new JPanel();
056        private JTextArea jTextArea1 = new JTextArea();
057        private JScrollPane jScrollPane1 = new JScrollPane();
058        private JButton jButton1 = new JButton();
059        private JPanel jPanel4 = new JPanel();
060        private JScrollPane jScrollPane2 = new JScrollPane();
061        private JTable m_resultsTbl = new JTable();
062    
063    
064        /** Creates new form JDialog */
065        public SearchResultDialog(Frame parent, boolean modal)
066        {
067            super( parent, modal );
068            initGUI();
069        }
070    
071    
072        /**
073         * This method is called from within the constructor to initialize the form.
074         */
075        private void initGUI()
076        {
077            addWindowListener( new java.awt.event.WindowAdapter()
078            {
079                public void windowClosing( java.awt.event.WindowEvent evt )
080                {
081                    closeDialog( evt );
082                }
083            } );
084            pack();
085            getContentPane().setLayout( new java.awt.GridBagLayout() );
086            getContentPane().add(
087                jPanel1,
088                new java.awt.GridBagConstraints( 0, 0, 1, 1, 1.0, 0.1, java.awt.GridBagConstraints.NORTH,
089                    java.awt.GridBagConstraints.BOTH, new java.awt.Insets( 10, 5, 5, 5 ), 0, 0 ) );
090            getContentPane().add(
091                jPanel2,
092                new java.awt.GridBagConstraints( 0, 1, 1, 1, 1.0, 0.4, java.awt.GridBagConstraints.CENTER,
093                    java.awt.GridBagConstraints.BOTH, new java.awt.Insets( 5, 5, 5, 5 ), 0, 0 ) );
094            getContentPane().add(
095                jPanel3,
096                new java.awt.GridBagConstraints( 0, 3, 1, 1, 1.0, 0.1, java.awt.GridBagConstraints.SOUTH,
097                    java.awt.GridBagConstraints.BOTH, new java.awt.Insets( 0, 0, 0, 0 ), 0, 0 ) );
098            getContentPane().add(
099                jPanel4,
100                new java.awt.GridBagConstraints( 0, 2, 1, 1, 1.0, 0.4, java.awt.GridBagConstraints.CENTER,
101                    java.awt.GridBagConstraints.BOTH, new java.awt.Insets( 5, 5, 5, 5 ), 0, 0 ) );
102            jPanel1.setLayout( new java.awt.BorderLayout( 10, 10 ) );
103            jPanel1.setBorder( javax.swing.BorderFactory.createTitledBorder( javax.swing.BorderFactory.createLineBorder(
104                new java.awt.Color( 153, 153, 153 ), 1 ), "Specifications", javax.swing.border.TitledBorder.LEADING,
105                javax.swing.border.TitledBorder.TOP, new java.awt.Font( "SansSerif", 0, 14 ), new java.awt.Color( 60, 60,
106                    60 ) ) );
107            jPanel1.add( jTextArea1, java.awt.BorderLayout.CENTER );
108            jScrollPane1.getViewport().add( jTree1 );
109            jTree1.setBounds( new java.awt.Rectangle( 238, 142, 82, 80 ) );
110            jTextArea1.setText( "" );
111            jTextArea1.setEditable( false );
112            setBounds( new java.awt.Rectangle( 0, 0, 485, 434 ) );
113            setTitle( "Search Results" );
114            jPanel2.setLayout( new java.awt.BorderLayout() );
115            jPanel2.setBorder( javax.swing.BorderFactory.createTitledBorder( javax.swing.BorderFactory.createLineBorder(
116                new java.awt.Color( 153, 153, 153 ), 1 ), "Filter Expression Tree",
117                javax.swing.border.TitledBorder.LEADING, javax.swing.border.TitledBorder.TOP, new java.awt.Font(
118                    "SansSerif", 0, 14 ), new java.awt.Color( 60, 60, 60 ) ) );
119            jPanel2.add( jScrollPane1, java.awt.BorderLayout.CENTER );
120            jButton1.setText( "Done" );
121            jButton1.setActionCommand( "Done" );
122            jButton1.addActionListener( new ActionListener()
123            {
124                public void actionPerformed( ActionEvent event )
125                {
126                    SearchResultDialog.this.setVisible( false );
127                    SearchResultDialog.this.dispose();
128                }
129            } );
130            jButton1.setHorizontalAlignment( javax.swing.SwingConstants.CENTER );
131            jButton1.setAlignmentX( 0.5f );
132            jButton1.setHorizontalTextPosition( javax.swing.SwingConstants.CENTER );
133            jPanel3.setPreferredSize( new java.awt.Dimension( 79, 41 ) );
134            jPanel3.setMinimumSize( new java.awt.Dimension( 79, 41 ) );
135            jPanel3.setSize( new java.awt.Dimension( 471, 35 ) );
136            jPanel3.setToolTipText( "" );
137            jPanel3.add( jButton1 );
138            jPanel4.setBorder( javax.swing.BorderFactory.createTitledBorder( javax.swing.BorderFactory.createLineBorder(
139                new java.awt.Color( 153, 153, 153 ), 1 ), "Search Results", javax.swing.border.TitledBorder.LEADING,
140                javax.swing.border.TitledBorder.TOP, new java.awt.Font( "SansSerif", 0, 14 ), new java.awt.Color( 60, 60,
141                    60 ) ) );
142            jPanel4.setLayout( new java.awt.BorderLayout() );
143            jPanel4.add( jScrollPane2, java.awt.BorderLayout.CENTER );
144            jScrollPane2.getViewport().add( m_resultsTbl );
145            m_resultsTbl.setSize( new java.awt.Dimension( 450, 10 ) );
146            m_resultsTbl.getSelectionModel().addListSelectionListener( this );
147        }
148    
149    
150        public void valueChanged( ListSelectionEvent an_event )
151        {
152            ListSelectionModel selectionModel = ( ListSelectionModel ) an_event.getSource();
153            int minIndex = selectionModel.getMinSelectionIndex();
154            int maxIndex = selectionModel.getMaxSelectionIndex();
155    
156            for ( int ii = minIndex; ii <= maxIndex; ii++ )
157            {
158                if ( selectionModel.isSelectedIndex( ii ) && !an_event.getValueIsAdjusting() )
159                {
160                    Long id = ( Long ) m_resultsTbl.getModel().getValueAt( ii, 0 );
161                    ( ( PartitionFrame ) getParent() ).selectTreeNode( id );
162                }
163            }
164        }
165    
166    
167        /** Closes the dialog */
168        private void closeDialog( WindowEvent evt )
169        {
170            evt.getWindow();
171            setVisible( false );
172            dispose();
173        }
174    
175    
176        public void setTreeModel( TreeModel model )
177        {
178            this.jTree1.setModel( model );
179        }
180    
181    
182        public void setFilter( String filter )
183        {
184            this.jTextArea1.setText( filter );
185        }
186    
187    
188        public void setTableModel( TableModel model )
189        {
190            m_resultsTbl.setModel( model );
191        }
192    }