Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2011 JBoss Inc
   * 
   * Licensed under the Apache License, Version 2.0 (the "License"); you may not
   * use this file except in compliance with the License. You may obtain a copy of
   * the License at
   * 
   * http://www.apache.org/licenses/LICENSE-2.0
   * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  * License for the specific language governing permissions and limitations under
  * the License.
  */
 package org.drools.workbench.screens.guided.dtable.client.widget.table.cells;
 
A Popup drop-down Editor ;-)
 
 public class PopupValueListDropDownEditCell extends
                                             AbstractPopupEditCell<StringString> {
 
     private final ListBox listBox;
     private String[][] items;
 
     public PopupValueListDropDownEditCellfinal String[] items,
                                            final boolean isReadOnly ) {
         superisReadOnly );
 
         this. = new ListBox();
         setItemsitems );
 
         // Tabbing out of the ListBox commits changes
         .addKeyDownHandlernew KeyDownHandler() {
 
             public void onKeyDownKeyDownEvent event ) {
                 boolean keyTab = event.getNativeKeyCode() == .;
                 boolean keyEnter = event.getNativeKeyCode() == .;
                 if ( keyEnter
                         || keyTab ) {
                     commit();
                 }
             }
 
         } );
 
         .add );
     }
 
     @Override
     public void renderContext context,
                         String value,
                         SafeHtmlBuilder sb ) {
 
         //Render value
         if ( value != null ) {
             String label = getLabelvalue );
             sb.append.renderlabel ) );
         }
     }
 
     // Set content of drop-down
     private void setItemsString[] items ) {
         this..clear();
         this. = new Stringitems.length ][ 2 ];
         for ( int i = 0; i < items.lengthi++ ) {
             String item = itemsi ].trim();
             if ( item.indexOf'=' ) > 0 ) {
                 String[] splut = ConstraintValueEditorHelper.splitValueitem );
                 this.i ][ 0 ] = splut[ 0 ];
                 this.i ][ 1 ] = splut[ 1 ];
                 this..addItemsplut[ 1 ],
                                       splut[ 0 ] );
             } else {
                 this.i ][ 0 ] = item;
                 this.i ][ 1 ] = item;
                 this..addItemitem,
                                       item );
             }
         }
     }
 
     // Lookup the display text based on the value
     private String getLabelString value ) {
         for ( int i = 0; i < this..lengthi++ ) {
             if ( this.i ][ 0 ].equalsvalue ) ) {
                return i ][ 1 ];
            }
        }
        return value;
    }
    // Commit the change
    @Override
    protected void commit() {
        // Update value
        String value = null;
        int selectedIndex = .getSelectedIndex();
        if ( selectedIndex >= 0 ) {
            value = .getValueselectedIndex );
        }
        setValue,
                  ,
                  value );
        if (  != null ) {
            .updatevalue );
        }
        .hide();
    }
    // Start editing the cell
    @Override
    protected void startEditingfinal Context context,
                                 final Element parent,
                                 final String value ) {
        // Select the appropriate item
        boolean emptyValue = ( value == null );
        if ( emptyValue ) {
            .setSelectedIndex( 0 );
        } else {
            for ( int i = 0; i < .getItemCount(); i++ ) {
                if ( .getValuei ).equalsvalue ) ) {
                    .setSelectedIndexi );
                    break;
                }
            }
        }
            public void setPositionint offsetWidth,
                                     int offsetHeight ) {
                .setPopupPositionparent.getAbsoluteLeft()
                                                + ,
                                        parent.getAbsoluteTop()
                                                +  );
                // Focus the first enabled control
                Scheduler.get().scheduleDeferrednew ScheduledCommand() {
                    public void execute() {
                        .setFocustrue );
                    }
                } );
            }
        } );
    }
New to GrepCode? Check out our FAQ X