1 17 package org.apache.ldap.server.db.gui; 18 19 20 import org.apache.ldap.common.message.LockableAttributesImpl; 21 22 import javax.naming.directory.Attributes ; 23 import javax.swing.*; 24 import java.awt.*; 25 import java.awt.event.ActionEvent ; 26 import java.awt.event.ActionListener ; 27 import java.awt.event.MouseAdapter ; 28 import java.awt.event.MouseEvent ; 29 30 31 37 public class AddEntryDialog extends JDialog implements ActionListener 38 { 39 private static final long serialVersionUID = 3544671793504663604L; 40 41 private JPanel m_namePnl = new JPanel(); 42 private JPanel m_attrPnl = new JPanel(); 43 private JPanel m_buttonPnl = new JPanel(); 44 private JPanel m_rdnPnl = new JPanel(); 45 private JPanel m_dnPnl = new JPanel(); 46 private JLabel m_rdnLbl = new JLabel(); 47 private JComboBox m_rdnChoice = new JComboBox(); 48 private JTextField m_dnText = new JTextField(); 49 private JScrollPane m_attrScrollPnl = new JScrollPane(); 50 private JTable m_attrTbl = new JTable(); 51 private JButton m_doneBut = new JButton(); 52 private JButton m_cancelBut = new JButton(); 53 private JPopupMenu m_popup; 54 55 private Attributes m_childEntry = new LockableAttributesImpl(); 56 57 58 64 public AddEntryDialog( Frame parent, boolean modal ) 65 { 66 super( parent, modal ); 67 m_childEntry.put( "objectClass", "top" ); 68 initGUI(); 69 } 70 71 72 75 private void initGUI() 76 { 77 addWindowListener( new java.awt.event.WindowAdapter ( ) 78 { 79 public void windowClosing( java.awt.event.WindowEvent evt ) 80 { 81 closeDialog( ); 82 } 83 } ); 84 pack( ); 85 setBounds( new java.awt.Rectangle ( 0, 0, 447, 364 ) ); 86 setTitle( "Add New Entry" ); 87 getContentPane( ).setLayout( new java.awt.GridBagLayout ( ) ); 88 getContentPane( ).add( 89 m_namePnl, 90 new java.awt.GridBagConstraints ( 91 0, 92 0, 93 1, 94 1, 95 1.0, 96 0.0, 97 java.awt.GridBagConstraints.NORTH, 98 java.awt.GridBagConstraints.HORIZONTAL, 99 new java.awt.Insets ( 5, 5, 5, 5 ), 100 0, 101 0 ) ); 102 getContentPane( ).add( 103 m_attrPnl, 104 new java.awt.GridBagConstraints ( 105 0, 106 1, 107 1, 108 1, 109 1.0, 110 1.0, 111 java.awt.GridBagConstraints.CENTER, 112 java.awt.GridBagConstraints.BOTH, 113 new java.awt.Insets ( 5, 5, 5, 5 ), 114 0, 115 0 ) ); 116 getContentPane( ).add( 117 m_buttonPnl, 118 new java.awt.GridBagConstraints ( 119 0, 120 2, 121 1, 122 1, 123 1.0, 124 0.05, 125 java.awt.GridBagConstraints.CENTER, 126 java.awt.GridBagConstraints.HORIZONTAL, 127 new java.awt.Insets ( 0, 0, 0, 20 ), 128 0, 129 0 ) ); 130 m_namePnl.setBorder( 131 javax.swing.BorderFactory.createTitledBorder( 132 javax.swing.BorderFactory.createLineBorder( 133 new java.awt.Color ( 153, 153, 153 ), 134 1 ), 135 "Naming", 136 javax.swing.border.TitledBorder.LEADING, 137 javax.swing.border.TitledBorder.TOP, 138 new java.awt.Font ( "SansSerif", 0, 14 ), 139 new java.awt.Color ( 60, 60, 60 ) ) ); 140 m_namePnl.setLayout( 141 new javax.swing.BoxLayout ( m_namePnl, javax.swing.BoxLayout.Y_AXIS ) ); 142 m_namePnl.add( m_rdnPnl ); 143 m_namePnl.add( m_dnPnl ); 144 m_rdnLbl.setText( "Rdn:" ); 145 m_rdnPnl.setLayout( new java.awt.GridBagLayout () ); 146 m_rdnPnl.add( 147 m_rdnChoice, 148 new java.awt.GridBagConstraints ( 149 1, 150 0, 151 1, 152 1, 153 1.0, 154 0.0, 155 java.awt.GridBagConstraints.WEST, 156 java.awt.GridBagConstraints.NONE, 157 new java.awt.Insets ( 0, 10, 0, 0 ), 158 0, 159 0 ) ); 160 m_rdnPnl.add( 161 m_rdnLbl, 162 new java.awt.GridBagConstraints ( 163 0, 164 0, 165 1, 166 1, 167 0.0, 168 0.0, 169 java.awt.GridBagConstraints.WEST, 170 java.awt.GridBagConstraints.NONE, 171 new java.awt.Insets ( 0, 10, 0, 0 ), 172 0, 173 0 ) ); 174 m_dnPnl.setLayout( new java.awt.GridBagLayout ( ) ); 175 m_dnPnl.add( 176 m_dnText, 177 new java.awt.GridBagConstraints ( 178 1, 179 0, 180 1, 181 1, 182 1.0, 183 0.0, 184 java.awt.GridBagConstraints.WEST, 185 java.awt.GridBagConstraints.HORIZONTAL, 186 new java.awt.Insets ( 0, 5, 0, 0 ), 187 0, 188 0 ) ); 189 m_dnText.setText( "unknown" ); 190 m_dnText.setEditable( false ); 191 m_dnText.setBorder( 192 javax.swing.BorderFactory.createTitledBorder( 193 javax.swing.BorderFactory.createLineBorder( 194 new java.awt.Color ( 153, 153, 153 ), 195 1 ), 196 "Dn", 197 javax.swing.border.TitledBorder.LEADING, 198 javax.swing.border.TitledBorder.TOP, 199 new java.awt.Font ( "SansSerif", 0, 14 ), 200 new java.awt.Color ( 60, 60, 60 ) ) ); 201 m_rdnChoice.setEditable( true ); 202 m_rdnChoice.setMaximumRowCount( 6 ); 203 204 m_rdnChoice.setSize( new java.awt.Dimension ( 130, 24 ) ); 205 m_attrPnl.setLayout( new java.awt.BorderLayout ( ) ); 206 m_attrPnl.add( m_attrScrollPnl, java.awt.BorderLayout.CENTER ); 207 m_attrScrollPnl.getViewport( ).add( m_attrTbl ); 208 m_attrTbl.setBounds( new java.awt.Rectangle ( 78, 60, 32, 32 ) ); 209 m_attrTbl.setCellSelectionEnabled( true ); 210 211 m_doneBut.setText( "Done" ); 212 m_buttonPnl.setLayout( 213 new java.awt.FlowLayout ( java.awt.FlowLayout.RIGHT, 10, 5 ) ); 214 m_buttonPnl.add( m_doneBut ); 215 m_buttonPnl.add( m_cancelBut ); 216 m_cancelBut.setText( "Cancel" ); 217 m_cancelBut.addActionListener( new ActionListener () 218 { 219 public void actionPerformed( ActionEvent a_evt ) 220 { 221 closeDialog(); 222 } 223 } ); 224 m_attrScrollPnl.setBorder( 225 javax.swing.BorderFactory.createTitledBorder( 226 javax.swing.BorderFactory.createLineBorder( 227 new java.awt.Color ( 153, 153, 153 ), 228 1 ), 229 "Attributes", 230 javax.swing.border.TitledBorder.LEADING, 231 javax.swing.border.TitledBorder.TOP, 232 new java.awt.Font ( "SansSerif", 0, 14 ), 233 new java.awt.Color ( 60, 60, 60 ) ) ); 234 235 m_attrTbl.setModel( new AttributesTableModel( m_childEntry, 236 null, null, true ) ); 237 238 242 m_popup = new JPopupMenu(); 243 JMenuItem l_menuItem = new JMenuItem( "Add" ); 244 l_menuItem.setActionCommand( "Add" ); 245 l_menuItem.addActionListener( this ); 246 m_popup.add( l_menuItem ); 247 l_menuItem = new JMenuItem( "Delete" ); 248 l_menuItem.setActionCommand( "Delete" ); 249 l_menuItem.addActionListener( this ); 250 m_popup.add( l_menuItem ); 251 252 m_attrTbl.addMouseListener( new PopupListener() ); 254 255 setUpEditor( m_attrTbl ); 256 } 257 258 259 private void setUpEditor( JTable l_table ) 260 { 261 final JTextField l_textField = new JTextField(); 263 264 265 DefaultCellEditor l_textEditor = 266 new DefaultCellEditor( l_textField ) 267 { 268 private static final long serialVersionUID = 3256727286014554675L; 269 270 public Object getCellEditorValue() 273 { 274 System.out.println( "Editor returning '" + l_textField.getText() 275 + "'" ); 276 return l_textField.getText(); 277 } 278 }; 279 280 l_table.setDefaultEditor( String .class, l_textEditor ); 281 } 282 283 284 285 class PopupListener extends MouseAdapter 286 { 287 public void mousePressed( MouseEvent e ) 288 { 289 maybeShowPopup( e ); 290 } 291 292 293 public void mouseReleased( MouseEvent e ) 294 { 295 maybeShowPopup( e ); 296 } 297 298 299 private void maybeShowPopup( MouseEvent e ) 300 { 301 if ( e.isPopupTrigger() ) 302 { 303 m_popup.show( e.getComponent(), e.getX(), e.getY() ); 304 } 305 } 306 } 307 308 309 public void actionPerformed( ActionEvent a_event ) 310 { 311 String l_cmd = a_event.getActionCommand(); 312 AttributesTableModel l_model = ( AttributesTableModel ) 313 m_attrTbl.getModel(); 314 int l_row = m_attrTbl.getSelectedRow(); 315 System.out.println( l_cmd ); 316 317 if ( l_row >= l_model.getRowCount() || l_row < 0 ) 318 { 319 JOptionPane.showMessageDialog( this, 320 "Row needs to be selected to apply operation" ); 321 } 322 323 if ( l_cmd.equals( "Add" ) ) 324 { 325 l_model.insert( l_row, "xxxx", "xxxx" ); 326 } 327 else if ( l_cmd.equals( "Delete" ) ) 328 { 329 l_model.delete( l_row ); 330 } 331 else 332 { 333 JOptionPane.showMessageDialog( this, 334 "Unrecognized action - abandoning action processing." ); 335 } 336 } 337 338 339 340 private void closeDialog() 341 { 342 setVisible( false ); 343 dispose(); 344 } 345 346 347 public void setParentDn( String dn ) 348 { 349 m_dnText.setText( dn ); 350 } 351 352 353 public Attributes getChildEntry() 354 { 355 return m_childEntry; 356 } 357 358 359 public String getChildDn() 360 { 361 return m_dnText.getText(); 362 } 363 } 364 | Popular Tags |